AcpiWalkNamespace() only supports preorder traversal of the namespace. This visits a node before any of its children, so it works well for adding new devices. However, when removing devices, we need a postorder traversal so we can remove children before the parents. These patches add a new AcpiWalkNamespace2() interface that takes two callback arguments: one for preorder traversal and another for postorder. These patches don't change the behavior of AcpiWalkNamespace(). Note that the existing preorder AcpiWalkNamespace() never actually visits the starting node. Therefore, we skip it in postorder also. --- Bjorn Helgaas (2): ACPICA: Factor out user callback function from namespace walk ACPICA: Support both preorder and postorder namespace walks drivers/acpi/acpica/acnamesp.h | 9 ++ drivers/acpi/acpica/nswalk.c | 234 ++++++++++++++++++++++++++++------------ drivers/acpi/acpica/nsxfeval.c | 41 +++++-- include/acpi/acpixf.h | 8 + 4 files changed, 208 insertions(+), 84 deletions(-) -- Bjorn -- To unsubscribe from this list: send the line "unsubscribe linux-acpi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html