This patch set adds SN/Altix kernel support for
ACPI SSDT tables. SSDTs are built by an ACPI capable PROM
and describe all devices on each slot, including devices
on secondary buses. On hotplug enable/disable the SSDTs
are dynamically created/freed, and added/removed from the
namespace. SN platform specific device info that was
previously passed via SAL call is now passed via the Vendor
resource.
Patch[1/3]
Add SN platform support for running with an ACPI
capable PROM that defines PCI devices in SSDT
tables. There is a SSDT table for every occupied
slot on a root bus, containing info for every
PPB and/or device on the bus. The SSDTs will be
dynamically loaded/unloaded on a hotplug enable/disable.
Platform specific information that is currently
passed via a SAL call, will now be passed via the
Vendor resource in the ACPI Device object defined
in a SSDT.
Patch[2/3]
Support for dynamic loading and unloading of ACPI
SSDT tables upon slot hotplugs and unplugs.
On SN platforms, we now represent every
populated root bus slot with a single ACPI
SSDT table containing info for every
device and PPB attached to the slot. These SSDTs
are generated by the prom at initial boot
and hotplug time. The info in these SSDT tables is
used by the SN kernel IO "fixup" code (which is called
at boot and hotplug time).
On hotplugs (i.e. enable_slot()), if running with
an ACPI capable prom, attempt to obtain a new ACPI
SSDT table for the slot being hotplugged. If successful,
add the table to the ACPI namespace (acpi_load_table())
and then walk the new devices and add them to the ACPI
infastructure (acpi_bus_add()).
On hot unplugs (i.e. disable_slot()), if running with
an ACPI capable prom, attempt to remove the SSDT table
associated with the slot from the ACPI namespace
(acpi_unload_table_id()) and infastructure (acpi_bus_trim()).
Patch[3/3]
This patch makes acpi_load_table() available
for use by removing it from the #ifdef ACPI_FUTURE_USAGE.
It also adds a new routine used to unload an ACPI table
of a given type and "id" - acpi_unload_table_id().
The implementation of this new routine was almost a direct
copy of existing routine acpi_unload_table() - only difference
being that it only removes a specific table id instead of
ALL tables of a given type.
The SN hotplug driver (sgi_hotplug.c) now uses both of these
interfaces to dynamically load and unload SSDT ACPI tables.
Also, a few other ACPI routines now used by the SN hotplug
driver are exported (since the driver can be a loadable module):
acpi_ns_map_handle_to_node
acpi_ns_convert_entry_to_handle
acpi_ns_get_next_node