kvm: Switch to unlocked MMIO

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>
This commit is contained in:
Paolo Bonzini 2015-06-18 18:47:26 +02:00
parent 7070e085d4
commit de7ea885c5
1 changed files with 1 additions and 2 deletions

View File

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