diff mbox

[6/9] remove kvm_in* functions

Message ID 1248131416-11272-7-git-send-email-glommer@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Glauber Costa July 20, 2009, 11:10 p.m. UTC
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@redhat.com>
---
 qemu-kvm.c |   25 ++++---------------------
 1 files changed, 4 insertions(+), 21 deletions(-)

Comments

Gleb Natapov July 21, 2009, 6:11 a.m. UTC | #1
On Mon, Jul 20, 2009 at 07:10:13PM -0400, Glauber Costa wrote:
> 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.
> 
I think you can remove all this black SMM magic from kvm_outb(). It is
handled in acpi.c now. Just booted WindowsXP with all this crap deleted.

> Signed-off-by: Glauber Costa <glommer@redhat.com>
> ---
>  qemu-kvm.c |   25 ++++---------------------
>  1 files changed, 4 insertions(+), 21 deletions(-)
> 
> diff --git a/qemu-kvm.c b/qemu-kvm.c
> index 26cac25..58d5de2 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)
> @@ -855,15 +837,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@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

--
			Gleb.
--
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
Gleb Natapov July 21, 2009, 12:18 p.m. UTC | #2
On Tue, Jul 21, 2009 at 09:23:24AM -0300, Glauber Costa wrote:
> On Tue, Jul 21, 2009 at 09:11:06AM +0300, Gleb Natapov wrote:
> > On Mon, Jul 20, 2009 at 07:10:13PM -0400, Glauber Costa wrote:
> > > 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.
> > > 
> > I think you can remove all this black SMM magic from kvm_outb(). It is
> > handled in acpi.c now. Just booted WindowsXP with all this crap deleted.
> Cool, I figured it out, but as I said, it is much less trivial.
> If you agree with removing it, a new patch will follow after this series is
> in
> 
I agree, but I am not the maintainer :)

--
			Gleb.
--
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
Glauber Costa July 21, 2009, 12:23 p.m. UTC | #3
On Tue, Jul 21, 2009 at 09:11:06AM +0300, Gleb Natapov wrote:
> On Mon, Jul 20, 2009 at 07:10:13PM -0400, Glauber Costa wrote:
> > 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.
> > 
> I think you can remove all this black SMM magic from kvm_outb(). It is
> handled in acpi.c now. Just booted WindowsXP with all this crap deleted.
Cool, I figured it out, but as I said, it is much less trivial.
If you agree with removing it, a new patch will follow after this series is
in

> 
> > Signed-off-by: Glauber Costa <glommer@redhat.com>
> > ---
> >  qemu-kvm.c |   25 ++++---------------------
> >  1 files changed, 4 insertions(+), 21 deletions(-)
> > 
> > diff --git a/qemu-kvm.c b/qemu-kvm.c
> > index 26cac25..58d5de2 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)
> > @@ -855,15 +837,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@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> --
> 			Gleb.
--
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 mbox

Patch

diff --git a/qemu-kvm.c b/qemu-kvm.c
index 26cac25..58d5de2 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)
@@ -855,15 +837,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);