The current virtio over MMIO has some limitations that impact the performance. It only supports single legacy, dedicated interrupt and one virtqueue notification register for all virtqueues which cause performance penalties. To address such limitations, we proposed to update virtio-mmio spec with two new feature bits to support MSI interrupt and enhancing notification mechanism. For keeping virtio-mmio simple as it was, and considering practical usages, this provides two kinds of mapping mode for device: MSI non-sharing mode and MSI sharing mode. MSI non-sharng mode indicates a fixed static vector and event relationship specified in spec, which can simplify the setup process and reduce vmexit, fitting for a high interrupt rate request. MSI sharing mode indicates a dynamic mapping, which is more like PCI does, fitting for a non-high interrupt rate request. Change Log: v1->v2: * Change version update to feature bit * Add mask/unmask support * Add two MSI sharing/non-sharing modes * Change MSI registers layout and bits Jing Liu (5): virtio-mmio: Add feature bit for MMIO notification virtio-mmio: Enhance queue notification support virtio-mmio: Add feature bit for MMIO MSI virtio-mmio: Introduce MSI details virtio-mmio: MSI vector and event mapping content.tex | 286 ++++++++++++++++++++++++++++++++++++++++++++++++++++++------ msi-state.c | 5 ++ 2 files changed, 262 insertions(+), 29 deletions(-) create mode 100644 msi-state.c -- 2.7.4