All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alexander Graf <agraf@suse.de>
To: qemu-devel Developers <qemu-devel@nongnu.org>
Cc: Gerd Hoffmann <kraxel@redhat.com>
Subject: [Qemu-devel] [PATCH 00/40] RFC: Xenner
Date: Mon,  1 Nov 2010 16:01:13 +0100	[thread overview]
Message-ID: <1288623713-28062-1-git-send-email-agraf@suse.de> (raw)

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

             reply	other threads:[~2010-11-01 15:02 UTC|newest]

Thread overview: 96+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-01 15:01 Alexander Graf [this message]
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
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=1288623713-28062-1-git-send-email-agraf@suse.de \
    --to=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 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.