From: Janosch Frank <frankja@linux.ibm.com>
To: pbonzini@redhat.com
Cc: kvm@vger.kernel.org, frankja@linux.ibm.com, david@redhat.com,
borntraeger@de.ibm.com, cohuck@redhat.com,
linux-s390@vger.kernel.org, imbrenda@linux.ibm.com,
thuth@redhat.com, Nico Boehr <nrb@linux.ibm.com>
Subject: [kvm-unit-tests GIT PULL 11/11] s390x: create persistent comm-key
Date: Tue, 20 Sep 2022 07:30:35 +0000 [thread overview]
Message-ID: <20220920073035.29201-12-frankja@linux.ibm.com> (raw)
In-Reply-To: <20220920073035.29201-1-frankja@linux.ibm.com>
From: Nico Boehr <nrb@linux.ibm.com>
To decrypt the dump of a PV guest, the comm-key (CCK) is required. Until
now, no comm-key was provided to genprotimg, therefore decrypting the
dump of a kvm-unit-test under PV was not possible.
This patch makes sure that we create a random CCK if there's no
$(TEST_DIR)/comm.key file.
Also allow dumping of PV tests by passing the appropriate PCF to
genprotimg (bit 34). --x-pcf is used to be compatible with older
genprotimg versions, which don't support --enable-dump. 0xe0 is the
default PCF value and only bit 34 is added.
Unfortunately, recent versions of genprotimg removed the --x-comm-key
argument which was used by older versions to specify the CCK. To support
these versions, we need to parse the genprotimg help output and decide
which argument to use.
Signed-off-by: Nico Boehr <nrb@linux.ibm.com>
Reviewed-by: Janosch Frank <frankja@linux.ibm.com>
Link: https://lore.kernel.org/r/20220909121453.202548-3-nrb@linux.ibm.com
Message-Id: <20220909121453.202548-3-nrb@linux.ibm.com>
Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
---
s390x/Makefile | 26 ++++++++++++++++++++++----
1 file changed, 22 insertions(+), 4 deletions(-)
diff --git a/s390x/Makefile b/s390x/Makefile
index a3647689..649486f2 100644
--- a/s390x/Makefile
+++ b/s390x/Makefile
@@ -164,15 +164,33 @@ $(SNIPPET_DIR)/c/%.hdr: $(SNIPPET_DIR)/c/%.gbin $(HOST_KEY_DOCUMENT)
$(RM) $(@:.elf=.aux.o)
@chmod a-x $@
+# Secure Execution Customer Communication Key file
+# 32 bytes of key material, uses existing one if available
+comm-key = $(TEST_DIR)/comm.key
+$(comm-key):
+ dd if=/dev/urandom of=$@ bs=32 count=1 status=none
+
%.bin: %.elf
$(OBJCOPY) -O binary $< $@
-genprotimg_args = --host-key-document $(HOST_KEY_DOCUMENT) --no-verify
+# The genprotimg arguments for the cck changed over time so we need to
+# figure out which argument to use in order to set the cck
+GENPROTIMG_HAS_COMM_KEY = $(shell $(GENPROTIMG) --help | grep -q -- --comm-key && echo yes)
+ifeq ($(GENPROTIMG_HAS_COMM_KEY),yes)
+ GENPROTIMG_COMM_KEY = --comm-key $(comm-key)
+else
+ GENPROTIMG_COMM_KEY = --x-comm-key $(comm-key)
+endif
-%selftest.pv.bin: %selftest.bin $(HOST_KEY_DOCUMENT) $(patsubst %.pv.bin,%.parmfile,$@)
+# use x-pcf to be compatible with old genprotimg versions
+# allow dumping + PCKMO
+genprotimg_pcf = 0x200000e0
+genprotimg_args = --host-key-document $(HOST_KEY_DOCUMENT) --no-verify $(GENPROTIMG_COMM_KEY) --x-pcf $(genprotimg_pcf)
+
+%selftest.pv.bin: %selftest.bin $(HOST_KEY_DOCUMENT) $(patsubst %.pv.bin,%.parmfile,$@) $(comm-key)
$(GENPROTIMG) $(genprotimg_args) --parmfile $(patsubst %.pv.bin,%.parmfile,$@) --image $< -o $@
-%.pv.bin: %.bin $(HOST_KEY_DOCUMENT)
+%.pv.bin: %.bin $(HOST_KEY_DOCUMENT) $(comm-key)
$(GENPROTIMG) $(genprotimg_args) --image $< -o $@
$(snippet_asmlib): $$(patsubst %.o,%.S,$$@) $(asm-offsets)
@@ -180,7 +198,7 @@ $(snippet_asmlib): $$(patsubst %.o,%.S,$$@) $(asm-offsets)
arch_clean: asm_offsets_clean
- $(RM) $(TEST_DIR)/*.{o,elf,bin} $(SNIPPET_DIR)/*/*.{o,elf,*bin,*obj,hdr} $(SNIPPET_DIR)/asm/.*.d $(TEST_DIR)/.*.d lib/s390x/.*.d
+ $(RM) $(TEST_DIR)/*.{o,elf,bin} $(SNIPPET_DIR)/*/*.{o,elf,*bin,*obj,hdr} $(SNIPPET_DIR)/asm/.*.d $(TEST_DIR)/.*.d lib/s390x/.*.d $(comm-key)
generated-files = $(asm-offsets)
$(tests:.elf=.o) $(asmlib) $(cflatobjs): $(generated-files)
--
2.34.1
prev parent reply other threads:[~2022-09-20 7:37 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-20 7:30 [kvm-unit-tests GIT PULL 00/11] s390x: LPAR boot fix and additional tests Janosch Frank
2022-09-20 7:30 ` [kvm-unit-tests GIT PULL 01/11] s390x: smp: move sigp calls with invalid cpu address to array Janosch Frank
2022-09-20 7:30 ` [kvm-unit-tests GIT PULL 02/11] s390x: smp: use an array for sigp calls Janosch Frank
2022-09-20 7:30 ` [kvm-unit-tests GIT PULL 03/11] s390x: smp: add tests for calls in wait state Janosch Frank
2022-09-20 7:30 ` [kvm-unit-tests GIT PULL 04/11] lib/s390x: fix SMP setup bug Janosch Frank
2022-09-20 7:30 ` [kvm-unit-tests GIT PULL 05/11] runtime: add support for panic tests Janosch Frank
2022-09-20 7:30 ` [kvm-unit-tests GIT PULL 06/11] lib/s390x: add CPU timer related defines and functions Janosch Frank
2022-09-20 7:30 ` [kvm-unit-tests GIT PULL 07/11] s390x: add extint loop test Janosch Frank
2022-09-20 7:30 ` [kvm-unit-tests GIT PULL 08/11] s390x: add pgm spec interrupt " Janosch Frank
2022-09-20 7:30 ` [kvm-unit-tests GIT PULL 09/11] s390x: Add strict mode to specification exception interpretation test Janosch Frank
2022-09-20 7:30 ` [kvm-unit-tests GIT PULL 10/11] s390x: factor out common args for genprotimg Janosch Frank
2022-09-20 7:30 ` Janosch Frank [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220920073035.29201-12-frankja@linux.ibm.com \
--to=frankja@linux.ibm.com \
--cc=borntraeger@de.ibm.com \
--cc=cohuck@redhat.com \
--cc=david@redhat.com \
--cc=imbrenda@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=nrb@linux.ibm.com \
--cc=pbonzini@redhat.com \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox