public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH unit-tests 1/3] Task stack pointer should point to the end of the page.
@ 2011-01-11 13:30 Gleb Natapov
  2011-01-11 13:30 ` [PATCH unit-tests 2/3] Test that error code is pushed on exception's task stack Gleb Natapov
                   ` (2 more replies)
  0 siblings, 3 replies; 8+ messages in thread
From: Gleb Natapov @ 2011-01-11 13:30 UTC (permalink / raw)
  To: avi, mtosatti; +Cc: kvm


Signed-off-by: Gleb Natapov <gleb@redhat.com>
---
 lib/x86/desc.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/lib/x86/desc.c b/lib/x86/desc.c
index 1bd4421..11bd2a2 100644
--- a/lib/x86/desc.c
+++ b/lib/x86/desc.c
@@ -362,7 +362,7 @@ void setup_tss32(void)
 		tss[i].cr3 = read_cr3();
 		tss[i].ss0 = tss[i].ss1 = tss[i].ss2 = 0x10;
 		tss[i].esp = tss[i].esp0 = tss[i].esp1 = tss[i].esp2 =
-			(u32)tss_stack[i];
+			(u32)tss_stack[i] + 4096;
 		tss[i].cs = 0x08;
 		tss[i].ds = tss[i].es = tss[i].fs = tss[i].gs = tss[i].ss = 0x10;
 		tss[i].iomap_base = (u16)desc_size;
-- 
1.7.2.3


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

* [PATCH unit-tests 2/3] Test that error code is pushed on exception's task stack.
  2011-01-11 13:30 [PATCH unit-tests 1/3] Task stack pointer should point to the end of the page Gleb Natapov
@ 2011-01-11 13:30 ` Gleb Natapov
  2011-01-11 13:30 ` [PATCH unit-tests 3/3] Test that vcpu does not continue to run after issuing S3 Gleb Natapov
  2011-01-19 16:37 ` [PATCH unit-tests 1/3] Task stack pointer should point to the end of the page Marcelo Tosatti
  2 siblings, 0 replies; 8+ messages in thread
From: Gleb Natapov @ 2011-01-11 13:30 UTC (permalink / raw)
  To: avi, mtosatti; +Cc: kvm

If exception with error code is handled by task gate, error code should
be pushed to new task stack.

Signed-off-by: Gleb Natapov <gleb@redhat.com>
---
 x86/taskswitch2.c |   39 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 39 insertions(+), 0 deletions(-)

diff --git a/x86/taskswitch2.c b/x86/taskswitch2.c
index f51cb91..683834e 100644
--- a/x86/taskswitch2.c
+++ b/x86/taskswitch2.c
@@ -3,6 +3,7 @@
 #include "apic-defs.h"
 #include "apic.h"
 #include "processor.h"
+#include "vm.h"
 
 #define xstr(s) str(s)
 #define str(s) #s
@@ -10,6 +11,9 @@
 static volatile int test_count;
 static volatile unsigned int test_divider;
 
+static char *fault_addr;
+static ulong fault_phys;
+
 static int g_fail;
 static int g_tests;
 
@@ -66,6 +70,27 @@ start:
 	goto start;
 }
 
+void do_pf_tss(ulong *error_code)
+{
+	printf("PF task is running %x %x\n", error_code, *(ulong*)error_code);
+	print_current_tss_info();
+	if (*(ulong*)error_code == 0x2) /* write access, not present */
+		test_count++;
+	install_pte(phys_to_virt(read_cr3()), 1, fault_addr,
+		    fault_phys | PTE_PRESENT | PTE_WRITE, 0);
+}
+
+extern void pf_tss(void);
+
+asm (
+	"pf_tss: \n\t"
+	"push %esp \n\t"
+	"call do_pf_tss \n\t"
+	"add $4, %esp \n\t"
+	"iret\n\t"
+	"jmp pf_tss\n\t"
+    );
+
 static void jmp_tss(void)
 {
 start:
@@ -92,6 +117,7 @@ int main()
 {
 	unsigned int res;
 
+	setup_vm();
 	setup_idt();
 	setup_gdt();
 	setup_tss32();
@@ -156,6 +182,19 @@ int main()
 	printf("Return from int 3\n");
 	report("BP exeption", test_count == 1);
 
+	/*
+	 * test that PF triggers task gate and error code is placed on
+	 * exception task's stack
+	 */
+	fault_addr = alloc_vpage();
+	fault_phys = (ulong)virt_to_phys(alloc_page());
+	test_count = 0;
+	set_intr_task_gate(14, pf_tss);
+	printf("Access unmapped page\n");
+	*fault_addr = 0;
+	printf("Return from pf tss\n");
+	report("PF exeption", test_count == 1);
+
 	/* test that calling a task by lcall works */
 	test_count = 0;
 	set_intr_task_gate(0, irq_tss);
-- 
1.7.2.3


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

* [PATCH unit-tests 3/3] Test that vcpu does not continue to run after issuing S3.
  2011-01-11 13:30 [PATCH unit-tests 1/3] Task stack pointer should point to the end of the page Gleb Natapov
  2011-01-11 13:30 ` [PATCH unit-tests 2/3] Test that error code is pushed on exception's task stack Gleb Natapov
