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 = .;
> +}
>
next prev parent 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).