All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH kvm-unit-tests 00/10] Minor cleanup and fix for 32bit test
@ 2010-08-24 13:46 Jason Wang
  2010-08-24 13:46 ` [PATCH kvm-unit-tests 01/10] Do not track config.mak and kvmtrace Jason Wang
                   ` (9 more replies)
  0 siblings, 10 replies; 13+ messages in thread
From: Jason Wang @ 2010-08-24 13:46 UTC (permalink / raw)
  To: jasowang, mtosatti, avi, kvm

The following series do some minor cleanup and fix for the 32bit test.

---

Jason Wang (10):
      Do not track config.mak and kvmtrace
      Remove trailing whitespaces
      Makefile cleanup
      Correct the path in README
      Drop print.S
      Remove the duplicated rdmsr/wrmsr
      Correct the tss size
      Check whether in long mode before testing vmexit caused by cr8 access
      Do not test IA32_EFER in 32bit mode.
      Add the 32bit smp initialization code


 Makefile              |    9 --
 README                |   10 +--
 config-x86-common.mak |   21 +++---
 config.mak            |    8 --
 kvmtrace              |  Bin
 x86/access.c          |    2 -
 x86/cstart.S          |  179 +++++++++++++++++++++++++++++++++++++++++++++++--
 x86/cstart64.S        |    6 +-
 x86/msr.c             |   18 +----
 x86/print.S           |   31 --------
 x86/sieve.c           |    2 -
 x86/vm.c              |    6 +-
 x86/vmexit.c          |   34 ++++-----
 13 files changed, 215 insertions(+), 111 deletions(-)
 delete mode 100644 config.mak
 delete mode 100755 kvmtrace
 delete mode 100644 x86/print.S

-- 
Jason Wang

^ permalink raw reply	[flat|nested] 13+ messages in thread

* [PATCH kvm-unit-tests 01/10] Do not track config.mak and kvmtrace
  2010-08-24 13:46 [PATCH kvm-unit-tests 00/10] Minor cleanup and fix for 32bit test Jason Wang
@ 2010-08-24 13:46 ` Jason Wang
  2010-08-24 13:47 ` [PATCH kvm-unit-tests 02/10] Remove trailing whitespaces Jason Wang
                   ` (8 subsequent siblings)
  9 siblings, 0 replies; 13+ messages in thread
From: Jason Wang @ 2010-08-24 13:46 UTC (permalink / raw)
  To: jasowang, mtosatti, avi, kvm

config.mak was generated by configure and kvmtrace were compiled
throuh makefile.

Signed-off-by: Jason Wang <jasowang@redhat.com>
---
 config.mak |    8 --------
 kvmtrace   |  Bin
 2 files changed, 0 insertions(+), 8 deletions(-)
 delete mode 100644 config.mak
 delete mode 100755 kvmtrace

diff --git a/config.mak b/config.mak
deleted file mode 100644
index 333ec7c..0000000
--- a/config.mak
+++ /dev/null
@@ -1,8 +0,0 @@
-PREFIX=/usr/local
-KERNELDIR=/home/avi/kvm/linux-2.6
-ARCH=x86_64
-PROCESSOR=x86_64
-CC=gcc
-LD=ld
-OBJCOPY=objcopy
-AR=ar
diff --git a/kvmtrace b/kvmtrace
deleted file mode 100755
index d4610290bd47922b276f6cd3604972b07bb2e07d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 36834
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



^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH kvm-unit-tests 02/10] Remove trailing whitespaces
  2010-08-24 13:46 [PATCH kvm-unit-tests 00/10] Minor cleanup and fix for 32bit test Jason Wang
  2010-08-24 13:46 ` [PATCH kvm-unit-tests 01/10] Do not track config.mak and kvmtrace Jason Wang
