[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 00/40] RFC: Xenner
From: |
Alexander Graf |
Subject: |
[Qemu-devel] [PATCH 00/40] RFC: Xenner |
Date: |
Mon, 1 Nov 2010 16:01:13 +0100 |
Some of you might remember Gerd's xenner project. The basic motivation is to
run Xen PV guests in KVM with the normal KVM architecture.
In order to achieve this, Xenner contains of two pieces:
1) Xenner Qemu pieces
2) Xenner guest kernel
Part 1 is partially in qemu already. The xen support framework that Gerd pushed
a while back can be used just as well for xenner. Some parts like a special PV
device to communicate with xenner and, mechanisms to instantiate a VM and
replacements for xen infrastructure are provided in patches here.
Part 2 is a completely self-contained piece of code. The xenner guest kernel
runs in the VM's CPL0 context. It translates guest hypercalls to hardware calls
that KVM implements, like CR3 modifications or LAPIC accesses.
This patch set tries to revive Gerd's code by integrating as much as possible
into the qemu code base. My ultimate goal is to isolate the qemu xenner code
well enough to be able to run an i386 xen pv guest with tcg on powerpc.
I'm sending this set out in the hope to receive feedback. Do you think this is
a good idea? Can you spot some glitches in the code that I overlooked? See
the list below for things I'm aware of to be broken.
Missing pieces:
- VMstate
- Full qdev check
- endianness check
- build qemu w/o xen headers
- find a replacement for qemu_map_foreign_batch
Usage:
(pv-grub)
qemu-system-x86_64 -M xenpv -kernel /usr/lib/xen/boot/pv-grub-x86_64 \
-drive file=/images/xen.raw,if=xen -nographic -enable-kvm
(direct kernel boot)
qemu-system-x86_64 -M xenpv -kernel /boot/vmlinux-xen -initrd \
/boot/initrd-xen -append xencons=tty -drive file=/images/xen.raw,if=xen \
-nographic -enable-kvm
(with graphics)
qemu-system-x86_64 -M xenpv -kernel /boot/vmlinux-xen -initrd \
/boot/initrd-xen -drive file=/images/xen.raw,if=xen -vga xenfb -vnc :0 \
-enable-kvm
I'm looking very much forward to constructive feedback!
Alex
Alexander Graf (39):
elf: Move translate_fn to helper struct
elf: Add notes implementation
elf: add header notification
elf: add section analyzer
xen-disk: disable aio
xenner: kernel: 32 bit files
xenner: kernel: 64-bit files
xenner: kernel: Global data
xenner: kernel: Hypercall handler (i386)
xenner: kernel: Hypercall handler (x86_64)
xenner: kernel: Hypercall handler (generic)
xenner: kernel: Headers
xenner: kernel: Instruction emulator
xenner: kernel: lapic code
xenner: kernel: Main (i386)
xenner: kernel: Main (x86_64)
xenner: kernel: Main
xenner: kernel: Makefile
xenner: kernel: mmu support for 32-bit PAE
xenner: kernel: mmu support for 32-bit normal
xenner: kernel: mmu support for 64-bit
xenner: kernel: generic MM functionality
xenner: kernel: printk
xenner: kernel: KVM PV code
xenner: kernel: xen-names
xenner: add xc_dom.h
xenner: libxc emu: evtchn
xenner: libxc emu: grant tables
xenner: libxc emu: memory mapping
xenner: libxc emu: xenstore
xenner: emudev
xenner: core
xenner: PV machine
xenner: Domain Builder
xen: only create dummy env when necessary
Add xenner binaries
xenner: integrate into build system
xenner: integrate into xen pv machine
xen: add sysrq support
Gerd Hoffmann (1):
qdev-ify: xen backends
Makefile | 6 +
Makefile.target | 16 +-
configure | 21 +-
hmp-commands.hx | 24 +
hw/an5206.c | 2 +-
hw/arm_boot.c | 2 +-
hw/armv7m.c | 2 +-
hw/cris-boot.c | 4 +-
hw/dummy_m68k.c | 2 +-
hw/elf_ops.h | 105 ++++-
hw/loader.c | 50 ++-
hw/loader.h | 24 +-
hw/mcf5208.c | 2 +-
hw/mips_fulong2e.c | 4 +-
hw/mips_malta.c | 4 +-
hw/mips_mipssim.c | 6 +-
hw/mips_r4k.c | 6 +-
hw/multiboot.c | 2 +-
hw/petalogix_s3adsp1800_mmu.c | 8 +-
hw/ppc440_bamboo.c | 2 +-
hw/ppc_newworld.c | 6 +-
hw/ppc_oldworld.c | 6 +-
hw/ppce500_mpc8544ds.c | 2 +-
hw/sun4m.c | 10 +-
hw/sun4u.c | 7 +-
hw/virtex_ml507.c | 2 +-
hw/xc_dom.h | 273 +++++++++++
hw/xen.h | 2 +
hw/xen_backend.c | 176 +++++---
hw/xen_backend.h | 10 +-
hw/xen_console.c | 10 +-
hw/xen_disk.c | 12 +-
hw/xen_domainbuild.c | 8 +
hw/xen_interfaces.c | 108 ++++
hw/xen_interfaces.h | 111 +++++
hw/xen_machine_pv.c | 44 ++-
hw/xen_nic.c | 10 +-
hw/xen_redirect.h | 56 +++
hw/xenfb.c | 14 +-
hw/xenner.h | 52 ++
hw/xenner_core.c | 224 +++++++++
hw/xenner_dom_builder.c | 406 +++++++++++++++
hw/xenner_emudev.c | 107 ++++
hw/xenner_emudev.h | 108 ++++
hw/xenner_guest_store.c | 494 +++++++++++++++++++
hw/xenner_libxc_evtchn.c | 467 ++++++++++++++++++
hw/xenner_libxc_gnttab.c | 91 ++++
hw/xenner_libxc_if.c | 124 +++++
hw/xenner_libxenstore.c | 709 +++++++++++++++++++++++++++
hw/xenner_pv.c | 135 +++++
monitor.c | 8 +
pc-bios/xenner/Makefile | 72 +++
pc-bios/xenner/apicdef.h | 173 +++++++
pc-bios/xenner/cpufeature.h | 129 +++++
pc-bios/xenner/list.h | 169 +++++++
pc-bios/xenner/msr-index.h | 278 +++++++++++
pc-bios/xenner/printk.c | 682 ++++++++++++++++++++++++++
pc-bios/xenner/processor.h | 326 ++++++++++++
pc-bios/xenner/shared.h | 188 +++++++
pc-bios/xenner/xen-names.c | 141 ++++++
pc-bios/xenner/xen-names.h | 68 +++
pc-bios/xenner/xenner-data.c | 142 ++++++
pc-bios/xenner/xenner-emudev.h | 57 +++
pc-bios/xenner/xenner-hcall.c | 1031 +++++++++++++++++++++++++++++++++++++++
pc-bios/xenner/xenner-hcall32.c | 299 +++++++++++
pc-bios/xenner/xenner-hcall64.c | 323 ++++++++++++
pc-bios/xenner/xenner-instr.c | 405 +++++++++++++++
pc-bios/xenner/xenner-lapic.c | 622 +++++++++++++++++++++++
pc-bios/xenner/xenner-main.c | 875 +++++++++++++++++++++++++++++++++
pc-bios/xenner/xenner-main32.c | 390 +++++++++++++++
pc-bios/xenner/xenner-main64.c | 412 ++++++++++++++++
pc-bios/xenner/xenner-mm.c | 105 ++++
pc-bios/xenner/xenner-mm32.c | 314 ++++++++++++
pc-bios/xenner/xenner-mm64.c | 369 ++++++++++++++
pc-bios/xenner/xenner-mmpae.c | 444 +++++++++++++++++
pc-bios/xenner/xenner-pv.c | 186 +++++++
pc-bios/xenner/xenner.h | 684 ++++++++++++++++++++++++++
pc-bios/xenner/xenner32-pae.lds | 37 ++
pc-bios/xenner/xenner32.S | 441 +++++++++++++++++
pc-bios/xenner/xenner32.h | 191 ++++++++
pc-bios/xenner/xenner32.lds | 37 ++
pc-bios/xenner/xenner64.S | 400 +++++++++++++++
pc-bios/xenner/xenner64.h | 117 +++++
pc-bios/xenner/xenner64.lds | 38 ++
pc-bios/xenner32-pae.elf | Bin 0 -> 310874 bytes
pc-bios/xenner32.elf | Bin 0 -> 296741 bytes
pc-bios/xenner64.elf | Bin 0 -> 342244 bytes
87 files changed, 14089 insertions(+), 140 deletions(-)
create mode 100644 hw/xc_dom.h
create mode 100644 hw/xen_interfaces.c
create mode 100644 hw/xen_interfaces.h
create mode 100644 hw/xen_redirect.h
create mode 100644 hw/xenner.h
create mode 100644 hw/xenner_core.c
create mode 100644 hw/xenner_dom_builder.c
create mode 100644 hw/xenner_emudev.c
create mode 100644 hw/xenner_emudev.h
create mode 100644 hw/xenner_guest_store.c
create mode 100644 hw/xenner_libxc_evtchn.c
create mode 100644 hw/xenner_libxc_gnttab.c
create mode 100644 hw/xenner_libxc_if.c
create mode 100644 hw/xenner_libxenstore.c
create mode 100644 hw/xenner_pv.c
create mode 100644 pc-bios/xenner/Makefile
create mode 100644 pc-bios/xenner/apicdef.h
create mode 100644 pc-bios/xenner/cpufeature.h
create mode 100644 pc-bios/xenner/list.h
create mode 100644 pc-bios/xenner/msr-index.h
create mode 100644 pc-bios/xenner/printk.c
create mode 100644 pc-bios/xenner/processor.h
create mode 100644 pc-bios/xenner/shared.h
create mode 100644 pc-bios/xenner/xen-names.c
create mode 100644 pc-bios/xenner/xen-names.h
create mode 100644 pc-bios/xenner/xenner-data.c
create mode 100644 pc-bios/xenner/xenner-emudev.h
create mode 100644 pc-bios/xenner/xenner-hcall.c
create mode 100644 pc-bios/xenner/xenner-hcall32.c
create mode 100644 pc-bios/xenner/xenner-hcall64.c
create mode 100644 pc-bios/xenner/xenner-instr.c
create mode 100644 pc-bios/xenner/xenner-lapic.c
create mode 100644 pc-bios/xenner/xenner-main.c
create mode 100644 pc-bios/xenner/xenner-main32.c
create mode 100644 pc-bios/xenner/xenner-main64.c
create mode 100644 pc-bios/xenner/xenner-mm.c
create mode 100644 pc-bios/xenner/xenner-mm32.c
create mode 100644 pc-bios/xenner/xenner-mm64.c
create mode 100644 pc-bios/xenner/xenner-mmpae.c
create mode 100644 pc-bios/xenner/xenner-pv.c
create mode 100644 pc-bios/xenner/xenner.h
create mode 100644 pc-bios/xenner/xenner32-pae.lds
create mode 100644 pc-bios/xenner/xenner32.S
create mode 100644 pc-bios/xenner/xenner32.h
create mode 100644 pc-bios/xenner/xenner32.lds
create mode 100644 pc-bios/xenner/xenner64.S
create mode 100644 pc-bios/xenner/xenner64.h
create mode 100644 pc-bios/xenner/xenner64.lds
create mode 100755 pc-bios/xenner32-pae.elf
create mode 100755 pc-bios/xenner32.elf
create mode 100755 pc-bios/xenner64.elf
- [Qemu-devel] [PATCH 00/40] RFC: Xenner,
Alexander Graf <=
- [Qemu-devel] [PATCH 08/40] xenner: kernel: 64-bit files, Alexander Graf, 2010/11/01
- Re: [Qemu-devel] [PATCH 08/40] xenner: kernel: 64-bit files, Anthony Liguori, 2010/11/01
- Re: [Qemu-devel] [PATCH 08/40] xenner: kernel: 64-bit files, Alexander Graf, 2010/11/01
- Re: [Qemu-devel] [PATCH 08/40] xenner: kernel: 64-bit files, Anthony Liguori, 2010/11/01
- Re: [Qemu-devel] [PATCH 08/40] xenner: kernel: 64-bit files, Blue Swirl, 2010/11/01
- Re: [Qemu-devel] [PATCH 08/40] xenner: kernel: 64-bit files, Anthony Liguori, 2010/11/01
- Re: [Qemu-devel] [PATCH 08/40] xenner: kernel: 64-bit files, Alexander Graf, 2010/11/01
- Re: [Qemu-devel] [PATCH 08/40] xenner: kernel: 64-bit files, Blue Swirl, 2010/11/01
- Re: [Qemu-devel] [PATCH 08/40] xenner: kernel: 64-bit files, Anthony Liguori, 2010/11/01
[Qemu-devel] [PATCH 09/40] xenner: kernel: Global data, Alexander Graf, 2010/11/01