From: David Brownell Handle PNP devices that have the same IDs a bit more sanely ... this at least arranges multiple one-to-one mappings between PNP nodes and ACPI nodes that all share the same PNP0c02 id. (Maybe mapped to the wrong node though...) This remains a hack, since it masks failures where PNP0a03 (a PCI root bridge) is handled by ACPI special case code (/sys/devices/pci0000:00 on my systems instead of /sys/devices/pnp0/pnp00:0/pci0000:00!) not pure PNPACPI logic. I suspect that pnp_dev.number and some acpi_device field need to be compared, (so the right PNP0c02 nodes hook up to each other, PNP0a03 likewise) but I'll leave that to someone who knows how those ACPI table lookups "should" work. Signed-off-by: David Brownell Cc: Adam Belay Cc: Bjorn Helgaas Cc: Len Brown Cc: Greg KH Signed-off-by: Andrew Morton --- drivers/pnp/pnpacpi/core.c | 1 + 1 files changed, 1 insertion(+) diff -puN drivers/pnp/pnpacpi/core.c~pnpacpi-sets-pnpdev-devarchdata-fix drivers/pnp/pnpacpi/core.c --- a/drivers/pnp/pnpacpi/core.c~pnpacpi-sets-pnpdev-devarchdata-fix +++ a/drivers/pnp/pnpacpi/core.c @@ -243,6 +243,7 @@ static int __init acpi_pnp_match(struct /* true means it matched */ return acpi->flags.hardware_id + && !acpi_get_physical_device(acpi->handle) && compare_pnp_id(pnp->id, acpi->pnp.hardware_id); } _