mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-08 18:23:57 -06: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
2 changed files with 11 additions and 0 deletions
|
@ -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");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue