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

Greg Kroah-Hartman gregkh at linuxfoundation.org
Tue Sep 5 07:49:01 PDT 2017


On Tue, Sep 05, 2017 at 10:38:03AM -0400, Adam Wallis wrote:
> 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)

Ok, then provide this information with a "Fixes:" tag please.

thanks,

greg k-h



More information about the linux-arm-kernel mailing list