linux-kernel-test/include/acpi
Rafael J. Wysocki ac212b6980 ACPI / processor: Use common hotplug infrastructure
Split the ACPI processor driver into two parts, one that is
non-modular, resides in the ACPI core and handles the enumeration
and hotplug of processors and one that implements the rest of the
existing processor driver functionality.

The non-modular part uses an ACPI scan handler object to enumerate
processors on the basis of information provided by the ACPI namespace
and to hook up with the common ACPI hotplug infrastructure.  It also
populates the ACPI handle of each processor device having a
corresponding object in the ACPI namespace, which allows the driver
proper to bind to those devices, and makes the driver bind to them
if it is readily available (i.e. loaded) when the scan handler's
.attach() routine is running.

There are a few reasons to make this change.

First, switching the ACPI processor driver to using the common ACPI
hotplug infrastructure reduces code duplication and size considerably,
even though a new file is created along with a header comment etc.

Second, since the common hotplug code attempts to offline devices
before starting the (non-reversible) removal procedure, it will abort
(and possibly roll back) hot-remove operations involving processors
if cpu_down() returns an error code for one of them instead of
continuing them blindly (if /sys/firmware/acpi/hotplug/force_remove
is unset).  That is a more desirable behavior than what the current
code does.

Finally, the separation of the scan/hotplug part from the driver
proper makes it possible to simplify the driver's .remove() routine,
because it doesn't need to worry about the possible cleanup related
to processor removal any more (the scan/hotplug part is responsible
for that now) and can handle device removal and driver removal
symmetricaly (i.e. as appropriate).

Some user-visible changes in sysfs are made (for example, the
'sysdev' link from the ACPI device node to the processor device's
directory is gone and a 'physical_node' link is present instead
and a corresponding 'firmware_node' is present in the processor
device's directory, the processor driver is now visible under
/sys/bus/cpu/drivers/ and bound to the processor device), but
that shouldn't affect the functionality that users care about
(frequency scaling, C-states and thermal management).

Tested on my venerable Toshiba Portege R500.

Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Acked-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Reviewed-by: Toshi Kani <toshi.kani@hp.com>
2013-05-12 14:14:32 +02:00
..
platform ACPICA: Update ACPICA copyrights to 2013 2013-01-25 13:30:47 +01:00
acbuffer.h ACPICA: Update ACPICA copyrights to 2013 2013-01-25 13:30:47 +01:00
acconfig.h ACPICA: Update ACPICA copyrights to 2013 2013-01-25 13:30:47 +01:00
acexcep.h ACPICA: Add exception descriptions to exception info table 2013-03-12 00:45:05 +01:00
acnames.h ACPICA: Update ACPICA copyrights to 2013 2013-01-25 13:30:47 +01:00
acoutput.h ACPICA: Regression fix: reinstate safe exit macros 2013-03-12 00:45:04 +01:00
acpi_bus.h ACPI / hotplug: Use device offline/online for graceful hot-removal 2013-05-12 14:14:24 +02:00
acpi_drivers.h ACPI: Remove acpi_pci_bind_root() definition 2013-03-24 23:28:02 +01:00
acpi_numa.h ACPI: Store SRAT table revision 2012-01-17 04:19:04 -05:00
acpi.h ACPICA: Update ACPICA copyrights to 2013 2013-01-25 13:30:47 +01:00
acpiosxf.h ACPI: Fix section to __init. Align with usage in acpixf.h 2013-05-12 14:03:14 +02:00
acpixf.h ACPICA: Update version to 20130328 2013-04-12 13:29:48 +02:00
acrestyp.h ACPICA: Update ACPICA copyrights to 2013 2013-01-25 13:30:47 +01:00
actbl1.h ACPICA: Update ACPICA copyrights to 2013 2013-01-25 13:30:47 +01:00
actbl2.h ACPICA: iASL/Disassembler: Add support for MTMR table 2013-03-12 00:45:04 +01:00
actbl3.h ACPICA: Remove trailing comma in enum declarations 2013-03-12 00:45:05 +01:00
actbl.h ACPICA: Update ACPICA copyrights to 2013 2013-01-25 13:30:47 +01:00
actypes.h Merge branch 'acpi-assorted' 2013-04-28 01:54:08 +02:00
apei.h module_param: make bool parameters really bool (drivers & misc) 2012-01-13 09:32:20 +10:30
button.h ACPI: make ACPI button funcs no-ops if not built in 2009-09-17 14:48:23 -07:00
ghes.h ghes: add the needed hooks for EDAC error report 2013-02-25 19:41:51 -03:00
hed.h ACPI Hardware Error Device (PNP0C33) support 2010-05-19 22:40:24 -04:00
pdc_intel.h ACPI: Enable bit 11 in _PDC to advertise hw coord 2009-02-07 00:41:14 -05:00
processor.h ACPI / processor: Use common hotplug infrastructure 2013-05-12 14:14:32 +02:00
reboot.h Add the ability to reset the machine using the RESET_REG in ACPI's FADT table. 2008-07-16 23:27:08 +02:00
video.h i915: Fix opregion notifications 2011-07-13 11:19:47 -07:00