Skip to contentSkip to conversation

Consolidate the insb/outsb emulation into x86_emulate.c (second try)

PATCH Applied Laurent Vivier 3 participants 16 messages Aug 3, 2007 – Aug 5, 2007 12 messages not in the archive KVM

lore
Share & tools
lore
#0 lore raw

cover Consolidate the insb/outsb emulation into x86_emulate.c (second try)

From the TODO, this serie of patches consolidates the insb/outsb emulation into x86_emulate.c.

[PATCH 1/2] emulate_ins_outs, defines ins/outs opcode in x86_emulate.c and call emulate_instruction() from io_interception() (svm.c) and from handle_io() (vmx.c). This patch remove all vmx/svm prefix instruction decoders (get_addr_size(), io_get_override(), io_address(), get_io_count())

[PATCH 2/2] setup_pio-cleanup, some cleanup, split kvm_setup_pio() in two functions, one to setup in/out pio (kvm_emulate_pio()) and one to setup ins/outs pio (kvm_emulate_pio_string()).

As usual for me, AMD part has not been tested...

Signature · 2 lines
------------- Laurent.Vivier-6ktuUTfB/[email protected]  --------------
          "Software is hard" - Donald Knuth

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/

_______________________________________________
kvm-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel

A message that is not in the archive (sent off-list or not yet received): 46B2F559.5060604-6ktuUTfB/[email protected]

#2 lore raw

PATCH 1/2 call emulate_instruction() to emulate ins/outs

[PATCH 1/2] emulate_ins_outs, defines ins/outs opcode in x86_emulate.c and call emulate_instruction() from io_interception() (svm.c) and from handle_io() (vmx.c). This patch remove all vmx/svm prefix instruction decoders (get_addr_size(), io_get_override(), io_address(), get_io_count())

As usual for me, AMD part has not been tested...

Signature · 2 lines
------------- Laurent.Vivier-6ktuUTfB/[email protected]  --------------
          "Software is hard" - Donald Knuth
drivers/kvm/kvm_main.c +2 -0
Index: kvm/drivers/kvm/kvm_main.c
===================================================================
@@ -1222,6 +1222,8 @@
 
 	vcpu->mmio_is_write = 0;
 	r = x86_emulate_memop(&emulate_ctxt, &emulate_ops);
+	if (r && vcpu->pio.count)
+		return EMULATE_DO_MMIO;
 
 	if ((r || vcpu->mmio_is_write) && run) {
 		run->exit_reason = KVM_EXIT_MMIO;
drivers/kvm/svm.c +10 -139

177 lines not on this page · raw message

drivers/kvm/vmx.c +12 -64

94 lines not on this page · raw message

drivers/kvm/x86_emulate.c +44 -5

69 lines not on this page · raw message

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/

_______________________________________________
kvm-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel

A message that is not in the archive (sent off-list or not yet received): 46B2F6A7.5010301-6ktuUTfB/[email protected]

#4 lore raw

PATCH 2/2 pio cleanup, split kvm_setup_pio() in two functions

PATCH 2/2] setup_pio-cleanup, some cleanup, split kvm_setup_pio() in two functions, one to setup in/out pio (kvm_emulate_pio()) and one to setup ins/outs pio (kvm_emulate_pio_string()).

Signature · 2 lines
------------- Laurent.Vivier-6ktuUTfB/[email protected]  --------------
          "Software is hard" - Donald Knuth
drivers/kvm/kvm.h +5 -3
Index: kvm/drivers/kvm/kvm.h
===================================================================
@@ -539,9 +539,11 @@
 
 struct x86_emulate_ctxt;
 
-int kvm_setup_pio(struct kvm_vcpu *vcpu, struct kvm_run *run, int in,
-		  int size, unsigned long count, int string, int down,
-		  gva_t address, int rep, unsigned port);
+int kvm_emulate_pio (struct kvm_vcpu *vcpu, struct kvm_run *run, int in,
+		     int size, unsigned port);
+int kvm_emulate_pio_string(struct kvm_vcpu *vcpu, struct kvm_run *run, int in,
+			   int size, unsigned long count, int down,
+			    gva_t address, int rep, unsigned port);
 void kvm_emulate_cpuid(struct kvm_vcpu *vcpu);
 int kvm_emulate_halt(struct kvm_vcpu *vcpu);
 int emulate_invlpg(struct kvm_vcpu *vcpu, gva_t address);
drivers/kvm/kvm_main.c +39 -24

93 lines not on this page · raw message

