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

[Xen-devel] [PATCH v3 0/9] Add hypervisor sysfs-like support



On the 2019 Xen developer summit there was agreement that the Xen
hypervisor should gain support for a hierarchical name-value store
similar to the Linux kernel's sysfs.

This is a first implementation of that idea adding the basic
functionality to hypervisor and tools side. The interface to any
user program making use of that "xen-hypfs" is a new library
"libxenhypfs" with a stable interface.

As a followup switching libxl to use the hypervisor file system for
runtime parameter modifications is possible. This would enable
removal of the XEN_SYSCTL_set_parameter sysctl operation.

Changes in V3:
- major rework, especially by supporting binary contents of entries
- added several new patches (1, 2, 7)
- full support of all runtime parameters
- support of writing entries (especially runtime parameters)

Changes in V2:
- all comments to V1 addressed
- added man-page for xenhypfs tool
- added runtime parameter read access for string parameters

Changes in V1:
- renamed xenfs ->xenhypfs
- added writable entries support at the interface level and in the
  xenhypfs tool
- added runtime parameter read access (integer type only for now)
- added docs/misc/hypfs-paths.pandoc for path descriptions

Juergen Gross (9):
  xen: add a generic way to include binary files as variables
  xen: split parameter related definitions in own header file
  docs: add feature document for Xen hypervisor sysfs-like support
  xen: add basic hypervisor filesystem support
  libs: add libxenhypfs
  tools: add xenfs tool
  xen: provide version information in hypfs
  xen: add /buildinfo/config entry to hypervisor filesystem
  xen: add runtime parameter access support to hypfs

 .gitignore                               |   6 +
 docs/features/hypervisorfs.pandoc        |  86 +++++
 docs/man/xenhypfs.1.pod                  |  61 ++++
 docs/misc/hypfs-paths.pandoc             | 153 +++++++++
 tools/Rules.mk                           |   6 +
 tools/libs/Makefile                      |   1 +
 tools/libs/hypfs/Makefile                |  16 +
 tools/libs/hypfs/core.c                  | 535 +++++++++++++++++++++++++++++++
 tools/libs/hypfs/include/xenhypfs.h      |  75 +++++
 tools/libs/hypfs/libxenhypfs.map         |  10 +
 tools/libs/hypfs/xenhypfs.pc.in          |  10 +
 tools/misc/Makefile                      |   6 +
 tools/misc/xenhypfs.c                    | 189 +++++++++++
 xen/arch/arm/acpi/boot.c                 |   1 +
 xen/arch/arm/cpuerrata.c                 |   1 +
 xen/arch/arm/domain_build.c              |   1 +
 xen/arch/arm/gic-v3-lpi.c                |   1 +
 xen/arch/arm/setup.c                     |   1 +
 xen/arch/arm/smpboot.c                   |   1 +
 xen/arch/arm/traps.c                     |   2 +
 xen/arch/arm/xen.lds.S                   |   5 +
 xen/arch/x86/acpi/boot.c                 |   1 +
 xen/arch/x86/acpi/cpu_idle.c             |   1 +
 xen/arch/x86/acpi/cpufreq/cpufreq.c      |   1 +
 xen/arch/x86/acpi/power.c                |   1 +
 xen/arch/x86/apic.c                      |   1 +
 xen/arch/x86/cpu/amd.c                   |   1 +
 xen/arch/x86/cpu/common.c                |   1 +
 xen/arch/x86/cpu/mcheck/mce.c            |   1 +
 xen/arch/x86/cpu/mcheck/mce_intel.c      |   1 +
 xen/arch/x86/cpu/mtrr/generic.c          |   1 +
 xen/arch/x86/cpu/mwait-idle.c            |   1 +
 xen/arch/x86/cpu/vpmu.c                  |   1 +
 xen/arch/x86/cpuid.c                     |   1 +
 xen/arch/x86/dom0_build.c                |   1 +
 xen/arch/x86/e820.c                      |   1 +
 xen/arch/x86/genapic/probe.c             |   1 +
 xen/arch/x86/genapic/x2apic.c            |   1 +
 xen/arch/x86/hpet.c                      |   1 +
 xen/arch/x86/hvm/asid.c                  |   1 +
 xen/arch/x86/hvm/hvm.c                   |   1 +
 xen/arch/x86/hvm/hypercall.c             |   1 +
 xen/arch/x86/hvm/quirks.c                |   1 +
 xen/arch/x86/hvm/viridian/viridian.c     |   1 +
 xen/arch/x86/hvm/vmx/vmcs.c              |  18 +-
 xen/arch/x86/hvm/vmx/vmx.c               |   1 +
 xen/arch/x86/hypercall.c                 |   1 +
 xen/arch/x86/io_apic.c                   |   1 +
 xen/arch/x86/irq.c                       |   1 +
 xen/arch/x86/microcode.c                 |   1 +
 xen/arch/x86/mm.c                        |   1 +
 xen/arch/x86/mm/p2m.c                    |   1 +
 xen/arch/x86/msi.c                       |   1 +
 xen/arch/x86/nmi.c                       |   1 +
 xen/arch/x86/numa.c                      |   1 +
 xen/arch/x86/oprofile/nmi_int.c          |   1 +
 xen/arch/x86/psr.c                       |   1 +
 xen/arch/x86/pv/domain.c                 |   8 +-
 xen/arch/x86/pv/hypercall.c              |   1 +
 xen/arch/x86/pv/shim.c                   |   1 +
 xen/arch/x86/setup.c                     |   1 +
 xen/arch/x86/shutdown.c                  |   1 +
 xen/arch/x86/spec_ctrl.c                 |   1 +
 xen/arch/x86/tboot.c                     |   1 +
 xen/arch/x86/time.c                      |   1 +
 xen/arch/x86/traps.c                     |   1 +
 xen/arch/x86/tsx.c                       |   1 +
 xen/arch/x86/x86_64/mmconfig-shared.c    |   1 +
 xen/arch/x86/xen.lds.S                   |   5 +
 xen/arch/x86/xstate.c                    |   1 +
 xen/common/Makefile                      |  13 +
 xen/common/argo.c                        |   1 +
 xen/common/core_parking.c                |   1 +
 xen/common/cpupool.c                     |   1 +
 xen/common/debugtrace.c                  |   1 +
 xen/common/domain.c                      |   1 +
 xen/common/efi/boot.c                    |   1 +
 xen/common/gdbstub.c                     |   1 +
 xen/common/grant_table.c                 |  18 +-
 xen/common/hypfs.c                       | 403 +++++++++++++++++++++++
 xen/common/kernel.c                      |  79 ++++-
 xen/common/kexec.c                       |   1 +
 xen/common/memory.c                      |   1 +
 xen/common/page_alloc.c                  |   1 +
 xen/common/rcupdate.c                    |   1 +
 xen/common/sched_credit.c                |   1 +
 xen/common/sched_credit2.c               |   1 +
 xen/common/schedule.c                    |   1 +
 xen/common/shutdown.c                    |   1 +
 xen/common/timer.c                       |   1 +
 xen/common/trace.c                       |   1 +
 xen/drivers/acpi/apei/hest.c             |   1 +
 xen/drivers/acpi/tables.c                |   1 +
 xen/drivers/char/arm-uart.c              |   1 +
 xen/drivers/char/console.c               |  50 ++-
 xen/drivers/char/ehci-dbgp.c             |   1 +
 xen/drivers/char/ns16550.c               |   1 +
 xen/drivers/char/serial.c                |   1 +
 xen/drivers/cpufreq/cpufreq.c            |   1 +
 xen/drivers/passthrough/amd/iommu_acpi.c |   1 +
 xen/drivers/passthrough/iommu.c          |   1 +
 xen/drivers/passthrough/pci.c            |   1 +
 xen/drivers/passthrough/vtd/dmar.c       |   1 +
 xen/drivers/passthrough/vtd/quirks.c     |   1 +
 xen/drivers/passthrough/vtd/x86/vtd.c    |   1 +
 xen/drivers/passthrough/x86/ats.c        |   1 +
 xen/drivers/video/vesa.c                 |   1 +
 xen/drivers/video/vga.c                  |   1 +
 xen/include/public/hypfs.h               | 124 +++++++
 xen/include/public/xen.h                 |   1 +
 xen/include/xen/hypercall.h              |   8 +
 xen/include/xen/hypfs.h                  |  93 ++++++
 xen/include/xen/init.h                   | 120 -------
 xen/include/xen/kernel.h                 |   3 +
 xen/include/xen/param.h                  | 184 +++++++++++
 xen/tools/binfile                        |  29 ++
 xen/xsm/flask/Makefile                   |   5 +-
 xen/xsm/flask/flask-policy.S             |  16 -
 xen/xsm/flask/flask_op.c                 |   1 +
 xen/xsm/xsm_core.c                       |   1 +
 120 files changed, 2274 insertions(+), 151 deletions(-)
 create mode 100644 docs/features/hypervisorfs.pandoc
 create mode 100644 docs/man/xenhypfs.1.pod
 create mode 100644 docs/misc/hypfs-paths.pandoc
 create mode 100644 tools/libs/hypfs/Makefile
 create mode 100644 tools/libs/hypfs/core.c
 create mode 100644 tools/libs/hypfs/include/xenhypfs.h
 create mode 100644 tools/libs/hypfs/libxenhypfs.map
 create mode 100644 tools/libs/hypfs/xenhypfs.pc.in
 create mode 100644 tools/misc/xenhypfs.c
 create mode 100644 xen/common/hypfs.c
 create mode 100644 xen/include/public/hypfs.h
 create mode 100644 xen/include/xen/hypfs.h
 create mode 100644 xen/include/xen/param.h
 create mode 100755 xen/tools/binfile
 delete mode 100644 xen/xsm/flask/flask-policy.S

-- 
2.16.4


_______________________________________________
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®.