We can use plain qemu's here, and save a couple of lines/complexity. I'm leaving outb for later, because the SMM thing makes it a little bit less trivial. Signed-off-by: Glauber Costa <glommer@xxxxxxxxxx> --- qemu-kvm.c | 25 ++++--------------------- 1 files changed, 4 insertions(+), 21 deletions(-) diff --git a/qemu-kvm.c b/qemu-kvm.c index 3c892e6..0f5f14f 100644 --- a/qemu-kvm.c +++ b/qemu-kvm.c @@ -97,24 +97,6 @@ static int kvm_debug(void *opaque, void *data, } #endif -static int kvm_inb(void *opaque, uint16_t addr, uint8_t *data) -{ - *data = cpu_inb(0, addr); - return 0; -} - -static int kvm_inw(void *opaque, uint16_t addr, uint16_t *data) -{ - *data = cpu_inw(0, addr); - return 0; -} - -static int kvm_inl(void *opaque, uint16_t addr, uint32_t *data) -{ - *data = cpu_inl(0, addr); - return 0; -} - #define PM_IO_BASE 0xb000 static int kvm_outb(void *opaque, uint16_t addr, uint8_t data) @@ -853,15 +835,16 @@ static int handle_io(kvm_vcpu_context_t vcpu) for (i = 0; i < run->io.count; ++i) { switch (run->io.direction) { case KVM_EXIT_IO_IN: + r = 0; switch (run->io.size) { case 1: - r = kvm_inb(kvm->opaque, addr, p); + *(uint8_t *)p = cpu_inb(kvm->opaque, addr); break; case 2: - r = kvm_inw(kvm->opaque, addr, p); + *(uint16_t *)p = cpu_inw(kvm->opaque, addr); break; case 4: - r = kvm_inl(kvm->opaque, addr, p); + *(uint32_t *)p = cpu_inl(kvm->opaque, addr); break; default: fprintf(stderr, "bad I/O size %d\n", run->io.size); -- 1.6.2.2 -- 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