mirror of
https://github.com/qemu/qemu.git
synced 2024-12-01 07:43:35 +08:00
vfio/pci: Add pba_offset PCI quirk for BAIDU KUNLUN AI processor
Fix pba_offset initialization value for BAIDU KUNLUN Virtual Function device. The KUNLUN hardware returns an incorrect value for the VF PBA offset, and add a quirk to instead return a hardcoded value of 0xb400. Signed-off-by: Cai Huoqing <caihuoqing@baidu.com> Link: https://lore.kernel.org/r/20210713093743.942-1-caihuoqing@baidu.com [aw: comment & whitespace tuning] Signed-off-by: Alex Williamson <alex.williamson@redhat.com>
This commit is contained in:
parent
936555bc4f
commit
1bd9f1b14d
@ -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");
|
||||
|
@ -227,6 +227,9 @@
|
||||
#define PCI_VENDOR_ID_FREESCALE 0x1957
|
||||
#define PCI_DEVICE_ID_MPC8533E 0x0030
|
||||
|
||||
#define PCI_VENDOR_ID_BAIDU 0x1d22
|
||||
#define PCI_DEVICE_ID_KUNLUN_VF 0x3685
|
||||
|
||||
#define PCI_VENDOR_ID_INTEL 0x8086
|
||||
#define PCI_DEVICE_ID_INTEL_82378 0x0484
|
||||
#define PCI_DEVICE_ID_INTEL_82441 0x1237
|
||||
|
Loading…
Reference in New Issue
Block a user