If we took a MMIO exit, the data in the coalesced ring should be processes before the data in the exit itself is processed. Doing it wrong (like we did so far) will cause ordering issues. Signed-off-by: Sasha Levin <levinsasha928@xxxxxxxxx> --- tools/kvm/kvm-cpu.c | 6 ++++++ 1 files changed, 6 insertions(+), 0 deletions(-) diff --git a/tools/kvm/kvm-cpu.c b/tools/kvm/kvm-cpu.c index b7ae3d3..a0f330f 100644 --- a/tools/kvm/kvm-cpu.c +++ b/tools/kvm/kvm-cpu.c @@ -126,6 +126,12 @@ int kvm_cpu__start(struct kvm_cpu *cpu) case KVM_EXIT_MMIO: { bool ret; + /* + * If we had MMIO exit, coalesced ring should be processed + * *before* processing the exit itself + */ + kvm_cpu__handle_coalesced_mmio(cpu); + ret = kvm_cpu__emulate_mmio(cpu->kvm, cpu->kvm_run->mmio.phys_addr, cpu->kvm_run->mmio.data, -- 1.7.8 -- 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