@ 2011-01-11 13:30 ` Gleb Natapov
  2011-01-11 13:53   ` Avi Kivity
  2011-01-19 16:37 ` [PATCH unit-tests 1/3] Task stack pointer should point to the end of the page Marcelo Tosatti
  2 siblings, 1 reply; 8+ messages in thread
From: Gleb Natapov @ 2011-01-11 13:30 UTC (permalink / raw)
  To: avi, mtosatti; +Cc: kvm


Signed-off-by: Gleb Natapov <gleb@redhat.com>
---
 config-x86-common.mak |    5 +-
 x86/s3.c              |  167 +++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 171 insertions(+), 1 deletions(-)
 create mode 100644 x86/s3.c

diff --git a/config-x86-common.mak b/config-x86-common.mak
index cca8f87..033bae0 100644
--- a/config-x86-common.mak
+++ b/config-x86-common.mak
@@ -33,7 +33,8 @@ tests-common = $(TEST_DIR)/vmexit.flat $(TEST_DIR)/tsc.flat \
                $(TEST_DIR)/smptest.flat  $(TEST_DIR)/port80.flat \
                $(TEST_DIR)/realmode.flat $(TEST_DIR)/msr.flat \
                $(TEST_DIR)/hypercall.flat $(TEST_DIR)/sieve.flat \
-               $(TEST_DIR)/kvmclock_test.flat  $(TEST_DIR)/eventinj.flat
+               $(TEST_DIR)/kvmclock_test.flat  $(TEST_DIR)/eventinj.flat \
+               $(TEST_DIR)/s3.flat
 
 tests-common += api/api-sample
 tests-common += api/dirty-log
@@ -82,6 +83,8 @@ $(TEST_DIR)/kvmclock_test.elf: $(cstart.o) $(TEST_DIR)/kvmclock.o \
 
 $(TEST_DIR)/eventinj.elf: $(cstart.o) $(TEST_DIR)/eventinj.o
 
+$(TEST_DIR)/s3.elf: $(cstart.o) $(TEST_DIR)/s3.o
+
 arch_clean:
 	$(RM) $(TEST_DIR)/*.o $(TEST_DIR)/*.flat $(TEST_DIR)/*.elf \
 	$(TEST_DIR)/.*.d $(TEST_DIR)/lib/.*.d $(TEST_DIR)/lib/*.o
diff --git a/x86/s3.c b/x86/s3.c
new file mode 100644
index 0000000..d7df92d
--- /dev/null
+++ b/x86/s3.c
@@ -0,0 +1,167 @@
+#include "libcflat.h"
+
+struct rsdp_descriptor {        /* Root System Descriptor Pointer */
+    u64 signature;              /* ACPI signature, contains "RSD PTR " */
+    u8  checksum;               /* To make sum of struct == 0 */
+    u8  oem_id [6];             /* OEM identification */
+    u8  revision;               /* Must be 0 for 1.0, 2 for 2.0 */
+    u32 rsdt_physical_address;  /* 32-bit physical address of RSDT */
+    u32 length;                 /* XSDT Length in bytes including hdr */
+    u64 xsdt_physical_address;  /* 64-bit physical address of XSDT */
+    u8  extended_checksum;      /* Checksum of entire table */
+    u8  reserved [3];           /* Reserved field must be 0 */
+};
+
+#define ACPI_TABLE_HEADER_DEF   /* ACPI common table header */ \
+    u32 signature;          /* ACPI signature (4 ASCII characters) */ \
+    u32 length;                 /* Length of table, in bytes, including header */ \
+    u8  revision;               /* ACPI Specification minor version # */ \
+    u8  checksum;               /* To make sum of entire table == 0 */ \
+    u8  oem_id [6];             /* OEM identification */ \
+    u8  oem_table_id [8];       /* OEM table identification */ \
+    u32 oem_revision;           /* OEM revision number */ \
+    u8  asl_compiler_id [4];    /* ASL compiler vendor ID */ \
+    u32 asl_compiler_revision;  /* ASL compiler revision number */
+
+#define RSDT_SIGNATURE 0x54445352
+struct rsdt_descriptor_rev1 {
+    ACPI_TABLE_HEADER_DEF
+    u32 table_offset_entry[0];
+};
+
+#define FACP_SIGNATURE 0x50434146 // FACP
+struct fadt_descriptor_rev1
+{
+    ACPI_TABLE_HEADER_DEF     /* ACPI common table header */
+    u32 firmware_ctrl;          /* Physical address of FACS */
+    u32 dsdt;                   /* Physical address of DSDT */
+    u8  model;                  /* System Interrupt Model */
+    u8  reserved1;              /* Reserved */
+    u16 sci_int;                /* System vector of SCI interrupt */
+    u32 smi_cmd;                /* Port address of SMI command port */
+    u8  acpi_enable;            /* Value to write to smi_cmd to enable ACPI */
+    u8  acpi_disable;           /* Value to write to smi_cmd to disable ACPI */
+    u8  S4bios_req;             /* Value to write to SMI CMD to enter S4BIOS state */
+    u8  reserved2;              /* Reserved - must be zero */
+    u32 pm1a_evt_blk;           /* Port address of Power Mgt 1a acpi_event Reg Blk */
+    u32 pm1b_evt_blk;           /* Port address of Power Mgt 1b acpi_event Reg Blk */
+    u32 pm1a_cnt_blk;           /* Port address of Power Mgt 1a Control Reg Blk */
+    u32 pm1b_cnt_blk;           /* Port address of Power Mgt 1b Control Reg Blk */
+    u32 pm2_cnt_blk;            /* Port address of Power Mgt 2 Control Reg Blk */
+    u32 pm_tmr_blk;             /* Port address of Power Mgt Timer Ctrl Reg Blk */
+    u32 gpe0_blk;               /* Port addr of General Purpose acpi_event 0 Reg Blk */
+    u32 gpe1_blk;               /* Port addr of General Purpose acpi_event 1 Reg Blk */
+    u8  pm1_evt_len;            /* Byte length of ports at pm1_x_evt_blk */
+    u8  pm1_cnt_len;            /* Byte length of ports at pm1_x_cnt_blk */
+    u8  pm2_cnt_len;            /* Byte Length of ports at pm2_cnt_blk */
+    u8  pm_tmr_len;             /* Byte Length of ports at pm_tm_blk */
+    u8  gpe0_blk_len;           /* Byte Length of ports at gpe0_blk */
+    u8  gpe1_blk_len;           /* Byte Length of ports at gpe1_blk */
+    u8  gpe1_base;              /* Offset in gpe model where gpe1 events start */
+    u8  reserved3;              /* Reserved */
+    u16 plvl2_lat;              /* Worst case HW latency to enter/exit C2 state */
+    u16 plvl3_lat;              /* Worst case HW latency to enter/exit C3 state */
+    u16 flush_size;             /* Size of area read to flush caches */
+    u16 flush_stride;           /* Stride used in flushing caches */
+    u8  duty_offset;            /* Bit location of duty cycle field in p_cnt reg */
+    u8  duty_width;             /* Bit width of duty cycle field in p_cnt reg */
+    u8  day_alrm;               /* Index to day-of-month alarm in RTC CMOS RAM */
+    u8  mon_alrm;               /* Index to month-of-year alarm in RTC CMOS RAM */
+    u8  century;                /* Index to century in RTC CMOS RAM */
+    u8  reserved4;              /* Reserved */
+    u8  reserved4a;             /* Reserved */
+    u8  reserved4b;             /* Reserved */
+};
+
+#define FACS_SIGNATURE 0x53434146 // FACS
+struct facs_descriptor_rev1
+{
+    u32 signature;           /* ACPI Signature */
+    u32 length;                 /* Length of structure, in bytes */
+    u32 hardware_signature;     /* Hardware configuration signature */
+    u32 firmware_waking_vector; /* ACPI OS waking vector */
+    u32 global_lock;            /* Global Lock */
+    u32 S4bios_f        : 1;    /* Indicates if S4BIOS support is present */
+    u32 reserved1       : 31;   /* Must be 0 */
+    u8  resverved3 [40];        /* Reserved - must be zero */
+};
+
+u32* find_resume_vector_addr(void)
+{
+    unsigned long addr;
+    struct rsdp_descriptor *rsdp;
+    struct rsdt_descriptor_rev1 *rsdt;
+    void *end;
+    int i;
+
+    for(addr = 0xf0000; addr < 0x100000; addr += 16) {
+	rsdp = (void*)addr;
+	if (rsdp->signature == 0x2052545020445352LL)
+          break;
+    }
+    if (addr == 0x100000) {
+        printf("Can't find RSDP\n");
+        return 0;
+    }
+
+    printf("RSDP is at %x\n", rsdp);
+    rsdt = (void*)(ulong)rsdp->rsdt_physical_address;
+    if (!rsdt || rsdt->signature != RSDT_SIGNATURE)
+        return 0;
+
+    printf("RSDT is at %x\n", rsdt);
+
+    end = (void*)rsdt + rsdt->length;
+    for (i=0; (void*)&rsdt->table_offset_entry[i] < end; i++) {
+        struct fadt_descriptor_rev1 *fadt = (void*)(ulong)rsdt->table_offset_entry[i];
+        struct facs_descriptor_rev1 *facs;
+        if (!fadt || fadt->signature != FACP_SIGNATURE)
+            continue;
+        printf("FADT is at %x\n", fadt);
+        facs = (void*)(ulong)fadt->firmware_ctrl;
+        if (!facs || facs->signature != FACS_SIGNATURE)
+            return 0;
+        printf("FACS is at %x\n", facs);
+        return &facs->firmware_waking_vector;
+    }
+   return 0;
+}
+
+extern char resume_start, resume_end;
+
+int main(int argc, char **argv)
+{
+	volatile u32 *resume_vector_ptr = find_resume_vector_addr();
+	char *addr, *resume_vec = (void*)0x1000;
+
+	*resume_vector_ptr = (u32)(ulong)resume_vec;
+
+	printf("resume vector addr is %x\n", resume_vector_ptr);
+	for (addr = &resume_start; addr < &resume_end; addr++)
+		*resume_vec++ = *addr;
+	printf("copy resume code from %x\n", &resume_start);
+	*(volatile int*)0 = 0;
+	asm volatile("out %0, %1" :: "a"(0x2400), "d"((short)0xb004):"memory");
+	while(1)
+		*(volatile int*)0 = 1;
+
+	return 0;
+}
+
+asm (
+        ".global resume_start\n"
+	".global resume_end\n"
+	".code16\n"
+	"resume_start:\n"
+	"mov 0x0, %eax\n"
+	"mov $0xf4, %dx\n"
+	"out %eax, %dx\n"
+	"1: hlt\n"
+	"jmp 1b\n"
+	"resume_end:\n"
+#ifdef __i386__
+	".code32\n"
+#else
+	".code64\n"
+#endif
+    );
-- 
1.7.2.3


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

* Re: [PATCH unit-tests 3/3] Test that vcpu does not continue to run after issuing S3.
  2011-01-11 13:30 ` [PATCH unit-tests 3/3] Test that vcpu does not continue to run after issuing S3 Gleb Natapov