drivers/kvm/svm.c +1 -2
Index: kvm/drivers/kvm/svm.c
===================================================================
@@ -1005,8 +1005,7 @@
 	rep = (io_info & SVM_IOIO_REP_MASK) != 0;
 	down = (svm->vmcb->save.rflags & X86_EFLAGS_DF) != 0;
 
-	return kvm_setup_pio(&svm->vcpu, kvm_run, in, size, 1, 0,
-			     down, 0, rep, port);
+	return kvm_emulate_pio(&svm->vcpu, kvm_run, in, size, port);
 }
 
 static int nop_on_interception(struct vcpu_svm *svm, struct kvm_run *kvm_run)
drivers/kvm/vmx.c +1 -2
Index: kvm/drivers/kvm/vmx.c
===================================================================
@@ -1783,8 +1783,7 @@
 	rep = (exit_qualification & 32) != 0;
 	port = exit_qualification >> 16;
 
-	return kvm_setup_pio(vcpu, kvm_run, in, size, 1, 0, down,
-			     0, rep, port);
+	return kvm_emulate_pio(vcpu, kvm_run, in, size, port);
 }
 
 static void
drivers/kvm/x86_emulate.c +2 -4
Index: kvm/drivers/kvm/x86_emulate.c
===================================================================
@@ -1123,12 +1123,11 @@
 	switch(b) {
 	case 0x6c:		/* insb */
 	case 0x6d:		/* insw/insd */
-		 if (kvm_setup_pio(ctxt->vcpu, NULL,
+		 if (kvm_emulate_pio_string(ctxt->vcpu, NULL,
 				1, 					/* in */
 				(d & ByteOp) ? 1 : op_bytes, 		/* size */
 				rep_prefix ?
 				address_mask(_regs[VCPU_REGS_RCX]) : 1,	/* count */
-				1, 					/* strings */
 				(_eflags & EFLG_DF),			/* down */
 				register_address(ctxt->es_base,
 						 _regs[VCPU_REGS_RDI]),	/* address */
@@ -1139,12 +1138,11 @@
 		return 0;
 	case 0x6e:		/* outsb */
 	case 0x6f:		/* outsw/outsd */
-		if (kvm_setup_pio(ctxt->vcpu, NULL,
+		if (kvm_emulate_pio_string(ctxt->vcpu, NULL,
 				0, 					/* in */
 				(d & ByteOp) ? 1 : op_bytes, 		/* size */
 				rep_prefix ?
 				address_mask(_regs[VCPU_REGS_RCX]) : 1,	/* count */
-				1, 					/* strings */
 				(_eflags & EFLG_DF),			/* down */
 				register_address(override_base ?
 						 *override_base : ctxt->ds_base,

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/

_______________________________________________
kvm-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel

A message that is not in the archive (sent off-list or not yet received): 46B2F775.2060301-6ktuUTfB/[email protected]

#6 lore raw

Re: [PATCH 2/2] pio cleanup, split kvm_setup_pio() in two functions

Quoted 5 lines · kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org wrote:

PATCH 2/2] setup_pio-cleanup, some cleanup, split kvm_setup_pio() in two
functions, one to setup in/out pio (kvm_emulate_pio()) and one to setup ins/outs pio (kvm_emulate_pio_string()).

Did u try on lapic3 branch with XP guest? Only windows guest is using string IO.

thanks, eddie

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/

A message that is not in the archive (sent off-list or not yet received): 10EA09EFD8728347A513008B6B0DA77A01E00832-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org

#8 lore raw

Re: [PATCH 2/2] pio cleanup, split kvm_setup_pio() in two functions

Quoted 8 lines · Eddie
Quoted 5 lines · kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org wrote:

PATCH 2/2] setup_pio-cleanup, some cleanup, split kvm_setup_pio() in two
functions, one to setup in/out pio (kvm_emulate_pio()) and one to setup ins/outs pio (kvm_emulate_pio_string()).

Did u try on lapic3 branch with XP guest? Only windows guest is using string IO.

Yes, I tried XP guest, it works fine, but not on lapic3 branch.

BTW, I saw string IO with linux too. But Windows XP uses insb/outsb, unlike linux which uses ins{wd}/outs{wd}.

Laurent

Signature · 2 lines
------------- Laurent.Vivier-6ktuUTfB/[email protected]  --------------
          "Software is hard" - Donald Knuth

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/

_______________________________________________
kvm-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel

A message that is not in the archive (sent off-list or not yet received): 46B30C47.3000007-6ktuUTfB/[email protected]

#10 lore raw

Re: [PATCH 2/2] pio cleanup, split kvm_setup_pio() in two functions

Quoted 7 lines · Laurent Vivier
Quoted 6 lines · Eddie
Quoted 5 lines · kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org wrote:

PATCH 2/2] setup_pio-cleanup, some cleanup, split kvm_setup_pio() in two
functions, one to setup in/out pio (kvm_emulate_pio()) and one to setup ins/outs pio (kvm_emulate_pio_string()).

Quoted 8 lines
Quoted 2 lines

Did u try on lapic3 branch with XP guest? Only windows guest is using string IO.

Yes, I tried XP guest, it works fine, but not on lapic3 branch.

BTW, I saw string IO with linux too. But Windows XP uses insb/outsb, unlike linux which uses ins{wd}/outs{wd}.

Only with lapic3 + windows guest, string PIO has a real usage model. I think we have to do that before taking.
thanks, eddie

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/

A message that is not in the archive (sent off-list or not yet received): 10EA09EFD8728347A513008B6B0DA77A01E00842-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org

#12 lore raw

Re: [PATCH 2/2] pio cleanup, split kvm_setup_pio() in two functions

Quoted 13 lines · kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org wrote:
Quoted 12 lines · Laurent Vivier
Quoted 8 lines · Eddie
Quoted 5 lines · kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org wrote:

PATCH 2/2] setup_pio-cleanup, some cleanup, split kvm_setup_pio() in two
functions, one to setup in/out pio (kvm_emulate_pio()) and one to setup ins/outs pio (kvm_emulate_pio_string()).

Did u try on lapic3 branch with XP guest? Only windows guest is using string IO.

Yes, I tried XP guest, it works fine, but not on lapic3 branch.

Quoted 8 lines
Quoted 3 lines

BTW, I saw string IO with linux too. But Windows XP uses insb/outsb, unlike linux which uses ins{wd}/outs{wd}.

Only with lapic3 + windows guest, string PIO has a real usage model. I think we have to do that before taking.
thanks, eddie

I may confuse you. Currently master doesn't do in kernel PIO emulation, all string PIO
will go to user level which is fine. With lapic3, we have kernel PIO emulation for PIC.
Linux doesn;t use string PIO for PIC (port 0x20/0x21) but XP and Win2003 does.
So can u test kernel string PIO?
thx,eddie

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/

A message that is not in the archive (sent off-list or not yet received): 10EA09EFD8728347A513008B6B0DA77A01E00843-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org

#14 lore raw

Re: [PATCH 2/2] pio cleanup, split kvm_setup_pio() in two functions

Quoted 20 lines · Eddie
Quoted 10 lines · kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org wrote:
Quoted 9 lines · Laurent Vivier
Quoted 8 lines · Eddie
Quoted 5 lines · kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org wrote:

PATCH 2/2] setup_pio-cleanup, some cleanup, split kvm_setup_pio() in two
functions, one to setup in/out pio (kvm_emulate_pio()) and one to setup ins/outs pio (kvm_emulate_pio_string()).

Did u try on lapic3 branch with XP guest? Only windows guest is using string IO.

Quoted 9 lines
Quoted 5 lines

Yes, I tried XP guest, it works fine, but not on lapic3 branch.

BTW, I saw string IO with linux too. But Windows XP uses insb/outsb, unlike linux which uses ins{wd}/outs{wd}.

Only with lapic3 + windows guest, string PIO has a real usage model. I think we have to do that before taking.
thanks, eddie

Quoted 7 lines

I may confuse you. Currently master doesn't do in kernel PIO emulation, all string PIO
will go to user level which is fine. With lapic3, we have kernel PIO emulation for PIC.
Linux doesn;t use string PIO for PIC (port 0x20/0x21) but XP and Win2003 does.
So can u test kernel string PIO?

Yes, I should be able, just explain me what and how...

Laurent

Signature · 2 lines
------------- Laurent.Vivier-6ktuUTfB/[email protected]  --------------
          "Software is hard" - Donald Knuth

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/

_______________________________________________
kvm-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel

A message that is not in the archive (sent off-list or not yet received): 46B31801.8030709-6ktuUTfB/[email protected]

#16 lore raw

Re: [PATCH 2/2] pio cleanup, split kvm_setup_pio() in two functions

Quoted 10 lines
Quoted 6 lines

I may confuse you. Currently master doesn't do in kernel PIO emulation, all string PIO will go to user level which is fine. With lapic3, we have kernel PIO emulation for PIC. Linux doesn;t use string PIO for PIC (port 0x20/0x21) but XP and Win2003 does. So can u test kernel string PIO?

Yes, I should be able, just explain me what and how...

Laurent

Just check out both lapic3 user & kernel branch (may need to rebase to master). And try to boot XP guest like you do for master.
thanks, eddie

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/

A message that is not in the archive (sent off-list or not yet received): 10EA09EFD8728347A513008B6B0DA77A01E00844-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org

#18 lore raw

Re: [PATCH 2/2] pio cleanup, split kvm_setup_pio() in two functions

Quoted 6 lines · kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org wrote:
Quoted 6 lines
Quoted 5 lines

I may confuse you. Currently master doesn't do in kernel PIO emulation, all string PIO will go to user level which is fine. With lapic3, we have kernel PIO emulation for PIC. Linux doesn;t use string PIO for PIC (port 0x20/0x21) but XP and Win2003 does. So can u test kernel string PIO?

Quoted 8 lines
Quoted 3 lines

Yes, I should be able, just explain me what and how...

Laurent

Just check out both lapic3 user & kernel branch (may need to rebase to master). And try to boot XP guest like you do for master.
thanks, eddie

BTW, I did a quick try, it broke Windows XP & 2003. in kernel PIC get wrong initial value (port 0x20). thx,eddie

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/

A message that is not in the archive (sent off-list or not yet received): 10EA09EFD8728347A513008B6B0DA77A01E0084D-wq7ZOvIWXbNpB2pF5aRoyrfspsVTdybXVpNB7YpNyf8@public.gmane.org

#20 lore raw

Re: [PATCH 2/2] pio cleanup, split kvm_setup_pio() in two functions

Quoted 8 lines · Eddie
Quoted 7 lines · kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org wrote:
Quoted 7 lines
Quoted 5 lines

I may confuse you. Currently master doesn't do in kernel PIO emulation, all string PIO will go to user level which is fine. With lapic3, we have kernel PIO emulation for PIC. Linux doesn;t use string PIO for PIC (port 0x20/0x21) but XP and Win2003 does. So can u test kernel string PIO?

Yes, I should be able, just explain me what and how...

Quoted 7 lines
Quoted 5 lines
Quoted 1 line

Laurent

Just check out both lapic3 user & kernel branch (may need to rebase to master). And try to boot XP guest like you do for master.
thanks, eddie

BTW, I did a quick try, it broke Windows XP & 2003. in kernel PIC get wrong initial value (port 0x20).

I think I know why it doesn't work: I suppose when it exits from kvm_setup_pio() that pio.count is different from 0... which is not the case with in-kernel io.

Regards,
Laurent

Signature · 2 lines
------------- Laurent.Vivier-6ktuUTfB/[email protected]  --------------
          "Software is hard" - Donald Knuth

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/

_______________________________________________
kvm-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel

A message that is not in the archive (sent off-list or not yet received): 46B33F71.5000605-6ktuUTfB/[email protected]

#22 lore raw

Re: [PATCH 2/2] pio cleanup, split kvm_setup_pio() in two functions

Quoted 14 lines · Laurent Vivier
Quoted 13 lines · Eddie
Quoted 12 lines · kvm-devel-bounces-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org wrote:
Quoted 8 lines
Quoted 5 lines

I may confuse you. Currently master doesn't do in kernel PIO emulation, all string PIO will go to user level which is fine. With lapic3, we have kernel PIO emulation for PIC. Linux doesn;t use string PIO for PIC (port 0x20/0x21) but XP and Win2003 does. So can u test kernel string PIO?

Yes, I should be able, just explain me what and how...

Laurent

Just check out both lapic3 user & kernel branch (may need to rebase to master). And try to boot XP guest like you do for master.
thanks, eddie

Quoted 5 lines
Quoted 2 lines

BTW, I did a quick try, it broke Windows XP & 2003. in kernel PIC get wrong initial value (port 0x20).

I think I know why it doesn't work: I suppose when it exits from kvm_setup_pio() that pio.count is different from 0... which is not the case with in-kernel io.

this little patch makes it working...
(It took me more time to fight against git than to find where was the bug... :-P )

Laurent

Signature · 2 lines
------------- Laurent.Vivier-6ktuUTfB/[email protected]  --------------
          "Software is hard" - Donald Knuth
drivers/kvm/kvm_main.c +2 -1
Index: kvm/drivers/kvm/kvm_main.c
===================================================================
@@ -1321,8 +1321,9 @@
 	emulate_ctxt.fs_base = get_segment_base(vcpu, VCPU_SREG_FS);
 
 	vcpu->mmio_is_write = 0;
+	vcpu->pio.string = 0;
 	r = x86_emulate_memop(&emulate_ctxt, &emulate_ops);
-	if (r && vcpu->pio.count)
+	if (vcpu->pio.string)
 		return EMULATE_DO_MMIO;
 
 	if ((r || vcpu->mmio_is_write) && run) {

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/

_______________________________________________
kvm-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel

#23 lore raw

Re: [PATCH 2/2] pio cleanup, split kvm_setup_pio() in two functions

In reply to a message not in the archive
Quoted 5 lines · Eddie
Quoted 5 lines
Quoted 5 lines

I may confuse you. Currently master doesn't do in kernel PIO emulation, all string PIO will go to user level which is fine. With lapic3, we have kernel PIO emulation for PIC. Linux doesn;t use string PIO for PIC (port 0x20/0x21) but XP and Win2003 does. So can u test kernel string PIO?

Quoted 8 lines
Quoted 3 lines

Yes, I should be able, just explain me what and how...

Laurent

Just check out both lapic3 user & kernel branch (may need to rebase to master). And try to boot XP guest like you do for master.
thanks, eddie

BTW, could you apply this tiny patch to your branch... (I don't like garbage in logs :-D )

Regards,
Laurent

Signature · 2 lines
------------- Laurent.Vivier-6ktuUTfB/[email protected]  --------------
          "Software is hard" - Donald Knuth
drivers/kvm/i8259.c +2 -2
Index: kvm/drivers/kvm/i8259.c
===================================================================
@@ -218,10 +218,10 @@
 			s->init_state = 1;
 			s->init4 = val & 1;
 			if (val & 0x02)
-				printk(KERN_ERR "single mode not supported");
+				printk(KERN_ERR "single mode not supported\n");
 			if (val & 0x08)
 				printk(KERN_ERR
-				       "level sensitive irq not supported");
+				       "level sensitive irq not supported\n");
 		} else if (val & 0x08) {
 			if (val & 0x04)
 				s->poll = 1;

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/

_______________________________________________
kvm-devel mailing list [email protected]
https://lists.sourceforge.net/lists/listinfo/kvm-devel

A message that is not in the archive (sent off-list or not yet received): 46B34611.7030800-6ktuUTfB/[email protected]

#25 lore raw

Re: [PATCH 2/2] pio cleanup, split kvm_setup_pio() in two functions

Quoted 8 lines · Laurent Vivier
Quoted 7 lines · Eddie
Quoted 7 lines
Quoted 5 lines

I may confuse you. Currently master doesn't do in kernel PIO emulation, all string PIO will go to user level which is fine. With lapic3, we have kernel PIO emulation for PIC. Linux doesn;t use string PIO for PIC (port 0x20/0x21) but XP and Win2003 does. So can u test kernel string PIO?

Yes, I should be able, just explain me what and how...

Quoted 8 lines
Quoted 6 lines
Quoted 1 line

Laurent

Just check out both lapic3 user & kernel branch (may need to rebase to master). And try to boot XP guest like you do for master.
thanks, eddie

BTW, could you apply this tiny patch to your branch...

Yes, it works now :-)
Thanks, Eddie

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/

Applied
#26 lore raw

Re: [PATCH 2/2] pio cleanup, split kvm_setup_pio() in two functions

In reply to a message not in the archive
Quoted 4 lines · Laurent Vivier

PATCH 2/2] setup_pio-cleanup, some cleanup, split kvm_setup_pio() in two functions, one to setup in/out pio (kvm_emulate_pio()) and one to setup ins/outs pio (kvm_emulate_pio_string()).

Applied this too, thanks.

Signature · 8 lines
error compiling committee.c: too many arguments to function


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
#27 lore raw

Re: [PATCH 1/2] call emulate_instruction() to emulate ins/outs

In reply to a message not in the archive
Quoted 7 lines · Laurent Vivier

[PATCH 1/2] emulate_ins_outs, defines ins/outs opcode in x86_emulate.c and call emulate_instruction() from io_interception() (svm.c) and from handle_io() (vmx.c). This patch remove all vmx/svm prefix instruction decoders (get_addr_size(), io_get_override(), io_address(), get_io_count())

As usual for me, AMD part has not been tested...

I tested this on amd and it works. Applied together with the lapic3 fix you posted later -- thanks.

Signature · 8 lines
error compiling committee.c: too many arguments to function


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/