[PATCH V2] usb: host: xhci-plat: allow sysdev to inherit from ACPI

Adam Wallis awallis at codeaurora.org
Tue Sep 5 07:38:03 PDT 2017

On 9/5/2017 10:31 AM, Greg Kroah-Hartman wrote:
> On Tue, Sep 05, 2017 at 10:25:19AM -0400, Adam Wallis wrote:
>> On 9/5/2017 10:16 AM, Greg Kroah-Hartman wrote:
>>> On Tue, Sep 05, 2017 at 09:57:29AM -0400, Adam Wallis wrote:
>>>> Currently, xhci_plat is not set up properly when the parent device is an
>>>> ACPI node. The conditions that xhci_plat_probe should satisfy are
>>>> 1. xhci_plat comes from firmware
>>>> 2. xhci_plat is child of a device from firmware (dwc3-plat)
>>>> 3. xhci_plat is grandchild of a pci device (dwc3-pci)
>>>> Case 2 is covered when the child is an OF node (by checking
>>>> sysdev->parent->of_node), however, an ACPI parent will return NULL in
>>>> the of_node check and will thus not result in sysdev being set to
>>>> sysdev->parent
>>>> [   17.591549] xhci-hcd: probe of xhci-hcd.6.auto failed with error -5
>>>> This change adds a check for ACPI to completely allow for condition 2.
>>>> This is done by first checking if the parent node is of type ACPI (e.g.,
>>>> dwc3-plat) and set sysdev to sysdev->parent if either of the two
>>>> following conditions are met:
>>>> 1: If fwnode is empty (in the case that platform_device_add_properties
>>>> was not called on the allocated platform device)
>>>> 2: fwnode exists but is not of type ACPI (this would happen if
>>>> platform_device_add_properties was called on the allocated device.
>>>> Instead of type FWNODE_ACPI, you would end up with FWNODE_PDATA)
>>>> Cc: stable at vger.kernel.org #4.12.x
>>>> Cc: stable at vger.kernel.org #4.13.x
>>> What bug is this fixing that needs to go into the stable kernel trees?
>>> Is this a regression, or a new feature for those versions?
>> Greg
>> The following patch
>> 4c39d4b949d36f usb: xhci: use bus->sysdev for DMA configuration
>> provided an incomplete check for all firmware nodes (only checked for PCI and OF
>> case, but not the ACPI case). This bug affects the 4.12 and 4.13 kernels.
> What is the symptom of "incomplete check"?  Something that used to work
> now does not?  Or just that it doesn't work "correctly" and this patch
> resolves that issue so that new hardware can now work properly?  
Greg, the change I reference above broke behavior that previously worked.
Previously, it was possible to have a an ACPI host driver (e.g., dwc3) that
created a platform xhci device as a child. The above change removed the ability
to have a parent ACPI device to the platform xhci platform device (so drivers
like dwc3 host do not work with ACPI now in 4.12/4.13)

I ask
> as you have read the stable kernel rules, right?

I have read the rules. Are you asking for me to update my sign-off area with the
fix commit information?

> thanks,
> greg k-h

Thank you for your help


Adam Wallis
Qualcomm Datacenter Technologies as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the Code Aurora Forum,
a Linux Foundation Collaborative Project.

More information about the linux-arm-kernel mailing list