@ 2011-01-11 13:53   ` Avi Kivity
  2011-01-11 13:54     ` Gleb Natapov
  0 siblings, 1 reply; 8+ messages in thread
From: Avi Kivity @ 2011-01-11 13:53 UTC (permalink / raw)
  To: Gleb Natapov; +Cc: mtosatti, kvm

On 01/11/2011 03:30 PM, Gleb Natapov wrote:
> +
> +asm (
> +        ".global resume_start\n"
> +	".global resume_end\n"
> +	".code16\n"
> +	"resume_start:\n"
> +	"mov 0x0, %eax\n"
> +	"mov $0xf4, %dx\n"
> +	"out %eax, %dx\n"
> +	"1: hlt\n"
> +	"jmp 1b\n"
> +	"resume_end:\n"
> +#ifdef __i386__
> +	".code32\n"
> +#else
> +	".code64\n"
> +#endif
> +    );

Is this a kvm unit test or a qemu unit test?

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


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

* Re: [PATCH unit-tests 3/3] Test that vcpu does not continue to run after issuing S3.
  2011-01-11 13:53   ` Avi Kivity
@ 2011-01-11 13:54     ` Gleb Natapov
  2011-01-11 14:08       ` Avi Kivity
  0 siblings, 1 reply; 8+ messages in thread
From: Gleb Natapov @ 2011-01-11 13:54 UTC (permalink / raw)
  To: Avi Kivity; +Cc: mtosatti, kvm

On Tue, Jan 11, 2011 at 03:53:08PM +0200, Avi Kivity wrote:
> On 01/11/2011 03:30 PM, Gleb Natapov wrote:
> >+
> >+asm (
> >+        ".global resume_start\n"
> >+	".global resume_end\n"
> >+	".code16\n"
> >+	"resume_start:\n"
> >+	"mov 0x0, %eax\n"
> >+	"mov $0xf4, %dx\n"
> >+	"out %eax, %dx\n"
> >+	"1: hlt\n"
> >+	"jmp 1b\n"
> >+	"resume_end:\n"
> >+#ifdef __i386__
> >+	".code32\n"
> >+#else
> >+	".code64\n"
> >+#endif
> >+    );
> 
> Is this a kvm unit test or a qemu unit test?
> 
Both? Is this a bad thing?

--
			Gleb.

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

* Re: [PATCH unit-tests 3/3] Test that vcpu does not continue to run after issuing S3.
  2011-01-11 13:54     ` Gleb Natapov
