diff options
| author | Peter Maydell <peter.maydell@linaro.org> | 2021-07-15 21:39:04 +0100 |
|---|---|---|
| committer | Peter Maydell <peter.maydell@linaro.org> | 2021-07-15 21:39:04 +0100 |
| commit | bd306cfeeececee73ff2cdb3de1229ece72f3b28 (patch) | |
| tree | ac5b851157be8d15add6f0b2678a67faea0d7ac5 /hw/vfio/pci.c | |
| parent | d4127349e316b5c78645f95dba5922196ac4cc23 (diff) | |
| parent | 1bd9f1b14d1e9c1498bb03faf4e2bb945cf6542d (diff) | |
| download | focaccia-qemu-bd306cfeeececee73ff2cdb3de1229ece72f3b28.tar.gz focaccia-qemu-bd306cfeeececee73ff2cdb3de1229ece72f3b28.zip | |
Merge remote-tracking branch 'remotes/awilliam/tags/vfio-update-20210714.0' into staging
VFIO update 2021-07-14 * Coverity fix to discard listener (David Hildenbrand) * MSI-X PBA quirk for BAIDU VFs, additional helper use cases (Cai Huoqing) # gpg: Signature made Wed 14 Jul 2021 22:31:35 BST # gpg: using RSA key 42F6C04E540BD1A99E7B8A90239B9B6E3BB08B22 # gpg: issuer "alex.williamson@redhat.com" # gpg: Good signature from "Alex Williamson <alex.williamson@redhat.com>" [full] # gpg: aka "Alex Williamson <alex@shazbot.org>" [full] # gpg: aka "Alex Williamson <alwillia@redhat.com>" [full] # gpg: aka "Alex Williamson <alex.l.williamson@gmail.com>" [full] # Primary key fingerprint: 42F6 C04E 540B D1A9 9E7B 8A90 239B 9B6E 3BB0 8B22 * remotes/awilliam/tags/vfio-update-20210714.0: vfio/pci: Add pba_offset PCI quirk for BAIDU KUNLUN AI processor vfio/pci: Change to use vfio_pci_is() vfio: Fix CID 1458134 in vfio_register_ram_discard_listener() Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'hw/vfio/pci.c')
| -rw-r--r-- | hw/vfio/pci.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index ab4077aad2..e1ea1d8a23 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -1499,6 +1499,14 @@ static void vfio_msix_early_setup(VFIOPCIDevice *vdev, Error **errp) if (vdev->vendor_id == PCI_VENDOR_ID_CHELSIO && (vdev->device_id & 0xff00) == 0x5800) { msix->pba_offset = 0x1000; + /* + * BAIDU KUNLUN Virtual Function devices for KUNLUN AI processor + * return an incorrect value of 0x460000 for the VF PBA offset while + * the BAR itself is only 0x10000. The correct value is 0xb400. + */ + } else if (vfio_pci_is(vdev, PCI_VENDOR_ID_BAIDU, + PCI_DEVICE_ID_KUNLUN_VF)) { + msix->pba_offset = 0xb400; } else if (vdev->msix_relo == OFF_AUTOPCIBAR_OFF) { error_setg(errp, "hardware reports invalid configuration, " "MSIX PBA outside of specified BAR"); @@ -3058,14 +3066,14 @@ static void vfio_realize(PCIDevice *pdev, Error **errp) } } - if (vdev->vendor_id == PCI_VENDOR_ID_NVIDIA) { + if (vfio_pci_is(vdev, PCI_VENDOR_ID_NVIDIA, PCI_ANY_ID)) { ret = vfio_pci_nvidia_v100_ram_init(vdev, errp); if (ret && ret != -ENODEV) { error_report("Failed to setup NVIDIA V100 GPU RAM"); } } - if (vdev->vendor_id == PCI_VENDOR_ID_IBM) { + if (vfio_pci_is(vdev, PCI_VENDOR_ID_IBM, PCI_ANY_ID)) { ret = vfio_pci_nvlink2_init(vdev, errp); if (ret && ret != -ENODEV) { error_report("Failed to setup NVlink2 bridge"); |