@ 2010-08-24 13:47 ` Jason Wang
  2010-08-24 13:47 ` [PATCH kvm-unit-tests 03/10] Makefile cleanup Jason Wang
                   ` (7 subsequent siblings)
  9 siblings, 0 replies; 13+ messages in thread
From: Jason Wang @ 2010-08-24 13:47 UTC (permalink / raw)
  To: jasowang, mtosatti, avi, kvm

Signed-off-by: Jason Wang <jasowang@redhat.com>
---
 config-x86-common.mak |   14 +++++++-------
 x86/access.c          |    2 +-
 x86/cstart64.S        |    4 ++--
 x86/print.S           |    6 +++---
 x86/sieve.c           |    2 +-
 x86/vm.c              |    6 +++---
 6 files changed, 17 insertions(+), 17 deletions(-)

diff --git a/config-x86-common.mak b/config-x86-common.mak
index 19bffd4..2d2965f 100644
--- a/config-x86-common.mak
+++ b/config-x86-common.mak
@@ -32,18 +32,18 @@ tests_and_config = $(TEST_DIR)/*.flat $(TEST_DIR)/unittests.cfg
 test_cases: $(tests-common) $(tests)
 
 $(TEST_DIR)/%.o: CFLAGS += -std=gnu99 -ffreestanding -I lib -I lib/x86
- 
+
 $(TEST_DIR)/access.flat: $(cstart.o) $(TEST_DIR)/access.o $(TEST_DIR)/print.o
- 
+
 $(TEST_DIR)/hypercall.flat: $(cstart.o) $(TEST_DIR)/hypercall.o
- 
+
 $(TEST_DIR)/sieve.flat: $(cstart.o) $(TEST_DIR)/sieve.o \
 		$(TEST_DIR)/vm.o
- 
+
 $(TEST_DIR)/vmexit.flat: $(cstart.o) $(TEST_DIR)/vmexit.o
- 
+
 $(TEST_DIR)/smptest.flat: $(cstart.o) $(TEST_DIR)/smptest.o
- 
+
 $(TEST_DIR)/emulator.flat: $(cstart.o) $(TEST_DIR)/emulator.o \
 			   $(TEST_DIR)/vm.o $(TEST_DIR)/print.o
 
@@ -52,7 +52,7 @@ $(TEST_DIR)/port80.flat: $(cstart.o) $(TEST_DIR)/port80.o
 $(TEST_DIR)/tsc.flat: $(cstart.o) $(TEST_DIR)/tsc.o
 
 $(TEST_DIR)/apic.flat: $(cstart.o) $(TEST_DIR)/apic.o $(TEST_DIR)/vm.o \
-		       $(TEST_DIR)/print.o 
+		       $(TEST_DIR)/print.o
 
 $(TEST_DIR)/realmode.flat: $(TEST_DIR)/realmode.o
 	$(CC) -m32 -nostdlib -o $@ -Wl,-T,$(TEST_DIR)/realmode.lds $^
diff --git a/x86/access.c b/x86/access.c
index a0d88e1..067565b 100644
--- a/x86/access.c
+++ b/x86/access.c
@@ -157,7 +157,7 @@ static void ac_test_show(ac_test_t *at);
 void lidt(idt_entry_t *idt, int nentries)
 {
     descriptor_table_t dt;
-    
+
     dt.limit = nentries * sizeof(*idt) - 1;
     dt.linear_addr = (unsigned long)idt;
     asm volatile ("lidt %0" : : "m"(dt));
diff --git a/x86/cstart64.S b/x86/cstart64.S
index cc4c80f..5d358ad 100644
--- a/x86/cstart64.S
+++ b/x86/cstart64.S
@@ -19,7 +19,7 @@ stacktop:
 ring0stacktop:
 
 .data
-		
+
 .align 4096
 ptl2:
 i = 0
@@ -38,7 +38,7 @@ ptl3:
 .align 4096
 ptl4:
 	.quad ptl3 + 7
-	
+
 .align 4096
 
 gdt64_desc:
diff --git a/x86/print.S b/x86/print.S
index c1b1c0d..b445381 100644
--- a/x86/print.S
+++ b/x86/print.S
@@ -3,12 +3,12 @@
 
 #define PSEUDO_SERIAL_PORT 0xf1
 
-	
+
 .text
 	PRINT "boo"
 	hlt
 1:	jmp 1b
-	
+
 .globl print
 print:
 	push %rax
@@ -24,7 +24,7 @@ putchar:
 	outsb
 	jmp putchar
 done:
-	
+
 	pop %rdx
 	pop %rsi
 	pop %rax
diff --git a/x86/sieve.c b/x86/sieve.c
index ef4a5a0..6cbcd6d 100644
--- a/x86/sieve.c
+++ b/x86/sieve.c
@@ -46,6 +46,6 @@ int main()
 	test_sieve("virtual", v, VSIZE);
 	vfree(v);
     }
-    
+
     return 0;
 }
diff --git a/x86/vm.c b/x86/vm.c
index 62b3ba8..b34449f 100644
--- a/x86/vm.c
+++ b/x86/vm.c
@@ -30,7 +30,7 @@ void *alloc_page()
 
     if (!free)
 	return 0;
-    
+
     p = free;
     free = *(void **)free;
 
@@ -184,7 +184,7 @@ void *vmalloc(unsigned long size)
     unsigned pages;
 
     size += sizeof(unsigned long);
-    
+
     size = (size + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1);
     vfree_top -= size;
     mem = p = vfree_top;
@@ -201,7 +201,7 @@ void *vmalloc(unsigned long size)
 void vfree(void *mem)
 {
     unsigned long size = ((unsigned long *)mem)[-1];
-    
+
     while (size) {
 	free_page(phys_to_virt(get_pte(phys_to_virt(read_cr3()), mem) & PTE_ADDR));
 	mem += PAGE_SIZE;


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH kvm-unit-tests 03/10] Makefile cleanup
  2010-08-24 13:46 [PATCH kvm-unit-tests 00/10] Minor cleanup and fix for 32bit test Jason Wang
  2010-08-24 13:46 ` [PATCH kvm-unit-tests 01/10] Do not track config.mak and kvmtrace Jason Wang
  2010-08-24 13:47 ` [PATCH kvm-unit-tests 02/10] Remove trailing whitespaces Jason Wang
@ 2010-08-24 13:47 ` Jason Wang
  2010-08-24 13:47 ` [PATCH kvm-unit-tests 04/10] Correct the path in README Jason Wang
                   ` (6 subsequent siblings)
  9 siblings, 0 replies; 13+ messages in thread
