This RFC series shows how we can solve cache incohenrency issues on ARM/ARM64. This implementation uses an ioctl that flushes the data cache for a given range of the guest physical memory, this possible solution was already broached in the previous discussion [1][2]. Each access (read or write) to the guest memory that could lead to inconsistency is flushed if needed. A light optimization is done to minimize the ioctl call. Currently tested with the following devices: e1000, megasas, lsi53c895a, nec-usb-xhci, usb-ehci (with usb-host, usb-tablet, usb-kbd and usb-mouse), which were failling with KVM and now work fine with this patch. The kernel needs this patch: [RFC] ARM/ARM64: KVM: Implement KVM_FLUSH_DCACHE_GPA ioctl [1] https://lists.cs.columbia.edu/pipermail/kvmarm/2015-February/013593.html [2] https://lists.nongnu.org/archive/html/qemu-devel/2015-03/msg01254.html Jérémy Fanguède (4): linux-headers update target-arm/kvm: Flush data cache support kvm-all: Pre-run cache coherency maintenance exec: Flush data cache when needed exec.c | 19 ++++++++++++++++++ include/sysemu/kvm.h | 3 +++ kvm-all.c | 1 + linux-headers/linux/kvm.h | 6 ++++++ stubs/kvm.c | 9 +++++++++ target-arm/kvm.c | 51 +++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 89 insertions(+) -- 1.9.1 _______________________________________________ kvmarm mailing list kvmarm@xxxxxxxxxxxxxxxxxxxxx https://lists.cs.columbia.edu/mailman/listinfo/kvmarm