On 10.02.20 12:54, Cornelia Huck wrote: > On Fri, 7 Feb 2020 06:39:26 -0500 > Christian Borntraeger <borntraeger@xxxxxxxxxx> wrote: > >> From: Vasily Gorbik <gor@xxxxxxxxxxxxx> >> >> Add "prot_virt" command line option which controls if the kernel >> protected VMs support is enabled at early boot time. This has to be >> done early, because it needs large amounts of memory and will disable >> some features like STP time sync for the lpar. >> >> Extend ultravisor info definitions and expose it via uv_info struct >> filled in during startup. >> >> Signed-off-by: Vasily Gorbik <gor@xxxxxxxxxxxxx> >> [borntraeger@xxxxxxxxxx: patch merging, splitting, fixing] >> Signed-off-by: Christian Borntraeger <borntraeger@xxxxxxxxxx> >> --- >> .../admin-guide/kernel-parameters.txt | 5 ++ >> arch/s390/boot/Makefile | 2 +- >> arch/s390/boot/uv.c | 21 +++++++- >> arch/s390/include/asm/uv.h | 46 +++++++++++++++-- >> arch/s390/kernel/Makefile | 1 + >> arch/s390/kernel/setup.c | 4 -- >> arch/s390/kernel/uv.c | 49 +++++++++++++++++++ >> 7 files changed, 119 insertions(+), 9 deletions(-) >> create mode 100644 arch/s390/kernel/uv.c > > (...) > >> diff --git a/arch/s390/boot/Makefile b/arch/s390/boot/Makefile >> index e2c47d3a1c89..30f1811540c5 100644 >> --- a/arch/s390/boot/Makefile >> +++ b/arch/s390/boot/Makefile >> @@ -37,7 +37,7 @@ CFLAGS_sclp_early_core.o += -I$(srctree)/drivers/s390/char >> obj-y := head.o als.o startup.o mem_detect.o ipl_parm.o ipl_report.o >> obj-y += string.o ebcdic.o sclp_early_core.o mem.o ipl_vmparm.o cmdline.o >> obj-y += version.o pgm_check_info.o ctype.o text_dma.o >> -obj-$(CONFIG_PROTECTED_VIRTUALIZATION_GUEST) += uv.o >> +obj-$(findstring y, $(CONFIG_PROTECTED_VIRTUALIZATION_GUEST) $(CONFIG_PGSTE)) += uv.o > > I'm wondering why you're checking CONFIG_PGSTE here... It was just simpler for a Makefile, because CONFIG_KVM can be m or y. PGSTE is always y when CONFIG_KVM is set. Suggestions welcome. [...] >> + prot_virt_host = 0; >> + pr_info("Running as protected virtualization guest."); >> + } >> + >> + if (prot_virt_host && !test_facility(158)) { >> + prot_virt_host = 0; >> + pr_info("The ultravisor call facility is not available."); >> + } > > What about prefixing these two with 'prot_virt:'? It seems the name is > settled now? It is not settled, but I can certainly do something like #define KMSG_COMPONENT "prot_virt" #define pr_fmt(fmt) KMSG_COMPONENT ": " fmt to prefix all pr_* calls in this file.