aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/pci
diff options
context:
space:
mode:
authorKristen Accardi <kristen.c.accardi@intel.com>2006-06-28 03:09:54 -0400
committerLen Brown <len.brown@intel.com>2006-06-28 03:09:54 -0400
commit95b38b3f453c16de0f8cddcde3e71050bbfb37b9 (patch)
tree54893468b8335c88135ab01d580f0d1f87abf2f2 /drivers/pci
parent2b85e1307fe3a84eca2e1a21c6c857359908dab4 (diff)
ACPIPHP: prevent duplicate slot numbers when no _SUN
Dock bridges generally do not implement _SUN, yet show up as ejectable slots. If you have more than one ejectable slot that does not implement SUN, with the current code you will get duplicate slot numbers. So, if there is no _SUN, use the current count of the number of slots found instead. Signed-off-by: Kristen Carlson Accardi <kristen.c.accardi@intel.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers/pci')
-rw-r--r--drivers/pci/hotplug/acpiphp_glue.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/pci/hotplug/acpiphp_glue.c b/drivers/pci/hotplug/acpiphp_glue.c
index b3899cfcab6b..ef95d12fb32c 100644
--- a/drivers/pci/hotplug/acpiphp_glue.c
+++ b/drivers/pci/hotplug/acpiphp_glue.c
@@ -219,8 +219,13 @@ register_slot(acpi_handle handle, u32 lvl, void *context, void **rv)
219 newfunc->flags |= FUNC_HAS_DCK; 219 newfunc->flags |= FUNC_HAS_DCK;
220 220
221 status = acpi_evaluate_integer(handle, "_SUN", NULL, &sun); 221 status = acpi_evaluate_integer(handle, "_SUN", NULL, &sun);
222 if (ACPI_FAILURE(status)) 222 if (ACPI_FAILURE(status)) {
223 sun = -1; 223 /*
224 * use the count of the number of slots we've found
225 * for the number of the slot
226 */
227 sun = bridge->nr_slots+1;
228 }
224 229
225 /* search for objects that share the same slot */ 230 /* search for objects that share the same slot */
226 for (slot = bridge->slots; slot; slot = slot->next) 231 for (slot = bridge->slots; slot; slot = slot->next)