qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH] pci : Add pba_offset PCI quirk for Chelsio T5 devices
@ 2015-06-25  2:04 Gabriel Laupre
  2015-06-25  4:05 ` Bandan Das
  2015-06-25 14:08 ` Alex Williamson
  0 siblings, 2 replies; 9+ messages in thread
From: Gabriel Laupre @ 2015-06-25  2:04 UTC (permalink / raw)
  To: qemu-devel
  Cc: jb-gnumlists, leedom, mst, anish, mboksanyi, Gabriel Laupre,
	alex.williamson, bsd

Fix pba_offset initialization value for Chelsio T5 devices.  The
hardware doesn't return the correct pba_offset value, so add a
quirk to instead return a hardcoded value of 0x1000 when a Chelsio
T5 device is detected.

Signed-off-by: Gabriel Laupre <glaupre@chelsio.com>
---
 hw/vfio/pci.c            | 12 ++++++++++++
 include/hw/pci/pci_ids.h |  3 +++
 2 files changed, 15 insertions(+)

diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c
index e0e339a..8a4c7cd 100644
--- a/hw/vfio/pci.c
+++ b/hw/vfio/pci.c
@@ -2220,6 +2220,9 @@ static int vfio_early_setup_msix(VFIOPCIDevice *vdev)
     uint16_t ctrl;
     uint32_t table, pba;
     int fd = vdev->vbasedev.fd;
+    PCIDevice *pdev = &vdev->pdev;
+    uint16_t vendor = pci_get_word(pdev->config + PCI_VENDOR_ID);
+    uint16_t device = pci_get_word(pdev->config + PCI_DEVICE_ID);
 
     pos = pci_find_capability(&vdev->pdev, PCI_CAP_ID_MSIX);
     if (!pos) {
@@ -2252,6 +2255,15 @@ static int vfio_early_setup_msix(VFIOPCIDevice *vdev)
     vdev->msix->pba_offset = pba & ~PCI_MSIX_FLAGS_BIRMASK;
     vdev->msix->entries = (ctrl & PCI_MSIX_FLAGS_QSIZE) + 1;
 
+    /* Quirk to set the pba_offset value for Chelsio T5
+     * devices. Since hardware does not return value correctly,
+     * we override with a hardcoded value instead.
+     */
+    if (vendor == PCI_VENDOR_ID_CHELSIO &&
+        (device & 0xf000) == PCI_DEVICE_ID_CHELSIO_T5_SERIES) {
+        vdev->msix->pba_offset = 0x1000;
+    }
+
     trace_vfio_early_setup_msix(vdev->vbasedev.name, pos,
                                 vdev->msix->table_bar,
                                 vdev->msix->table_offset,
diff --git a/include/hw/pci/pci_ids.h b/include/hw/pci/pci_ids.h
index 49c062b..9f649da 100644
--- a/include/hw/pci/pci_ids.h
+++ b/include/hw/pci/pci_ids.h
@@ -114,6 +114,9 @@
 #define PCI_VENDOR_ID_ENSONIQ            0x1274
 #define PCI_DEVICE_ID_ENSONIQ_ES1370     0x5000
 
+#define PCI_VENDOR_ID_CHELSIO            0x1425
+#define PCI_DEVICE_ID_CHELSIO_T5_SERIES  0x5000
+
 #define PCI_VENDOR_ID_FREESCALE          0x1957
 #define PCI_DEVICE_ID_MPC8533E           0x0030
 
-- 
1.8.3.1

^ permalink raw reply related	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2015-06-25 21:27 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-06-25  2:04 [Qemu-devel] [PATCH] pci : Add pba_offset PCI quirk for Chelsio T5 devices Gabriel Laupre
2015-06-25  4:05 ` Bandan Das
2015-06-25 14:08 ` Alex Williamson
2015-06-25 19:00   ` Gabriel Laupre
2015-06-25 19:19     ` Alex Williamson
2015-06-25 20:21       ` Casey Leedom
2015-06-25 20:22         ` Casey Leedom
2015-06-25 20:57           ` Alex Williamson
2015-06-25 21:27             ` Casey Leedom

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).