@ 2011-01-11 14:08       ` Avi Kivity
  2011-01-11 14:17         ` Gleb Natapov
  0 siblings, 1 reply; 8+ messages in thread
From: Avi Kivity @ 2011-01-11 14:08 UTC (permalink / raw)
  To: Gleb Natapov; +Cc: mtosatti, kvm

On 01/11/2011 03:54 PM, Gleb Natapov wrote:
> On Tue, Jan 11, 2011 at 03:53:08PM +0200, Avi Kivity wrote:
> >  On 01/11/2011 03:30 PM, Gleb Natapov wrote:
> >  >+
> >  >+asm (
> >  >+        ".global resume_start\n"
> >  >+	".global resume_end\n"
> >  >+	".code16\n"
> >  >+	"resume_start:\n"
> >  >+	"mov 0x0, %eax\n"
> >  >+	"mov $0xf4, %dx\n"
> >  >+	"out %eax, %dx\n"
> >  >+	"1: hlt\n"
> >  >+	"jmp 1b\n"
> >  >+	"resume_end:\n"
> >  >+#ifdef __i386__
> >  >+	".code32\n"
> >  >+#else
> >  >+	".code64\n"
> >  >+#endif
> >  >+    );
> >
> >  Is this a kvm unit test or a qemu unit test?
> >
> Both? Is this a bad thing?

We may want to move non-kvm tests to qemu.git.  Though all of the 
non-api tests work equally for qemu and kvm.

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


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

* Re: [PATCH unit-tests 3/3] Test that vcpu does not continue to run after issuing S3.
  2011-01-11 14:08       ` Avi Kivity
@ 2011-01-11 14:17         ` Gleb Natapov
  0 siblings, 0 replies; 8+ messages in thread
From: Gleb Natapov @ 2011-01-11 14:17 UTC (permalink / raw)
  To: Avi Kivity; +Cc: mtosatti, kvm

On Tue, Jan 11, 2011 at 04:08:21PM +0200, Avi Kivity wrote:
> On 01/11/2011 03:54 PM, Gleb Natapov wrote:
> >On Tue, Jan 11, 2011 at 03:53:08PM +0200, Avi Kivity wrote:
> >>  On 01/11/2011 03:30 PM, Gleb Natapov wrote:
> >>  >+
> >>  >+asm (
> >>  >+        ".global resume_start\n"
> >>  >+	".global resume_end\n"
> >>  >+	".code16\n"
> >>  >+	"resume_start:\n"
> >>  >+	"mov 0x0, %eax\n"
> >>  >+	"mov $0xf4, %dx\n"
> >>  >+	"out %eax, %dx\n"
> >>  >+	"1: hlt\n"
> >>  >+	"jmp 1b\n"
> >>  >+	"resume_end:\n"
> >>  >+#ifdef __i386__
> >>  >+	".code32\n"
> >>  >+#else
> >>  >+	".code64\n"
> >>  >+#endif
> >>  >+    );
> >>
> >>  Is this a kvm unit test or a qemu unit test?
> >>
> >Both? Is this a bad thing?
> 
> We may want to move non-kvm tests to qemu.git.  Though all of the
> non-api tests work equally for qemu and kvm.
> 
We will have to maintain two separate unit test infrastructures then.
We can make x86/qemu or x86/device-model subdir in kvm-unit-test.

