xen-devel.lists.xenproject.org archive mirror
 help / color / mirror / Atom feed
From: Sheng Yang <sheng@linux.intel.com>
To: Jeremy Fitzhardinge <jeremy@goop.org>
Cc: xen-devel <xen-devel@lists.xensource.com>,
	Ian Campbell <Ian.Campbell@citrix.com>,
	linux-kernel@vger.kernel.org, Ian Pratt <Ian.Pratt@eu.citrix.com>,
	Keir Fraser <keir.fraser@eu.citrix.com>,
	Sheng Yang <sheng@linux.intel.com>
Subject: [PATCH][v9 0/6] PV extension of HVM (Hybrid) for Xen
Date: Fri, 12 Mar 2010 10:57:21 +0800	[thread overview]
Message-ID: <1268362647-5317-1-git-send-email-sheng@linux.intel.com> (raw)

The 9th version of patchset to enable PV extension of HVM support
in Linux kernel of Xen.

The patch based on upstream 2.6.32.

The PV extension of HVM is started from real mode like HVM guest, but also with a
a range of PV features(e.g. PV timer now, and event channel, PV
drivers in the future). So guest with this feature can takes the advantages of
both H/W virtualization and Para-Virtualization.

The first two of the patchset imported several header file from Jeremy's tree
and Xen tree, respect to Jeremy and Keir's works.

The whole patchset based on Linux upstream.

You need a line like:

cpuid = [ '0x40000002:edx=0x7' ]

in HVM configuration file to expose all PV feature to guest, and

CONFIG_XEN

in the guest kernel configuration file to enable the PV extension support. It
would implicit enable CONFIG_XEN_HVM_PV if CONFIG_X86_64 is selected as well.

And the compiled image can be used as native/pv domU/hvm guest/pv feature hvm kernel.

Change from v8:
1. Delay the controversial part of evtchn.
2. Rebase to 2.6.32 so it can be picked up by Jeremy for more test easily.

Change from v7:
1. Move evtchn related macro to patch 7. So that the patch 1-6 can be
cleanly applied.

Change from v6:
1. Make PV clocksource as a separate feature rather than default one.
Notice PV evtchn still depends on it.
2. Some comments update.

Change from v5:
Update the comments from Jeremy.

Change from v4:
1. Add a new CONFIG_XEN_HVM_PV to enable the feature in kernel
2. Separate the related code form enlighted.c to hvmpv.c
3. Separate the feature "PV clocksource" from evtchn. Now we can support HVM
guest with PV clocksource. This would be enabled by default.
4. Drop PV halt and pv drivers in this edition. We can work on that
later.
5. Update the patchset following Jeremy's comments.

Change from v3:
1. Rebase to Linux 2.6.33 release.
2. change the name to "PV extension of HVM"
3. Some minor coding polishing.

Change from v2:
1. change the name "hybrid" to "PV featured HVM".
2. Unified the PV driver's judgement of xen_domain() to xen_evtchn_enabled().
3. Move the function(evtchn) initialize hypercall near the real enabling place,
rather than a unified place before function enabled.
4. Remove the reserved E820 region for grant table. Use QEmu Xen platform
device's MMIO instead.

The major change from v1:
1. SMP support.
2. Modify the entrance point to avoid most of genernic kernel modification.
3. Binding PV timer with event channel mechanism.

--
regards
Yang, Sheng

Jeremy Fitzhardinge (1):
  xen: add support for hvm_op

Keir Fraser (1):
  xen: Import cpuid.h from Xen

Sheng Yang (5):
  xen: Make pv drivers only work with xen_pv_domain()
  xen/hvm: Xen PV extension of HVM initialization
  x86/xen: The entrance for PV extension of HVM
  xen: Enable PV clocksource for HVM
  xen: Enable event channel of PV extension of HVM

 arch/x86/include/asm/xen/cpuid.h      |   75 +++++++++++
 arch/x86/include/asm/xen/hypercall.h  |    6 +
 arch/x86/include/asm/xen/hypervisor.h |    6 +
 arch/x86/kernel/setup.c               |    4 +
 arch/x86/xen/Kconfig                  |    4 +
 arch/x86/xen/Makefile                 |    1 +
 arch/x86/xen/enlighten.c              |    6 +-
 arch/x86/xen/hvmpv.c                  |  228 +++++++++++++++++++++++++++++++++
 arch/x86/xen/irq.c                    |    9 ++
 arch/x86/xen/smp.c                    |   76 +++++++++++-
 arch/x86/xen/time.c                   |   12 ++-
 arch/x86/xen/xen-ops.h                |   17 +++
 drivers/block/xen-blkfront.c          |    2 +-
 drivers/input/xen-kbdfront.c          |    2 +-
 drivers/net/xen-netfront.c            |    2 +-
 drivers/video/xen-fbfront.c           |    2 +-
 drivers/xen/events.c                  |   74 ++++++++++-
 drivers/xen/grant-table.c             |    2 +-
 drivers/xen/xenbus/xenbus_probe.c     |    4 +-
 include/xen/events.h                  |    4 +
 include/xen/hvm.h                     |   28 ++++
 include/xen/interface/hvm/hvm_op.h    |   80 ++++++++++++
 include/xen/interface/hvm/params.h    |  111 ++++++++++++++++
 include/xen/interface/xen.h           |    6 +-
 include/xen/xen.h                     |   15 ++
 25 files changed, 754 insertions(+), 22 deletions(-)
 create mode 100644 arch/x86/include/asm/xen/cpuid.h
 create mode 100644 arch/x86/xen/hvmpv.c
 create mode 100644 include/xen/hvm.h
 create mode 100644 include/xen/interface/hvm/hvm_op.h
 create mode 100644 include/xen/interface/hvm/params.h

             reply	other threads:[~2010-03-12  2:57 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-03-12  2:57 Sheng Yang [this message]
2010-03-12  2:57 ` [PATCH][v9 1/6] xen: add support for hvm_op Sheng Yang
2010-03-12  2:57 ` [PATCH][v9 2/6] xen: Import cpuid.h from Xen Sheng Yang
2010-03-12  2:57 ` [PATCH][v9 3/6] xen: Make pv drivers only work with xen_pv_domain() Sheng Yang
2010-03-12  2:57 ` [PATCH][v9 4/6] xen/hvm: Xen PV extension of HVM initialization Sheng Yang
2010-03-12 20:35   ` [Xen-devel] " Jeremy Fitzhardinge
2010-03-15  1:45     ` Sheng Yang
2010-03-15 12:04       ` Stefano Stabellini
2010-03-15 22:59         ` Jeremy Fitzhardinge
2010-03-16  1:51           ` Sheng Yang
2010-03-16 17:12             ` Jeremy Fitzhardinge
2010-03-16 17:20               ` Ian Campbell
2010-03-16 17:29                 ` Jeremy Fitzhardinge
2010-03-12  2:57 ` [PATCH][v9 5/6] x86/xen: The entrance for PV extension of HVM Sheng Yang
2010-03-12  2:57 ` [PATCH][v9 6/6] xen: Enable PV clocksource for HVM Sheng Yang
2010-03-12 20:37   ` Jeremy Fitzhardinge

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=1268362647-5317-1-git-send-email-sheng@linux.intel.com \
    --to=sheng@linux.intel.com \
    --cc=Ian.Campbell@citrix.com \
    --cc=Ian.Pratt@eu.citrix.com \
    --cc=jeremy@goop.org \
    --cc=keir.fraser@eu.citrix.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=xen-devel@lists.xensource.com \
    /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).