These are the new patches for SMRAM support, using multiple address spaces and, thus, multiple KVMMemoryListeners. No more layering violations, yay!
The meat is in patches 4 and 5, which parameterize KVM's memory listener so that: 1) each memory listener handles its own array of memory slots; 2) each memory listener specifies an address space id for use in KVM_SET_USER_MEMORY_REGION and KVM_GET_DIRTY_LOG. Andrew Jones (1): kvm-all: put kvm_mem_flags to more work Paolo Bonzini (6): kvm-all: remove useless typedef kvm-all: move internal types to kvm_int.h kvm-all: make KVM's memory listener more generic kvm-all: add support for multiple address spaces kvm-all: kvm_irqchip_create is not expected to fail target-i386: register a separate KVM address space including SMRAM regions include/sysemu/kvm_int.h | 40 ++++++++ kvm-all.c | 259 +++++++++++++++++++++++++---------------------- target-i386/kvm.c | 40 +++++++- 3 files changed, 215 insertions(+), 124 deletions(-) create mode 100644 include/sysemu/kvm_int.h -- 1.8.3.1