linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 00/21] x86/xen: untangle PV and PVHVM guest support code
@ 2017-03-02 17:53 Vitaly Kuznetsov
  2017-03-02 17:53 ` [PATCH v2 01/21] x86/xen: separate PV and HVM hypervisors Vitaly Kuznetsov
                   ` (21 more replies)
  0 siblings, 22 replies; 44+ messages in thread
From: Vitaly Kuznetsov @ 2017-03-02 17:53 UTC (permalink / raw)
  To: xen-devel; +Cc: x86, linux-kernel, Boris Ostrovsky, Juergen Gross, Andrew Jones

Changes since v1:
- Patches 1,2 and 3 were split and reordered to avoid adding temporary
  #ifdefs [Juergen Gross]
- Juergen's R-b added to what is now patches 14 and 15 (patches 4 and 5
  in v1). Due to re-ordering there are some tiny diffrences but I opted
  for keeping the tag.

Some patches are known to produce checkpatch.pl WARNINGS and a couple of
ERRORs, I fixed a few (mostly in _hvm* code I split) and I refrained from
fixing the rest to make it easier to review. I think that we may leave PV
code as it is as sooner or later it will go away.

Original description:

I have a long-standing idea to separate PV and PVHVM code in kernel and 
introduce Kconfig options to make it possible to enable the required
parts only breaking the current 'all or nothing' approach.

Motivation:
- Xen related x86 code in kernel is rather big and it is unclear which
  parts of it are required for PV, for HVM or for both. With PVH coming
  into picture is becomes even more tangled. It makes it hard to
  understand/audit the code.

- In some case we may want to avoid bloating kernel by supporting Xen
  guests we don't need. In particular, 90% of the code in arch/x86/xen/ is
  required to support PV guests and one may require PVHVM support only.

- PV guests are supposed to go away one day and such code separation would
  help us to get ready.

This series adds XEN_PV Kconfig option and makes it possible to build PV-only
and PVHVM-only kernels. It also makes it possible to disable Dom0 support.

Some patches are rather big but this is mostly just moving code around, no
functional changes intended. I smoke tested it with PV-only and PVHVM-only
builds, booted and did save/restore test. I also tried the newly introduced
PVHv2 guest, it even worked!

Vitaly Kuznetsov (21):
  x86/xen: separate PV and HVM hypervisors
  x86/xen: globalize have_vcpu_info_placement
  x86/xen: add CONFIG_XEN_PV to Kconfig
  x86/xen: split off enlighten_pvh.c
  x86/xen: split off enlighten_hvm.c
  x86/xen: split off enlighten_pv.c
  x86/xen: split xen_smp_intr_init()/xen_smp_intr_free()
  x86/xen: split xen_smp_prepare_boot_cpu()
  x86/xen: split xen_cpu_die()
  x86/xen: split off smp_hvm.c
  x86/xen: split off smp_pv.c
  x86/xen: split off mmu_hvm.c
  x86/xen: split off mmu_pv.c
  x86/xen: split suspend.c for PV and PVHVM guests
  x86/xen: put setup.c, pmu.c and apic.c under CONFIG_XEN_PV
  x86/xen: define startup_xen for XEN PV only
  x86/xen: create stubs for HVM-only builds in page.h
  xen/balloon: decorate PV-only parts with #ifdef CONFIG_XEN_PV
  xen: create xen_create/destroy_contiguous_region() stubs for PVHVM
    only builds
  x86/xen: enable PVHVM-only builds
  x86/xen: rename some PV-only functions in smp_pv.c

 arch/x86/include/asm/hypervisor.h |    3 +-
 arch/x86/include/asm/xen/page.h   |   25 +
 arch/x86/kernel/cpu/hypervisor.c  |    7 +-
 arch/x86/kernel/process_64.c      |    2 +-
 arch/x86/xen/Kconfig              |   33 +-
 arch/x86/xen/Makefile             |   16 +-
 arch/x86/xen/enlighten.c          | 1904 +------------------------
 arch/x86/xen/enlighten_hvm.c      |  210 +++
 arch/x86/xen/enlighten_pv.c       | 1561 +++++++++++++++++++++
 arch/x86/xen/enlighten_pvh.c      |  114 ++
 arch/x86/xen/mmu.c                | 2776 +------------------------------------
 arch/x86/xen/mmu_hvm.c            |   79 ++
 arch/x86/xen/mmu_pv.c             | 2635 +++++++++++++++++++++++++++++++++++
 arch/x86/xen/pmu.h                |    5 +
 arch/x86/xen/smp.c                |  516 +------
 arch/x86/xen/smp.h                |   16 +
 arch/x86/xen/smp_hvm.c            |   58 +
 arch/x86/xen/smp_pv.c             |  499 +++++++
 arch/x86/xen/suspend.c            |   54 -
 arch/x86/xen/suspend_hvm.c        |   22 +
 arch/x86/xen/suspend_pv.c         |   44 +
 arch/x86/xen/xen-head.S           |    4 +
 arch/x86/xen/xen-ops.h            |   21 +
 drivers/xen/balloon.c             |   30 +-
 include/xen/xen-ops.h             |   14 +
 25 files changed, 5461 insertions(+), 5187 deletions(-)
 create mode 100644 arch/x86/xen/enlighten_hvm.c
 create mode 100644 arch/x86/xen/enlighten_pv.c
 create mode 100644 arch/x86/xen/enlighten_pvh.c
 create mode 100644 arch/x86/xen/mmu_hvm.c
 create mode 100644 arch/x86/xen/mmu_pv.c
 create mode 100644 arch/x86/xen/smp_hvm.c
 create mode 100644 arch/x86/xen/smp_pv.c
 create mode 100644 arch/x86/xen/suspend_hvm.c
 create mode 100644 arch/x86/xen/suspend_pv.c

-- 
2.9.3

^ permalink raw reply	[flat|nested] 44+ messages in thread

end of thread, other threads:[~2017-03-13 13:02 UTC | newest]

Thread overview: 44+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-03-02 17:53 [PATCH v2 00/21] x86/xen: untangle PV and PVHVM guest support code Vitaly Kuznetsov
2017-03-02 17:53 ` [PATCH v2 01/21] x86/xen: separate PV and HVM hypervisors Vitaly Kuznetsov
2017-03-08 15:06   ` Juergen Gross
2017-03-02 17:53 ` [PATCH v2 02/21] x86/xen: globalize have_vcpu_info_placement Vitaly Kuznetsov
2017-03-08 15:07   ` Juergen Gross
2017-03-02 17:53 ` [PATCH v2 03/21] x86/xen: add CONFIG_XEN_PV to Kconfig Vitaly Kuznetsov
2017-03-08 15:12   ` Juergen Gross
2017-03-02 17:53 ` [PATCH v2 04/21] x86/xen: split off enlighten_pvh.c Vitaly Kuznetsov
2017-03-08 15:14   ` Juergen Gross
2017-03-02 17:53 ` [PATCH v2 05/21] x86/xen: split off enlighten_hvm.c Vitaly Kuznetsov
2017-03-08 15:16   ` Juergen Gross
2017-03-02 17:53 ` [PATCH v2 06/21] x86/xen: split off enlighten_pv.c Vitaly Kuznetsov
2017-03-08 15:18   ` Juergen Gross
2017-03-02 17:53 ` [PATCH v2 07/21] x86/xen: split xen_smp_intr_init()/xen_smp_intr_free() Vitaly Kuznetsov
2017-03-13  7:30   ` Juergen Gross
2017-03-02 17:53 ` [PATCH v2 08/21] x86/xen: split xen_smp_prepare_boot_cpu() Vitaly Kuznetsov
2017-03-13  7:33   ` Juergen Gross
2017-03-02 17:53 ` [PATCH v2 09/21] x86/xen: split xen_cpu_die() Vitaly Kuznetsov
2017-03-13  7:34   ` Juergen Gross
2017-03-02 17:53 ` [PATCH v2 10/21] x86/xen: split off smp_hvm.c Vitaly Kuznetsov
2017-03-13  7:37   ` Juergen Gross
2017-03-02 17:53 ` [PATCH v2 11/21] x86/xen: split off smp_pv.c Vitaly Kuznetsov
2017-03-13  9:33   ` Juergen Gross
2017-03-02 17:53 ` [PATCH v2 12/21] x86/xen: split off mmu_hvm.c Vitaly Kuznetsov
2017-03-13  9:34   ` Juergen Gross
2017-03-02 17:53 ` [PATCH v2 13/21] x86/xen: split off mmu_pv.c Vitaly Kuznetsov
2017-03-13  9:35   ` Juergen Gross
2017-03-02 17:53 ` [PATCH v2 14/21] x86/xen: split suspend.c for PV and PVHVM guests Vitaly Kuznetsov
2017-03-05  9:13   ` [Xen-devel] " kbuild test robot
2017-03-02 17:53 ` [PATCH v2 15/21] x86/xen: put setup.c, pmu.c and apic.c under CONFIG_XEN_PV Vitaly Kuznetsov
2017-03-02 17:53 ` [PATCH v2 16/21] x86/xen: define startup_xen for XEN PV only Vitaly Kuznetsov
2017-03-13  9:36   ` Juergen Gross
2017-03-02 17:53 ` [PATCH v2 17/21] x86/xen: create stubs for HVM-only builds in page.h Vitaly Kuznetsov
2017-03-13  9:43   ` Juergen Gross
2017-03-02 17:53 ` [PATCH v2 18/21] xen/balloon: decorate PV-only parts with #ifdef CONFIG_XEN_PV Vitaly Kuznetsov
2017-03-13  9:47   ` Juergen Gross
2017-03-02 17:53 ` [PATCH v2 19/21] xen: create xen_create/destroy_contiguous_region() stubs for PVHVM only builds Vitaly Kuznetsov
2017-03-13  9:47   ` Juergen Gross
2017-03-02 17:53 ` [PATCH v2 20/21] x86/xen: enable PVHVM-only builds Vitaly Kuznetsov
2017-03-13  9:48   ` Juergen Gross
2017-03-02 17:53 ` [PATCH v2 21/21] x86/xen: rename some PV-only functions in smp_pv.c Vitaly Kuznetsov
2017-03-13  9:49   ` Juergen Gross
2017-03-05 17:59 ` [Xen-devel] [PATCH v2 00/21] x86/xen: untangle PV and PVHVM guest support code Boris Ostrovsky
2017-03-13 13:02   ` Vitaly Kuznetsov

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).