One of the reasons MMIO is slower than port IO is because it requires a page table lookup. For normal memory accesses, this is solved by using the TLB cache - but MMIO entries are either not present or reserved and so are never cached. To fix, allow installing an ioeventfd on top of a read only memory region, which allows the CPU to cache the translations. Warning: svm patch is untested. Michael S. Tsirkin (3): vmx: allow ioeventfd for EPT violations svm: allow ioeventfd for NPT page faults kvm: add KVM_CAP_IOEVENTFD_PF capability include/uapi/linux/kvm.h | 1 + arch/x86/kvm/svm.c | 5 +++++ arch/x86/kvm/vmx.c | 5 +++++ arch/x86/kvm/x86.c | 1 + Documentation/virtual/kvm/api.txt | 7 +++++++ 5 files changed, 19 insertions(+) -- MST -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html