Message ID | 1248214392-12533-7-git-send-email-glommer@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Jul 21, 2009 at 06:13:12PM -0400, Glauber Costa wrote: > all they did was to call a qemu function. Call this function instead. > > Signed-off-by: Glauber Costa <glommer@redhat.com> > --- > qemu-kvm-x86.c | 7 +------ > qemu-kvm.c | 34 ++++++++-------------------------- > 2 files changed, 9 insertions(+), 32 deletions(-) > > diff --git a/qemu-kvm-x86.c b/qemu-kvm-x86.c > index 350f272..741ae0a 100644 > --- a/qemu-kvm-x86.c > +++ b/qemu-kvm-x86.c > @@ -344,7 +344,6 @@ void kvm_show_code(kvm_vcpu_context_t vcpu) > unsigned char code; > char code_str[SHOW_CODE_LEN * 3 + 1]; > unsigned long rip; > - kvm_context_t kvm = vcpu->kvm; > > r = ioctl(fd, KVM_GET_SREGS, &sregs); > if (r == -1) { > @@ -364,11 +363,7 @@ void kvm_show_code(kvm_vcpu_context_t vcpu) > for (n = -back_offset; n < SHOW_CODE_LEN-back_offset; ++n) { > if (n == 0) > strcat(code_str, " -->"); > - r = kvm_mmio_read(kvm->opaque, rip + n, &code, 1); > - if (r < 0) { > - strcat(code_str, " xx"); > - continue; > - } > + cpu_physical_memory_rw(rip + n, &code, 1, 0); > sprintf(code_str + strlen(code_str), " %02x", code); > } > fprintf(stderr, "code:%s\n", code_str); > diff --git a/qemu-kvm.c b/qemu-kvm.c > index 0724c28..9b1c506 100644 > --- a/qemu-kvm.c > +++ b/qemu-kvm.c > @@ -95,18 +95,6 @@ static int kvm_debug(void *opaque, void *data, > } > #endif > > -int kvm_mmio_read(void *opaque, uint64_t addr, uint8_t *data, int len) > -{ > - cpu_physical_memory_rw(addr, data, len, 0); > - return 0; > -} > - > -int kvm_mmio_write(void *opaque, uint64_t addr, uint8_t *data, int len) > -{ > - cpu_physical_memory_rw(addr, data, len, 1); > - return 0; > -} > - > static int handle_unhandled(kvm_context_t kvm, kvm_vcpu_context_t vcpu, > uint64_t reason) > { > @@ -888,23 +876,17 @@ int kvm_set_mpstate(kvm_vcpu_context_t vcpu, struct kvm_mp_state *mp_state) > } > #endif > > -static int handle_mmio(kvm_vcpu_context_t vcpu) > +static void handle_mmio(kvm_vcpu_context_t vcpu) > { > unsigned long addr = vcpu->run->mmio.phys_addr; > - kvm_context_t kvm = vcpu->kvm; > struct kvm_run *kvm_run = vcpu->run; > void *data = kvm_run->mmio.data; > > /* hack: Red Hat 7.1 generates these weird accesses. */ > if ((addr > 0xa0000-4 && addr <= 0xa0000) && kvm_run->mmio.len == 3) > - return 0; > + return; > > - if (kvm_run->mmio.is_write) > - return kvm_mmio_write(kvm->opaque, addr, data, > - kvm_run->mmio.len); > - else > - return kvm_mmio_read(kvm->opaque, addr, data, > - kvm_run->mmio.len); > + cpu_physical_memory_rw(addr, data, kvm_run->mmio.len, kvm_run->mmio.is_write); Glauber, The indentation now looks horrible. Applied the kvm_init order patches. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Sat, Jul 25, 2009 at 12:24:41PM -0300, Marcelo Tosatti wrote: > On Tue, Jul 21, 2009 at 06:13:12PM -0400, Glauber Costa wrote: > > all they did was to call a qemu function. Call this function instead. > > > > Signed-off-by: Glauber Costa <glommer@redhat.com> > > --- > > qemu-kvm-x86.c | 7 +------ > > qemu-kvm.c | 34 ++++++++-------------------------- > > 2 files changed, 9 insertions(+), 32 deletions(-) > > > > diff --git a/qemu-kvm-x86.c b/qemu-kvm-x86.c > > index 350f272..741ae0a 100644 > > --- a/qemu-kvm-x86.c > > +++ b/qemu-kvm-x86.c > > @@ -344,7 +344,6 @@ void kvm_show_code(kvm_vcpu_context_t vcpu) > > unsigned char code; > > char code_str[SHOW_CODE_LEN * 3 + 1]; > > unsigned long rip; > > - kvm_context_t kvm = vcpu->kvm; > > > > r = ioctl(fd, KVM_GET_SREGS, &sregs); > > if (r == -1) { > > @@ -364,11 +363,7 @@ void kvm_show_code(kvm_vcpu_context_t vcpu) > > for (n = -back_offset; n < SHOW_CODE_LEN-back_offset; ++n) { > > if (n == 0) > > strcat(code_str, " -->"); > > - r = kvm_mmio_read(kvm->opaque, rip + n, &code, 1); > > - if (r < 0) { > > - strcat(code_str, " xx"); > > - continue; > > - } > > + cpu_physical_memory_rw(rip + n, &code, 1, 0); > > sprintf(code_str + strlen(code_str), " %02x", code); > > } > > fprintf(stderr, "code:%s\n", code_str); > > diff --git a/qemu-kvm.c b/qemu-kvm.c > > index 0724c28..9b1c506 100644 > > --- a/qemu-kvm.c > > +++ b/qemu-kvm.c > > @@ -95,18 +95,6 @@ static int kvm_debug(void *opaque, void *data, > > } > > #endif > > > > -int kvm_mmio_read(void *opaque, uint64_t addr, uint8_t *data, int len) > > -{ > > - cpu_physical_memory_rw(addr, data, len, 0); > > - return 0; > > -} > > - > > -int kvm_mmio_write(void *opaque, uint64_t addr, uint8_t *data, int len) > > -{ > > - cpu_physical_memory_rw(addr, data, len, 1); > > - return 0; > > -} > > - > > static int handle_unhandled(kvm_context_t kvm, kvm_vcpu_context_t vcpu, > > uint64_t reason) > > { > > @@ -888,23 +876,17 @@ int kvm_set_mpstate(kvm_vcpu_context_t vcpu, struct kvm_mp_state *mp_state) > > } > > #endif > > > > -static int handle_mmio(kvm_vcpu_context_t vcpu) > > +static void handle_mmio(kvm_vcpu_context_t vcpu) > > { > > unsigned long addr = vcpu->run->mmio.phys_addr; > > - kvm_context_t kvm = vcpu->kvm; > > struct kvm_run *kvm_run = vcpu->run; > > void *data = kvm_run->mmio.data; > > > > /* hack: Red Hat 7.1 generates these weird accesses. */ > > if ((addr > 0xa0000-4 && addr <= 0xa0000) && kvm_run->mmio.len == 3) > > - return 0; > > + return; > > > > - if (kvm_run->mmio.is_write) > > - return kvm_mmio_write(kvm->opaque, addr, data, > > - kvm_run->mmio.len); > > - else > > - return kvm_mmio_read(kvm->opaque, addr, data, > > - kvm_run->mmio.len); > > + cpu_physical_memory_rw(addr, data, kvm_run->mmio.len, kvm_run->mmio.is_write); > > Glauber, > > The indentation now looks horrible. Applied the kvm_init order patches. Gosh... I propose we fix the identation of that file once and for all. It should be pretty easy and automatic if we convert all tabs to 4-spaces, which can be done with a straightforward sed script. Do I have your okay to proceed with this, Master Kivity? -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/qemu-kvm-x86.c b/qemu-kvm-x86.c index 350f272..741ae0a 100644 --- a/qemu-kvm-x86.c +++ b/qemu-kvm-x86.c @@ -344,7 +344,6 @@ void kvm_show_code(kvm_vcpu_context_t vcpu) unsigned char code; char code_str[SHOW_CODE_LEN * 3 + 1]; unsigned long rip; - kvm_context_t kvm = vcpu->kvm; r = ioctl(fd, KVM_GET_SREGS, &sregs); if (r == -1) { @@ -364,11 +363,7 @@ void kvm_show_code(kvm_vcpu_context_t vcpu) for (n = -back_offset; n < SHOW_CODE_LEN-back_offset; ++n) { if (n == 0) strcat(code_str, " -->"); - r = kvm_mmio_read(kvm->opaque, rip + n, &code, 1); - if (r < 0) { - strcat(code_str, " xx"); - continue; - } + cpu_physical_memory_rw(rip + n, &code, 1, 0); sprintf(code_str + strlen(code_str), " %02x", code); } fprintf(stderr, "code:%s\n", code_str); diff --git a/qemu-kvm.c b/qemu-kvm.c index 0724c28..9b1c506 100644 --- a/qemu-kvm.c +++ b/qemu-kvm.c @@ -95,18 +95,6 @@ static int kvm_debug(void *opaque, void *data, } #endif -int kvm_mmio_read(void *opaque, uint64_t addr, uint8_t *data, int len) -{ - cpu_physical_memory_rw(addr, data, len, 0); - return 0; -} - -int kvm_mmio_write(void *opaque, uint64_t addr, uint8_t *data, int len) -{ - cpu_physical_memory_rw(addr, data, len, 1); - return 0; -} - static int handle_unhandled(kvm_context_t kvm, kvm_vcpu_context_t vcpu, uint64_t reason) { @@ -888,23 +876,17 @@ int kvm_set_mpstate(kvm_vcpu_context_t vcpu, struct kvm_mp_state *mp_state) } #endif -static int handle_mmio(kvm_vcpu_context_t vcpu) +static void handle_mmio(kvm_vcpu_context_t vcpu) { unsigned long addr = vcpu->run->mmio.phys_addr; - kvm_context_t kvm = vcpu->kvm; struct kvm_run *kvm_run = vcpu->run; void *data = kvm_run->mmio.data; /* hack: Red Hat 7.1 generates these weird accesses. */ if ((addr > 0xa0000-4 && addr <= 0xa0000) && kvm_run->mmio.len == 3) - return 0; + return; - if (kvm_run->mmio.is_write) - return kvm_mmio_write(kvm->opaque, addr, data, - kvm_run->mmio.len); - else - return kvm_mmio_read(kvm->opaque, addr, data, - kvm_run->mmio.len); + cpu_physical_memory_rw(addr, data, kvm_run->mmio.len, kvm_run->mmio.is_write); } int handle_io_window(kvm_context_t kvm) @@ -991,10 +973,9 @@ again: struct kvm_coalesced_mmio_ring *ring = (void *)run + kvm->coalesced_mmio * PAGE_SIZE; while (ring->first != ring->last) { - kvm_mmio_write(kvm->opaque, - ring->coalesced_mmio[ring->first].phys_addr, - &ring->coalesced_mmio[ring->first].data[0], - ring->coalesced_mmio[ring->first].len); + cpu_physical_memory_rw(ring->coalesced_mmio[ring->first].phys_addr, + &ring->coalesced_mmio[ring->first].data[0], + ring->coalesced_mmio[ring->first].len, 1); smp_wmb(); ring->first = (ring->first + 1) % KVM_COALESCED_MMIO_MAX; @@ -1033,7 +1014,8 @@ again: r = handle_debug(vcpu, env); break; case KVM_EXIT_MMIO: - r = handle_mmio(vcpu); + r = 0; + handle_mmio(vcpu); break; case KVM_EXIT_HLT: r = handle_halt(vcpu);
all they did was to call a qemu function. Call this function instead. Signed-off-by: Glauber Costa <glommer@redhat.com> --- qemu-kvm-x86.c | 7 +------ qemu-kvm.c | 34 ++++++++-------------------------- 2 files changed, 9 insertions(+), 32 deletions(-)