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. At Paul's suggestion, I use stl_phy to decouple APIC and MSI-X implementation. This uses the mask table patch that I posted previously, and which is now included in the series. -- MST Changelog: v3: mask->wmask rename Removed an unused struct definition. v2. Incorporated a minor fix pointed out by Isaku Yamahata. v1. First working version. 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 | 426 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 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 | 215 +++++++++++++++++++++----- hw/virtio.c | 70 ++++++--- hw/virtio.h | 14 ++- qemu-options.hx | 2 + vl.c | 3 + 13 files changed, 1010 insertions(+), 214 deletions(-) create mode 100644 hw/msix.c create mode 100644 hw/msix.h