--
			Gleb.

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

* Re: [PATCH unit-tests 1/3] Task stack pointer should point to the end of the page.
  2011-01-11 13:30 [PATCH unit-tests 1/3] Task stack pointer should point to the end of the page Gleb Natapov
  2011-01-11 13:30 ` [PATCH unit-tests 2/3] Test that error code is pushed on exception's task stack Gleb Natapov
  2011-01-11 13:30 ` [PATCH unit-tests 3/3] Test that vcpu does not continue to run after issuing S3 Gleb Natapov
@ 2011-01-19 16:37 ` Marcelo Tosatti
  2 siblings, 0 replies; 8+ messages in thread
From: Marcelo Tosatti @ 2011-01-19 16:37 UTC (permalink / raw)
  To: Gleb Natapov; +Cc: avi, kvm

On Tue, Jan 11, 2011 at 03:30:05PM +0200, Gleb Natapov wrote:
> 
> Signed-off-by: Gleb Natapov <gleb@redhat.com>
> ---
>  lib/x86/desc.c |    2 +-
>  1 files changed, 1 insertions(+), 1 deletions(-)
> 
> diff --git a/lib/x86/desc.c b/lib/x86/desc.c
> index 1bd4421..11bd2a2 100644
> --- a/lib/x86/desc.c
> +++ b/lib/x86/desc.c
> @@ -362,7 +362,7 @@ void setup_tss32(void)
>  		tss[i].cr3 = read_cr3();
>  		tss[i].ss0 = tss[i].ss1 = tss[i].ss2 = 0x10;
>  		tss[i].esp = tss[i].esp0 = tss[i].esp1 = tss[i].esp2 =
> -			(u32)tss_stack[i];
> +			(u32)tss_stack[i] + 4096;
>  		tss[i].cs = 0x08;
>  		tss[i].ds = tss[i].es = tss[i].fs = tss[i].gs = tss[i].ss = 0x10;
>  		tss[i].iomap_base = (u16)desc_size;
> -- 
> 1.7.2.3

Applied, thanks.


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

end of thread, other threads:[~2011-01-19 18:15 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-01-11 13:30 [PATCH unit-tests 1/3] Task stack pointer should point to the end of the page Gleb Natapov
2011-01-11 13:30 ` [PATCH unit-tests 2/3] Test that error code is pushed on exception's task stack Gleb Natapov
2011-01-11 13:30 ` [PATCH unit-tests 3/3] Test that vcpu does not continue to run after issuing S3 Gleb Natapov
2011-01-11 13:53   ` Avi Kivity
2011-01-11 13:54     ` Gleb Natapov
2011-01-11 14:08       ` Avi Kivity
2011-01-11 14:17         ` Gleb Natapov
2011-01-19 16:37 ` [PATCH unit-tests 1/3] Task stack pointer should point to the end of the page Marcelo Tosatti

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox