At Wed, 12 Apr 2006 15:18:47 -0700,
Kristen Accardi <[email protected]> wrote:
>
> 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 <[email protected]>
>
> ---
> drivers/pci/hotplug/acpiphp_glue.c | 9 +++++++--
> 1 files changed, 7 insertions(+), 2 deletions(-)
>
> --- 2.6-git-kca2.orig/drivers/pci/hotplug/acpiphp_glue.c
> +++ 2.6-git-kca2/drivers/pci/hotplug/acpiphp_glue.c
> @@ -218,8 +218,13 @@ register_slot(acpi_handle handle, u32 lv
> newfunc->flags |= FUNC_HAS_DCK;
>
> status = acpi_evaluate_integer(handle, "_SUN", NULL, &sun);
> - if (ACPI_FAILURE(status))
> - sun = -1;
> + if (ACPI_FAILURE(status)) {
> + /*
> + * use the count of the number of slots we've found
> + * for the number of the slot
> + */
> + sun = bridge->nr_slots+1;
> + }
>
> /* search for objects that share the same slot */
> for (slot = bridge->slots; slot; slot = slot->next)
>
> --
No, "sun = bridge->nr_slots+1" might have been defined for
another device. Please consider the following case.
Device (PCI0) { /* Root bridge */
Name (_HID, "PNP0A03")
Device (P2PA) { /* PCI-to-PCI bridge */
Name (_ADR, ...)
Device (S0F0) { /* hotplug slot */
Name (_ADR, ...)
Name (_SUN, 0x01)
Method (_EJ0, ...) { ... }
}
Device (S1F0) { /* hotplug slot */
Name (_ADR, ...)
Name (_SUN, 0x02)
Method (_EJ0, ...) { ... }
}
Device (GDCK) { /* Docking Station */
Method (_DCK, ...) { ... }
Method (_EJ0, ...) { ... }
}
Device (P2PB) { /* PCI-to-PCI bridge */
Name (_ADR, ...)
Device (S0F0) { /* hotplug slot */
Name (_ADR, ...)
Name (_SUN, 0x03)
Method (_EJ0, ...) { ... }
}
Device (S1F0) { /* hotplug slot */
Name (_ADR, ...)
Name (_SUN, 0x04)
Method (_EJ0, ...) { ... }
}
}
}
In this case, there are two hotplug slots under the P2PA.
GDCK doesn't have SUN, so acpiphp sets SUN#3 for GDCK. But
SUN#3 is for the PCI0.P2PB.S0F0. sun is not unique!
But I have never seen the dsdt like above.
Thanks,
MUNE
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]