On Thu, 20 Jun 2024 16:16:59 +0200 Nina Schoetterl-Glausch <nsg@xxxxxxxxxxxxx> wrote: > Replace the existing code for exiting from snippets with the newly > introduced library functionality. > > Signed-off-by: Nina Schoetterl-Glausch <nsg@xxxxxxxxxxxxx> Reviewed-by: Claudio Imbrenda <imbrenda@xxxxxxxxxxxxx> > --- > s390x/sie-dat.c | 11 +++-------- > s390x/snippets/c/sie-dat.c | 19 +------------------ > 2 files changed, 4 insertions(+), 26 deletions(-) > > diff --git a/s390x/sie-dat.c b/s390x/sie-dat.c > index 9e60f26e..c8f38220 100644 > --- a/s390x/sie-dat.c > +++ b/s390x/sie-dat.c > @@ -27,23 +27,18 @@ static void test_sie_dat(void) > uint64_t test_page_gpa, test_page_hpa; > uint8_t *test_page_hva, expected_val; > bool contents_match; > - uint8_t r1; > > /* guest will tell us the guest physical address of the test buffer */ > sie(&vm); > - assert(vm.sblk->icptcode == ICPT_INST && > - (vm.sblk->ipa & 0xff00) == 0x8300 && vm.sblk->ipb == 0x9c0000); > - > - r1 = (vm.sblk->ipa & 0xf0) >> 4; > - test_page_gpa = vm.save_area.guest.grs[r1]; > + assert(snippet_is_force_exit_value(&vm)); > + test_page_gpa = snippet_get_force_exit_value(&vm); > test_page_hpa = virt_to_pte_phys(guest_root, (void*)test_page_gpa); > test_page_hva = __va(test_page_hpa); > report_info("test buffer gpa=0x%lx hva=%p", test_page_gpa, test_page_hva); > > /* guest will now write to the test buffer and we verify the contents */ > sie(&vm); > - assert(vm.sblk->icptcode == ICPT_INST && > - vm.sblk->ipa == 0x8300 && vm.sblk->ipb == 0x440000); > + assert(snippet_is_force_exit(&vm)); > > contents_match = true; > for (unsigned int i = 0; i < GUEST_TEST_PAGE_COUNT; i++) { > diff --git a/s390x/snippets/c/sie-dat.c b/s390x/snippets/c/sie-dat.c > index 9d89801d..26f045b1 100644 > --- a/s390x/snippets/c/sie-dat.c > +++ b/s390x/snippets/c/sie-dat.c > @@ -10,28 +10,11 @@ > #include <libcflat.h> > #include <asm-generic/page.h> > #include <asm/mem.h> > +#include <snippet-guest.h> > #include "sie-dat.h" > > static uint8_t test_pages[GUEST_TEST_PAGE_COUNT * PAGE_SIZE] __attribute__((__aligned__(PAGE_SIZE))); > > -static inline void force_exit(void) > -{ > - asm volatile("diag 0,0,0x44\n" > - : > - : > - : "memory" > - ); > -} > - > -static inline void force_exit_value(uint64_t val) > -{ > - asm volatile("diag %[val],0,0x9c\n" > - : > - : [val] "d"(val) > - : "memory" > - ); > -} > - > int main(void) > { > uint8_t *invalid_ptr;