* [kvm-unit-tests PATCH 0/4] s390x: split off snippet and sie related code
@ 2024-07-18 10:50 Janosch Frank
2024-07-18 10:50 ` [kvm-unit-tests PATCH 1/4] s390x: Split snippet makefile rules into new file Janosch Frank
` (3 more replies)
0 siblings, 4 replies; 16+ messages in thread
From: Janosch Frank @ 2024-07-18 10:50 UTC (permalink / raw)
To: kvm; +Cc: linux-s390, imbrenda, nrb, npiggin, nsg, mhartmay
The makefile is getting long and increasingly complex. Let's move the
snippet part to s390x/snippets/ and sprinkle a couple comments on top.
While we're moving things around we can split lib/s390x/sie.h into sie
architecture code and sie library code and split the sie assembly in
cpu.S into its own file.
Janosch Frank (4):
s390x: Split snippet makefile rules into new file
s390x/Makefile: Add more comments
s390x: Move SIE assembly into new file
lib: s390x: Split SIE fw structs from lib structs
lib/s390x/{sie.h => asm/sie-arch.h} | 58 +------
lib/s390x/sie.h | 231 +---------------------------
s390x/Makefile | 41 ++---
s390x/{cpu.S => cpu-sie.S} | 59 +------
s390x/cpu.S | 64 --------
s390x/snippets/Makefile | 30 ++++
6 files changed, 45 insertions(+), 438 deletions(-)
copy lib/s390x/{sie.h => asm/sie-arch.h} (81%)
copy s390x/{cpu.S => cpu-sie.S} (56%)
create mode 100644 s390x/snippets/Makefile
--
2.43.0
^ permalink raw reply [flat|nested] 16+ messages in thread* [kvm-unit-tests PATCH 1/4] s390x: Split snippet makefile rules into new file 2024-07-18 10:50 [kvm-unit-tests PATCH 0/4] s390x: split off snippet and sie related code Janosch Frank @ 2024-07-18 10:50 ` Janosch Frank 2024-07-25 14:27 ` Christoph Schlameuss 2024-07-25 14:35 ` Claudio Imbrenda 2024-07-18 10:50 ` [kvm-unit-tests PATCH 2/4] s390x/Makefile: Add more comments Janosch Frank ` (2 subsequent siblings) 3 siblings, 2 replies; 16+ messages in thread From: Janosch Frank @ 2024-07-18 10:50 UTC (permalink / raw) To: kvm; +Cc: linux-s390, imbrenda, nrb, npiggin, nsg, mhartmay It's time to move the snippet related Makefile parts into a new file to make s390x/Makefile less busy. Signed-off-by: Janosch Frank <frankja@linux.ibm.com> --- s390x/Makefile | 34 ++++------------------------------ s390x/snippets/Makefile | 30 ++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 30 deletions(-) create mode 100644 s390x/snippets/Makefile diff --git a/s390x/Makefile b/s390x/Makefile index c5c6f92c..2933b452 100644 --- a/s390x/Makefile +++ b/s390x/Makefile @@ -120,9 +120,11 @@ asmlib = $(TEST_DIR)/cstart64.o $(TEST_DIR)/cpu.o FLATLIBS = $(libcflat) +# Snippets SNIPPET_DIR = $(TEST_DIR)/snippets snippet_asmlib = $(SNIPPET_DIR)/c/cstart.o snippet_lib = $(snippet_asmlib) lib/auxinfo.o +include $(SNIPPET_DIR)/Makefile # perquisites (=guests) for the snippet hosts. # $(TEST_DIR)/<snippet-host>.elf: snippets = $(SNIPPET_DIR)/<c/asm>/<snippet>.gbin @@ -148,34 +150,6 @@ else snippet-hdr-obj = endif -# the asm/c snippets %.o have additional generated files as dependencies -$(SNIPPET_DIR)/asm/%.o: $(SNIPPET_DIR)/asm/%.S $(asm-offsets) - $(CC) $(CFLAGS) -c -nostdlib -o $@ $< - -$(SNIPPET_DIR)/c/%.o: $(SNIPPET_DIR)/c/%.c $(asm-offsets) - $(CC) $(CFLAGS) -c -nostdlib -o $@ $< - -$(SNIPPET_DIR)/asm/%.gbin: $(SNIPPET_DIR)/asm/%.o $(SNIPPET_DIR)/asm/flat.lds - $(CC) $(LDFLAGS) -o $@ -T $(SNIPPET_DIR)/asm/flat.lds $< - $(OBJCOPY) -O binary -j ".rodata" -j ".lowcore" -j ".text" -j ".data" -j ".bss" --set-section-flags .bss=alloc,load,contents $@ $@ - truncate -s '%4096' $@ - -$(SNIPPET_DIR)/c/%.gbin: $(SNIPPET_DIR)/c/%.o $(snippet_lib) $(FLATLIBS) $(SNIPPET_DIR)/c/flat.lds - $(CC) $(LDFLAGS) -o $@ -T $(SNIPPET_DIR)/c/flat.lds $< $(snippet_lib) $(FLATLIBS) - $(OBJCOPY) -O binary -j ".rodata" -j ".lowcore" -j ".text" -j ".data" -j ".bss" --set-section-flags .bss=alloc,load,contents $@ $@ - truncate -s '%4096' $@ - -%.hdr: %.gbin $(HOST_KEY_DOCUMENT) - $(GEN_SE_HEADER) -k $(HOST_KEY_DOCUMENT) -c $<,0x0,0x00000000000000420000000000000000 --psw-addr 0x4000 -o $@ - -.SECONDARY: -%.gobj: %.gbin - $(OBJCOPY) -I binary -O elf64-s390 -B "s390:64-bit" $< $@ - -.SECONDARY: -%.hdr.obj: %.hdr - $(OBJCOPY) -I binary -O elf64-s390 -B "s390:64-bit" $< $@ - lds-autodepend-flags = -MMD -MF $(dir $*).$(notdir $*).d -MT $@ %.lds: %.lds.S $(asm-offsets) $(CPP) $(lds-autodepend-flags) $(CPPFLAGS) -P -C -o $@ $< @@ -229,8 +203,8 @@ $(snippet_asmlib): $$(patsubst %.o,%.S,$$@) $(asm-offsets) $(CC) $(CFLAGS) -c -nostdlib -o $@ $< -arch_clean: asm_offsets_clean - $(RM) $(TEST_DIR)/*.{o,elf,bin,lds} $(SNIPPET_DIR)/*/*.{o,elf,*bin,*obj,hdr,lds} $(SNIPPET_DIR)/asm/.*.d $(TEST_DIR)/.*.d lib/s390x/.*.d $(comm-key) +arch_clean: asm_offsets_clean snippet_clean + $(RM) $(TEST_DIR)/*.{o,elf,bin,lds} $(TEST_DIR)/.*.d lib/s390x/.*.d $(comm-key) generated-files = $(asm-offsets) $(tests:.elf=.o) $(asmlib) $(cflatobjs): $(generated-files) diff --git a/s390x/snippets/Makefile b/s390x/snippets/Makefile new file mode 100644 index 00000000..a1c479f6 --- /dev/null +++ b/s390x/snippets/Makefile @@ -0,0 +1,30 @@ +# the asm/c snippets %.o have additional generated files as dependencies +$(SNIPPET_DIR)/asm/%.o: $(SNIPPET_DIR)/asm/%.S $(asm-offsets) + $(CC) $(CFLAGS) -c -nostdlib -o $@ $< + +$(SNIPPET_DIR)/c/%.o: $(SNIPPET_DIR)/c/%.c $(asm-offsets) + $(CC) $(CFLAGS) -c -nostdlib -o $@ $< + +$(SNIPPET_DIR)/asm/%.gbin: $(SNIPPET_DIR)/asm/%.o $(SNIPPET_DIR)/asm/flat.lds + $(CC) $(LDFLAGS) -o $@ -T $(SNIPPET_DIR)/asm/flat.lds $< + $(OBJCOPY) -O binary -j ".rodata" -j ".lowcore" -j ".text" -j ".data" -j ".bss" --set-section-flags .bss=alloc,load,contents $@ $@ + truncate -s '%4096' $@ + +$(SNIPPET_DIR)/c/%.gbin: $(SNIPPET_DIR)/c/%.o $(snippet_lib) $(FLATLIBS) $(SNIPPET_DIR)/c/flat.lds + $(CC) $(LDFLAGS) -o $@ -T $(SNIPPET_DIR)/c/flat.lds $< $(snippet_lib) $(FLATLIBS) + $(OBJCOPY) -O binary -j ".rodata" -j ".lowcore" -j ".text" -j ".data" -j ".bss" --set-section-flags .bss=alloc,load,contents $@ $@ + truncate -s '%4096' $@ + +%.hdr: %.gbin $(HOST_KEY_DOCUMENT) + $(GEN_SE_HEADER) -k $(HOST_KEY_DOCUMENT) -c $<,0x0,0x00000000000000420000000000000000 --psw-addr 0x4000 -o $@ + +.SECONDARY: +%.gobj: %.gbin + $(OBJCOPY) -I binary -O elf64-s390 -B "s390:64-bit" $< $@ + +.SECONDARY: +%.hdr.obj: %.hdr + $(OBJCOPY) -I binary -O elf64-s390 -B "s390:64-bit" $< $@ + +snippet_clean: + $(RM) $(SNIPPET_DIR)/*/*.{o,elf,*bin,*obj,hdr,lds} $(SNIPPET_DIR)/asm/.*.d -- 2.43.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [kvm-unit-tests PATCH 1/4] s390x: Split snippet makefile rules into new file 2024-07-18 10:50 ` [kvm-unit-tests PATCH 1/4] s390x: Split snippet makefile rules into new file Janosch Frank @ 2024-07-25 14:27 ` Christoph Schlameuss 2024-08-02 9:34 ` Janosch Frank 2024-07-25 14:35 ` Claudio Imbrenda 1 sibling, 1 reply; 16+ messages in thread From: Christoph Schlameuss @ 2024-07-25 14:27 UTC (permalink / raw) To: Janosch Frank; +Cc: kvm, linux-s390, imbrenda, nrb, npiggin, nsg, mhartmay On Thu, 18 Jul 2024 10:50:16 +0000 Janosch Frank <frankja@linux.ibm.com> wrote: > It's time to move the snippet related Makefile parts into a new file > to make s390x/Makefile less busy. > > Signed-off-by: Janosch Frank <frankja@linux.ibm.com> > --- > s390x/Makefile | 34 ++++------------------------------ > s390x/snippets/Makefile | 30 ++++++++++++++++++++++++++++++ > 2 files changed, 34 insertions(+), 30 deletions(-) > create mode 100644 s390x/snippets/Makefile IMHO the commit message should start with "s390x/Makefile: Split snippet makefile rules into new file" for more consistency. With that fixed: Reviewed-by: Christoph Schlameuss <schlameuss@linux.ibm.com> ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [kvm-unit-tests PATCH 1/4] s390x: Split snippet makefile rules into new file 2024-07-25 14:27 ` Christoph Schlameuss @ 2024-08-02 9:34 ` Janosch Frank 0 siblings, 0 replies; 16+ messages in thread From: Janosch Frank @ 2024-08-02 9:34 UTC (permalink / raw) To: Christoph Schlameuss Cc: kvm, linux-s390, imbrenda, nrb, npiggin, nsg, mhartmay On 7/25/24 4:27 PM, Christoph Schlameuss wrote: > On Thu, 18 Jul 2024 10:50:16 +0000 > Janosch Frank <frankja@linux.ibm.com> wrote: > >> It's time to move the snippet related Makefile parts into a new file >> to make s390x/Makefile less busy. >> >> Signed-off-by: Janosch Frank <frankja@linux.ibm.com> >> --- >> s390x/Makefile | 34 ++++------------------------------ >> s390x/snippets/Makefile | 30 ++++++++++++++++++++++++++++++ >> 2 files changed, 34 insertions(+), 30 deletions(-) >> create mode 100644 s390x/snippets/Makefile > > IMHO the commit message should start with "s390x/Makefile: Split snippet > makefile rules into new file" for more consistency. > > With that fixed: > Reviewed-by: Christoph Schlameuss <schlameuss@linux.ibm.com> Sure I'll send a new version around anyway, since I've rebased the series on Marc's make file patch. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [kvm-unit-tests PATCH 1/4] s390x: Split snippet makefile rules into new file 2024-07-18 10:50 ` [kvm-unit-tests PATCH 1/4] s390x: Split snippet makefile rules into new file Janosch Frank 2024-07-25 14:27 ` Christoph Schlameuss @ 2024-07-25 14:35 ` Claudio Imbrenda 1 sibling, 0 replies; 16+ messages in thread From: Claudio Imbrenda @ 2024-07-25 14:35 UTC (permalink / raw) To: Janosch Frank; +Cc: kvm, linux-s390, nrb, npiggin, nsg, mhartmay On Thu, 18 Jul 2024 10:50:16 +0000 Janosch Frank <frankja@linux.ibm.com> wrote: > It's time to move the snippet related Makefile parts into a new file > to make s390x/Makefile less busy. > > Signed-off-by: Janosch Frank <frankja@linux.ibm.com> Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com> > --- > s390x/Makefile | 34 ++++------------------------------ > s390x/snippets/Makefile | 30 ++++++++++++++++++++++++++++++ > 2 files changed, 34 insertions(+), 30 deletions(-) > create mode 100644 s390x/snippets/Makefile > > diff --git a/s390x/Makefile b/s390x/Makefile > index c5c6f92c..2933b452 100644 > --- a/s390x/Makefile > +++ b/s390x/Makefile > @@ -120,9 +120,11 @@ asmlib = $(TEST_DIR)/cstart64.o $(TEST_DIR)/cpu.o > > FLATLIBS = $(libcflat) > > +# Snippets > SNIPPET_DIR = $(TEST_DIR)/snippets > snippet_asmlib = $(SNIPPET_DIR)/c/cstart.o > snippet_lib = $(snippet_asmlib) lib/auxinfo.o > +include $(SNIPPET_DIR)/Makefile > > # perquisites (=guests) for the snippet hosts. > # $(TEST_DIR)/<snippet-host>.elf: snippets = $(SNIPPET_DIR)/<c/asm>/<snippet>.gbin > @@ -148,34 +150,6 @@ else > snippet-hdr-obj = > endif > > -# the asm/c snippets %.o have additional generated files as dependencies > -$(SNIPPET_DIR)/asm/%.o: $(SNIPPET_DIR)/asm/%.S $(asm-offsets) > - $(CC) $(CFLAGS) -c -nostdlib -o $@ $< > - > -$(SNIPPET_DIR)/c/%.o: $(SNIPPET_DIR)/c/%.c $(asm-offsets) > - $(CC) $(CFLAGS) -c -nostdlib -o $@ $< > - > -$(SNIPPET_DIR)/asm/%.gbin: $(SNIPPET_DIR)/asm/%.o $(SNIPPET_DIR)/asm/flat.lds > - $(CC) $(LDFLAGS) -o $@ -T $(SNIPPET_DIR)/asm/flat.lds $< > - $(OBJCOPY) -O binary -j ".rodata" -j ".lowcore" -j ".text" -j ".data" -j ".bss" --set-section-flags .bss=alloc,load,contents $@ $@ > - truncate -s '%4096' $@ > - > -$(SNIPPET_DIR)/c/%.gbin: $(SNIPPET_DIR)/c/%.o $(snippet_lib) $(FLATLIBS) $(SNIPPET_DIR)/c/flat.lds > - $(CC) $(LDFLAGS) -o $@ -T $(SNIPPET_DIR)/c/flat.lds $< $(snippet_lib) $(FLATLIBS) > - $(OBJCOPY) -O binary -j ".rodata" -j ".lowcore" -j ".text" -j ".data" -j ".bss" --set-section-flags .bss=alloc,load,contents $@ $@ > - truncate -s '%4096' $@ > - > -%.hdr: %.gbin $(HOST_KEY_DOCUMENT) > - $(GEN_SE_HEADER) -k $(HOST_KEY_DOCUMENT) -c $<,0x0,0x00000000000000420000000000000000 --psw-addr 0x4000 -o $@ > - > -.SECONDARY: > -%.gobj: %.gbin > - $(OBJCOPY) -I binary -O elf64-s390 -B "s390:64-bit" $< $@ > - > -.SECONDARY: > -%.hdr.obj: %.hdr > - $(OBJCOPY) -I binary -O elf64-s390 -B "s390:64-bit" $< $@ > - > lds-autodepend-flags = -MMD -MF $(dir $*).$(notdir $*).d -MT $@ > %.lds: %.lds.S $(asm-offsets) > $(CPP) $(lds-autodepend-flags) $(CPPFLAGS) -P -C -o $@ $< > @@ -229,8 +203,8 @@ $(snippet_asmlib): $$(patsubst %.o,%.S,$$@) $(asm-offsets) > $(CC) $(CFLAGS) -c -nostdlib -o $@ $< > > > -arch_clean: asm_offsets_clean > - $(RM) $(TEST_DIR)/*.{o,elf,bin,lds} $(SNIPPET_DIR)/*/*.{o,elf,*bin,*obj,hdr,lds} $(SNIPPET_DIR)/asm/.*.d $(TEST_DIR)/.*.d lib/s390x/.*.d $(comm-key) > +arch_clean: asm_offsets_clean snippet_clean > + $(RM) $(TEST_DIR)/*.{o,elf,bin,lds} $(TEST_DIR)/.*.d lib/s390x/.*.d $(comm-key) > > generated-files = $(asm-offsets) > $(tests:.elf=.o) $(asmlib) $(cflatobjs): $(generated-files) > diff --git a/s390x/snippets/Makefile b/s390x/snippets/Makefile > new file mode 100644 > index 00000000..a1c479f6 > --- /dev/null > +++ b/s390x/snippets/Makefile > @@ -0,0 +1,30 @@ > +# the asm/c snippets %.o have additional generated files as dependencies > +$(SNIPPET_DIR)/asm/%.o: $(SNIPPET_DIR)/asm/%.S $(asm-offsets) > + $(CC) $(CFLAGS) -c -nostdlib -o $@ $< > + > +$(SNIPPET_DIR)/c/%.o: $(SNIPPET_DIR)/c/%.c $(asm-offsets) > + $(CC) $(CFLAGS) -c -nostdlib -o $@ $< > + > +$(SNIPPET_DIR)/asm/%.gbin: $(SNIPPET_DIR)/asm/%.o $(SNIPPET_DIR)/asm/flat.lds > + $(CC) $(LDFLAGS) -o $@ -T $(SNIPPET_DIR)/asm/flat.lds $< > + $(OBJCOPY) -O binary -j ".rodata" -j ".lowcore" -j ".text" -j ".data" -j ".bss" --set-section-flags .bss=alloc,load,contents $@ $@ > + truncate -s '%4096' $@ > + > +$(SNIPPET_DIR)/c/%.gbin: $(SNIPPET_DIR)/c/%.o $(snippet_lib) $(FLATLIBS) $(SNIPPET_DIR)/c/flat.lds > + $(CC) $(LDFLAGS) -o $@ -T $(SNIPPET_DIR)/c/flat.lds $< $(snippet_lib) $(FLATLIBS) > + $(OBJCOPY) -O binary -j ".rodata" -j ".lowcore" -j ".text" -j ".data" -j ".bss" --set-section-flags .bss=alloc,load,contents $@ $@ > + truncate -s '%4096' $@ > + > +%.hdr: %.gbin $(HOST_KEY_DOCUMENT) > + $(GEN_SE_HEADER) -k $(HOST_KEY_DOCUMENT) -c $<,0x0,0x00000000000000420000000000000000 --psw-addr 0x4000 -o $@ > + > +.SECONDARY: > +%.gobj: %.gbin > + $(OBJCOPY) -I binary -O elf64-s390 -B "s390:64-bit" $< $@ > + > +.SECONDARY: > +%.hdr.obj: %.hdr > + $(OBJCOPY) -I binary -O elf64-s390 -B "s390:64-bit" $< $@ > + > +snippet_clean: > + $(RM) $(SNIPPET_DIR)/*/*.{o,elf,*bin,*obj,hdr,lds} $(SNIPPET_DIR)/asm/.*.d ^ permalink raw reply [flat|nested] 16+ messages in thread
* [kvm-unit-tests PATCH 2/4] s390x/Makefile: Add more comments 2024-07-18 10:50 [kvm-unit-tests PATCH 0/4] s390x: split off snippet and sie related code Janosch Frank 2024-07-18 10:50 ` [kvm-unit-tests PATCH 1/4] s390x: Split snippet makefile rules into new file Janosch Frank @ 2024-07-18 10:50 ` Janosch Frank 2024-07-25 14:30 ` Christoph Schlameuss 2024-07-25 14:34 ` Claudio Imbrenda 2024-07-18 10:50 ` [kvm-unit-tests PATCH 3/4] s390x: Move SIE assembly into new file Janosch Frank 2024-07-18 10:50 ` [kvm-unit-tests PATCH 4/4] lib: s390x: Split SIE fw structs from lib structs Janosch Frank 3 siblings, 2 replies; 16+ messages in thread From: Janosch Frank @ 2024-07-18 10:50 UTC (permalink / raw) To: kvm; +Cc: linux-s390, imbrenda, nrb, npiggin, nsg, mhartmay More comments in Makefiles can only make them more approachable. Signed-off-by: Janosch Frank <frankja@linux.ibm.com> --- s390x/Makefile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/s390x/Makefile b/s390x/Makefile index 2933b452..457b8455 100644 --- a/s390x/Makefile +++ b/s390x/Makefile @@ -50,12 +50,15 @@ pv-tests += $(TEST_DIR)/pv-icptcode.elf pv-tests += $(TEST_DIR)/pv-ipl.elf pv-tests += $(TEST_DIR)/pv-edat1.elf +# Add PV host tests if we're able to generate them +# The host key document and a tool to generate SE headers are the prerequisite ifneq ($(HOST_KEY_DOCUMENT),) ifneq ($(GEN_SE_HEADER),) tests += $(pv-tests) endif endif +# Add binary flat images for use in non-KVM hypervisors tests_binary = $(patsubst %.elf,%.bin,$(tests)) ifneq ($(HOST_KEY_DOCUMENT),) tests_pv_binary = $(patsubst %.bin,%.pv.bin,$(tests_binary)) @@ -142,6 +145,7 @@ $(TEST_DIR)/pv-icptcode.elf: pv-snippets += $(SNIPPET_DIR)/asm/pv-icpt-vir-timin $(TEST_DIR)/pv-ipl.elf: pv-snippets += $(SNIPPET_DIR)/asm/pv-diag-308.gbin $(TEST_DIR)/pv-edat1.elf: pv-snippets += $(SNIPPET_DIR)/c/pv-memhog.gbin +# Add PV tests and snippets if GEN_SE_HEADER is set ifneq ($(GEN_SE_HEADER),) snippets += $(pv-snippets) tests += $(pv-tests) @@ -150,6 +154,7 @@ else snippet-hdr-obj = endif +# Generate loader script lds-autodepend-flags = -MMD -MF $(dir $*).$(notdir $*).d -MT $@ %.lds: %.lds.S $(asm-offsets) $(CPP) $(lds-autodepend-flags) $(CPPFLAGS) -P -C -o $@ $< -- 2.43.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [kvm-unit-tests PATCH 2/4] s390x/Makefile: Add more comments 2024-07-18 10:50 ` [kvm-unit-tests PATCH 2/4] s390x/Makefile: Add more comments Janosch Frank @ 2024-07-25 14:30 ` Christoph Schlameuss 2024-07-25 14:34 ` Claudio Imbrenda 1 sibling, 0 replies; 16+ messages in thread From: Christoph Schlameuss @ 2024-07-25 14:30 UTC (permalink / raw) To: Janosch Frank; +Cc: kvm, linux-s390, imbrenda, nrb, npiggin, nsg, mhartmay On Thu, 18 Jul 2024 10:50:17 +0000 Janosch Frank <frankja@linux.ibm.com> wrote: > More comments in Makefiles can only make them more approachable. > > Signed-off-by: Janosch Frank <frankja@linux.ibm.com> > --- > s390x/Makefile | 5 +++++ > 1 file changed, 5 insertions(+) Reviewed-by: Christoph Schlameuss <schlameuss@linux.ibm.com> ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [kvm-unit-tests PATCH 2/4] s390x/Makefile: Add more comments 2024-07-18 10:50 ` [kvm-unit-tests PATCH 2/4] s390x/Makefile: Add more comments Janosch Frank 2024-07-25 14:30 ` Christoph Schlameuss @ 2024-07-25 14:34 ` Claudio Imbrenda 1 sibling, 0 replies; 16+ messages in thread From: Claudio Imbrenda @ 2024-07-25 14:34 UTC (permalink / raw) To: Janosch Frank; +Cc: kvm, linux-s390, nrb, npiggin, nsg, mhartmay On Thu, 18 Jul 2024 10:50:17 +0000 Janosch Frank <frankja@linux.ibm.com> wrote: > More comments in Makefiles can only make them more approachable. > > Signed-off-by: Janosch Frank <frankja@linux.ibm.com> Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com> > --- > s390x/Makefile | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/s390x/Makefile b/s390x/Makefile > index 2933b452..457b8455 100644 > --- a/s390x/Makefile > +++ b/s390x/Makefile > @@ -50,12 +50,15 @@ pv-tests += $(TEST_DIR)/pv-icptcode.elf > pv-tests += $(TEST_DIR)/pv-ipl.elf > pv-tests += $(TEST_DIR)/pv-edat1.elf > > +# Add PV host tests if we're able to generate them > +# The host key document and a tool to generate SE headers are the prerequisite > ifneq ($(HOST_KEY_DOCUMENT),) > ifneq ($(GEN_SE_HEADER),) > tests += $(pv-tests) > endif > endif > > +# Add binary flat images for use in non-KVM hypervisors > tests_binary = $(patsubst %.elf,%.bin,$(tests)) > ifneq ($(HOST_KEY_DOCUMENT),) > tests_pv_binary = $(patsubst %.bin,%.pv.bin,$(tests_binary)) > @@ -142,6 +145,7 @@ $(TEST_DIR)/pv-icptcode.elf: pv-snippets += $(SNIPPET_DIR)/asm/pv-icpt-vir-timin > $(TEST_DIR)/pv-ipl.elf: pv-snippets += $(SNIPPET_DIR)/asm/pv-diag-308.gbin > $(TEST_DIR)/pv-edat1.elf: pv-snippets += $(SNIPPET_DIR)/c/pv-memhog.gbin > > +# Add PV tests and snippets if GEN_SE_HEADER is set > ifneq ($(GEN_SE_HEADER),) > snippets += $(pv-snippets) > tests += $(pv-tests) > @@ -150,6 +154,7 @@ else > snippet-hdr-obj = > endif > > +# Generate loader script > lds-autodepend-flags = -MMD -MF $(dir $*).$(notdir $*).d -MT $@ > %.lds: %.lds.S $(asm-offsets) > $(CPP) $(lds-autodepend-flags) $(CPPFLAGS) -P -C -o $@ $< ^ permalink raw reply [flat|nested] 16+ messages in thread
* [kvm-unit-tests PATCH 3/4] s390x: Move SIE assembly into new file 2024-07-18 10:50 [kvm-unit-tests PATCH 0/4] s390x: split off snippet and sie related code Janosch Frank 2024-07-18 10:50 ` [kvm-unit-tests PATCH 1/4] s390x: Split snippet makefile rules into new file Janosch Frank 2024-07-18 10:50 ` [kvm-unit-tests PATCH 2/4] s390x/Makefile: Add more comments Janosch Frank @ 2024-07-18 10:50 ` Janosch Frank 2024-07-25 14:34 ` Christoph Schlameuss 2024-07-25 14:36 ` Claudio Imbrenda 2024-07-18 10:50 ` [kvm-unit-tests PATCH 4/4] lib: s390x: Split SIE fw structs from lib structs Janosch Frank 3 siblings, 2 replies; 16+ messages in thread From: Janosch Frank @ 2024-07-18 10:50 UTC (permalink / raw) To: kvm; +Cc: linux-s390, imbrenda, nrb, npiggin, nsg, mhartmay In contrast to the other functions in cpu.S it's quite lengthy so let's split it off. Signed-off-by: Janosch Frank <frankja@linux.ibm.com> --- s390x/Makefile | 2 +- s390x/{cpu.S => cpu-sie.S} | 59 +---------------------------------- s390x/cpu.S | 64 -------------------------------------- 3 files changed, 2 insertions(+), 123 deletions(-) copy s390x/{cpu.S => cpu-sie.S} (56%) diff --git a/s390x/Makefile b/s390x/Makefile index 457b8455..ecf0bc7e 100644 --- a/s390x/Makefile +++ b/s390x/Makefile @@ -119,7 +119,7 @@ cflatobjs += lib/s390x/fault.o OBJDIRS += lib/s390x -asmlib = $(TEST_DIR)/cstart64.o $(TEST_DIR)/cpu.o +asmlib = $(TEST_DIR)/cstart64.o $(TEST_DIR)/cpu.o $(TEST_DIR)/cpu-sie.o FLATLIBS = $(libcflat) diff --git a/s390x/cpu.S b/s390x/cpu-sie.S similarity index 56% copy from s390x/cpu.S copy to s390x/cpu-sie.S index 9155b044..9370b5c0 100644 --- a/s390x/cpu.S +++ b/s390x/cpu-sie.S @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0-only */ /* - * s390x assembly library + * s390x SIE assembly library * * Copyright (c) 2019 IBM Corp. * @@ -8,59 +8,6 @@ * Janosch Frank <frankja@linux.ibm.com> */ #include <asm/asm-offsets.h> -#include <asm/sigp.h> - -#include "macros.S" - -/* - * load_reset calling convention: - * %r2 subcode (0 or 1) - */ -.globl diag308_load_reset -diag308_load_reset: - SAVE_REGS_STACK - /* Backup current PSW mask, as we have to restore it on success */ - epsw %r0, %r1 - st %r0, GEN_LC_SW_INT_PSW - st %r1, GEN_LC_SW_INT_PSW + 4 - /* Load reset psw mask (short psw, 64 bit) */ - lg %r0, reset_psw - /* Load the success label address */ - larl %r1, 0f - /* Or it to the mask */ - ogr %r0, %r1 - /* Store it at the reset PSW location (real 0x0) */ - stg %r0, 0 - stg %r15, GEN_LC_SW_INT_GRS + 15 * 8 - /* Do the reset */ - diag %r0,%r2,0x308 - /* Failure path */ - xgr %r2, %r2 - br %r14 - /* Success path */ - /* load a cr0 that has the AFP control bit which enables all FPRs */ -0: larl %r1, initial_cr0 - lctlg %c0, %c0, 0(%r1) - lg %r15, GEN_LC_SW_INT_GRS + 15 * 8 - RESTORE_REGS_STACK - lhi %r2, 1 - larl %r0, 1f - stg %r0, GEN_LC_SW_INT_PSW + 8 - lpswe GEN_LC_SW_INT_PSW -1: br %r14 - -/* Sets up general registers and cr0 when a new cpu is brought online. */ -.globl smp_cpu_setup_state -smp_cpu_setup_state: - xgr %r1, %r1 - lmg %r0, %r15, GEN_LC_SW_INT_GRS - lctlg %c0, %c0, GEN_LC_SW_INT_CRS - /* We should only go once through cpu setup and not for every restart */ - stg %r14, GEN_LC_RESTART_NEW_PSW + 8 - larl %r14, 0f - lpswe GEN_LC_SW_INT_PSW - /* If the function returns, just loop here */ -0: j 0 /* * sie64a calling convention: @@ -125,7 +72,3 @@ sie_exit: .globl sie_exit_gregs sie_exit_gregs: br %r14 - - .align 8 -reset_psw: - .quad 0x0008000180000000 diff --git a/s390x/cpu.S b/s390x/cpu.S index 9155b044..2ff4b8e1 100644 --- a/s390x/cpu.S +++ b/s390x/cpu.S @@ -62,70 +62,6 @@ smp_cpu_setup_state: /* If the function returns, just loop here */ 0: j 0 -/* - * sie64a calling convention: - * %r2 pointer to sie control block - * %r3 guest register save area - */ -.globl sie64a -sie64a: - # Save host grs, fprs, fpc - stmg %r0,%r14,SIE_SAVEAREA_HOST_GRS(%r3) # save kernel registers - .irp i, 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 - std \i, \i * 8 + SIE_SAVEAREA_HOST_FPRS(%r3) - .endr - stfpc SIE_SAVEAREA_HOST_FPC(%r3) - - stctg %c1, %c1, SIE_SAVEAREA_HOST_ASCE(%r3) - lctlg %c1, %c1, SIE_SAVEAREA_GUEST_ASCE(%r3) - - # Store scb and save_area pointer into stack frame - stg %r2,__SF_SIE_CONTROL(%r15) # save control block pointer - stg %r3,__SF_SIE_SAVEAREA(%r15) # save guest register save area -.globl sie_entry_gregs -sie_entry_gregs: - # Load guest's gprs, fprs and fpc - .irp i, 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 - ld \i, \i * 8 + SIE_SAVEAREA_GUEST_FPRS(%r3) - .endr - lfpc SIE_SAVEAREA_GUEST_FPC(%r3) - lmg %r0,%r13,SIE_SAVEAREA_GUEST_GRS(%r3) - - # Move scb ptr into r14 for the sie instruction - lg %r14,__SF_SIE_CONTROL(%r15) - -.globl sie_entry -sie_entry: - sie 0(%r14) - nopr 7 - nopr 7 - nopr 7 - -.globl sie_exit -sie_exit: - # Load guest register save area - lg %r14,__SF_SIE_SAVEAREA(%r15) - - # Restore the host asce - lctlg %c1, %c1, SIE_SAVEAREA_HOST_ASCE(%r14) - - # Store guest's gprs, fprs and fpc - stmg %r0,%r13,SIE_SAVEAREA_GUEST_GRS(%r14) # save guest gprs 0-13 - .irp i, 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 - std \i, \i * 8 + SIE_SAVEAREA_GUEST_FPRS(%r14) - .endr - stfpc SIE_SAVEAREA_GUEST_FPC(%r14) - - # Restore host's gprs, fprs and fpc - .irp i, 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 - ld \i, \i * 8 + SIE_SAVEAREA_HOST_FPRS(%r14) - .endr - lfpc SIE_SAVEAREA_HOST_FPC(%r14) - lmg %r0,%r14,SIE_SAVEAREA_HOST_GRS(%r14) # restore kernel registers -.globl sie_exit_gregs -sie_exit_gregs: - br %r14 - .align 8 reset_psw: .quad 0x0008000180000000 -- 2.43.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [kvm-unit-tests PATCH 3/4] s390x: Move SIE assembly into new file 2024-07-18 10:50 ` [kvm-unit-tests PATCH 3/4] s390x: Move SIE assembly into new file Janosch Frank @ 2024-07-25 14:34 ` Christoph Schlameuss 2024-08-02 9:33 ` Janosch Frank 2024-07-25 14:36 ` Claudio Imbrenda 1 sibling, 1 reply; 16+ messages in thread From: Christoph Schlameuss @ 2024-07-25 14:34 UTC (permalink / raw) To: Janosch Frank; +Cc: kvm, linux-s390, imbrenda, nrb, npiggin, nsg, mhartmay On Thu, 18 Jul 2024 10:50:18 +0000 Janosch Frank <frankja@linux.ibm.com> wrote: > In contrast to the other functions in cpu.S it's quite lengthy so > let's split it off. > > Signed-off-by: Janosch Frank <frankja@linux.ibm.com> > --- > s390x/Makefile | 2 +- > s390x/{cpu.S => cpu-sie.S} | 59 +---------------------------------- > s390x/cpu.S | 64 -------------------------------------- > 3 files changed, 2 insertions(+), 123 deletions(-) > copy s390x/{cpu.S => cpu-sie.S} (56%) [...] > diff --git a/s390x/cpu.S b/s390x/cpu-sie.S > similarity index 56% > copy from s390x/cpu.S > copy to s390x/cpu-sie.S > index 9155b044..9370b5c0 100644 > --- a/s390x/cpu.S > +++ b/s390x/cpu-sie.S > @@ -1,6 +1,6 @@ > /* SPDX-License-Identifier: GPL-2.0-only */ > /* > - * s390x assembly library > + * s390x SIE assembly library > * > * Copyright (c) 2019 IBM Corp. > * Should we not also update the Copyright here? At least to "Copyright (c) 2019, 2024 IBM Corp."? [...] ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [kvm-unit-tests PATCH 3/4] s390x: Move SIE assembly into new file 2024-07-25 14:34 ` Christoph Schlameuss @ 2024-08-02 9:33 ` Janosch Frank 2024-08-02 13:21 ` Christoph Schlameuss 0 siblings, 1 reply; 16+ messages in thread From: Janosch Frank @ 2024-08-02 9:33 UTC (permalink / raw) To: Christoph Schlameuss Cc: kvm, linux-s390, imbrenda, nrb, npiggin, nsg, mhartmay On 7/25/24 4:34 PM, Christoph Schlameuss wrote: > On Thu, 18 Jul 2024 10:50:18 +0000 > Janosch Frank <frankja@linux.ibm.com> wrote: > >> In contrast to the other functions in cpu.S it's quite lengthy so >> let's split it off. >> >> Signed-off-by: Janosch Frank <frankja@linux.ibm.com> >> --- >> s390x/Makefile | 2 +- >> s390x/{cpu.S => cpu-sie.S} | 59 +---------------------------------- >> s390x/cpu.S | 64 -------------------------------------- >> 3 files changed, 2 insertions(+), 123 deletions(-) >> copy s390x/{cpu.S => cpu-sie.S} (56%) > > [...] > >> diff --git a/s390x/cpu.S b/s390x/cpu-sie.S >> similarity index 56% >> copy from s390x/cpu.S >> copy to s390x/cpu-sie.S >> index 9155b044..9370b5c0 100644 >> --- a/s390x/cpu.S >> +++ b/s390x/cpu-sie.S >> @@ -1,6 +1,6 @@ >> /* SPDX-License-Identifier: GPL-2.0-only */ >> /* >> - * s390x assembly library >> + * s390x SIE assembly library >> * >> * Copyright (c) 2019 IBM Corp. >> * > > Should we not also update the Copyright here? At least to > "Copyright (c) 2019, 2024 IBM Corp."? > Why? Did I add something important to this file? I'm effectively moving code around. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [kvm-unit-tests PATCH 3/4] s390x: Move SIE assembly into new file 2024-08-02 9:33 ` Janosch Frank @ 2024-08-02 13:21 ` Christoph Schlameuss 0 siblings, 0 replies; 16+ messages in thread From: Christoph Schlameuss @ 2024-08-02 13:21 UTC (permalink / raw) To: Janosch Frank; +Cc: kvm, linux-s390, imbrenda, nrb, npiggin, nsg, mhartmay On Fri, 2 Aug 2024 11:33:06 +0200 Janosch Frank <frankja@linux.ibm.com> wrote: > On 7/25/24 4:34 PM, Christoph Schlameuss wrote: > > On Thu, 18 Jul 2024 10:50:18 +0000 > > Janosch Frank <frankja@linux.ibm.com> wrote: > > > >> In contrast to the other functions in cpu.S it's quite lengthy so > >> let's split it off. > >> > >> Signed-off-by: Janosch Frank <frankja@linux.ibm.com> > >> --- > >> s390x/Makefile | 2 +- > >> s390x/{cpu.S => cpu-sie.S} | 59 +---------------------------------- > >> s390x/cpu.S | 64 -------------------------------------- > >> 3 files changed, 2 insertions(+), 123 deletions(-) > >> copy s390x/{cpu.S => cpu-sie.S} (56%) > > > > [...] > > > >> diff --git a/s390x/cpu.S b/s390x/cpu-sie.S > >> similarity index 56% > >> copy from s390x/cpu.S > >> copy to s390x/cpu-sie.S > >> index 9155b044..9370b5c0 100644 > >> --- a/s390x/cpu.S > >> +++ b/s390x/cpu-sie.S > >> @@ -1,6 +1,6 @@ > >> /* SPDX-License-Identifier: GPL-2.0-only */ > >> /* > >> - * s390x assembly library > >> + * s390x SIE assembly library > >> * > >> * Copyright (c) 2019 IBM Corp. > >> * > > > > Should we not also update the Copyright here? At least to > > "Copyright (c) 2019, 2024 IBM Corp."? > > > > Why? > Did I add something important to this file? > I'm effectively moving code around. > That is how interpreted the copyright rules so far. But I might absolutely be wrong about that when only moving existing code. I do agree that this change is only moving the code to a new file. I would leave this decision up to you. Reviewed-by: Christoph Schlameuss <schlameuss@linux.ibm.com> ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [kvm-unit-tests PATCH 3/4] s390x: Move SIE assembly into new file 2024-07-18 10:50 ` [kvm-unit-tests PATCH 3/4] s390x: Move SIE assembly into new file Janosch Frank 2024-07-25 14:34 ` Christoph Schlameuss @ 2024-07-25 14:36 ` Claudio Imbrenda 1 sibling, 0 replies; 16+ messages in thread From: Claudio Imbrenda @ 2024-07-25 14:36 UTC (permalink / raw) To: Janosch Frank; +Cc: kvm, linux-s390, nrb, npiggin, nsg, mhartmay On Thu, 18 Jul 2024 10:50:18 +0000 Janosch Frank <frankja@linux.ibm.com> wrote: > In contrast to the other functions in cpu.S it's quite lengthy so > let's split it off. > > Signed-off-by: Janosch Frank <frankja@linux.ibm.com> Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com> > --- > s390x/Makefile | 2 +- > s390x/{cpu.S => cpu-sie.S} | 59 +---------------------------------- > s390x/cpu.S | 64 -------------------------------------- > 3 files changed, 2 insertions(+), 123 deletions(-) > copy s390x/{cpu.S => cpu-sie.S} (56%) > > diff --git a/s390x/Makefile b/s390x/Makefile > index 457b8455..ecf0bc7e 100644 > --- a/s390x/Makefile > +++ b/s390x/Makefile > @@ -119,7 +119,7 @@ cflatobjs += lib/s390x/fault.o > > OBJDIRS += lib/s390x > > -asmlib = $(TEST_DIR)/cstart64.o $(TEST_DIR)/cpu.o > +asmlib = $(TEST_DIR)/cstart64.o $(TEST_DIR)/cpu.o $(TEST_DIR)/cpu-sie.o > > FLATLIBS = $(libcflat) > > diff --git a/s390x/cpu.S b/s390x/cpu-sie.S > similarity index 56% > copy from s390x/cpu.S > copy to s390x/cpu-sie.S > index 9155b044..9370b5c0 100644 > --- a/s390x/cpu.S > +++ b/s390x/cpu-sie.S > @@ -1,6 +1,6 @@ > /* SPDX-License-Identifier: GPL-2.0-only */ > /* > - * s390x assembly library > + * s390x SIE assembly library > * > * Copyright (c) 2019 IBM Corp. > * > @@ -8,59 +8,6 @@ > * Janosch Frank <frankja@linux.ibm.com> > */ > #include <asm/asm-offsets.h> > -#include <asm/sigp.h> > - > -#include "macros.S" > - > -/* > - * load_reset calling convention: > - * %r2 subcode (0 or 1) > - */ > -.globl diag308_load_reset > -diag308_load_reset: > - SAVE_REGS_STACK > - /* Backup current PSW mask, as we have to restore it on success */ > - epsw %r0, %r1 > - st %r0, GEN_LC_SW_INT_PSW > - st %r1, GEN_LC_SW_INT_PSW + 4 > - /* Load reset psw mask (short psw, 64 bit) */ > - lg %r0, reset_psw > - /* Load the success label address */ > - larl %r1, 0f > - /* Or it to the mask */ > - ogr %r0, %r1 > - /* Store it at the reset PSW location (real 0x0) */ > - stg %r0, 0 > - stg %r15, GEN_LC_SW_INT_GRS + 15 * 8 > - /* Do the reset */ > - diag %r0,%r2,0x308 > - /* Failure path */ > - xgr %r2, %r2 > - br %r14 > - /* Success path */ > - /* load a cr0 that has the AFP control bit which enables all FPRs */ > -0: larl %r1, initial_cr0 > - lctlg %c0, %c0, 0(%r1) > - lg %r15, GEN_LC_SW_INT_GRS + 15 * 8 > - RESTORE_REGS_STACK > - lhi %r2, 1 > - larl %r0, 1f > - stg %r0, GEN_LC_SW_INT_PSW + 8 > - lpswe GEN_LC_SW_INT_PSW > -1: br %r14 > - > -/* Sets up general registers and cr0 when a new cpu is brought online. */ > -.globl smp_cpu_setup_state > -smp_cpu_setup_state: > - xgr %r1, %r1 > - lmg %r0, %r15, GEN_LC_SW_INT_GRS > - lctlg %c0, %c0, GEN_LC_SW_INT_CRS > - /* We should only go once through cpu setup and not for every restart */ > - stg %r14, GEN_LC_RESTART_NEW_PSW + 8 > - larl %r14, 0f > - lpswe GEN_LC_SW_INT_PSW > - /* If the function returns, just loop here */ > -0: j 0 > > /* > * sie64a calling convention: > @@ -125,7 +72,3 @@ sie_exit: > .globl sie_exit_gregs > sie_exit_gregs: > br %r14 > - > - .align 8 > -reset_psw: > - .quad 0x0008000180000000 > diff --git a/s390x/cpu.S b/s390x/cpu.S > index 9155b044..2ff4b8e1 100644 > --- a/s390x/cpu.S > +++ b/s390x/cpu.S > @@ -62,70 +62,6 @@ smp_cpu_setup_state: > /* If the function returns, just loop here */ > 0: j 0 > > -/* > - * sie64a calling convention: > - * %r2 pointer to sie control block > - * %r3 guest register save area > - */ > -.globl sie64a > -sie64a: > - # Save host grs, fprs, fpc > - stmg %r0,%r14,SIE_SAVEAREA_HOST_GRS(%r3) # save kernel registers > - .irp i, 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 > - std \i, \i * 8 + SIE_SAVEAREA_HOST_FPRS(%r3) > - .endr > - stfpc SIE_SAVEAREA_HOST_FPC(%r3) > - > - stctg %c1, %c1, SIE_SAVEAREA_HOST_ASCE(%r3) > - lctlg %c1, %c1, SIE_SAVEAREA_GUEST_ASCE(%r3) > - > - # Store scb and save_area pointer into stack frame > - stg %r2,__SF_SIE_CONTROL(%r15) # save control block pointer > - stg %r3,__SF_SIE_SAVEAREA(%r15) # save guest register save area > -.globl sie_entry_gregs > -sie_entry_gregs: > - # Load guest's gprs, fprs and fpc > - .irp i, 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 > - ld \i, \i * 8 + SIE_SAVEAREA_GUEST_FPRS(%r3) > - .endr > - lfpc SIE_SAVEAREA_GUEST_FPC(%r3) > - lmg %r0,%r13,SIE_SAVEAREA_GUEST_GRS(%r3) > - > - # Move scb ptr into r14 for the sie instruction > - lg %r14,__SF_SIE_CONTROL(%r15) > - > -.globl sie_entry > -sie_entry: > - sie 0(%r14) > - nopr 7 > - nopr 7 > - nopr 7 > - > -.globl sie_exit > -sie_exit: > - # Load guest register save area > - lg %r14,__SF_SIE_SAVEAREA(%r15) > - > - # Restore the host asce > - lctlg %c1, %c1, SIE_SAVEAREA_HOST_ASCE(%r14) > - > - # Store guest's gprs, fprs and fpc > - stmg %r0,%r13,SIE_SAVEAREA_GUEST_GRS(%r14) # save guest gprs 0-13 > - .irp i, 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 > - std \i, \i * 8 + SIE_SAVEAREA_GUEST_FPRS(%r14) > - .endr > - stfpc SIE_SAVEAREA_GUEST_FPC(%r14) > - > - # Restore host's gprs, fprs and fpc > - .irp i, 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 > - ld \i, \i * 8 + SIE_SAVEAREA_HOST_FPRS(%r14) > - .endr > - lfpc SIE_SAVEAREA_HOST_FPC(%r14) > - lmg %r0,%r14,SIE_SAVEAREA_HOST_GRS(%r14) # restore kernel registers > -.globl sie_exit_gregs > -sie_exit_gregs: > - br %r14 > - > .align 8 > reset_psw: > .quad 0x0008000180000000 ^ permalink raw reply [flat|nested] 16+ messages in thread
* [kvm-unit-tests PATCH 4/4] lib: s390x: Split SIE fw structs from lib structs 2024-07-18 10:50 [kvm-unit-tests PATCH 0/4] s390x: split off snippet and sie related code Janosch Frank ` (2 preceding siblings ...) 2024-07-18 10:50 ` [kvm-unit-tests PATCH 3/4] s390x: Move SIE assembly into new file Janosch Frank @ 2024-07-18 10:50 ` Janosch Frank 2024-07-25 14:38 ` Christoph Schlameuss 2024-07-25 14:40 ` Claudio Imbrenda 3 siblings, 2 replies; 16+ messages in thread From: Janosch Frank @ 2024-07-18 10:50 UTC (permalink / raw) To: kvm; +Cc: linux-s390, imbrenda, nrb, npiggin, nsg, mhartmay The SIE control block is huge and takes up too much space. Additionally sie.h will now only contain sie lib structs and declarations so we have a clear divide about which header contains which things. Signed-off-by: Janosch Frank <frankja@linux.ibm.com> --- lib/s390x/{sie.h => asm/sie-arch.h} | 58 +------ lib/s390x/sie.h | 231 +--------------------------- 2 files changed, 4 insertions(+), 285 deletions(-) copy lib/s390x/{sie.h => asm/sie-arch.h} (81%) diff --git a/lib/s390x/sie.h b/lib/s390x/asm/sie-arch.h similarity index 81% copy from lib/s390x/sie.h copy to lib/s390x/asm/sie-arch.h index c1724cf2..4911c988 100644 --- a/lib/s390x/sie.h +++ b/lib/s390x/asm/sie-arch.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0-or-later */ -#ifndef _S390X_SIE_H_ -#define _S390X_SIE_H_ +#ifndef _S390X_SIE_ARCH_H_ +#define _S390X_SIE_ARCH_H_ #include <stdint.h> #include <asm/arch_def.h> @@ -235,56 +235,4 @@ struct esca_block { struct esca_entry cpu[256]; }; -struct vm_uv { - uint64_t vm_handle; - uint64_t vcpu_handle; - uint64_t asce; - void *conf_base_stor; - void *conf_var_stor; - void *cpu_stor; -}; - -struct vm_save_regs { - uint64_t asce; - uint64_t grs[16]; - uint64_t fprs[16]; - uint32_t fpc; -}; - -/* We might be able to nestle all of this into the stack frame. But - * having a dedicated save area that saves more than the s390 ELF ABI - * defines leaves us more freedom in the implementation. -*/ -struct vm_save_area { - struct vm_save_regs guest; - struct vm_save_regs host; -}; - -struct vm { - struct kvm_s390_sie_block *sblk; - struct vm_save_area save_area; - struct esca_block *sca; /* System Control Area */ - uint8_t *crycb; /* Crypto Control Block */ - struct vm_uv uv; /* PV UV information */ - /* Ptr to first guest page */ - uint8_t *guest_mem; - bool validity_expected; -}; - -extern void sie_entry(void); -extern void sie_exit(void); -extern void sie_entry_gregs(void); -extern void sie_exit_gregs(void); -extern void sie64a(struct kvm_s390_sie_block *sblk, struct vm_save_area *save_area); -void sie(struct vm *vm); -void sie_expect_validity(struct vm *vm); -uint16_t sie_get_validity(struct vm *vm); -void sie_check_validity(struct vm *vm, uint16_t vir_exp); -void sie_handle_validity(struct vm *vm); -void sie_guest_sca_create(struct vm *vm); -void sie_guest_create(struct vm *vm, uint64_t guest_mem, uint64_t guest_mem_len); -void sie_guest_destroy(struct vm *vm); - -uint8_t *sie_guest_alloc(uint64_t guest_size); - -#endif /* _S390X_SIE_H_ */ +#endif /* _S390X_SIE_ARCH_H_ */ diff --git a/lib/s390x/sie.h b/lib/s390x/sie.h index c1724cf2..f13e698f 100644 --- a/lib/s390x/sie.h +++ b/lib/s390x/sie.h @@ -4,236 +4,7 @@ #include <stdint.h> #include <asm/arch_def.h> - -#define CPUSTAT_STOPPED 0x80000000 -#define CPUSTAT_WAIT 0x10000000 -#define CPUSTAT_ECALL_PEND 0x08000000 -#define CPUSTAT_STOP_INT 0x04000000 -#define CPUSTAT_IO_INT 0x02000000 -#define CPUSTAT_EXT_INT 0x01000000 -#define CPUSTAT_RUNNING 0x00800000 -#define CPUSTAT_RETAINED 0x00400000 -#define CPUSTAT_TIMING_SUB 0x00020000 -#define CPUSTAT_SIE_SUB 0x00010000 -#define CPUSTAT_RRF 0x00008000 -#define CPUSTAT_SLSV 0x00004000 -#define CPUSTAT_SLSR 0x00002000 -#define CPUSTAT_ZARCH 0x00000800 -#define CPUSTAT_MCDS 0x00000100 -#define CPUSTAT_KSS 0x00000200 -#define CPUSTAT_SM 0x00000080 -#define CPUSTAT_IBS 0x00000040 -#define CPUSTAT_GED2 0x00000010 -#define CPUSTAT_G 0x00000008 -#define CPUSTAT_GED 0x00000004 -#define CPUSTAT_J 0x00000002 -#define CPUSTAT_P 0x00000001 - -struct kvm_s390_sie_block { - uint32_t cpuflags; /* 0x0000 */ - uint32_t : 1; /* 0x0004 */ - uint32_t prefix : 18; - uint32_t : 1; - uint32_t ibc : 12; - uint8_t reserved08[4]; /* 0x0008 */ -#define PROG_IN_SIE (1<<0) - uint32_t prog0c; /* 0x000c */ -union { - uint8_t reserved10[16]; /* 0x0010 */ - struct { - uint64_t pv_handle_cpu; - uint64_t pv_handle_config; - }; - }; -#define PROG_BLOCK_SIE (1<<0) -#define PROG_REQUEST (1<<1) - uint32_t prog20; /* 0x0020 */ - uint8_t reserved24[4]; /* 0x0024 */ - uint64_t cputm; /* 0x0028 */ - uint64_t ckc; /* 0x0030 */ - uint64_t epoch; /* 0x0038 */ - uint32_t svcc; /* 0x0040 */ -#define LCTL_CR0 0x8000 -#define LCTL_CR6 0x0200 -#define LCTL_CR9 0x0040 -#define LCTL_CR10 0x0020 -#define LCTL_CR11 0x0010 -#define LCTL_CR14 0x0002 - uint16_t lctl; /* 0x0044 */ - int16_t icpua; /* 0x0046 */ -#define ICTL_OPEREXC 0x80000000 -#define ICTL_PINT 0x20000000 -#define ICTL_LPSW 0x00400000 -#define ICTL_STCTL 0x00040000 -#define ICTL_ISKE 0x00004000 -#define ICTL_SSKE 0x00002000 -#define ICTL_RRBE 0x00001000 -#define ICTL_TPROT 0x00000200 - uint32_t ictl; /* 0x0048 */ -#define ECA_CEI 0x80000000 -#define ECA_IB 0x40000000 -#define ECA_SIGPI 0x10000000 -#define ECA_MVPGI 0x01000000 -#define ECA_AIV 0x00200000 -#define ECA_VX 0x00020000 -#define ECA_PROTEXCI 0x00002000 -#define ECA_APIE 0x00000008 -#define ECA_SII 0x00000001 - uint32_t eca; /* 0x004c */ -#define ICPT_INST 0x04 -#define ICPT_PROGI 0x08 -#define ICPT_INSTPROGI 0x0C -#define ICPT_EXTREQ 0x10 -#define ICPT_EXTINT 0x14 -#define ICPT_IOREQ 0x18 -#define ICPT_WAIT 0x1c -#define ICPT_VALIDITY 0x20 -#define ICPT_STOP 0x28 -#define ICPT_OPEREXC 0x2C -#define ICPT_PARTEXEC 0x38 -#define ICPT_IOINST 0x40 -#define ICPT_KSS 0x5c -#define ICPT_INT_ENABLE 0x64 -#define ICPT_PV_INSTR 0x68 -#define ICPT_PV_NOTIFY 0x6c -#define ICPT_PV_PREF 0x70 - uint8_t icptcode; /* 0x0050 */ - uint8_t icptstatus; /* 0x0051 */ - uint16_t ihcpu; /* 0x0052 */ - uint8_t reserved54; /* 0x0054 */ -#define IICTL_CODE_NONE 0x00 -#define IICTL_CODE_MCHK 0x01 -#define IICTL_CODE_EXT 0x02 -#define IICTL_CODE_IO 0x03 -#define IICTL_CODE_RESTART 0x04 -#define IICTL_CODE_SPECIFICATION 0x10 -#define IICTL_CODE_OPERAND 0x11 - uint8_t iictl; /* 0x0055 */ - uint16_t ipa; /* 0x0056 */ - uint32_t ipb; /* 0x0058 */ - uint32_t scaoh; /* 0x005c */ -#define FPF_BPBC 0x20 - uint8_t fpf; /* 0x0060 */ -#define ECB_GS 0x40 -#define ECB_TE 0x10 -#define ECB_SPECI 0x08 -#define ECB_SRSI 0x04 -#define ECB_HOSTPROTINT 0x02 - uint8_t ecb; /* 0x0061 */ -#define ECB2_CMMA 0x80 -#define ECB2_IEP 0x20 -#define ECB2_PFMFI 0x08 -#define ECB2_ESCA 0x04 - uint8_t ecb2; /* 0x0062 */ -#define ECB3_DEA 0x08 -#define ECB3_AES 0x04 -#define ECB3_RI 0x01 - uint8_t ecb3; /* 0x0063 */ - uint32_t scaol; /* 0x0064 */ - uint8_t sdf; /* 0x0068 */ - uint8_t epdx; /* 0x0069 */ - uint8_t reserved6a[2]; /* 0x006a */ - uint32_t todpr; /* 0x006c */ -#define GISA_FORMAT1 0x00000001 - uint32_t gd; /* 0x0070 */ - uint8_t reserved74[12]; /* 0x0074 */ - uint64_t mso; /* 0x0080 */ - uint64_t msl; /* 0x0088 */ - struct psw gpsw; /* 0x0090 */ - uint64_t gg14; /* 0x00a0 */ - uint64_t gg15; /* 0x00a8 */ - uint8_t reservedb0[8]; /* 0x00b0 */ -#define HPID_KVM 0x4 -#define HPID_VSIE 0x5 - uint8_t hpid; /* 0x00b8 */ - uint8_t reservedb9[7]; /* 0x00b9 */ - union { - struct { - uint32_t eiparams; /* 0x00c0 */ - uint16_t extcpuaddr; /* 0x00c4 */ - uint16_t eic; /* 0x00c6 */ - }; - uint64_t mcic; /* 0x00c0 */ - } __attribute__ ((__packed__)); - uint32_t reservedc8; /* 0x00c8 */ - uint16_t pgmilc; /* 0x00cc */ - uint16_t iprcc; /* 0x00ce */ - uint32_t dxc; /* 0x00d0 */ - uint16_t mcn; /* 0x00d4 */ - uint8_t perc; /* 0x00d6 */ - uint8_t peratmid; /* 0x00d7 */ - uint64_t peraddr; /* 0x00d8 */ - uint8_t eai; /* 0x00e0 */ - uint8_t peraid; /* 0x00e1 */ - uint8_t oai; /* 0x00e2 */ - uint8_t armid; /* 0x00e3 */ - uint8_t reservede4[4]; /* 0x00e4 */ - uint64_t tecmc; /* 0x00e8 */ - uint8_t reservedf0[12]; /* 0x00f0 */ -#define CRYCB_FORMAT_MASK 0x00000003 -#define CRYCB_FORMAT0 0x00000000 -#define CRYCB_FORMAT1 0x00000001 -#define CRYCB_FORMAT2 0x00000003 - uint32_t crycbd; /* 0x00fc */ - uint64_t gcr[16]; /* 0x0100 */ - union { - uint64_t gbea; /* 0x0180 */ - uint64_t sidad; - }; - uint8_t reserved188[8]; /* 0x0188 */ - uint64_t sdnxo; /* 0x0190 */ - uint8_t reserved198[8]; /* 0x0198 */ - uint32_t fac; /* 0x01a0 */ - uint8_t reserved1a4[20]; /* 0x01a4 */ - uint64_t cbrlo; /* 0x01b8 */ - uint8_t reserved1c0[8]; /* 0x01c0 */ -#define ECD_HOSTREGMGMT 0x20000000 -#define ECD_MEF 0x08000000 -#define ECD_ETOKENF 0x02000000 -#define ECD_ECC 0x00200000 - uint32_t ecd; /* 0x01c8 */ - uint8_t reserved1cc[18]; /* 0x01cc */ - uint64_t pp; /* 0x01de */ - uint8_t reserved1e6[2]; /* 0x01e6 */ - uint64_t itdba; /* 0x01e8 */ - uint64_t riccbd; /* 0x01f0 */ - uint64_t gvrd; /* 0x01f8 */ - uint64_t reserved200[48]; /* 0x0200 */ - uint64_t pv_grregs[16]; /* 0x0380 */ -} __attribute__((packed)); - -union esca_sigp_ctrl { - uint16_t value; - struct { - uint8_t c : 1; - uint8_t reserved: 7; - uint8_t scn; - }; -}; - -struct esca_entry { - union esca_sigp_ctrl sigp_ctrl; - uint16_t reserved1[3]; - uint64_t sda; - uint64_t reserved2[6]; -}; - -union ipte_control { - unsigned long val; - struct { - unsigned long k : 1; - unsigned long kh : 31; - unsigned long kg : 32; - }; -}; - -struct esca_block { - union ipte_control ipte_control; - uint64_t reserved1[7]; - uint64_t mcn[4]; - uint64_t reserved2[20]; - struct esca_entry cpu[256]; -}; +#include <asm/sie-arch.h> struct vm_uv { uint64_t vm_handle; -- 2.43.0 ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [kvm-unit-tests PATCH 4/4] lib: s390x: Split SIE fw structs from lib structs 2024-07-18 10:50 ` [kvm-unit-tests PATCH 4/4] lib: s390x: Split SIE fw structs from lib structs Janosch Frank @ 2024-07-25 14:38 ` Christoph Schlameuss 2024-07-25 14:40 ` Claudio Imbrenda 1 sibling, 0 replies; 16+ messages in thread From: Christoph Schlameuss @ 2024-07-25 14:38 UTC (permalink / raw) To: Janosch Frank; +Cc: kvm, linux-s390, imbrenda, nrb, npiggin, nsg, mhartmay On Thu, 18 Jul 2024 10:50:19 +0000 Janosch Frank <frankja@linux.ibm.com> wrote: > The SIE control block is huge and takes up too much space. > > Additionally sie.h will now only contain sie lib structs and > declarations so we have a clear divide about which header contains > which things. > > Signed-off-by: Janosch Frank <frankja@linux.ibm.com> > --- > lib/s390x/{sie.h => asm/sie-arch.h} | 58 +------ > lib/s390x/sie.h | 231 +--------------------------- > 2 files changed, 4 insertions(+), 285 deletions(-) > copy lib/s390x/{sie.h => asm/sie-arch.h} (81%) Reviewed-by: Christoph Schlameuss <schlameuss@linux.ibm.com> ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [kvm-unit-tests PATCH 4/4] lib: s390x: Split SIE fw structs from lib structs 2024-07-18 10:50 ` [kvm-unit-tests PATCH 4/4] lib: s390x: Split SIE fw structs from lib structs Janosch Frank 2024-07-25 14:38 ` Christoph Schlameuss @ 2024-07-25 14:40 ` Claudio Imbrenda 1 sibling, 0 replies; 16+ messages in thread From: Claudio Imbrenda @ 2024-07-25 14:40 UTC (permalink / raw) To: Janosch Frank; +Cc: kvm, linux-s390, nrb, npiggin, nsg, mhartmay On Thu, 18 Jul 2024 10:50:19 +0000 Janosch Frank <frankja@linux.ibm.com> wrote: > The SIE control block is huge and takes up too much space. this is ok ^ > > Additionally sie.h will now only contain sie lib structs and > declarations so we have a clear divide about which header contains > which things. the rest is a little confusing maybe rephrase it to something like "split the hardware definitions from sie.h into its own header, so that sie.h will only contain library functions and structs" > > Signed-off-by: Janosch Frank <frankja@linux.ibm.com> with the commit message fixed: Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com> > --- > lib/s390x/{sie.h => asm/sie-arch.h} | 58 +------ > lib/s390x/sie.h | 231 +--------------------------- > 2 files changed, 4 insertions(+), 285 deletions(-) > copy lib/s390x/{sie.h => asm/sie-arch.h} (81%) > > diff --git a/lib/s390x/sie.h b/lib/s390x/asm/sie-arch.h > similarity index 81% > copy from lib/s390x/sie.h > copy to lib/s390x/asm/sie-arch.h > index c1724cf2..4911c988 100644 > --- a/lib/s390x/sie.h > +++ b/lib/s390x/asm/sie-arch.h > @@ -1,6 +1,6 @@ > /* SPDX-License-Identifier: GPL-2.0-or-later */ > -#ifndef _S390X_SIE_H_ > -#define _S390X_SIE_H_ > +#ifndef _S390X_SIE_ARCH_H_ > +#define _S390X_SIE_ARCH_H_ > > #include <stdint.h> > #include <asm/arch_def.h> > @@ -235,56 +235,4 @@ struct esca_block { > struct esca_entry cpu[256]; > }; > > -struct vm_uv { > - uint64_t vm_handle; > - uint64_t vcpu_handle; > - uint64_t asce; > - void *conf_base_stor; > - void *conf_var_stor; > - void *cpu_stor; > -}; > - > -struct vm_save_regs { > - uint64_t asce; > - uint64_t grs[16]; > - uint64_t fprs[16]; > - uint32_t fpc; > -}; > - > -/* We might be able to nestle all of this into the stack frame. But > - * having a dedicated save area that saves more than the s390 ELF ABI > - * defines leaves us more freedom in the implementation. > -*/ > -struct vm_save_area { > - struct vm_save_regs guest; > - struct vm_save_regs host; > -}; > - > -struct vm { > - struct kvm_s390_sie_block *sblk; > - struct vm_save_area save_area; > - struct esca_block *sca; /* System Control Area */ > - uint8_t *crycb; /* Crypto Control Block */ > - struct vm_uv uv; /* PV UV information */ > - /* Ptr to first guest page */ > - uint8_t *guest_mem; > - bool validity_expected; > -}; > - > -extern void sie_entry(void); > -extern void sie_exit(void); > -extern void sie_entry_gregs(void); > -extern void sie_exit_gregs(void); > -extern void sie64a(struct kvm_s390_sie_block *sblk, struct vm_save_area *save_area); > -void sie(struct vm *vm); > -void sie_expect_validity(struct vm *vm); > -uint16_t sie_get_validity(struct vm *vm); > -void sie_check_validity(struct vm *vm, uint16_t vir_exp); > -void sie_handle_validity(struct vm *vm); > -void sie_guest_sca_create(struct vm *vm); > -void sie_guest_create(struct vm *vm, uint64_t guest_mem, uint64_t guest_mem_len); > -void sie_guest_destroy(struct vm *vm); > - > -uint8_t *sie_guest_alloc(uint64_t guest_size); > - > -#endif /* _S390X_SIE_H_ */ > +#endif /* _S390X_SIE_ARCH_H_ */ > diff --git a/lib/s390x/sie.h b/lib/s390x/sie.h > index c1724cf2..f13e698f 100644 > --- a/lib/s390x/sie.h > +++ b/lib/s390x/sie.h > @@ -4,236 +4,7 @@ > > #include <stdint.h> > #include <asm/arch_def.h> > - > -#define CPUSTAT_STOPPED 0x80000000 > -#define CPUSTAT_WAIT 0x10000000 > -#define CPUSTAT_ECALL_PEND 0x08000000 > -#define CPUSTAT_STOP_INT 0x04000000 > -#define CPUSTAT_IO_INT 0x02000000 > -#define CPUSTAT_EXT_INT 0x01000000 > -#define CPUSTAT_RUNNING 0x00800000 > -#define CPUSTAT_RETAINED 0x00400000 > -#define CPUSTAT_TIMING_SUB 0x00020000 > -#define CPUSTAT_SIE_SUB 0x00010000 > -#define CPUSTAT_RRF 0x00008000 > -#define CPUSTAT_SLSV 0x00004000 > -#define CPUSTAT_SLSR 0x00002000 > -#define CPUSTAT_ZARCH 0x00000800 > -#define CPUSTAT_MCDS 0x00000100 > -#define CPUSTAT_KSS 0x00000200 > -#define CPUSTAT_SM 0x00000080 > -#define CPUSTAT_IBS 0x00000040 > -#define CPUSTAT_GED2 0x00000010 > -#define CPUSTAT_G 0x00000008 > -#define CPUSTAT_GED 0x00000004 > -#define CPUSTAT_J 0x00000002 > -#define CPUSTAT_P 0x00000001 > - > -struct kvm_s390_sie_block { > - uint32_t cpuflags; /* 0x0000 */ > - uint32_t : 1; /* 0x0004 */ > - uint32_t prefix : 18; > - uint32_t : 1; > - uint32_t ibc : 12; > - uint8_t reserved08[4]; /* 0x0008 */ > -#define PROG_IN_SIE (1<<0) > - uint32_t prog0c; /* 0x000c */ > -union { > - uint8_t reserved10[16]; /* 0x0010 */ > - struct { > - uint64_t pv_handle_cpu; > - uint64_t pv_handle_config; > - }; > - }; > -#define PROG_BLOCK_SIE (1<<0) > -#define PROG_REQUEST (1<<1) > - uint32_t prog20; /* 0x0020 */ > - uint8_t reserved24[4]; /* 0x0024 */ > - uint64_t cputm; /* 0x0028 */ > - uint64_t ckc; /* 0x0030 */ > - uint64_t epoch; /* 0x0038 */ > - uint32_t svcc; /* 0x0040 */ > -#define LCTL_CR0 0x8000 > -#define LCTL_CR6 0x0200 > -#define LCTL_CR9 0x0040 > -#define LCTL_CR10 0x0020 > -#define LCTL_CR11 0x0010 > -#define LCTL_CR14 0x0002 > - uint16_t lctl; /* 0x0044 */ > - int16_t icpua; /* 0x0046 */ > -#define ICTL_OPEREXC 0x80000000 > -#define ICTL_PINT 0x20000000 > -#define ICTL_LPSW 0x00400000 > -#define ICTL_STCTL 0x00040000 > -#define ICTL_ISKE 0x00004000 > -#define ICTL_SSKE 0x00002000 > -#define ICTL_RRBE 0x00001000 > -#define ICTL_TPROT 0x00000200 > - uint32_t ictl; /* 0x0048 */ > -#define ECA_CEI 0x80000000 > -#define ECA_IB 0x40000000 > -#define ECA_SIGPI 0x10000000 > -#define ECA_MVPGI 0x01000000 > -#define ECA_AIV 0x00200000 > -#define ECA_VX 0x00020000 > -#define ECA_PROTEXCI 0x00002000 > -#define ECA_APIE 0x00000008 > -#define ECA_SII 0x00000001 > - uint32_t eca; /* 0x004c */ > -#define ICPT_INST 0x04 > -#define ICPT_PROGI 0x08 > -#define ICPT_INSTPROGI 0x0C > -#define ICPT_EXTREQ 0x10 > -#define ICPT_EXTINT 0x14 > -#define ICPT_IOREQ 0x18 > -#define ICPT_WAIT 0x1c > -#define ICPT_VALIDITY 0x20 > -#define ICPT_STOP 0x28 > -#define ICPT_OPEREXC 0x2C > -#define ICPT_PARTEXEC 0x38 > -#define ICPT_IOINST 0x40 > -#define ICPT_KSS 0x5c > -#define ICPT_INT_ENABLE 0x64 > -#define ICPT_PV_INSTR 0x68 > -#define ICPT_PV_NOTIFY 0x6c > -#define ICPT_PV_PREF 0x70 > - uint8_t icptcode; /* 0x0050 */ > - uint8_t icptstatus; /* 0x0051 */ > - uint16_t ihcpu; /* 0x0052 */ > - uint8_t reserved54; /* 0x0054 */ > -#define IICTL_CODE_NONE 0x00 > -#define IICTL_CODE_MCHK 0x01 > -#define IICTL_CODE_EXT 0x02 > -#define IICTL_CODE_IO 0x03 > -#define IICTL_CODE_RESTART 0x04 > -#define IICTL_CODE_SPECIFICATION 0x10 > -#define IICTL_CODE_OPERAND 0x11 > - uint8_t iictl; /* 0x0055 */ > - uint16_t ipa; /* 0x0056 */ > - uint32_t ipb; /* 0x0058 */ > - uint32_t scaoh; /* 0x005c */ > -#define FPF_BPBC 0x20 > - uint8_t fpf; /* 0x0060 */ > -#define ECB_GS 0x40 > -#define ECB_TE 0x10 > -#define ECB_SPECI 0x08 > -#define ECB_SRSI 0x04 > -#define ECB_HOSTPROTINT 0x02 > - uint8_t ecb; /* 0x0061 */ > -#define ECB2_CMMA 0x80 > -#define ECB2_IEP 0x20 > -#define ECB2_PFMFI 0x08 > -#define ECB2_ESCA 0x04 > - uint8_t ecb2; /* 0x0062 */ > -#define ECB3_DEA 0x08 > -#define ECB3_AES 0x04 > -#define ECB3_RI 0x01 > - uint8_t ecb3; /* 0x0063 */ > - uint32_t scaol; /* 0x0064 */ > - uint8_t sdf; /* 0x0068 */ > - uint8_t epdx; /* 0x0069 */ > - uint8_t reserved6a[2]; /* 0x006a */ > - uint32_t todpr; /* 0x006c */ > -#define GISA_FORMAT1 0x00000001 > - uint32_t gd; /* 0x0070 */ > - uint8_t reserved74[12]; /* 0x0074 */ > - uint64_t mso; /* 0x0080 */ > - uint64_t msl; /* 0x0088 */ > - struct psw gpsw; /* 0x0090 */ > - uint64_t gg14; /* 0x00a0 */ > - uint64_t gg15; /* 0x00a8 */ > - uint8_t reservedb0[8]; /* 0x00b0 */ > -#define HPID_KVM 0x4 > -#define HPID_VSIE 0x5 > - uint8_t hpid; /* 0x00b8 */ > - uint8_t reservedb9[7]; /* 0x00b9 */ > - union { > - struct { > - uint32_t eiparams; /* 0x00c0 */ > - uint16_t extcpuaddr; /* 0x00c4 */ > - uint16_t eic; /* 0x00c6 */ > - }; > - uint64_t mcic; /* 0x00c0 */ > - } __attribute__ ((__packed__)); > - uint32_t reservedc8; /* 0x00c8 */ > - uint16_t pgmilc; /* 0x00cc */ > - uint16_t iprcc; /* 0x00ce */ > - uint32_t dxc; /* 0x00d0 */ > - uint16_t mcn; /* 0x00d4 */ > - uint8_t perc; /* 0x00d6 */ > - uint8_t peratmid; /* 0x00d7 */ > - uint64_t peraddr; /* 0x00d8 */ > - uint8_t eai; /* 0x00e0 */ > - uint8_t peraid; /* 0x00e1 */ > - uint8_t oai; /* 0x00e2 */ > - uint8_t armid; /* 0x00e3 */ > - uint8_t reservede4[4]; /* 0x00e4 */ > - uint64_t tecmc; /* 0x00e8 */ > - uint8_t reservedf0[12]; /* 0x00f0 */ > -#define CRYCB_FORMAT_MASK 0x00000003 > -#define CRYCB_FORMAT0 0x00000000 > -#define CRYCB_FORMAT1 0x00000001 > -#define CRYCB_FORMAT2 0x00000003 > - uint32_t crycbd; /* 0x00fc */ > - uint64_t gcr[16]; /* 0x0100 */ > - union { > - uint64_t gbea; /* 0x0180 */ > - uint64_t sidad; > - }; > - uint8_t reserved188[8]; /* 0x0188 */ > - uint64_t sdnxo; /* 0x0190 */ > - uint8_t reserved198[8]; /* 0x0198 */ > - uint32_t fac; /* 0x01a0 */ > - uint8_t reserved1a4[20]; /* 0x01a4 */ > - uint64_t cbrlo; /* 0x01b8 */ > - uint8_t reserved1c0[8]; /* 0x01c0 */ > -#define ECD_HOSTREGMGMT 0x20000000 > -#define ECD_MEF 0x08000000 > -#define ECD_ETOKENF 0x02000000 > -#define ECD_ECC 0x00200000 > - uint32_t ecd; /* 0x01c8 */ > - uint8_t reserved1cc[18]; /* 0x01cc */ > - uint64_t pp; /* 0x01de */ > - uint8_t reserved1e6[2]; /* 0x01e6 */ > - uint64_t itdba; /* 0x01e8 */ > - uint64_t riccbd; /* 0x01f0 */ > - uint64_t gvrd; /* 0x01f8 */ > - uint64_t reserved200[48]; /* 0x0200 */ > - uint64_t pv_grregs[16]; /* 0x0380 */ > -} __attribute__((packed)); > - > -union esca_sigp_ctrl { > - uint16_t value; > - struct { > - uint8_t c : 1; > - uint8_t reserved: 7; > - uint8_t scn; > - }; > -}; > - > -struct esca_entry { > - union esca_sigp_ctrl sigp_ctrl; > - uint16_t reserved1[3]; > - uint64_t sda; > - uint64_t reserved2[6]; > -}; > - > -union ipte_control { > - unsigned long val; > - struct { > - unsigned long k : 1; > - unsigned long kh : 31; > - unsigned long kg : 32; > - }; > -}; > - > -struct esca_block { > - union ipte_control ipte_control; > - uint64_t reserved1[7]; > - uint64_t mcn[4]; > - uint64_t reserved2[20]; > - struct esca_entry cpu[256]; > -}; > +#include <asm/sie-arch.h> > > struct vm_uv { > uint64_t vm_handle; ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2024-08-02 13:21 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-07-18 10:50 [kvm-unit-tests PATCH 0/4] s390x: split off snippet and sie related code Janosch Frank 2024-07-18 10:50 ` [kvm-unit-tests PATCH 1/4] s390x: Split snippet makefile rules into new file Janosch Frank 2024-07-25 14:27 ` Christoph Schlameuss 2024-08-02 9:34 ` Janosch Frank 2024-07-25 14:35 ` Claudio Imbrenda 2024-07-18 10:50 ` [kvm-unit-tests PATCH 2/4] s390x/Makefile: Add more comments Janosch Frank 2024-07-25 14:30 ` Christoph Schlameuss 2024-07-25 14:34 ` Claudio Imbrenda 2024-07-18 10:50 ` [kvm-unit-tests PATCH 3/4] s390x: Move SIE assembly into new file Janosch Frank 2024-07-25 14:34 ` Christoph Schlameuss 2024-08-02 9:33 ` Janosch Frank 2024-08-02 13:21 ` Christoph Schlameuss 2024-07-25 14:36 ` Claudio Imbrenda 2024-07-18 10:50 ` [kvm-unit-tests PATCH 4/4] lib: s390x: Split SIE fw structs from lib structs Janosch Frank 2024-07-25 14:38 ` Christoph Schlameuss 2024-07-25 14:40 ` Claudio Imbrenda
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox