[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
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |