This work being submitted in this series was made possible with a great thanks
to Star Lab Cop ration and their generous funding of this project.
The patch series is based on the existing xsm series for starting the idle
domain privileged. After that, the first four commits were previously submitted
as an RFC and expanded by an additional commit to refactor xen commandline
handling. The remaining preliminary patches are FDT refactoring and a doc
update. From there is where the series begins to morph x86 arch to support
building multiple domains at boot.
This series has been fairly well tested using qemu with a multiboot1 bootoader
and under EFI + GRUB multiboot2 boot. While there are likely some rough spots
remaining in the series, it is at a point now where the series should be reviewed,
exercised, and tested for consideration into tree.
Information, including docuemntation, meeting minutes, presentations, and past
series postings can be found on the Xen wiki:
https://wiki.xenproject.org/wiki/Hyperlaunch
Daniel P. Smith (18):
kconfig: allow configuration of maximum modules
introduction of generalized boot info
x86: adopt new boot info structures
x86: refactor entrypoints to new boot info
x86: refactor xen cmdline into general framework
fdt: make fdt handling reusable across arch
docs: update hyperlaunch device tree documentation
kconfig: introduce domain builder config option
x86: introduce abstractions for domain builder
x86: introduce the domain builder
x86: initial conversion to domain builder
x86: convert dom0 creation to domain builder
x86: generalize physmap logic
x86: generalize vcpu for domain building
x86: rework domain page allocation
x86: add pv multidomain construction
builder: introduce domain builder hypfs tree
tools: introduce example late pv helper
.gitignore | 1 +
.../designs/launch/hyperlaunch-devicetree.rst | 497 +++++++++++-------
tools/helpers/Makefile | 11 +
tools/helpers/builder-hypfs.c | 253 +++++++++
tools/helpers/hypfs-helpers.h | 9 +
tools/helpers/late-init-pv.c | 287 ++++++++++
tools/helpers/late-init-pv.h | 29 +
tools/helpers/xs-helpers.c | 117 +++++
tools/helpers/xs-helpers.h | 27 +
xen/arch/Kconfig | 12 +
xen/arch/arm/bootfdt.c | 115 +---
xen/arch/arm/include/asm/setup.h | 5 +-
xen/arch/x86/Makefile | 1 +
xen/arch/x86/boot/boot_info32.h | 97 ++++
xen/arch/x86/boot/defs.h | 17 +-
xen/arch/x86/boot/reloc.c | 187 +++++--
xen/arch/x86/bzimage.c | 18 +-
xen/arch/x86/cpu/microcode/core.c | 133 +++--
xen/arch/x86/dom0_build.c | 129 +----
xen/arch/x86/domain_builder.c | 284 ++++++++++
xen/arch/x86/efi/efi-boot.h | 96 ++--
xen/arch/x86/guest/xen/pvh-boot.c | 64 ++-
xen/arch/x86/hvm/dom0_build.c | 62 +--
xen/arch/x86/include/asm/bootdomain.h | 30 ++
xen/arch/x86/include/asm/bootinfo.h | 99 ++++
xen/arch/x86/include/asm/bzimage.h | 5 +-
xen/arch/x86/include/asm/dom0_build.h | 27 +-
xen/arch/x86/include/asm/guest/pvh-boot.h | 6 +-
xen/arch/x86/include/asm/setup.h | 18 +-
xen/arch/x86/pv/Makefile | 2 +-
.../x86/pv/{dom0_build.c => domain_builder.c} | 141 ++---
xen/arch/x86/pv/shim.c | 4 +-
xen/arch/x86/setup.c | 392 ++++++--------
xen/common/Kconfig | 5 +
xen/common/Makefile | 4 +-
xen/common/domain-builder/Kconfig | 36 ++
xen/common/domain-builder/Makefile | 3 +
xen/common/domain-builder/core.c | 207 ++++++++
xen/common/domain-builder/fdt.c | 295 +++++++++++
xen/common/domain-builder/fdt.h | 7 +
xen/common/domain-builder/hypfs.c | 193 +++++++
xen/common/efi/boot.c | 4 +-
xen/common/fdt.c | 131 +++++
xen/common/sched/core.c | 25 +-
xen/include/xen/bootdomain.h | 58 ++
xen/include/xen/bootinfo.h | 132 +++++
xen/include/xen/device_tree.h | 50 +-
xen/include/xen/domain_builder.h | 88 ++++
xen/include/xen/fdt.h | 79 +++
xen/include/xen/sched.h | 3 +-
xen/include/xsm/xsm.h | 26 +-
xen/xsm/xsm_core.c | 43 +-
xen/xsm/xsm_policy.c | 56 +-
53 files changed, 3544 insertions(+), 1076 deletions(-)
create mode 100644 tools/helpers/builder-hypfs.c
create mode 100644 tools/helpers/hypfs-helpers.h
create mode 100644 tools/helpers/late-init-pv.c
create mode 100644 tools/helpers/late-init-pv.h
create mode 100644 tools/helpers/xs-helpers.c
create mode 100644 tools/helpers/xs-helpers.h
create mode 100644 xen/arch/x86/boot/boot_info32.h
create mode 100644 xen/arch/x86/domain_builder.c
create mode 100644 xen/arch/x86/include/asm/bootdomain.h
create mode 100644 xen/arch/x86/include/asm/bootinfo.h
rename xen/arch/x86/pv/{dom0_build.c => domain_builder.c} (88%)
create mode 100644 xen/common/domain-builder/Kconfig
create mode 100644 xen/common/domain-builder/Makefile
create mode 100644 xen/common/domain-builder/core.c
create mode 100644 xen/common/domain-builder/fdt.c
create mode 100644 xen/common/domain-builder/fdt.h
create mode 100644 xen/common/domain-builder/hypfs.c
create mode 100644 xen/common/fdt.c
create mode 100644 xen/include/xen/bootdomain.h
create mode 100644 xen/include/xen/bootinfo.h
create mode 100644 xen/include/xen/domain_builder.h
create mode 100644 xen/include/xen/fdt.h
--
2.20.1