From: Nina Schoetterl-Glausch <nsg@linux.ibm.com>
To: Claudio Imbrenda <imbrenda@linux.ibm.com>
Cc: "Nico Böhr" <nrb@linux.ibm.com>, "Thomas Huth" <thuth@redhat.com>,
"Janosch Frank" <frankja@linux.ibm.com>,
linux-s390@vger.kernel.org,
"Andrew Jones" <andrew.jones@linux.dev>,
"David Hildenbrand" <david@redhat.com>,
kvm@vger.kernel.org
Subject: Re: [kvm-unit-tests PATCH 4/5] s390x: Use library functions for snippet exit
Date: Fri, 15 Dec 2023 12:50:15 +0100 [thread overview]
Message-ID: <5996caa1ea76bec45b446fc641237676d9534b3e.camel@linux.ibm.com> (raw)
In-Reply-To: <20231213174500.77f3d26f@p-imbrenda>
On Wed, 2023-12-13 at 17:45 +0100, Claudio Imbrenda wrote:
> On Wed, 13 Dec 2023 13:49:41 +0100
> Nina Schoetterl-Glausch <nsg@linux.ibm.com> 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@linux.ibm.com>
> > ---
> > 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
The assert makes sense, if it fails something has gone
completely off the rails. The question is indeed rather if to report.
There is no harm in it, but I'm thinking now that there should be
_get_ functions that don't report and optionally also _check_ functions that do.
So:
snippet_get_force_exit
snippet_check_force_exit (exists, but only the _get_ variant is currently required)
snippet_get_force_exit_value (exists, required)
snippet_check_force_exit_value (exists, but unused)
So minimally, we could do:
snippet_get_force_exit
snippet_get_force_exit_value
I'm thinking we should go for the following:
bool snippet_has_force_exit(...)
bool snippet_has_force_exit_value(...)
uint64_t snippet_get_force_exit_value(...) (internally does assert(snippet_has_forced_exit_value))
void snippet_check_force_exit_value(...) (or whoever needs this in the future adds it)
(Naming open to suggestions)
Then this becomes:
/* 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);
-
+ assert(snippet_has_force_exit_value(&vm);
- r1 = (vm.sblk->ipa & 0xf0) >> 4;
- test_page_gpa = vm.save_area.guest.grs[r1];
+ test_page_gpa = snippet_get_force_exit_value(&vm);
> 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++) {
[...]
next prev parent reply other threads:[~2023-12-15 11:50 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-13 12:49 [kvm-unit-tests PATCH 0/5] s390x: STFLE nested interpretation Nina Schoetterl-Glausch
2023-12-13 12:49 ` [kvm-unit-tests PATCH 1/5] lib: Add pseudo random functions Nina Schoetterl-Glausch
2023-12-13 13:38 ` Andrew Jones
2023-12-13 17:43 ` Nina Schoetterl-Glausch
2023-12-13 17:53 ` Andrew Jones
2023-12-13 12:49 ` [kvm-unit-tests PATCH 2/5] s390x: lib: Remove double include Nina Schoetterl-Glausch
2023-12-13 16:42 ` Claudio Imbrenda
2023-12-13 12:49 ` [kvm-unit-tests PATCH 3/5] s390x: Add library functions for exiting from snippet Nina Schoetterl-Glausch
2023-12-13 16:42 ` Claudio Imbrenda
2023-12-14 20:02 ` Nina Schoetterl-Glausch
2023-12-15 12:37 ` Claudio Imbrenda
2023-12-13 12:49 ` [kvm-unit-tests PATCH 4/5] s390x: Use library functions for snippet exit Nina Schoetterl-Glausch
2023-12-13 16:45 ` Claudio Imbrenda
2023-12-15 11:50 ` Nina Schoetterl-Glausch [this message]
2023-12-15 13:53 ` Claudio Imbrenda
2023-12-13 12:49 ` [kvm-unit-tests PATCH 5/5] s390x: Add test for STFLE interpretive execution (format-0) Nina Schoetterl-Glausch
2023-12-13 17:00 ` Claudio Imbrenda
2023-12-13 17:31 ` Nina Schoetterl-Glausch
2023-12-14 10:18 ` Nina Schoetterl-Glausch
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=5996caa1ea76bec45b446fc641237676d9534b3e.camel@linux.ibm.com \
--to=nsg@linux.ibm.com \
--cc=andrew.jones@linux.dev \
--cc=david@redhat.com \
--cc=frankja@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=nrb@linux.ibm.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