[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH v2 00/23] Make CONFIG_HVM work



This series goes through x86 code to make CONFIG_HVM work.

With this series, it is possible to build Xen with PV support only.

Running `xl info` on a host with PV only Xen:

root@lcy2-dt108:~# xl info
host                   : lcy2-dt108
release                : 4.17.0-0.bpo.1-amd64
version                : #1 SMP Debian 4.17.8-1~bpo9+1 (2018-07-23)
machine                : x86_64
nr_cpus                : 8
max_cpu_id             : 7
nr_nodes               : 1
cores_per_socket       : 4
threads_per_core       : 2
cpu_mhz                : 3504.241
hw_caps                : 
bfebfbff:77faf3ff:2c100800:00000121:0000000f:009c6fbf:00000000:00000100
virt_caps              : directio
total_memory           : 32589
free_memory            : 1033
sharing_freed_memory   : 0
sharing_used_memory    : 0
outstanding_claims     : 0
free_cpus              : 0
xen_major              : 4
xen_minor              : 12
xen_extra              : -unstable
xen_version            : 4.12-unstable
xen_caps               : xen-3.0-x86_64 xen-3.0-x86_32p
xen_scheduler          : credit
xen_pagesize           : 4096
platform_params        : virt_start=0xffff800000000000
xen_changeset          : Sun Aug 26 12:36:59 2018 +0100 git:7668e6dcc6
xen_commandline        : placeholder loglvl=all guest_loglvl=all 
com2=115200,8n1 ucode=scan console=com2,vga console_to_ring sync_console hvm_fep
cc_compiler            : gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
cc_compile_by          : wei
cc_compile_domain      : uk.xensource.com
cc_compile_date        : Sun Aug 26 12:37:04 BST 2018
build_id               : 1a2fb4652d8c26e5590bba6652049696a97ad2ab
xend_config_format     : 4

The major goal at the moment is to get something that works first,
then refine code structure later.  Currently CONFIG_HVM is littered in
individual files. In the future some of the code could / should be
moved to files under hvm/ for cleaner split.

I ran some basic PV / PVSHIM VM life cycle tests and XTF PV tests, all
worked.

Baseline:
$ ls -l xen # default build, non-debug
-rwxrwxr-x 1 wei wei 2379388 Aug 17 15:39 xen

$ ls -l xen # PV only, non-debug
-rwxrwxr-x 1 wei wei 1920572 Aug 26 12:37 xen

The PV only Xen is ~19.3% smaller in size.

Wei.

Wei Liu (23):
  x86: change name of parameter for various invlpg functions
  xen: is_hvm_{domain,vcpu} should evaluate to false when !CONFIG_HVM
  x86: enclose hvm_op and dm_op in CONFIG_HVM in relevant tables
  x86/hvm: provide hvm_hap_supported
  x86: provide stub for memory_type_changed
  x86: don't call vpci function in physdev_op when !CONFIG_HAS_VPCI
  x86/vpmu: put HVM only code under CONFIG_HVM
  xen/pt: io.c contains HVM only code
  x86/pt: make it build with !CONFIG_HVM
  x86/pt: split out HVM functions from vtd.c
  x86: XENMEM_resource_ioreq_server is HVM only
  x86: monitor.o is currently HVM only
  x86: provide stubs, declarations and macros in hvm.h
  x86/mm: put nested p2m code under CONFIG_HVM
  x86/mm: put HVM only code under CONFIG_HVM
  x86/p2m/pod: make it build with !CONFIG_HVM
  x86/mm: put paging_update_nestedmode under CONFIG_HVM
  x86/domctl: XEN_DOMCTL_debug_op is HVM only
  x86: PIT emulation is common to both PV and HVM
  xen: connect guest creation with CONFIG_{HVM,PV}
  x86: expose CONFIG_HVM
  x86/pvshim: disable HVM for PV shim
  xen: decouple HVM and IOMMU capabilities

 tools/firmware/xen-dir/shim.config       |   2 +-
 tools/libxl/libxl.c                      |   5 +-
 tools/libxl/libxl.h                      |   6 +-
 tools/libxl/libxl_types.idl              |   1 +-
 tools/xl/xl_info.c                       |   5 +-
 xen/arch/arm/Kconfig                     |   3 +-
 xen/arch/x86/Kconfig                     |   6 +-
 xen/arch/x86/Makefile                    |   3 +-
 xen/arch/x86/cpu/vpmu.c                  |   6 +-
 xen/arch/x86/cpuid.c                     |   2 +-
 xen/arch/x86/domain.c                    |   8 +-
 xen/arch/x86/domctl.c                    |   2 +-
 xen/arch/x86/emul-i8254.c                | 609 ++++++++++++++++++++++++-
 xen/arch/x86/hvm/Makefile                |   1 +-
 xen/arch/x86/hvm/i8254.c                 | 597 +------------------------
 xen/arch/x86/hvm/svm/svm.c               |  14 +-
 xen/arch/x86/hvm/vmx/vmx.c               |  12 +-
 xen/arch/x86/hypercall.c                 |   4 +-
 xen/arch/x86/mm.c                        |  16 +-
 xen/arch/x86/mm/Makefile                 |   7 +-
 xen/arch/x86/mm/hap/hap.c                |   2 +-
 xen/arch/x86/mm/p2m.c                    |  23 +-
 xen/arch/x86/mm/paging.c                 |   2 +-
 xen/arch/x86/mm/shadow/multi.c           |  14 +-
 xen/arch/x86/mm/shadow/none.c            |   2 +-
 xen/arch/x86/physdev.c                   |   2 +-
 xen/arch/x86/pv/hypercall.c              |   4 +-
 xen/arch/x86/setup.c                     |   2 +-
 xen/arch/x86/sysctl.c                    |   2 +-
 xen/arch/x86/traps.c                     |   4 +-
 xen/common/domain.c                      |  14 +-
 xen/common/memory.c                      |   3 +-
 xen/common/vm_event.c                    |   2 +-
 xen/drivers/passthrough/Makefile         |   4 +-
 xen/drivers/passthrough/vtd/x86/Makefile |   3 +-
 xen/drivers/passthrough/vtd/x86/hvm.c    |  67 +++-
 xen/drivers/passthrough/vtd/x86/vtd.c    |  45 +--
 xen/include/asm-x86/hvm/domain.h         |   4 +-
 xen/include/asm-x86/hvm/hvm.h            | 160 +++++-
 xen/include/asm-x86/hvm/io.h             |   5 +-
 xen/include/asm-x86/hvm/svm/asid.h       |   4 +-
 xen/include/asm-x86/hvm/svm/svm.h        |   4 +-
 xen/include/asm-x86/hvm/vmx/vmx.h        |   5 +-
 xen/include/asm-x86/monitor.h            |  14 +-
 xen/include/asm-x86/mtrr.h               |   5 +-
 xen/include/asm-x86/p2m.h                |  40 +-
 xen/include/asm-x86/paging.h             |   3 +-
 xen/include/public/sysctl.h              |   8 +-
 xen/include/xen/sched.h                  |  13 +-
 49 files changed, 1048 insertions(+), 721 deletions(-)
 create mode 100644 xen/arch/x86/emul-i8254.c
 delete mode 100644 xen/arch/x86/hvm/i8254.c
 create mode 100644 xen/drivers/passthrough/vtd/x86/hvm.c

base-commit: e5d6ddcd31a6113e4a3db7a235ca78770fe8f401
-- 
git-series 0.9.1

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.