On Wed, 13 Dec 2023 13:49:41 +0100 Nina Schoetterl-Glausch <nsg@xxxxxxxxxxxxx> wrote: > Replace the existing code for exiting from snippets with the newly > introduced library functionality. > This causes additional report()s, otherwise no change in functionality > intended. > > Signed-off-by: Nina Schoetterl-Glausch <nsg@xxxxxxxxxxxxx> > --- > s390x/sie-dat.c | 10 ++-------- > s390x/snippets/c/sie-dat.c | 19 +------------------ > 2 files changed, 3 insertions(+), 26 deletions(-) > > diff --git a/s390x/sie-dat.c b/s390x/sie-dat.c > index 9e60f26e..6b6e6868 100644 > --- a/s390x/sie-dat.c > +++ b/s390x/sie-dat.c > @@ -27,23 +27,17 @@ 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_get_force_exit_value(&vm, &test_page_gpa)); but the function inside the assert will already report a failure, right? then why the assert? (the point I'm trying to make is that the function should not report stuff, see my comments in the previous patch) > 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_check_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 ecfcb60e..414afd42 100644 > --- a/s390x/snippets/c/sie-dat.c > +++ b/s390x/snippets/c/sie-dat.c > @@ -9,28 +9,11 @@ > */ > #include <libcflat.h> > #include <asm-generic/page.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;