kvm: Switch to unlocked MMIO
authorPaolo Bonzini <pbonzini@redhat.com>
Thu, 18 Jun 2015 16:47:26 +0000 (18:47 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 1 Jul 2015 13:45:51 +0000 (15:45 +0200)
Do not take the BQL before dispatching MMIO requests of KVM VCPUs.
Instead, address_space_rw will do it if necessary. This enables completely
BQL-free MMIO handling in KVM mode for upcoming devices with fine-grained
locking.

Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Message-Id: <1434646046-27150-10-git-send-email-pbonzini@redhat.com>

kvm-all.c

index ad5ac5e3df8a233578aab88ec8f76711a9a6545f..df57da0bf286e9441996dfd0a21fa4d4c19e3cc4 100644 (file)
--- a/kvm-all.c
+++ b/kvm-all.c
@@ -1814,13 +1814,12 @@ int kvm_cpu_exec(CPUState *cpu)
             break;
         case KVM_EXIT_MMIO:
             DPRINTF("handle_mmio\n");
-            qemu_mutex_lock_iothread();
+            /* Called outside BQL */
             address_space_rw(&address_space_memory,
                              run->mmio.phys_addr, attrs,
                              run->mmio.data,
                              run->mmio.len,
                              run->mmio.is_write);
-            qemu_mutex_unlock_iothread();
             ret = 0;
             break;
         case KVM_EXIT_IRQ_WINDOW_OPEN: