Re: [RFC PATCH v3 00/28] ACPI based system device hotplug framework

From: Jiang Liu
Date: Mon Oct 08 2012 - 11:48:30 EST


On 10/08/2012 05:47 AM, Rafael J. Wysocki wrote:
> Hi,
>
> On Saturday 06 of October 2012 23:27:08 Jiang Liu wrote:
>> The patchset is based on "5f3d2f2e1a63679cf1c4a4210f2f1cc2f335bef6"
>> from git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
>> And you pull the changeset from git://github.com/jiangliu/linux.git acpihp
>>
>> Modern high-end server may support advanced hotplug features for system
>> devices, including physical processor, memory board, IO extension board
>> and/or computer node. The ACPI specifications have provided standard
>> interfaces between firmware and OS to support device hotplug at runtime.
>> This patch series provide an ACPI based hotplug framework to support system
>> device hotplug at runtime, which will replace current existing ACPI device
>> driver based CPU/memory/CONTAINER hotplug mechanism.
>>
>> The new ACPI system device hotplug framework has following design goals:
>> 1) Provide a mechanism to detect hotplug slots by checking ACPI _EJ0 method,
>> ACPI PRCT (platform RAS capabilities table) and other platform specific
>> mechanisms.
>
> Which of the patches does that?
Hi Rafael,
Thanks for your review:)
Currently we have only implemented slot detection based on _EJ0 method. PRCT is
still in plan because that spec is not in public domain yet, ACPI5.0 only reserves
that key word without any detail information about it:(
The patch 1-4 implement the slot enumeration driver.

>
>> 2) Unify the way to enumerate ACPI based hotplug slots. All hotplug slots
>> will be enumerated by the enumeration driver
>
> What is the enumeration driver?
The enumerator is a driver to create ACPI system device hotplug slots, which
takes following responsibilities:
1) walk the ACPI namespace to scan for hotpug slot with platform specific knowledge.
2) create hotplug slot device for each hotplug slot found, later a hotplug driver
will bind to those hotplug slots.
3) Provide platform specific callback methods to control those hotplug slots,
such as get slot capabilities, power on slot, power off slot etc.

>
>> , instead of by ACPI device drivers.
>> 3) Unify the way to handle ACPI hotplug events. All ACPI hotplug events
>> for system devices will be handled by a generic ACPI hotplug driver,
>> instead of handled by ACPI device drivers.
>
> What are "system devices"
System devices includes CPU, memory, PCI host bridge and node (ACPI module device
contains CPU, memory and/or PCI host bridge).

>
>> 4) Solve dependencies among hotplug slots. You need first to remove the
>> memory device before removing a physical processor if a hotpluggable memory
>> device is connected to a hotpluggable physical processor.
>> 5) Provide better error handling and recover.
>> 6) Provide interface to cancel ongoing hotplug operations. It may take a
>> very long time to remove a memory device, so provide interface to cancel
>> the operation. This is important especially for memory hot-removal.
>> 7) Support new RAS features, such as socket/memory migration.
>> 8) Provide better user interfaces to the hotplug functionalities.
>> 9) Trigger hotplug events/operations by software. This feature is useful
>> for hardware fault management and power saving.
>
> Well, this may or may not be OK. I'm going to review the patches, but I can't
> really say when it's going to happen (not really soon for sure).
>

>> create mode 100644 drivers/acpi/hotplug/slot_fake.c
>> create mode 100644 drivers/acpi/hotplug/state_machine.c
>> create mode 100644 drivers/acpi/hotplug/sysfs.c
>> create mode 100644 include/acpi/acpi_hotplug.h
>> delete mode 100644 include/acpi/container.h
>
> And I seriously think this is too much material for a single patchset.
>
> Please consider splitting it into smaller and well-documented series of
> patches, so that the reviewers can understand things more easily.
Thanks for your advice, I will split them into small groups next time.
The patch set could be divided into four parts:
patch 1-4: implement a ACPI system device hotplug slot enumerator
patch 6-17: implement a hotplug driver to manage all ACPI system device hotplug slots
patch 18-19: refine ACPI container driver to support new hotplug framework
patch 20-28: refine ACPI processor driver to support new hotplug framewor, also with some code cleanup

Thanks
Gerry

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/