qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: Alexander Graf <agraf@suse.de>
Cc: qemu-devel Developers <qemu-devel@nongnu.org>,
	Gerd Hoffmann <kraxel@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 08/40] xenner: kernel: 64-bit files
Date: Mon, 01 Nov 2010 10:44:19 -0500	[thread overview]
Message-ID: <4CCEE053.9020906@codemonkey.ws> (raw)
In-Reply-To: <1288623713-28062-9-git-send-email-agraf@suse.de>

On 11/01/2010 10:01 AM, Alexander Graf wrote:
> This patch adds various header files required for the xenner kernel on 64 bit
> systems.
>
> Signed-off-by: Alexander Graf<agraf@suse.de>
>    

I think it might make more sense to put this on a separate git.qemu.org 
repository and then use a submodule in roms/.

I'm happy to setup access for you/Gerd and it can use qemu-devel as a 
mailing list.

Regards,

Anthony Liguori

> ---
>   pc-bios/xenner/xenner64.S   |  400 +++++++++++++++++++++++++++++++++++++++++++
>   pc-bios/xenner/xenner64.h   |  117 +++++++++++++
>   pc-bios/xenner/xenner64.lds |   38 ++++
>   3 files changed, 555 insertions(+), 0 deletions(-)
>   create mode 100644 pc-bios/xenner/xenner64.S
>   create mode 100644 pc-bios/xenner/xenner64.h
>   create mode 100644 pc-bios/xenner/xenner64.lds
>
> diff --git a/pc-bios/xenner/xenner64.S b/pc-bios/xenner/xenner64.S
> new file mode 100644
> index 0000000..b140214
> --- /dev/null
> +++ b/pc-bios/xenner/xenner64.S
> @@ -0,0 +1,400 @@
> +#define	ENTRY(name) \
> +	.globl name; \
> +	.align 16; \
> +	name:
> +
> +	.macro PUSH_ERROR
> +	sub $8, %rsp		/* space for error code */
> +	.endm
> +
> +	.macro PUSH_TRAP_RBP trapno
> +	sub $8, %rsp		/* space for trap number */
> +	push %rbp
> +	mov $\trapno, %rbp
> +	mov %rbp, 8(%rsp)	/* save trap number on stack */
> +	.endm
> +
> +	.macro PUSH_REGS
> +	push %rdi
> +	push %rsi
> +	push %r15
> +	push %r14
> +	push %r13
> +	push %r12
> +	push %r11
> +	push %r10
> +	push %r9
> +	push %r8
> +	push %rdx
> +	push %rcx
> +	push %rbx
> +	push %rax
> +	mov  %rsp,%rdi		/* struct regs pointer */
> +	.endm
> +
> +	.macro POP_REGS
> +	pop %rax
> +	pop %rbx
> +	pop %rcx
> +	pop %rdx
> +	pop %r8
> +	pop %r9
> +	pop %r10
> +	pop %r11
> +	pop %r12
> +	pop %r13
> +	pop %r14
> +	pop %r15
> +	pop %rsi
> +	pop %rdi
> +	pop %rbp
> +	.endm
> +
> +	.macro RETURN
> +	add $16, %rsp		/* remove error code&  trap number */
> +	iretq			/* jump back */
> +	.endm
> +
> +	.macro DO_TRAP trapno func
> +	PUSH_TRAP_RBP \trapno
> +	PUSH_REGS
> +	call \func
> +	POP_REGS
> +	RETURN
> +	.endm
> +
> +/* ------------------------------------------------------------------ */
> +
> +	.code64
> +	.text
> +
> +/* --- 16-bit boot entry point --- */
> +
> +ENTRY(boot)
> +	.code16
> +
> +	cli
> +
> +	/* load the GDT */
> +	lgdt	(gdt_desc - boot)
> +
> +	/* turn on long mode and paging */
> +	mov	$0x1, %eax
> +	mov	%eax, %cr0
> +
> +	/* enable pagetables */
> +	mov	$(boot_pgd - boot), %eax
> +	mov	%eax, %cr3
> +
> +	/* set PSE,  PAE */
> +	mov	$0x30, %eax
> +	mov	%eax, %cr4
> +
> +	/* long mode */
> +	mov	$0xc0000080, %ecx
> +	rdmsr
> +	or	$0x101, %eax
> +	wrmsr
> +
> +	/* turn on long mode and paging */
> +	mov	$0x80010001, %eax
> +	mov	%eax, %cr0
> +
> +	ljmp	$0x8, $(boot64 - boot)
> +
> +
> +.align 4, 0
> +gdt:
> +.byte   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 /* dummy */
> +.byte   0xff, 0xff, 0x00, 0x00, 0x00, 0x9b, 0xaf, 0x00 /* code64 */
> +.byte   0xff, 0xff, 0x00, 0x00, 0x00, 0x93, 0xaf, 0x00 /* data64 */
> +
> +gdt_desc:
> +.short  (3 * 8) - 1
> +.long   (gdt - boot)
> +
> +
> +/* --- 64-bit entry point --- */
> +
> +boot64:
> +	.code64
> +
> +	mov $0x10, %ax
> +	mov %ax, %ds
> +	mov %ax, %es
> +	mov %ax, %fs
> +	mov %ax, %gs
> +	mov %ax, %ss
> +
> +	jmpq	*(boot64_ind - boot)
> +
> +boot64_ind:
> +	.quad boot64_real
> +
> +boot64_real:
> +
> +	/* switch to real pagetables */
> +	mov	$(emu_pgd - boot), %rax
> +	mov	%rax, %cr3
> +
> +	lea boot_stack_high(%rip), %rsp	/* setup stack */
> +	sub $176, %rsp			/* sizeof(struct regs_64) */
> +	mov  %rsp,%rdi			/* struct regs pointer */
> +	cmp $0, %rbx
> +	jne secondary
> +	call do_boot
> +	POP_REGS
> +	RETURN
> +
> +secondary:
> +	mov  %rdi,%rsi
> +	mov  %rbx,%rdi
> +	call do_boot_secondary
> +	POP_REGS
> +	RETURN
> +
> +/* --- traps/faults handled by emu --- */
> +
> +ENTRY(debug_int1)
> +	PUSH_ERROR
> +	DO_TRAP 1 do_int1
> +
> +ENTRY(debug_int3)
> +	PUSH_ERROR
> +	DO_TRAP 3 do_int3
> +
> +ENTRY(illegal_instruction)
> +	PUSH_ERROR
> +	DO_TRAP 6 do_illegal_instruction
> +
> +ENTRY(no_device)
> +	PUSH_ERROR
> +	DO_TRAP 7 do_lazy_fpu
> +
> +ENTRY(double_fault)
> +	DO_TRAP 8 do_double_fault
> +
> +ENTRY(general_protection)
> +	DO_TRAP 13 do_general_protection
> +
> +ENTRY(page_fault)
> +	DO_TRAP 14 do_page_fault
> +
> +/* --- traps/faults forwarded to guest --- */
> +
> +ENTRY(division_by_zero)
> +	PUSH_ERROR
> +	PUSH_TRAP_RBP 0
> +	jmp guest_forward
> +
> +ENTRY(nmi)
> +	PUSH_ERROR
> +	PUSH_TRAP_RBP 2
> +	jmp guest_forward
> +
> +ENTRY(overflow)
> +	PUSH_ERROR
> +	PUSH_TRAP_RBP 4
> +	jmp guest_forward
> +
> +ENTRY(bound_check)
> +	PUSH_ERROR
> +	PUSH_TRAP_RBP 5
> +	jmp guest_forward
> +
> +ENTRY(coprocessor)
> +	PUSH_ERROR
> +	PUSH_TRAP_RBP 9
> +	jmp guest_forward
> +
> +ENTRY(invalid_tss)
> +	PUSH_TRAP_RBP 10
> +	jmp guest_forward
> +
> +ENTRY(segment_not_present)
> +	PUSH_TRAP_RBP 11
> +	jmp guest_forward
> +
> +ENTRY(stack_fault)
> +	PUSH_TRAP_RBP 12
> +	jmp guest_forward
> +
> +ENTRY(floating_point)
> +	PUSH_ERROR
> +	PUSH_TRAP_RBP 16
> +	jmp guest_forward
> +
> +ENTRY(alignment)
> +	PUSH_TRAP_RBP 17
> +	jmp guest_forward
> +
> +ENTRY(machine_check)
> +	PUSH_ERROR
> +	PUSH_TRAP_RBP 18
> +	jmp guest_forward
> +
> +ENTRY(simd_floating_point)
> +	PUSH_ERROR
> +	PUSH_TRAP_RBP 19
> +	jmp guest_forward
> +
> +guest_forward:
> +	PUSH_REGS
> +	call do_guest_forward
> +	POP_REGS
> +	RETURN
> +
> +/* --- interrupts 32 ... 255 --- */
> +
> +ENTRY(smp_flush_tlb)
> +	PUSH_ERROR
> +	DO_TRAP -1 do_smp_flush_tlb
> +
> +ENTRY(int_80)
> +	PUSH_ERROR
> +	DO_TRAP -1 do_int_80
> +
> +ENTRY(irq_entries)
> +vector=0
> +.rept 256
> +	.align 16
> +	PUSH_ERROR
> +	PUSH_TRAP_RBP vector
> +	jmp irq_common
> +vector=vector+1
> +.endr
> +
> +ENTRY(irq_common)
> +	PUSH_REGS
> +	call do_irq
> +	POP_REGS
> +	RETURN
> +
> +/* --- syscall --- */
> +
> +ENTRY(trampoline_syscall)
> +	/* we arrive here via per-cpu trampoline
> +	 * which sets up the stack for us */
> +	PUSH_ERROR
> +	PUSH_TRAP_RBP -1
> +	PUSH_REGS
> +	call do_syscall
> +	POP_REGS
> +
> +	add $16, %rsp			/* remove error code + trapno */
> +	cmp $-1, -8(%rsp)
> +	je syscall_vmexit
> +	cmp $-2, -8(%rsp)
> +	je syscall_iretq
> +
> +syscall_default:
> +	/* default sysret path */
> +	popq %rcx			/* rip    */
> +	popq %r11			/* cs     */
> +	popq %r11			/* rflags */
> +	popq %rsp			/* rsp    */
> +	sysretq
> +
> +syscall_vmexit:
> +	/* bounce hypercall to userspace */
> +	popq %rcx			/* rip    */
> +	popq %r11			/* cs     */
> +	popq %r11			/* rflags */
> +	popq %rsp			/* rsp    */
> +	out %al, $0xe0			/* let userspace handle it */
> +	sysretq
> +
> +syscall_iretq:
> +	/* return from syscall via iretq */
> +	iretq
> +
> +/* helpers */
> +
> +ENTRY(broken_memcpy_pf)
> +	mov %rdx,%rcx
> +	cld
> +1:	rep movsb
> +	xor %rax,%rax
> +8:	ret
> +
> +	.section .exfix, "ax"
> +9:	mov $-1, %rax
> +	jmp 8b
> +	.previous
> +
> +	.section .extab, "a"
> +	.align 8
> +	.quad 1b,9b
> +	.previous
> +
> +/* some 16 bit code for smp boot */
> +
> +	.code16
> +	.align 4096
> +ENTRY(sipi)
> +	mov $0x00060000, %eax  /* EMUDEV_CMD_INIT_SECONDARY_VCPU */
> +	outl %eax, $0xe8       /* EMUDEV_REG_COMMAND */
> +	hlt
> +	.code64
> +
> +/* emu boot stack, including syscall trampoline template */
> +
> +	.data
> +	.globl boot_stack_low, boot_stack_high
> +	.globl cpu_ptr
> +	.globl trampoline_start, trampoline_patch, trampoline_stop
> +	.align 4096
> +boot_stack_low:
> +cpu_ptr:
> +	.quad 0
> +trampoline_start:
> +	movq %rsp, boot_stack_high-16(%rip)
> +	leaq boot_stack_high-16(%rip), %rsp
> +	push %r11				/* rflags	 */
> +	mov  $0xdeadbeef, %r11			/* C code must fix cs&  ss */
> +	movq %r11, boot_stack_high-8(%rip)	/* ss	     */
> +	push %r11				/* cs	     */
> +	push %rcx				/* rip	    */
> +
> +	.byte 0x49, 0xbb			/* mov data, %r11 ...	 */
> +trampoline_patch:
> +	.quad 0					/* ... data, for jump to ...  */
> +	jmpq *%r11				/* ... trampoline_syscall     */
> +trampoline_stop:
> +	.align 4096
> +boot_stack_high:
> +
> +/* boot page tables */
> +
> +#define pageflags 0x063 /* preset, rw, accessed, dirty */
> +#define largepage 0x080 /* pse */
> +
> +	.section .pt, "aw"
> +	.globl emu_pgd
> +
> +	.align 4096
> +boot_pgd:
> +	.quad emu_pud - 0xffff830000000000 + pageflags
> +	.fill 261,8,0
> +	.quad emu_pud - 0xffff830000000000 + pageflags
> +	.fill 249,8,0
> +
> +	.align 4096
> +emu_pgd:
> +	.fill 262,8,0
> +	.quad emu_pud - 0xffff830000000000 + pageflags
> +	.fill 249,8,0
> +
> +	.align 4096
> +emu_pud:
> +	.quad emu_pmd - 0xffff830000000000 + pageflags
> +	.fill 511,8,0
> +
> +	.align 4096
> +emu_pmd:
> +i = 0
> +	.rept 512
> +	.quad pageflags + largepage | (i<<  21)
> +	i = i + 1
> +	.endr
> +	.align 4096
> diff --git a/pc-bios/xenner/xenner64.h b/pc-bios/xenner/xenner64.h
> new file mode 100644
> index 0000000..92d956e
> --- /dev/null
> +++ b/pc-bios/xenner/xenner64.h
> @@ -0,0 +1,117 @@
> +#include<xen/foreign/x86_64.h>
> +
> +struct regs_64 {
> +    /* pushed onto stack before calling into C code */
> +    uint64_t rax;
> +    uint64_t rbx;
> +    uint64_t rcx;
> +    uint64_t rdx;
> +    uint64_t r8;
> +    uint64_t r9;
> +    uint64_t r10;
> +    uint64_t r11;
> +    uint64_t r12;
> +    uint64_t r13;
> +    uint64_t r14;
> +    uint64_t r15;
> +    uint64_t rsi;
> +    uint64_t rdi;
> +    uint64_t rbp;
> +    uint64_t trapno;
> +    /* trap / fault / int created */
> +    uint64_t error;
> +    uint64_t rip;
> +    uint64_t cs;
> +    uint64_t rflags;
> +    uint64_t rsp;
> +    uint64_t ss;
> +};
> +
> +/* 64bit defines */
> +#define EMUNAME   "xenner64"
> +#define regs      regs_64
> +#define fix_sel   fix_sel64
> +#define fix_desc  fix_desc64
> +#define ureg_t    uint64_t
> +#define sreg_t    int64_t
> +#define PRIxREG   PRIx64
> +#define tss(_v)   ((0xe000>>  3) +  8 + (((_v)->id)<<  2))
> +#define ldt(_v)   ((0xe000>>  3) + 10 + (((_v)->id)<<  2))
> +
> +/* xenner-data.c */
> +extern struct idt_64 page_aligned xen_idt[256];
> +
> +/* xenner-main.c */
> +asmlinkage void do_int_80(struct regs_64 *regs);
> +
> +/* xenner-hcall.c */
> +void switch_mode(struct xen_cpu *cpu);
> +int is_kernel(struct xen_cpu *cpu);
> +asmlinkage void do_syscall(struct regs_64 *regs);
> +
> +/* xenner-mm.c */
> +void pgtable_walk(int level, uint64_t va, uint64_t root_mfn);
> +int pgtable_fixup_flag(struct xen_cpu *cpu, uint64_t va, uint32_t flag);
> +int pgtable_is_present(uint64_t va, uint64_t root_mfn);
> +void *map_page(uint64_t maddr);
> +void *fixmap_page(struct xen_cpu *cpu, uint64_t maddr);
> +static inline void free_page(void *ptr) {}
> +uint64_t *find_pte_64(uint64_t va);
> +
> +/* macros */
> +#define context_is_emu(_r)       (((_r)->cs&  0x03) == 0x00)
> +#define context_is_kernel(_v,_r) (((_r)->cs&  0x03) == 0x03&&  is_kernel(_v))
> +#define context_is_user(_v,_r)   (((_r)->cs&  0x03) == 0x03&&  !is_kernel(_v))
> +
> +#define addr_is_emu(va)     (((va)>= XEN_M2P_64)&&  ((va)<  XEN_DOM_64))
> +#define addr_is_kernel(va)  ((va)>= XEN_DOM_64)
> +#define addr_is_user(va)    ((va)<  XEN_M2P_64)
> +
> +/* inline asm bits */
> +static inline int wrmsr_safe(uint32_t msr, uint32_t ax, uint32_t dx)
> +{
> +    int ret;
> +    asm volatile("1:  wrmsr                \n"
> +                 "    xorl %0,%0           \n"
> +                 "2:  nop                  \n"
> +
> +                 ".section .exfix, \"ax\"  \n"
> +                 "3:  mov $-1,%0           \n"
> +                 "    jmp 2b               \n"
> +                 ".previous                \n"
> +
> +                 ".section .extab, \"a\"   \n"
> +                 "    .align 8             \n"
> +                 "    .quad 1b,3b          \n"
> +                 ".previous                \n"
> +                 : "=r" (ret)
> +                 : "c" (msr), "a" (ax), "d" (dx));
> +    return ret;
> +}
> +
> +static inline int memcpy_pf(void *dest, const void *src, size_t bytes)
> +{
> +    int ret;
> +
> +    asm volatile("    cld                  \n"
> +                 "91: rep movsb            \n"
> +                 "    xor %[ret],%[ret]    \n"
> +                 "98:                      \n"
> +
> +                 ".section .exfix, \"ax\"  \n"
> +                 "99: mov $-1, %[ret]      \n"
> +                 "    jmp 98b              \n"
> +                 ".previous                \n"
> +
> +                 ".section .extab, \"a\"   \n"
> +                 "    .align 8             \n"
> +                 "    .quad 91b,99b        \n"
> +                 ".previous                \n"
> +                 : [ ret ] "=a" (ret),
> +                   [ rsi ] "+S" (src),
> +                   [ rdi ] "+D" (dest),
> +                   [ rcx ] "+c" (bytes)
> +                 :
> +                 : "memory" );
> +    return ret;
> +}
> diff --git a/pc-bios/xenner/xenner64.lds b/pc-bios/xenner/xenner64.lds
> new file mode 100644
> index 0000000..0b580a9
> --- /dev/null
> +++ b/pc-bios/xenner/xenner64.lds
> @@ -0,0 +1,38 @@
> +OUTPUT_FORMAT("elf64-x86-64")
> +
> +SECTIONS
> +{
> +    . = 0xffff830000000000;
> +    _vstart = .;
> +    phys_startup_64 = 0x0;
> +
> +    /* code */
> +    .text : AT(ADDR(.text) - 0xffff830000000000) { *(.text) }
> +    . = ALIGN(4k);
> +    .exfix  : { *(.exfix)  }
> +
> +    /* data, ro */
> +    . = ALIGN(4k);
> +    .note.gnu.build-id : { *(.note.gnu.build-id) }
> +    . = ALIGN(4k);
> +    _estart = .;
> +    .extab  : { *(.extab)  }
> +    _estop  = .;
> +    . = ALIGN(4k);
> +    .rodata : { *(.rodata) }
> +
> +    /* data, rw */
> +    . = ALIGN(4k);
> +    .pt     : { *(.pt) }
> +    . = ALIGN(4k);
> +    .pgdata : { *(.pgdata) }
> +    . = ALIGN(4k);
> +    .data   : { *(.data)   }
> +
> +    /* bss */
> +    . = ALIGN(4k);
> +    .bss    : { *(.bss)    }
> +
> +    . = ALIGN(4k);
> +    _vstop  = .;
> +}
>    

  reply	other threads:[~2010-11-01 16:05 UTC|newest]

Thread overview: 96+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-01 15:01 [Qemu-devel] [PATCH 00/40] RFC: Xenner Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 01/40] elf: Move translate_fn to helper struct Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 02/40] elf: Add notes implementation Alexander Graf
2010-11-01 18:29   ` Blue Swirl
2010-11-01 18:42     ` Stefan Weil
2010-11-01 19:51       ` Alexander Graf
2010-11-01 20:19         ` Stefan Weil
2010-11-01 21:17           ` Alexander Graf
2010-11-01 21:28             ` [Qemu-devel] " Paolo Bonzini
2010-11-01 21:31             ` [Qemu-devel] " Stefan Weil
2010-11-02 10:17             ` Michael Matz
2010-11-01 18:41   ` [Qemu-devel] " Paolo Bonzini
2010-11-01 18:52     ` Alexander Graf
2010-11-01 19:43       ` Paolo Bonzini
2010-11-01 19:48         ` Alexander Graf
2010-11-01 21:23           ` Paolo Bonzini
2010-11-01 15:01 ` [Qemu-devel] [PATCH 03/40] elf: add header notification Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 04/40] elf: add section analyzer Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 05/40] xen-disk: disable aio Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 06/40] qdev-ify: xen backends Alexander Graf
2010-11-02 10:08   ` Markus Armbruster
2010-11-02 10:43     ` Gerd Hoffmann
2010-11-02 13:26       ` Markus Armbruster
2010-11-01 15:01 ` [Qemu-devel] [PATCH 07/40] xenner: kernel: 32 bit files Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 08/40] xenner: kernel: 64-bit files Alexander Graf
2010-11-01 15:44   ` Anthony Liguori [this message]
2010-11-01 15:47     ` Alexander Graf
2010-11-01 15:59       ` Anthony Liguori
2010-11-01 19:00       ` Blue Swirl
2010-11-01 19:02         ` Anthony Liguori
2010-11-01 19:05           ` Alexander Graf
2010-11-01 19:23             ` Blue Swirl
2010-11-01 19:37             ` Anthony Liguori
2010-11-01 15:01 ` [Qemu-devel] [PATCH 09/40] xenner: kernel: Global data Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 10/40] xenner: kernel: Hypercall handler (i386) Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 11/40] xenner: kernel: Hypercall handler (x86_64) Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 12/40] xenner: kernel: Hypercall handler (generic) Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 13/40] xenner: kernel: Headers Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 14/40] xenner: kernel: Instruction emulator Alexander Graf
2010-11-01 15:41   ` malc
2010-11-01 18:46   ` [Qemu-devel] " Paolo Bonzini
2010-11-01 15:01 ` [Qemu-devel] [PATCH 15/40] xenner: kernel: lapic code Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 16/40] xenner: kernel: Main (i386) Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 17/40] xenner: kernel: Main (x86_64) Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 18/40] xenner: kernel: Main Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 19/40] xenner: kernel: Makefile Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 20/40] xenner: kernel: mmu support for 32-bit PAE Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 21/40] xenner: kernel: mmu support for 32-bit normal Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 22/40] xenner: kernel: mmu support for 64-bit Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 23/40] xenner: kernel: generic MM functionality Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 24/40] xenner: kernel: printk Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 25/40] xenner: kernel: KVM PV code Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 26/40] xenner: kernel: xen-names Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 27/40] xenner: add xc_dom.h Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 28/40] xenner: libxc emu: evtchn Alexander Graf
2010-11-01 15:45   ` Anthony Liguori
2010-11-01 15:49     ` Alexander Graf
2010-11-01 16:01       ` Anthony Liguori
2010-11-01 16:07         ` Alexander Graf
2010-11-01 16:14           ` Anthony Liguori
2010-11-01 16:15             ` Alexander Graf
2010-11-01 19:39         ` [Qemu-devel] " Paolo Bonzini
2010-11-01 19:41           ` Anthony Liguori
2010-11-01 19:47             ` Alexander Graf
2010-11-01 20:32               ` Anthony Liguori
2010-11-01 21:47                 ` Paolo Bonzini
2010-11-01 22:00                   ` Anthony Liguori
2010-11-01 22:08                     ` Paolo Bonzini
2010-11-01 22:29                       ` Anthony Liguori
2010-11-02  4:33                 ` Stefano Stabellini
2010-11-02 10:06                   ` Paolo Bonzini
2010-11-02 10:31                     ` Gerd Hoffmann
2010-11-02 10:38                       ` Paolo Bonzini
2010-11-02 13:55                     ` Stefano Stabellini
2010-11-02 15:48                       ` Alexander Graf
2010-11-02 19:20                         ` Stefano Stabellini
2010-11-01 15:01 ` [Qemu-devel] [PATCH 29/40] xenner: libxc emu: grant tables Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 30/40] xenner: libxc emu: memory mapping Alexander Graf
2010-11-01 15:12   ` malc
2010-11-01 15:15     ` Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 31/40] xenner: libxc emu: xenstore Alexander Graf
2010-11-01 18:36   ` Blue Swirl
2010-11-01 15:01 ` [Qemu-devel] [PATCH 32/40] xenner: emudev Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 33/40] xenner: core Alexander Graf
2010-11-01 15:13   ` malc
2010-11-01 15:01 ` [Qemu-devel] [PATCH 34/40] xenner: PV machine Alexander Graf
2010-11-01 15:01 ` [Qemu-devel] [PATCH 35/40] xenner: Domain Builder Alexander Graf
2010-11-02 10:09   ` [Qemu-devel] " Paolo Bonzini
2010-11-02 15:36     ` Alexander Graf
2010-11-02 15:51       ` Paolo Bonzini
2010-11-02 16:28         ` Alexander Graf
2010-11-01 15:21 ` [Qemu-devel] [PATCH 00/40] RFC: Xenner Alexander Graf
2010-11-02 16:26 ` [Qemu-devel] [PATCH 36/40] xen: only create dummy env when necessary Alexander Graf
2010-11-02 16:26 ` [Qemu-devel] [PATCH 38/40] xenner: integrate into build system Alexander Graf
2010-11-02 16:26 ` [Qemu-devel] [PATCH 39/40] xenner: integrate into xen pv machine Alexander Graf
2010-11-02 16:26 ` [Qemu-devel] [PATCH 40/40] xen: add sysrq support Alexander Graf

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4CCEE053.9020906@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=agraf@suse.de \
    --cc=kraxel@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).