From: Jason Wang @ 2010-08-24 13:47 UTC (permalink / raw)
  To: jasowang, mtosatti, avi, kvm

Remove the obsoleted target and directories.

Signed-off-by: Jason Wang <jasowang@redhat.com>
---
 Makefile |    9 +--------
 1 files changed, 1 insertions(+), 8 deletions(-)

diff --git a/Makefile b/Makefile
index 5347ce8..d25e6f2 100644
--- a/Makefile
+++ b/Makefile
@@ -30,10 +30,6 @@ CFLAGS += -O1
 CFLAGS += $(autodepend-flags) -g -fomit-frame-pointer -Wall
 CFLAGS += $(call cc-option, -fno-stack-protector, "")
 CFLAGS += $(call cc-option, -fno-stack-protector-all, "")
-CFLAGS += -I../include
-CFLAGS += -I ../libkvm
-
-LDFLAGS += $(CFLAGS) -L ../libkvm
 
 CXXFLAGS = $(autodepend-flags)
 
@@ -43,9 +39,6 @@ LDFLAGS += -pthread -lrt
 
 kvmtrace_objs= kvmtrace.o
 
-kvmctl: $(kvmctl_objs)
-	$(CC) $(LDFLAGS) $^ -o $@
-
 kvmtrace: $(kvmtrace_objs)
 	$(CC) $(LDFLAGS) $^ -o $@
 
@@ -62,4 +55,4 @@ install:
 	install $(tests_and_config) $(DESTDIR)
 
 clean: arch_clean
-	$(RM) kvmctl kvmtrace *.o *.a .*.d $(libcflat) $(cflatobjs)
+	$(RM) kvmtrace *.o *.a .*.d $(libcflat) $(cflatobjs)


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH kvm-unit-tests 04/10] Correct the path in README
  2010-08-24 13:46 [PATCH kvm-unit-tests 00/10] Minor cleanup and fix for 32bit test Jason Wang
                   ` (2 preceding siblings ...)
  2010-08-24 13:47 ` [PATCH kvm-unit-tests 03/10] Makefile cleanup Jason Wang
@ 2010-08-24 13:47 ` Jason Wang
  2010-08-24 13:47 ` [PATCH kvm-unit-tests 05/10] Drop print.S Jason Wang
                   ` (5 subsequent siblings)
  9 siblings, 0 replies; 13+ messages in thread
From: Jason Wang @ 2010-08-24 13:47 UTC (permalink / raw)
  To: jasowang, mtosatti, avi, kvm

Signed-off-by: Jason Wang <jasowang@redhat.com>
---
 README |   10 +++++-----
 1 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/README b/README
index 6a83831..9c0c518 100644
--- a/README
+++ b/README
@@ -7,17 +7,17 @@ Tests uses a qemu's virtual test device, named testdev, for services like printi
 See file testdev.txt for more details.
 
 To create the tests' images just type 'make' in this directory.
-Tests' images created in ./test/<ARCH>/*.flat
+Tests' images created in ./<ARCH>/*.flat
 
 An example of a test invocation:
-qemu-system-x86_64 -device testdev,chardev=testlog -chardev file,id=testlog,path=msr.out -kernel ./test/x86/msr.flat
+qemu-system-x86_64 -device testdev,chardev=testlog -chardev file,id=testlog,path=msr.out -kernel ./x86/msr.flat
 This invocation runs the msr test case. The test output is in file msr.out.
 
 
 
 Directory structure:
 .:  Makefile and config files for the tests
-./test/lib: general services for the tests
-./test/lib/<ARCH>: architecture dependent services for the tests
-./test/<ARCH>: the sources of the tests and the created objects/images
+./lib: general services for the tests
+./lib/<ARCH>: architecture dependent services for the tests
+./<ARCH>: the sources of the tests and the created objects/images
 


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH kvm-unit-tests 05/10] Drop print.S
  2010-08-24 13:46 [PATCH kvm-unit-tests 00/10] Minor cleanup and fix for 32bit test Jason Wang
                   ` (3 preceding siblings ...)
  2010-08-24 13:47 ` [PATCH kvm-unit-tests 04/10] Correct the path in README Jason Wang
@ 2010-08-24 13:47 ` Jason Wang
  2010-08-24 13:47 ` [PATCH kvm-unit-tests 06/10] Remove the duplicated rdmsr/wrmsr Jason Wang
                   ` (4 subsequent siblings)
  9 siblings, 0 replies; 13+ messages in thread
From: Jason Wang @ 2010-08-24 13:47 UTC (permalink / raw)
  To: jasowang, mtosatti, avi, kvm

We've already had lib/printf.c.

Signed-off-by: Jason Wang <jasowang@redhat.com>
---
 config-x86-common.mak |    9 ++++-----
 x86/print.S           |   31 -------------------------------
 2 files changed, 4 insertions(+), 36 deletions(-)
 delete mode 100644 x86/print.S

diff --git a/config-x86-common.mak b/config-x86-common.mak
index 2d2965f..a623983 100644
--- a/config-x86-common.mak
+++ b/config-x86-common.mak
@@ -33,7 +33,7 @@ test_cases: $(tests-common) $(tests)
 
 $(TEST_DIR)/%.o: CFLAGS += -std=gnu99 -ffreestanding -I lib -I lib/x86
 
-$(TEST_DIR)/access.flat: $(cstart.o) $(TEST_DIR)/access.o $(TEST_DIR)/print.o
+$(TEST_DIR)/access.flat: $(cstart.o) $(TEST_DIR)/access.o
 
 $(TEST_DIR)/hypercall.flat: $(cstart.o) $(TEST_DIR)/hypercall.o
 
@@ -45,14 +45,13 @@ $(TEST_DIR)/vmexit.flat: $(cstart.o) $(TEST_DIR)/vmexit.o
 $(TEST_DIR)/smptest.flat: $(cstart.o) $(TEST_DIR)/smptest.o
 
 $(TEST_DIR)/emulator.flat: $(cstart.o) $(TEST_DIR)/emulator.o \
-			   $(TEST_DIR)/vm.o $(TEST_DIR)/print.o
+			   $(TEST_DIR)/vm.o
 
 $(TEST_DIR)/port80.flat: $(cstart.o) $(TEST_DIR)/port80.o
 
 $(TEST_DIR)/tsc.flat: $(cstart.o) $(TEST_DIR)/tsc.o
 
-$(TEST_DIR)/apic.flat: $(cstart.o) $(TEST_DIR)/apic.o $(TEST_DIR)/vm.o \
-		       $(TEST_DIR)/print.o
+$(TEST_DIR)/apic.flat: $(cstart.o) $(TEST_DIR)/apic.o $(TEST_DIR)/vm.o
 
 $(TEST_DIR)/realmode.flat: $(TEST_DIR)/realmode.o
 	$(CC) -m32 -nostdlib -o $@ -Wl,-T,$(TEST_DIR)/realmode.lds $^
@@ -66,7 +65,7 @@ $(TEST_DIR)/idt_test.flat: $(cstart.o) $(TEST_DIR)/idt.o $(TEST_DIR)/idt_test.o
 $(TEST_DIR)/xsave.flat: $(cstart.o) $(TEST_DIR)/idt.o $(TEST_DIR)/xsave.o
 
 $(TEST_DIR)/rmap_chain.flat: $(cstart.o) $(TEST_DIR)/rmap_chain.o \
-			     $(TEST_DIR)/print.o $(TEST_DIR)/vm.o
+			     $(TEST_DIR)/vm.o
 
 $(TEST_DIR)/svm.flat: $(cstart.o) $(TEST_DIR)/vm.o
 
diff --git a/x86/print.S b/x86/print.S
deleted file mode 100644
index b445381..0000000
--- a/x86/print.S
+++ /dev/null
@@ -1,31 +0,0 @@
-
-#include "print.h"
-
-#define PSEUDO_SERIAL_PORT 0xf1
-
-
-.text
-	PRINT "boo"
-	hlt
-1:	jmp 1b
-
-.globl print
-print:
-	push %rax
-	push %rsi
-	push %rdx
-
-	mov %rdi, %rsi
-	mov $(PSEUDO_SERIAL_PORT), %edx
-
-putchar:
-	cmpb $0, (%rsi)
-	jz done
-	outsb
-	jmp putchar
-done:
-
-	pop %rdx
-	pop %rsi
-	pop %rax
-	ret


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH kvm-unit-tests 06/10] Remove the duplicated rdmsr/wrmsr
  2010-08-24 13:46 [PATCH kvm-unit-tests 00/10] Minor cleanup and fix for 32bit test Jason Wang
                   ` (4 preceding siblings ...)
  2010-08-24 13:47 ` [PATCH kvm-unit-tests 05/10] Drop print.S Jason Wang
@ 2010-08-24 13:47 ` Jason Wang
  2010-08-24 13:47 ` [PATCH kvm-unit-tests 07/10] Correct the tss size Jason Wang
                   ` (3 subsequent siblings)
  9 siblings, 0 replies; 13+ messages in thread
From: Jason Wang @ 2010-08-24 13:47 UTC (permalink / raw)
  To: jasowang, mtosatti, avi, kvm

They have been implemented in lib/x86/processor.h. Also rename the
cpuid to cpuid_test because cpuid have been defined.

Signed-off-by: Jason Wang <jasowang@redhat.com>
---
 x86/msr.c    |   16 +---------------
 x86/vmexit.c |   20 +++-----------------
 2 files changed, 4 insertions(+), 32 deletions(-)

diff --git a/x86/msr.c b/x86/msr.c
index 1e7987d..9c85369 100644
--- a/x86/msr.c
+++ b/x86/msr.c
@@ -1,6 +1,7 @@
 /* msr tests */
 
 #include "libcflat.h"
+#include "processor.h"
 
 struct msr_info {
     int index;
@@ -87,21 +88,6 @@ static void report(const char *name, int passed)
 	printf("%s: %s\n", name, passed ? "PASS" : "FAIL");
 }
 
-static void wrmsr(unsigned index, unsigned long long value)
-{
-	unsigned a = value, d = value >> 32;
-
-	asm volatile("wrmsr" : : "a"(a), "d"(d), "c"(index));
-}
-
-static unsigned long long rdmsr(unsigned index)
-{
-	unsigned a, d;
-
-	asm volatile("rdmsr" : "=a"(a), "=d"(d) : "c"(index));
-	return ((unsigned long long)d << 32) | a;
-}
-
 static void test_msr_rw(int msr_index, unsigned long long input, unsigned long long expected)
 {
     unsigned long long r = 0;
diff --git a/x86/vmexit.c b/x86/vmexit.c
index 707d5c6..819c24b 100644
--- a/x86/vmexit.c
+++ b/x86/vmexit.c
@@ -1,6 +1,7 @@
 
 #include "libcflat.h"
 #include "smp.h"
+#include "processor.h"
 
 static inline unsigned long long rdtsc()
 {
@@ -32,7 +33,7 @@ static unsigned int inl(unsigned short port)
 #  define R "e"
 #endif
 
-static void cpuid(void)
+static void cpuid_test(void)
 {
 	asm volatile ("push %%"R "bx; cpuid; pop %%"R "bx"
 		      : : : "eax", "ecx", "edx");
@@ -48,21 +49,6 @@ static void vmcall(void)
 #define MSR_EFER 0xc0000080
 #define EFER_NX_MASK            (1ull << 11)
 
-unsigned long long rdmsr(unsigned index)
-{
-	unsigned a, d;
-
-	asm volatile("rdmsr" : "=a"(a), "=d"(d) : "c"(index));
-	return ((unsigned long long)d << 32) | a;
-}
-
-void wrmsr(unsigned index, unsigned long long val)
-{
-	unsigned a = val, d = val >> 32;
-
-	asm volatile("wrmsr" : : "a"(a), "d"(d), "c"(index));
-}
-
 static void mov_from_cr8(void)
 {
 	unsigned long cr8;
@@ -112,7 +98,7 @@ static struct test {
 	int (*valid)(void);
 	int parallel;
 } tests[] = {
-	{ cpuid, "cpuid", .parallel = 1,  },
+	{ cpuid_test, "cpuid", .parallel = 1,  },
 	{ vmcall, "vmcall", .parallel = 1, },
 	{ mov_from_cr8, "mov_from_cr8", .parallel = 1, },
 	{ mov_to_cr8, "mov_to_cr8" , .parallel = 1, },


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH kvm-unit-tests 07/10] Correct the tss size
  2010-08-24 13:46 [PATCH kvm-unit-tests 00/10] Minor cleanup and fix for 32bit test Jason Wang
                   ` (5 preceding siblings ...)
  2010-08-24 13:47 ` [PATCH kvm-unit-tests 06/10] Remove the duplicated rdmsr/wrmsr Jason Wang
@ 2010-08-24 13:47 ` Jason Wang
  2010-08-24 13:57   ` Avi Kivity
  2010-08-24 13:47 ` [PATCH kvm-unit-tests 08/10] Check whether in long mode before testing vmexit caused by cr8 access Jason Wang
                   ` (2 subsequent siblings)
  9 siblings, 1 reply; 13+ messages in thread
From: Jason Wang @ 2010-08-24 13:47 UTC (permalink / raw)
  To: jasowang, mtosatti, avi, kvm

TSS size should be 104 byte.

Signed-off-by: Jason Wang <jasowang@redhat.com>
---
 x86/cstart64.S |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/x86/cstart64.S b/x86/cstart64.S
index 5d358ad..b871153 100644
--- a/x86/cstart64.S
+++ b/x86/cstart64.S
@@ -69,7 +69,7 @@ tss:
 	.long 0
 	.quad ring0stacktop - i * 4096
 	.quad 0, 0, 0
-	.quad 0, 0, 0, 0, 0, 0, 0, 0
+	.quad 0, 0, 0, 0, 0, 0, 0
 	.long 0, 0, 0
 i = i + 1
 	.endr


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH kvm-unit-tests 08/10] Check whether in long mode before testing vmexit caused by cr8 access
  2010-08-24 13:46 [PATCH kvm-unit-tests 00/10] Minor cleanup and fix for 32bit test Jason Wang
                   ` (6 preceding siblings ...)
  2010-08-24 13:47 ` [PATCH kvm-unit-tests 07/10] Correct the tss size Jason Wang
@ 2010-08-24 13:47 ` Jason Wang
  2010-08-24 13:58   ` Avi Kivity
  2010-08-24 13:47 ` [PATCH kvm-unit-tests 09/10] Do not test IA32_EFER in 32bit mode Jason Wang
  2010-08-24 13:48 ` [PATCH kvm-unit-tests 10/10] Add the 32bit smp initialization code Jason Wang
  9 siblings, 1 reply; 13+ messages in thread
From: Jason Wang @ 2010-08-24 13:47 UTC (permalink / raw)
  To: jasowang, mtosatti, avi, kvm

CR8 is only availabe when in long mode.

Signed-off-by: Jason Wang <jasowang@redhat.com>
---
 x86/vmexit.c |   14 ++++++++++++--
 1 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/x86/vmexit.c b/x86/vmexit.c
index 819c24b..34b0af4 100644
--- a/x86/vmexit.c
+++ b/x86/vmexit.c
@@ -48,6 +48,7 @@ static void vmcall(void)
 
 #define MSR_EFER 0xc0000080
 #define EFER_NX_MASK            (1ull << 11)
+#define EFER_LMA_MASK           (1ull << 10)
 
 static void mov_from_cr8(void)
 {
@@ -68,6 +69,15 @@ static int is_smp(void)
 	return cpu_count() > 1;
 }
 
+static int is_long_mode(void)
+{
+#ifdef __i386__
+        return 0;
+#else
+        return rdmsr(MSR_EFER) | EFER_LMA_MASK;
+#endif
+}
+
 static void nop(void *junk)
 {
 }
@@ -100,8 +110,8 @@ static struct test {
 } tests[] = {
 	{ cpuid_test, "cpuid", .parallel = 1,  },
 	{ vmcall, "vmcall", .parallel = 1, },
-	{ mov_from_cr8, "mov_from_cr8", .parallel = 1, },
-	{ mov_to_cr8, "mov_to_cr8" , .parallel = 1, },
+	{ mov_from_cr8, "mov_from_cr8", is_long_mode, .parallel = 1, },
+	{ mov_to_cr8, "mov_to_cr8" , is_long_mode, .parallel = 1, },
 	{ inl_pmtimer, "inl_from_pmtimer", .parallel = 1, },
 	{ ipi, "ipi", is_smp, .parallel = 0, },
 	{ ipi_halt, "ipi+halt", is_smp, .parallel = 0, },


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH kvm-unit-tests 09/10] Do not test IA32_EFER in 32bit mode.
  2010-08-24 13:46 [PATCH kvm-unit-tests 00/10] Minor cleanup and fix for 32bit test Jason Wang
                   ` (7 preceding siblings ...)
  2010-08-24 13:47 ` [PATCH kvm-unit-tests 08/10] Check whether in long mode before testing vmexit caused by cr8 access Jason Wang
@ 2010-08-24 13:47 ` Jason Wang
  2010-08-24 13:48 ` [PATCH kvm-unit-tests 10/10] Add the 32bit smp initialization code Jason Wang
  9 siblings, 0 replies; 13+ messages in thread
From: Jason Wang @ 2010-08-24 13:47 UTC (permalink / raw)
  To: jasowang, mtosatti, avi, kvm

Signed-off-by: Jason Wang <jasowang@redhat.com>
---
 x86/msr.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/x86/msr.c b/x86/msr.c
index 9c85369..c3e0014 100644
--- a/x86/msr.c
+++ b/x86/msr.c
@@ -49,9 +49,11 @@ struct msr_info msr_info[] =
     { .index = 0xc0000102, .name = "MSR_KERNEL_GS_BASE",
       .val_pairs = {{ .valid = 1, .value = addr_64, .expected = addr_64}}
     },
+#ifdef __x86_64__
     { .index = 0xc0000080, .name = "MSR_EFER",
       .val_pairs = {{ .valid = 1, .value = 0xD00, .expected = 0xD00}}
     },
+#endif
     { .index = 0xc0000082, .name = "MSR_LSTAR",
       .val_pairs = {{ .valid = 1, .value = addr_64, .expected = addr_64}}
     },


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* [PATCH kvm-unit-tests 10/10] Add the 32bit smp initialization code
  2010-08-24 13:46 [PATCH kvm-unit-tests 00/10] Minor cleanup and fix for 32bit test Jason Wang
                   ` (8 preceding siblings ...)
  2010-08-24 13:47 ` [PATCH kvm-unit-tests 09/10] Do not test IA32_EFER in 32bit mode Jason Wang
@ 2010-08-24 13:48 ` Jason Wang
  9 siblings, 0 replies; 13+ messages in thread
From: Jason Wang @ 2010-08-24 13:48 UTC (permalink / raw)
  To: jasowang, mtosatti, avi, kvm

Add the smp initlaization codes for 32bit. This would make the 32bit
smp tests available.

Signed-off-by: Jason Wang <jasowang@redhat.com>
---
 x86/cstart.S |  179 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 173 insertions(+), 6 deletions(-)

diff --git a/x86/cstart.S b/x86/cstart.S
index 1bdf789..6ce200d 100644
--- a/x86/cstart.S
+++ b/x86/cstart.S
@@ -1,9 +1,65 @@
 
+#include "apic-defs.h"
+
+.globl boot_idt
+boot_idt = 0
+
+ipi_vector = 0x20
+
+max_cpus = 4
 
 .bss
 
+	. = . + 4096 * max_cpus
+	.align 16
+stacktop:
+
+	. = . + 4096
+	.align 16
+ring0stacktop:
+
+.data
+
+.align 4096
+pt:
+i = 0
+        .rept 1024
+        .long 0x1e7 | (i << 22)
+        i = i + 1
+        .endr
+
+gdt32:
+	.quad 0
+	.quad 0x00cf9b000000ffff // flat 32-bit code segment
+	.quad 0x00cf93000000ffff // flat 32-bit data segment
+
+tss_descr:
+        .rept max_cpus
+        .quad 0x000089000000ffff // 32-bit avail tss
+        .endr
+gdt32_end:
+
+i = 0
+tss:
+        .rept max_cpus
+        .long 0
+        .long ring0stacktop - i * 4096
+        .long 0
+        .quad 0, 0, 0
+        .quad 0, 0, 0, 0, 0, 0, 0
+        .long 0, 0, 0
+        i = i + 1
+        .endr
+tss_end:
+
+idt_descr:
+	.word 16 * 256 - 1
+	.long boot_idt
+
 .section .init
 
+.code32
+
 mb_magic = 0x1BADB002
 mb_flags = 0x0
 
@@ -11,15 +67,126 @@ mb_flags = 0x0
 	.long mb_magic, mb_flags, 0 - (mb_magic + mb_flags)
 mb_cmdline = 16
 
+MSR_GS_BASE = 0xc0000101
+
+.macro setup_percpu_area
+	lea -4096(%esp), %eax
+	mov $0, %edx
+	mov $MSR_GS_BASE, %ecx
+	wrmsr
+.endm
+
 .globl start
 start:
-	mov mb_cmdline(%ebx), %eax
-	mov %eax, __args
-	call __setup_args
-	pushl $__argv
-	pushl __argc
-	call main
+        mov mb_cmdline(%ebx), %eax
+        mov %eax, __args
+        call __setup_args
+        mov $stacktop, %esp
+        setup_percpu_area
+        call prepare_32
+        jmpl $8, $start32
+
+prepare_32:
+        lgdtl gdt32_descr
+
+	mov %cr4, %eax
+	bts $4, %eax  // pse
+	mov %eax, %cr4
+
+	mov $pt, %eax
+	mov %eax, %cr3
+
+	mov %cr0, %eax
+	bts $0, %eax
+	bts $31, %eax
+	mov %eax, %cr0
+	ret
+
+smp_stacktop:	.long 0xa0000
+
+ap_start32:
+	mov $0x10, %ax
+	mov %ax, %ds
+	mov %ax, %es
+	mov %ax, %fs
+	mov %ax, %gs
+	mov %ax, %ss
+	mov $-4096, %esp
+	lock/xaddl %esp, smp_stacktop
+	setup_percpu_area
+	call prepare_32
+	call load_tss
+	call enable_apic
+	call enable_x2apic
+	sti
+	nop
+	lock incw cpu_online_count
+
+1:	hlt
+	jmp 1b
+
+start32:
+	call load_tss
+	call mask_pic_interrupts
+	call enable_apic
+	call smp_init
+	call enable_x2apic
+        push $__argv
+        push __argc
+        call main
 	push %eax
 	call exit
 
+load_tss:
+	lidt idt_descr
+	mov $16, %eax
+	mov %ax, %ss
+	mov $(APIC_DEFAULT_PHYS_BASE + APIC_ID), %eax
+	mov (%eax), %eax
+	shr $24, %eax
+	mov %eax, %ebx
+	shl $3, %ebx
+	mov $((tss_end - tss) / max_cpus), %edx
+	imul %edx
+	add $tss, %eax
+	mov %ax, tss_descr+2(%ebx)
+	shr $16, %eax
+	mov %al, tss_descr+4(%ebx)
+	shr $8, %eax
+	mov %al, tss_descr+7(%ebx)
+	lea tss_descr-gdt32(%ebx), %eax
+	ltr %ax
+	ret
+
+smp_init:
+	cld
+	lea sipi_entry, %esi
+	xor %edi, %edi
+	mov $(sipi_end - sipi_entry), %ecx
+	rep/movsb
+	mov $APIC_DEFAULT_PHYS_BASE, %eax
+	movl $(APIC_DEST_ALLBUT | APIC_DEST_PHYSICAL | APIC_DM_INIT | APIC_INT_ASSERT), APIC_ICR(%eax)
+	movl $(APIC_DEST_ALLBUT | APIC_DEST_PHYSICAL | APIC_DM_INIT), APIC_ICR(%eax)
+	movl $(APIC_DEST_ALLBUT | APIC_DEST_PHYSICAL | APIC_DM_STARTUP), APIC_ICR(%eax)
+	call fwcfg_get_nb_cpus
+1:	pause
+	cmpw %ax, cpu_online_count
+	jne 1b
+smp_init_done:
+	ret
+
+cpu_online_count:	.word 1
+
+.code16
+sipi_entry:
+	mov %cr0, %eax
+	or $1, %eax
+	mov %eax, %cr0
+	lgdtl gdt32_descr - sipi_entry
+	ljmpl $8, $ap_start32
+
+gdt32_descr:
+	.word gdt32_end - gdt32 - 1
+	.long gdt32
 
+sipi_end:


^ permalink raw reply related	[flat|nested] 13+ messages in thread

* Re: [PATCH kvm-unit-tests 07/10] Correct the tss size
  2010-08-24 13:47 ` [PATCH kvm-unit-tests 07/10] Correct the tss size Jason Wang
@ 2010-08-24 13:57   ` Avi Kivity
  0 siblings, 0 replies; 13+ messages in thread
From: Avi Kivity @ 2010-08-24 13:57 UTC (permalink / raw)
  To: Jason Wang; +Cc: mtosatti, kvm

  On 08/24/2010 04:47 PM, Jason Wang wrote:
