On Fri, Sep 03, 2021 at 02:33:11PM +0800, Evan Quan wrote: > Latest AMD GPUs have built-in USB xHCI and UCSI controllers. Add device > link support for them. Please comment on https://git.kernel.org/linus/6d2e369f0d4c . Is there something the PCI core is missing here? Or is there something that needs to be added to ACPI or the PCI firmware spec? We want a generic way to discover dependencies like this. A quirk should not be necessary for spec-compliant devices. Quirks are an ongoing maintenance burden, and they mean that new hardware won't work correctly until the OS is patched to know about it. That's not what we want. I expect we'll still need *this* quirk, but first I'd like to know whether there's a plan to handle this more generically in the future. When you repost this, please follow the subject line style of 6d2e369f0d4c ("PCI: Add NVIDIA GPU multi-function power dependencies") so similar patches look similar. > Cc: stable@xxxxxxxxxxxxxxx > Signed-off-by: Evan Quan <evan.quan@xxxxxxx> > --- > drivers/pci/quirks.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c > index dea10d62d5b9..f0c5dd3406a1 100644 > --- a/drivers/pci/quirks.c > +++ b/drivers/pci/quirks.c > @@ -5338,7 +5338,7 @@ DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID, > PCI_CLASS_MULTIMEDIA_HD_AUDIO, 8, quirk_gpu_hda); > > /* > - * Create device link for NVIDIA GPU with integrated USB xHCI Host > + * Create device link for GPUs with integrated USB xHCI Host > * controller to VGA. > */ > static void quirk_gpu_usb(struct pci_dev *usb) > @@ -5347,9 +5347,11 @@ static void quirk_gpu_usb(struct pci_dev *usb) > } > DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID, > PCI_CLASS_SERIAL_USB, 8, quirk_gpu_usb); > +DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_VENDOR_ID_ATI, PCI_ANY_ID, > + PCI_CLASS_SERIAL_USB, 8, quirk_gpu_usb); > > /* > - * Create device link for NVIDIA GPU with integrated Type-C UCSI controller > + * Create device link for GPUs with integrated Type-C UCSI controller > * to VGA. Currently there is no class code defined for UCSI device over PCI > * so using UNKNOWN class for now and it will be updated when UCSI > * over PCI gets a class code. > @@ -5362,6 +5364,9 @@ static void quirk_gpu_usb_typec_ucsi(struct pci_dev *ucsi) > DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID, > PCI_CLASS_SERIAL_UNKNOWN, 8, > quirk_gpu_usb_typec_ucsi); > +DECLARE_PCI_FIXUP_CLASS_FINAL(PCI_VENDOR_ID_ATI, PCI_ANY_ID, > + PCI_CLASS_SERIAL_UNKNOWN, 8, > + quirk_gpu_usb_typec_ucsi); > > /* > * Enable the NVIDIA GPU integrated HDA controller if the BIOS left it > -- > 2.29.0 >