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 08:08:17 +0200 [thread overview]
Message-ID: <yt9do77h7ige.fsf@linux.ibm.com> (raw)
In-Reply-To: <20240628163547.2314-1-borntraeger@linux.ibm.com> (Christian Borntraeger's message of "Fri, 28 Jun 2024 18:35:47 +0200")
Christian Borntraeger <borntraeger@linux.ibm.com> writes:
> in rare cases, e.g. for injecting a machine check we do intercept all
> load PSW instructions via ICTL_LPSW. With facility 193 a new variant
> LPSWEY was added. KVM needs to handle that as well.
>
> Fixes: a3efa8429266 ("KVM: s390: gen_facilities: allow facilities 165, 193, 194 and 196")
> Reported-by: Marc Hartmayer <mhartmay@linux.ibm.com>
> Signed-off-by: Christian Borntraeger <borntraeger@linux.ibm.com>
> ---
> arch/s390/include/asm/kvm_host.h | 1 +
> arch/s390/kvm/kvm-s390.c | 1 +
> arch/s390/kvm/kvm-s390.h | 15 +++++++++++++++
> arch/s390/kvm/priv.c | 32 ++++++++++++++++++++++++++++++++
> 4 files changed, 49 insertions(+)
>
> 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."
> +
> + return 0;
> +}
next prev parent reply other threads:[~2024-07-01 6:08 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 [this message]
2024-07-01 7:21 ` Christian Borntraeger
2024-07-01 7:25 ` Sven Schnelle
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=yt9do77h7ige.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.