Re: [PATCH] Avoid FLR for AMD Starship/Matisse Cryptographic Coprocessor

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This patch fixes another FLR bug for the Starship/Matisse controller:

AMD Starship/Matisse Cryptogrpahic Coprocessor PSPCPP

This patch allows functions on the same Starship/Matisse device (such as
USB controller,sound card) to properly pass through to a guest OS using
vfio-pc. Without this patch, the virtual machine does not boot and
eventually times out.

Excerpt from lspci -nn showing crypto function on same device as USB and
sound card (which are already listed in quirks.c):

0e:00.1 Encryption controller [1080]: Advanced Micro Devices, Inc. [AMD]
  Starship/Matisse Cryptographic Coprocessor PSPCPP [1022:1486]
0e:00.3 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD]
  Matisse USB 3.0 Host Controller [1022:149c]
0e:00.4 Audio device [0403]: Advanced Micro Devices, Inc. [AMD]
  Starship/Matisse HD Audio Controller [1022:1487]

Fix tested successfully on an Asus ROG STRIX X570-E GAMING motherboard
with AMD Ryzen 9 3900X.

Signed-off-by: David Jaundrew <david@xxxxxxxxxxxx>
---
diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
index 6d74386eadc2..0d19e7aa219a 100644
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -5208,6 +5208,7 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x443, quirk_intel_qat_vf_cap);
 /*
  * FLR may cause the following to devices to hang:
  *
+ * AMD Starship/Matisse Cryptographic Coprocessor PSPCPP 0x1486
  * AMD Starship/Matisse HD Audio Controller 0x1487
  * AMD Starship USB 3.0 Host Controller 0x148c
  * AMD Matisse USB 3.0 Host Controller 0x149c
@@ -5219,6 +5220,7 @@ static void quirk_no_flr(struct pci_dev *dev)
 {
        dev->dev_flags |= PCI_DEV_FLAGS_NO_FLR_RESET;
 }
+DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AMD, 0x1486, quirk_no_flr);
 DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AMD, 0x1487, quirk_no_flr);
 DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AMD, 0x148c, quirk_no_flr);
 DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AMD, 0x149c, quirk_no_flr);

On 2021-09-28 2:45 p.m., Bjorn Helgaas wrote:
> On Mon, Aug 30, 2021 at 10:17:15PM -0700, David Jaundrew wrote:
>> This patch fixes another FLR bug for the Starship/Matisse controller:
>>
>> AMD Starship/Matisse Cryptogrpahic Coprocessor PSPCPP
>>
>> This patch allows functions on the same Starship/Matisse device (such as USB controller,sound card) to properly pass through to a guest OS using vfio-pc. Without this patch, the virtual machine does not boot and eventually times out.
>>
>> Excerpt from lspci -nn showing crypto function on same device as USB and sound card (which are already listed in quirks.c):
>> 0e:00.1 Encryption controller [1080]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse Cryptographic Coprocessor PSPCPP [1022:1486]
>> 0e:00.3 USB controller [0c03]: Advanced Micro Devices, Inc. [AMD] Matisse USB 3.0 Host Controller [1022:149c]
>> 0e:00.4 Audio device [0403]: Advanced Micro Devices, Inc. [AMD] Starship/Matisse HD Audio Controller [1022:1487]
>>
>> Fix tested successfully on an Asus ROG STRIX X570-E GAMING motherboard with AMD Ryzen 9 3900X.
> This is missing a signed-off-by and the patch is corrupted somehow:
>
>   04:44:29 ~/linux (pci/virtualization)$ git am m/20210830_david_avoid_flr_for_amd_starship_matisse_cryptographic_coprocessor.mbx
>   Applying: Avoid FLR for AMD Starship/Matisse Cryptographic Coprocessor
>   error: corrupt patch at line 4
>   Patch failed at 0001 Avoid FLR for AMD Starship/Matisse Cryptographic Coprocessor
>
> Can you fix?  If you can add least supply a signed-off-by, I can apply
> it manually if necessary.
>
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?id=v5.11#n361
>
>> --- a/drivers/pci/quirks.c      2021-08-30 21:19:25.365738689 -0700
>> +++ b/drivers/pci/quirks.c      2021-08-30 21:21:25.802031789 -0700
>> @@ -5208,6 +5208,7 @@
>>  /*
>>   * FLR may cause the following to devices to hang:
>>   *
>> + * AMD Starship/Matisse Cryptographic Coprocessor PSPCPP 0x1486
>>   * AMD Starship/Matisse HD Audio Controller 0x1487
>>   * AMD Starship USB 3.0 Host Controller 0x148c
>>   * AMD Matisse USB 3.0 Host Controller 0x149c
>> @@ -5219,6 +5220,7 @@
>>  {
>>         dev->dev_flags |= PCI_DEV_FLAGS_NO_FLR_RESET;
>>  }
>> +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AMD, 0x1486, quirk_no_flr);
>>  DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AMD, 0x1487, quirk_no_flr);
>>  DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AMD, 0x148c, quirk_no_flr);
>>  DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AMD, 0x149c, quirk_no_flr);



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux