Re: [PATCH v2 6/8] PCI: acpiphp: workaround for Thunderbolt on Acer Aspire S5
From: Rafael J. Wysocki
Date: Wed Jul 03 2013 - 17:49:16 EST
On Wednesday, July 03, 2013 03:45:50 PM Bjorn Helgaas wrote:
>
On Wed, Jul 3, 2013 at 8:04 AM, Mika Westerberg
>
<mika.westerberg@xxxxxxxxxxxxxxx> wrote:
>
> From: "Kirill A. Shutemov" <kirill.shutemov@xxxxxxxxxxxxxxx>
>
>
>
> Correct ACPI PCI hotplug imeplementation should have _RMV method in a
>
> PCI slot (device under pci bridge). In Acer Aspire S5 case we have it
>
> deeper in hierarchy:
>
>
>
> Device (RP05)
>
> {
>
> // ...
>
> Device (HRUP)
>
> {
>
> // ...
>
> Device (HRDN)
>
> {
>
> // ...
>
> Device (EPUP)
>
> {
>
> // ...
>
> Method (_RMV, 0, NotSerialized) // _RMV: Removal Status
>
> {
>
> Return (One)
>
> }
>
> }
>
> }
>
> }
>
> }
>
>
>
> Signed-off-by: Kirill A. Shutemov <kirill.shutemov@xxxxxxxxxxxxxxx>
>
> Signed-off-by: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx>
>
> ---
>
> drivers/pci/hotplug/acpi_pcihp.c | 13 +++++++++++++
>
> 1 file changed, 13 insertions(+)
>
>
>
> diff --git a/drivers/pci/hotplug/acpi_pcihp.c b/drivers/pci/hotplug/acpi_pcihp.c
>
> index 2a47e82..d92ebfb 100644
>
> --- a/drivers/pci/hotplug/acpi_pcihp.c
>
> +++ b/drivers/pci/hotplug/acpi_pcihp.c
>
> @@ -422,6 +422,19 @@ static int pcihp_is_ejectable(acpi_handle handle)
>
> status = acpi_evaluate_integer(handle, "_RMV", NULL, &removable);
>
> if (ACPI_SUCCESS(status) && removable)
>
> return 1;
>
> +
>
> + /*
>
> + * Workaround for Thunderbolt implementation on Acer Aspire S5.
>
> + *
>
> + * Correct ACPI PCI hotplug imeplementation has _RMV method in a PCI
>
> + * slot (device under pci bridge). In Acer Aspire S5 case we have it
>
> + * deeper in hierarchy.
>
>
s/imeplementation/implementation/
>
>
If you're casting aspersions on Acer for having an incorrect ACPI
>
implementation, you should probably provide a spec reference. I think
>
it's likely that the Acer implementation is actually correct per the
>
spec, but Linux just isn't smart enough to handle it.
Agreed.
>
> + */
>
> + status = acpi_evaluate_integer(handle, "HRDN.EPUP._RMV", NULL,
>
> + &removable);
>
> + if (ACPI_SUCCESS(status) && removable)
>
> + return 1;
>
> +
>
> return 0;
>
> }
>
>
>
> --
>
> 1.8.3.2
>
>
--
I speak only for myself.
Rafael J. Wysocki, Intel Open Source Technology Center.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
http://vger.kernel.org/majordomo-info.html
Please read the FAQ at
http://www.tux.org/lkml/