From: Christoph Schlameuss <schlameuss@linux.ibm.com>
To: Janosch Frank <frankja@linux.ibm.com>, kvm@vger.kernel.org
Cc: linux-s390@vger.kernel.org, linux-kselftest@vger.kernel.org,
Paolo Bonzini <pbonzini@redhat.com>,
Shuah Khan <shuah@kernel.org>,
Christian Borntraeger <borntraeger@linux.ibm.com>,
Claudio Imbrenda <imbrenda@linux.ibm.com>,
David Hildenbrand <david@redhat.com>,
Nina Schoetterl-Glausch <nsg@linux.ibm.com>
Subject: Re: [PATCH 2/3] selftests: kvm: s390: Add uc_skey VM test case
Date: Mon, 19 Aug 2024 18:00:48 +0200 [thread overview]
Message-ID: <ZsNsMMc0Ir1w0BJy@darkmoore> (raw)
In-Reply-To: <7f930ac3-a7af-47c7-8455-8c96d11754b5@linux.ibm.com>
On Fri Aug 16, 2024 at 4:36 PM CEST, Janosch Frank wrote:
> On 8/15/24 5:45 PM, Christoph Schlameuss wrote:
> > Add a test case manipulating s390 storage keys from within the ucontrol
> > VM.
> >
> > Signed-off-by: Christoph Schlameuss <schlameuss@linux.ibm.com>
> > ---
> > .../selftests/kvm/s390x/ucontrol_test.c | 76 +++++++++++++++++++
> > 1 file changed, 76 insertions(+)
> >
> > diff --git a/tools/testing/selftests/kvm/s390x/ucontrol_test.c b/tools/testing/selftests/kvm/s390x/ucontrol_test.c
> > index 41306bb52f29..5f8815a80544 100644
> > --- a/tools/testing/selftests/kvm/s390x/ucontrol_test.c
> > +++ b/tools/testing/selftests/kvm/s390x/ucontrol_test.c
> > @@ -79,6 +79,32 @@ asm("test_mem_asm:\n"
> > " j 0b\n"
> > );
> >
> > +/* Test program manipulating storage keys */
> > +extern char test_skey_asm[];
> > +asm("test_skey_asm:\n"
> > + "xgr %r0, %r0\n"
> > +
> > + "0:\n"
> > + " ahi %r0,1\n"
> > + " st %r1,0(%r5,%r6)\n"
> > +
> > + " iske %r1,%r6\n"
> > + " ahi %r0,1\n"
> > + " diag 0,0,0x44\n"
> > +
> > + " sske %r1,%r6\n"
>
> Might want to add a xgr here so you're sure that you're not reading your
> own values if iske fails.
>
Good point. Will change the r1 value here.
> > + " iske %r1,%r6\n"
> > + " ahi %r0,1\n"
> > + " diag 0,0,0x44\n"
> > +
> > + " rrbe %r1,%r6\n"
> > + " iske %r1,%r6\n"
> > + " ahi %r0,1\n"
> > + " diag 0,0,0x44\n"
> > +
> > + " j 0b\n"
> > +);
> > +
> > FIXTURE(uc_kvm)
> > {
> > struct kvm_s390_sie_block *sie_block;
> > @@ -345,6 +371,56 @@ static void uc_assert_diag44(FIXTURE_DATA(uc_kvm) * self)
> > TEST_ASSERT_EQ(0x440000, sie_block->ipb);
> > }
> >
> > +TEST_F(uc_kvm, uc_skey)
> > +{
> > + u64 test_vaddr = self->base_gpa + VM_MEM_SIZE - (SZ_1M / 2);
> > + struct kvm_sync_regs *sync_regs = &self->run->s.regs;
> > + struct kvm_run *run = self->run;
> > + u8 skeyvalue = 0x34;
> > +
> > + /* copy test_skey_asm to code_hva / code_gpa */
> > + TH_LOG("copy code %p to vm mapped memory %p / %p",
> > + &test_skey_asm, (void *)self->code_hva, (void *)self->code_gpa);
> > + memcpy((void *)self->code_hva, &test_skey_asm, PAGE_SIZE);
> > +
> > + /* set register content for test_skey_asm to access not mapped memory */
> > + sync_regs->gprs[1] = skeyvalue;
> > + sync_regs->gprs[5] = self->base_gpa;
> > + sync_regs->gprs[6] = test_vaddr;
> > + run->kvm_dirty_regs |= KVM_SYNC_GPRS;
> > +
> > + self->sie_block->ictl |= ICTL_OPEREXC | ICTL_PINT;
> > + self->sie_block->cpuflags &= ~CPUSTAT_KSS;
>
> So you don't want KVM to initialize skeys?
> Or am I missing a ucontrol skey interaction?
>
> What about the ICTLs if KSS is not available on the machine?
This is explicitly disabling KSS, not enabling it.
Doing that explicitly might not strictly be necessary but I thought this does
provide some clarity about the state.
next prev parent reply other threads:[~2024-08-19 16:01 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-15 15:45 [PATCH 0/3] selftests: kvm: s390: Add ucontrol memory selftests Christoph Schlameuss
2024-08-15 15:45 ` [PATCH 1/3] selftests: kvm: s390: Add uc_map_unmap VM test case Christoph Schlameuss
2024-08-16 14:29 ` Janosch Frank
2024-08-19 16:03 ` Christoph Schlameuss
2024-08-23 8:02 ` Janosch Frank
2024-08-23 13:03 ` Christoph Schlameuss
2024-08-23 13:20 ` Janosch Frank
2024-08-15 15:45 ` [PATCH 2/3] selftests: kvm: s390: Add uc_skey " Christoph Schlameuss
2024-08-16 14:36 ` Janosch Frank
2024-08-19 16:00 ` Christoph Schlameuss [this message]
2024-08-23 7:59 ` Janosch Frank
2024-08-30 15:51 ` Christoph Schlameuss
2024-08-15 15:45 ` [PATCH 3/3] selftests: kvm: s390: Verify reject memory region operations for ucontrol VMs Christoph Schlameuss
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=ZsNsMMc0Ir1w0BJy@darkmoore \
--to=schlameuss@linux.ibm.com \
--cc=borntraeger@linux.ibm.com \
--cc=david@redhat.com \
--cc=frankja@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=nsg@linux.ibm.com \
--cc=pbonzini@redhat.com \
--cc=shuah@kernel.org \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.