Thread (89 messages) 89 messages, 8 authors, 2013-01-11
STALE4914d
Revisions (2)
  1. v1 [diff vs current]
  2. v1 current

[PATCH rev.2 0/6] ACPI: Change the ACPI namespace scanning code ordering

From: Rafael J. Wysocki <hidden>
Date: 2012-12-13 22:18:47
Also in: linux-pci, lkml

Hi All,

On Sunday, December 09, 2012 11:58:42 PM Rafael J. Wysocki wrote:
Hi,

The following patches change the ordering of the ACPI namespace scanning code
so that all struct acpi_device objects in the given scope are registered before
ACPI drivers are probed against them.  They also do some simplifications and
clarifications of the code made possible by this main change.

This is done for three basic reasons.  First, we need the boot ACPI namespace
scanning code to be as similar as reasonably possible to the hot-plug ACPI
namespace scanning code.  Second, the ordering of PCI devices enumeration
versus ACPI-backed platform devices registration needs to be such that the PCI
devices in the given scope are all registered first.  Finally, when we start to
actually manage ACPI device resources as appropriate (e.g. resolve resource
conflicts properly) we'll need all struct acpi_device nodes to be registered
before any "companion" physical nodes or ACPI drivers are bound to them.

The patches have been tested on Toshiba Portege R500 without breaking stuff
(I used some additional debug code to verify that the ordering of device
discovery had not been modified by them), but if you see any problems with
them regarding hot-plug, please let me know.

[1/6] - Separate adding ACPI device objects from probing ACPI drivers.
[2/6] - Change the ordering of PCI root bridge driver registration.
[3/6] - Make acpi_bus_add() and acpi_bus_start() visibly different.
[4/6] - Reduce the usage of struct acpi_bus_ops
[5/6] - Replace struct acpi_bus_ops with an enum type
[6/6] - Change the ordering of acpi_bus_check_add() to avoid unnecessary checks.
The second revision is necessary to address problems found by Yijing Wang
during testing and explained by Jiang Liu (thanks guys!).

The problem is that acpi_walk_namespace() doesn't execute the pre_order_visit
callback for the starting handle, so the callback routine has the be executed
for it directly, if necessary.

I also modified a couple of changelogs to better explain the motivation of the
patches.

Boot sequence tested on Toshiba Portege R500, but testing on systems with
hotplug will be appreciated.

Thanks,
Rafael


-- 
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help