mirror of
https://github.com/ibm-s390-linux/s390-tools.git
synced 2026-08-05 02:14:52 +00:00
Protected VMs (PVM) are KVM VMs, where KVM can't access the VM's state like guest memory and guest registers anymore. Instead the PVMs are mostly managed by a new entity called Ultravisor (UV), which provides an API, so KVM and the PV can request management actions. PVMs are encrypted at rest and protected from hypervisor access while running. They switch from a normal operation into protected mode, so we can still use the standard boot process to load an encrypted image and then move it into protected mode. This commit adds the tool 'genprotimg'. It takes a kernel, key files, optionally an initrd, optionally a file with the kernel command line, and it generates a single, loadable image file. The image consists of a concatenation of a plain text boot loader, the encrypted components for kernel, initrd, and cmdline, and the integrity-protected PV header, containing metadata necessary for running the guest in PV mode. It's possible to use this image file as a kernel for zipl or for a direct kernel boot using QEMU. Reviewed-by: Bjoern Walk <bwalk@linux.ibm.com> Acked-by: Patrick Steuer <patrick.steuer@de.ibm.com> Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com> Reviewed-by: Jan Höppner <hoeppner@linux.ibm.com> Signed-off-by: Marc Hartmayer <mhartmay@linux.ibm.com> Signed-off-by: Jan Höppner <hoeppner@linux.ibm.com>
51 lines
1.6 KiB
Makefile
51 lines
1.6 KiB
Makefile
ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
|
|
|
|
# Include common definitions
|
|
include common.mak
|
|
|
|
LIB_DIRS = libvtoc libutil libzds libdasd libvmdump libccw libvmcp
|
|
TOOL_DIRS = zipl zdump fdasd dasdfmt dasdview tunedasd \
|
|
tape390 osasnmpd qetharp ip_watcher qethconf scripts zconf \
|
|
vmconvert vmcp man mon_tools dasdinfo vmur cpuplugd ipl_tools \
|
|
ziomon iucvterm hyptop cmsfs-fuse qethqoat zfcpdump zdsfs cpumf \
|
|
systemd hmcdrvfs cpacfstats zdev dump2tar zkey netboot etc zpcictl \
|
|
genprotimg
|
|
|
|
SUB_DIRS = $(LIB_DIRS) $(TOOL_DIRS)
|
|
|
|
all: $(TOOL_DIRS)
|
|
clean: $(TOOL_DIRS)
|
|
install: $(TOOL_DIRS)
|
|
|
|
#
|
|
# For simple "make" we explicitly set the MAKECMDGOALS to "all".
|
|
#
|
|
ifeq ($(MAKECMDGOALS),)
|
|
MAKECMDGOALS = all
|
|
endif
|
|
|
|
#
|
|
# We have to build the libraries before the tools are built. Otherwise
|
|
# the tools would trigger parallel "make -C" builds for libraries in
|
|
# case of "make -j".
|
|
#
|
|
# MAKECMDGOALS contains the list of goals, e.g. "clean all". We use
|
|
# "foreach" to generate a ";" separated list of "make -C <target>".
|
|
# For example the the expansion for "make clean all" is:
|
|
#
|
|
# $(MAKE) -C $@ [..] clean ; $(MAKE) -C $@ [...] all ;
|
|
#
|
|
# This ensures that the commandline targets are serialized and also "make -j"
|
|
# works as expected, e.g. "make clean all -j 20".
|
|
#
|
|
|
|
$(TOOL_DIRS): $(LIB_DIRS)
|
|
$(foreach goal,$(MAKECMDGOALS), \
|
|
$(MAKE) -C $@ TOPDIR=$(TOPDIR) ARCH=$(ARCH) $(goal) ;)
|
|
.PHONY: $(TOOL_DIRS)
|
|
|
|
$(LIB_DIRS):
|
|
$(foreach goal,$(MAKECMDGOALS), \
|
|
$(MAKE) -C $@ TOPDIR=$(TOPDIR) ARCH=$(ARCH) $(goal) ;)
|
|
.PHONY: $(LIB_DIRS)
|