On 1/30/2023 8:51 PM, Bjorn Helgaas wrote: > [+cc Mario, Shyam, Brijesh] > > On Sat, Jan 28, 2023 at 10:39:51AM +0900, Damien Le Moal wrote: >> PCI passthrough to VMs does not work with AMD FCH AHCI adapters: the >> guest OS fails to correctly probe devices attached to the controller due >> to FIS communication failures. > > What does a FIS communication failure look like? Can we include a > line or two of dmesg output here to help users find this fix? > > AMD folks: Can you confirm/deny that this is a hardware erratum in > this device? Do you know of any other devices that need a similar > workaround? Niklas, can you send the list of AHCI device id present on your system? perhaps a lspci output? Based on that I can talk to the FCH HW design folks to know if there is erratum present for those device(s). Thanks, Shyam > >> Forcing the "bus" reset method before >> unbinding & binding the adapter to the vfio-pci driver solves this >> issue. I.e.: >> >> echo "bus" > /sys/bus/pci/devices/<ID>/reset_method >> >> gives a working guest OS, thus indicating that the default flr reset >> method is defective, resulting in the adapter not being reset correctly. >> >> This patch applies the no_flr quirk to AMD FCH AHCI devices to >> permanently solve this issue. >> >> Reported-by: Niklas Cassel <niklas.cassel@xxxxxxx> >> Cc: stable@xxxxxxxxxxxxxxx >> Signed-off-by: Damien Le Moal <damien.lemoal@xxxxxxxxxxxxxxxxxx> >> --- >> drivers/pci/quirks.c | 1 + >> 1 file changed, 1 insertion(+) >> >> diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c >> index 285acc4aaccc..20ac67d59034 100644 >> --- a/drivers/pci/quirks.c >> +++ b/drivers/pci/quirks.c >> @@ -5340,6 +5340,7 @@ static void quirk_no_flr(struct pci_dev *dev) >> 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); >> +DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_AMD, 0x7901, quirk_no_flr); >> DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1502, quirk_no_flr); >> DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x1503, quirk_no_flr); >> >> -- >> 2.39.1 >>