From: Sven Schnelle <svens@linux.ibm.com>
To: Christian Borntraeger <borntraeger@linux.ibm.com>
Cc: KVM <kvm@vger.kernel.org>, Janosch Frank <frankja@linux.ibm.com>,
David Hildenbrand <david@redhat.com>,
linux-s390 <linux-s390@vger.kernel.org>,
Thomas Huth <thuth@redhat.com>,
Claudio Imbrenda <imbrenda@linux.ibm.com>,
Heiko Carstens <hca@linux.ibm.com>,
Vasily Gorbik <gor@linux.ibm.com>,
Alexander Gordeev <agordeev@linux.ibm.com>,
Marc Hartmayer <mhartmay@linux.ibm.com>
Subject: Re: [PATCH v2] KVM: s390: fix LPSWEY handling
Date: Mon, 01 Jul 2024 09:25:19 +0200 [thread overview]
Message-ID: <yt9dfrst7ew0.fsf@linux.ibm.com> (raw)
In-Reply-To: <0d870c8d-2be8-485c-9320-4f779bccf552@linux.ibm.com> (Christian Borntraeger's message of "Mon, 1 Jul 2024 09:21:52 +0200")
Christian Borntraeger <borntraeger@linux.ibm.com> writes:
> Am 01.07.24 um 08:08 schrieb Sven Schnelle:
>> Christian Borntraeger <borntraeger@linux.ibm.com> writes:
>>
>>> diff --git a/arch/s390/kvm/priv.c b/arch/s390/kvm/priv.c
>>> index 1be19cc9d73c..1a49b89706f8 100644
>>> --- a/arch/s390/kvm/priv.c
>>> +++ b/arch/s390/kvm/priv.c
>>> @@ -797,6 +797,36 @@ static int handle_lpswe(struct kvm_vcpu *vcpu)
>>> return 0;
>>> }
>>> +static int handle_lpswey(struct kvm_vcpu *vcpu)
>>> +{
>>> + psw_t new_psw;
>>> + u64 addr;
>>> + int rc;
>>> + u8 ar;
>>> +
>>> + vcpu->stat.instruction_lpswey++;
>>> +
>>> + if (!test_kvm_facility(vcpu->kvm, 193))
>>> + return kvm_s390_inject_program_int(vcpu, PGM_OPERATION);
>>> +
>>> + if (vcpu->arch.sie_block->gpsw.mask & PSW_MASK_PSTATE)
>>> + return kvm_s390_inject_program_int(vcpu, PGM_PRIVILEGED_OP);
>>> +
>>> + addr = kvm_s390_get_base_disp_siy(vcpu, &ar);
>>> + if (addr & 7)
>>> + return kvm_s390_inject_program_int(vcpu, PGM_SPECIFICATION);
>>> +
>>> + rc = read_guest(vcpu, addr, ar, &new_psw, sizeof(new_psw));
>>> + if (rc)
>>> + return kvm_s390_inject_prog_cond(vcpu, rc);
>>> +
>>> + vcpu->arch.sie_block->gpsw = new_psw;
>>> + if (!is_valid_psw(&vcpu->arch.sie_block->gpsw))
>>> + return kvm_s390_inject_program_int(vcpu, PGM_SPECIFICATION);
>> Shouldn't the gpsw get updated with new_psw after the check? POP
>> says "The operation
>> is suppressed on all addressing and protection exceptions."
>
> Only for exception of the instruction but not for the target PSW.
> POP says:
>
> The other PSW fields which are to be loaded by the
> instruction are not checked for validity before they are
> loaded. However, immediately after loading, a speci-
> fication exception is recognized, and a program inter-
> ruption occurs, when any of the following is true for
> the newly loaded PSW
Ok, sorry for the noise.
next prev parent reply other threads:[~2024-07-01 7:25 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-28 16:35 [PATCH v2] KVM: s390: fix LPSWEY handling Christian Borntraeger
2024-07-01 6:08 ` Sven Schnelle
2024-07-01 7:21 ` Christian Borntraeger
2024-07-01 7:25 ` Sven Schnelle [this message]
2024-07-01 7:27 ` Christian Borntraeger
2024-07-01 8:11 ` Sven Schnelle
2024-07-01 10:28 ` Claudio Imbrenda
2024-07-01 10:39 ` Christian Borntraeger
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=yt9dfrst7ew0.fsf@linux.ibm.com \
--to=svens@linux.ibm.com \
--cc=agordeev@linux.ibm.com \
--cc=borntraeger@linux.ibm.com \
--cc=david@redhat.com \
--cc=frankja@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=imbrenda@linux.ibm.com \
--cc=kvm@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
--cc=mhartmay@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 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.