Skip to contentSkip to conversation

qemu: MSI-X support

PATCH New Michael S. Tsirkin 1 participant 1 message Jun 10, 2009 KVM

lore
Share & tools
lore
#0 lore raw

v4 cover qemu: MSI-X support

Here is the port of MSI-X support patches to upstream qemu. Please comment or commit.

This patchset adds generic support for MSI-X, adds implementation in APIC, and uses MSI-X in virtio-net.

Changelog:
- since v3
call to resize_region on load
split patches a bit differently to address style comments by Glauber update commit message to clarify what msix_support flag does
- since v2
rename mask -> wmask to avoid conflict with work by Yamahata
- since v1
At Paul's suggestion, use stl_phy to decouple APIC and MSI-X implementation

This uses the mask table patch that I posted previously, and which is included in the series.

Signature · 33 lines
MST

Michael S. Tsirkin (13):
  qemu: make default_write_config use mask table
  qemu: capability bits in pci save/restore
  qemu: add routines to manage PCI capabilities
  qemu: helper routines for pci access
  qemu: MSI-X support functions
  qemu: add flag to disable MSI-X by default
  qemu: minimal MSI/MSI-X implementation for PC
  qemu: add support for resizing regions
  qemu: virtio support for many interrupt vectors
  qemu: MSI-X support in virtio PCI
  qemu: request 3 vectors in virtio-net
  qemu: virtio save/load bindings
  qemu: add pci_get/set_byte

 Makefile.target    |    2 +-
 hw/apic.c          |   43 +++++-
 hw/msix.c          |  420 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 hw/msix.h          |   35 +++++
 hw/pci.c           |  295 ++++++++++++++++++++-----------------
 hw/pci.h           |  105 +++++++++++++-
 hw/syborg_virtio.c |   13 ++-
 hw/virtio-net.c    |    1 +
 hw/virtio-pci.c    |  216 ++++++++++++++++++++++-----
 hw/virtio.c        |   70 ++++++---
 hw/virtio.h        |   14 ++-
 qemu-options.hx    |    2 +
 vl.c               |    3 +
 13 files changed, 1005 insertions(+), 214 deletions(-)
 create mode 100644 hw/msix.c
 create mode 100644 hw/msix.h