[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [RFC XEN PATCH v4 00/41] Add vNVDIMM support to HVM domains
All patches can also be found at Xen: https://github.com/hzzhan9/xen.git nvdimm-rfc-v4 QEMU: https://github.com/hzzhan9/qemu.git xen-nvdimm-rfc-v4 RFC v3 can be found at https://lists.xen.org/archives/html/xen-devel/2017-09/msg00964.html Changes in v4: * Move the functionality of management util 'xen-ndctl' to Xne management tool 'xl'. * Load QEMU ACPI via QEMU fw_cfg and BIOSLinkerLoader interface. * Other changes are documented in patches separately. - Part 0. Bug fix and code cleanup [01/41] x86_64/mm: fix the PDX group check in mem_hotadd_check() [02/41] x86_64/mm: avoid cleaning the unmapped frame table [03/41] hvmloader/util: do not compare characters after '\0' in strncmp - Part 1. Detect host PMEM Detect host PMEM via NFIT. No frametable and M2P table for them are created in this part. [04/41] xen/common: add Kconfig item for pmem support [05/41] x86/mm: exclude PMEM regions from initial frametable [06/41] acpi: probe valid PMEM regions via NFIT [07/41] xen/pmem: register valid PMEM regions to Xen hypervisor [08/41] xen/pmem: hide NFIT and deny access to PMEM from Dom0 [09/41] xen/pmem: add framework for hypercall XEN_SYSCTL_nvdimm_op [10/41] xen/pmem: add XEN_SYSCTL_nvdimm_pmem_get_rgions_nr [11/41] xen/pmem: add XEN_SYSCTL_nvdimm_pmem_get_regions [12/41] tools/xl: add xl command 'pmem-list' - Part 2. Setup host PMEM for management and guest data usage Allow users or admins in Dom0 to setup host PMEM pages for management and guest data usages. * Management PMEM pages are used to store the frametable and M2P of PMEM pages (including themselves), and never mapped to guest. * Guest data PMEM pages can be mapped to guest and used as the backend storage of virtual NVDIMM devices. [13/41] x86_64/mm: refactor memory_add() [14/41] x86_64/mm: allow customized location of extended frametable and M2P table [15/41] xen/pmem: add XEN_SYSCTL_nvdimm_pmem_setup to setup management PMEM region [16/41] tools/xl: accept all bases in parse_ulong() [17/41] tools/xl: expose parse_ulong() [18/41] tools/xl: add xl command 'pmem-setup' [19/41] xen/pmem: support PMEM_REGION_TYPE_MGMT for XEN_SYSCTL_nvdimm_pmem_get_regions_nr [20/41] xen/pmem: support PMEM_REGION_TYPE_MGMT for XEN_SYSCTL_nvdimm_pmem_get_regions [21/41] tools/xl: add option '--mgmt | -m' to xl command pmem-list [22/41] xen/pmem: support setup PMEM region for guest data usage [23/41] tools/xl: add option '--data | -d' to xl command pmem-setup [24/41] xen/pmem: support PMEM_REGION_TYPE_DATA for XEN_SYSCTL_nvdimm_pmem_get_regions_nr [25/41] xen/pmem: support PMEM_REGION_TYPE_DATA for XEN_SYSCTL_nvdimm_pmem_get_regions [26/41] tools/xl: add option '--data | -d' to xl command pmem-list - Part 3. Hypervisor support to map host PMEM pages to HVM domain [27/41] xen/pmem: add function to map PMEM pages to HVM domain [28/41] xen/pmem: release PMEM pages on HVM domain destruction [29/41] xen: add hypercall XENMEM_populate_pmem_map - Part 4. Load QEMU ACPI Guest NFIT and NVDIMM namespace devices are built by QEMU. This part loads QEMU ACPI via QEMU fw_cfg and BIOSLinkerLoader interface. A simple blacklist mechanism is added to reject DM ACPI tables that may conflict with those built by Xen itself. [30/41] tools: reserve extra guest memory for ACPI from device model [31/41] tools/libacpi: add callback to translate GPA to GVA [32/41] tools/libacpi: build a DM ACPI signature blacklist [33/41] tools/libacpi, hvmloader: detect QEMU fw_cfg interface [34/41] tools/libacpi: probe QEMU ACPI ROMs via fw_cfg interface [35/41] tools/libacpi: add a QEMU BIOSLinkLoader executor [36/41] tools/libacpi: add function to get the data of QEMU RSDP [37/41] tools/libacpi: load QEMU ACPI - Part 5. Remaining tool stack changes Add xl domain configuration and generate new QEMU options for vNVDIMM. [38/41] tools/xl: add xl domain configuration for virtual NVDIMM devices [39/41] tools/libxl: allow aborting domain creation on fatal QMP init errors [40/41] tools/libxl: initiate PMEM mapping via QMP callback [41/41] tools/libxl: build qemu options from xl vNVDIMM configs docs/man/xl.cfg.pod.5.in | 40 ++ tools/firmware/hvmloader/Makefile | 4 +- tools/firmware/hvmloader/util.c | 16 + tools/firmware/hvmloader/util.h | 14 + tools/flask/policy/modules/dom0.te | 2 +- tools/flask/policy/modules/xen.if | 3 +- tools/libacpi/acpi2_0.h | 1 + tools/libacpi/build.c | 176 ++++++++- tools/libacpi/libacpi.h | 10 + tools/libacpi/qemu.h | 56 +++ tools/libacpi/qemu_fw_cfg.c | 99 +++++ tools/libacpi/qemu_loader.c | 392 +++++++++++++++++++ tools/libacpi/qemu_stub.c | 64 +++ tools/libxc/include/xenctrl.h | 88 +++++ tools/libxc/xc_domain.c | 15 + tools/libxc/xc_misc.c | 154 ++++++++ tools/libxl/Makefile | 5 +- tools/libxl/libxl.h | 55 +++ tools/libxl/libxl_create.c | 4 +- tools/libxl/libxl_dm.c | 81 +++- tools/libxl/libxl_internal.h | 6 + tools/libxl/libxl_nvdimm.c | 227 +++++++++++ tools/libxl/libxl_qmp.c | 138 ++++++- tools/libxl/libxl_types.idl | 49 +++ tools/libxl/libxl_x86.c | 7 +- tools/libxl/libxl_x86_acpi.c | 10 + tools/xl/Makefile | 2 +- tools/xl/xl.h | 2 + tools/xl/xl_cmdtable.c | 19 + tools/xl/xl_nvdimm.c | 205 ++++++++++ tools/xl/xl_parse.c | 130 +++++- tools/xl/xl_parse.h | 1 + tools/xl/xl_vmcontrol.c | 15 +- xen/arch/x86/acpi/boot.c | 4 + xen/arch/x86/acpi/power.c | 7 + xen/arch/x86/dom0_build.c | 5 + xen/arch/x86/domain.c | 32 +- xen/arch/x86/mm.c | 124 +++++- xen/arch/x86/setup.c | 4 + xen/arch/x86/shutdown.c | 3 + xen/arch/x86/tboot.c | 4 + xen/arch/x86/x86_64/mm.c | 302 ++++++++++---- xen/common/Kconfig | 8 + xen/common/Makefile | 1 + xen/common/compat/memory.c | 1 + xen/common/domain.c | 3 + xen/common/kexec.c | 3 + xen/common/memory.c | 44 +++ xen/common/pmem.c | 761 ++++++++++++++++++++++++++++++++++++ xen/common/sysctl.c | 9 + xen/drivers/acpi/Makefile | 2 + xen/drivers/acpi/nfit.c | 321 +++++++++++++++ xen/include/acpi/actbl1.h | 69 ++++ xen/include/asm-x86/domain.h | 1 + xen/include/asm-x86/mm.h | 10 +- xen/include/public/memory.h | 14 +- xen/include/public/sysctl.h | 97 ++++- xen/include/xen/acpi.h | 10 + xen/include/xen/pmem.h | 76 ++++ xen/include/xen/sched.h | 3 + xen/include/xsm/dummy.h | 11 + xen/include/xsm/xsm.h | 12 + xen/xsm/dummy.c | 4 + xen/xsm/flask/hooks.c | 17 + xen/xsm/flask/policy/access_vectors | 4 + 65 files changed, 3939 insertions(+), 117 deletions(-) create mode 100644 tools/libacpi/qemu.h create mode 100644 tools/libacpi/qemu_fw_cfg.c create mode 100644 tools/libacpi/qemu_loader.c create mode 100644 tools/libacpi/qemu_stub.c create mode 100644 tools/libxl/libxl_nvdimm.c create mode 100644 tools/xl/xl_nvdimm.c create mode 100644 xen/common/pmem.c create mode 100644 xen/drivers/acpi/nfit.c create mode 100644 xen/include/xen/pmem.h -- 2.15.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 |