> TSS size should be 104 byte.
>
> Signed-off-by: Jason Wang<jasowang@redhat.com>
> ---
>   x86/cstart64.S |    2 +-
>   1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/x86/cstart64.S b/x86/cstart64.S
> index 5d358ad..b871153 100644
> --- a/x86/cstart64.S
> +++ b/x86/cstart64.S
> @@ -69,7 +69,7 @@ tss:
>   	.long 0
>   	.quad ring0stacktop - i * 4096

ring 0 stack

>   	.quad 0, 0, 0

rings 1, 2, 3 stack

> -	.quad 0, 0, 0, 0, 0, 0, 0, 0

1 qword reserved, 7 qwords IST

> +	.quad 0, 0, 0, 0, 0, 0, 0
>   	.long 0, 0, 0

3 dwords reserved + I/O map base address - so this looks correct?

>   i = i + 1
>   	.endr
>


-- 
error compiling committee.c: too many arguments to function


^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: [PATCH kvm-unit-tests 08/10] Check whether in long mode before testing vmexit caused by cr8 access
  2010-08-24 13:47 ` [PATCH kvm-unit-tests 08/10] Check whether in long mode before testing vmexit caused by cr8 access Jason Wang
@ 2010-08-24 13:58   ` Avi Kivity
  0 siblings, 0 replies; 13+ messages in thread
From: Avi Kivity @ 2010-08-24 13:58 UTC (permalink / raw)
  To: Jason Wang; +Cc: mtosatti, kvm

  On 08/24/2010 04:47 PM, Jason Wang wrote:
> CR8 is only availabe when in long mode.
>
> Signed-off-by: Jason Wang<jasowang@redhat.com>
> ---
>   x86/vmexit.c |   14 ++++++++++++--
>   1 files changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/x86/vmexit.c b/x86/vmexit.c
> index 819c24b..34b0af4 100644
> --- a/x86/vmexit.c
> +++ b/x86/vmexit.c
> @@ -48,6 +48,7 @@ static void vmcall(void)
>
>   #define MSR_EFER 0xc0000080
>   #define EFER_NX_MASK            (1ull<<  11)
> +#define EFER_LMA_MASK           (1ull<<  10)
>
>   static void mov_from_cr8(void)
>   {
> @@ -68,6 +69,15 @@ static int is_smp(void)
>   	return cpu_count()>  1;
>   }
>
> +static int is_long_mode(void)
> +{
> +#ifdef __i386__
> +        return 0;
> +#else
> +        return rdmsr(MSR_EFER) | EFER_LMA_MASK;
> +#endif
> +}
> +
>   static void nop(void *junk)
>   {
>   }
> @@ -100,8 +110,8 @@ static struct test {
>   } tests[] = {
>   	{ cpuid_test, "cpuid", .parallel = 1,  },
>   	{ vmcall, "vmcall", .parallel = 1, },
> -	{ mov_from_cr8, "mov_from_cr8", .parallel = 1, },
> -	{ mov_to_cr8, "mov_to_cr8" , .parallel = 1, },
> +	{ mov_from_cr8, "mov_from_cr8", is_long_mode, .parallel = 1, },
> +	{ mov_to_cr8, "mov_to_cr8" , is_long_mode, .parallel = 1, },
>   	{ inl_pmtimer, "inl_from_pmtimer", .parallel = 1, },
>   	{ ipi, "ipi", is_smp, .parallel = 0, },
>   	{ ipi_halt, "ipi+halt", is_smp, .parallel = 0, },

Enough to #ifdef __x86_64__.  If it's defined we're in long mode.


-- 
error compiling committee.c: too many arguments to function


^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2010-08-24 13:58 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-08-24 13:46 [PATCH kvm-unit-tests 00/10] Minor cleanup and fix for 32bit test Jason Wang
2010-08-24 13:46 ` [PATCH kvm-unit-tests 01/10] Do not track config.mak and kvmtrace Jason Wang
2010-08-24 13:47 ` [PATCH kvm-unit-tests 02/10] Remove trailing whitespaces Jason Wang
2010-08-24 13:47 ` [PATCH kvm-unit-tests 03/10] Makefile cleanup Jason Wang
2010-08-24 13:47 ` [PATCH kvm-unit-tests 04/10] Correct the path in README Jason Wang
2010-08-24 13:47 ` [PATCH kvm-unit-tests 05/10] Drop print.S Jason Wang
2010-08-24 13:47 ` [PATCH kvm-unit-tests 06/10] Remove the duplicated rdmsr/wrmsr Jason Wang
2010-08-24 13:47 ` [PATCH kvm-unit-tests 07/10] Correct the tss size Jason Wang
2010-08-24 13:57   ` Avi Kivity
2010-08-24 13:47 ` [PATCH kvm-unit-tests 08/10] Check whether in long mode before testing vmexit caused by cr8 access Jason Wang
2010-08-24 13:58   ` Avi Kivity
2010-08-24 13:47 ` [PATCH kvm-unit-tests 09/10] Do not test IA32_EFER in 32bit mode Jason Wang
2010-08-24 13:48 ` [PATCH kvm-unit-tests 10/10] Add the 32bit smp initialization code Jason Wang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.