Re: [PATCH v1 2/4] KVM: s390: vsie: Disable some bits when in ESA mode

Christian Borntraeger
2026-04-01T12:58:30Z

Am 01.04.26 um 04:09 schrieb Eric Farman:
> In the event that a nested guest is put in ESA mode,
> ensure that some bits are scrubbed from the shadow SCB.
>
> Signed-off-by: Eric Farman <farman@linux.ibm.com>

Reviewed-by: Christian Borntraeger <borntraeger@linux.ibm.com>
apart from one thing below

> ---
> arch/s390/kvm/vsie.c | 14 ++++++++++++++
> 1 file changed, 14 insertions(+)
>
> diff --git a/arch/s390/kvm/vsie.c b/arch/s390/kvm/vsie.c
> index 888370a02ef7..584fc7803632 100644
> --- a/arch/s390/kvm/vsie.c
> +++ b/arch/s390/kvm/vsie.c
> @@ -387,6 +387,17 @@ static int shadow_crycb(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
> return 0;
> }
>
> +static void shadow_esa(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
> +{
> + struct kvm_s390_sie_block *scb_s = &vsie_page->scb_s;
> +
> + /* Ensure these bits are indeed turned off */
> + scb_s->eca &= ~ECA_VX;
> + scb_s->ecb &= ~ECB_GS;
> + scb_s->ecb3 &= ~ECB3_RI;
> + scb_s->ecd &= ~ECD_HOSTREGMGMT;

shouldnt we also remove the TE bit (transactional execution)?

> +}
> +
> /* shadow (round up/down) the ibc to avoid validity icpt */
> static void prepare_ibc(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
> {
> @@ -590,6 +601,9 @@ static int shadow_scb(struct kvm_vcpu *vcpu, struct vsie_page *vsie_page)
> scb_s->hpid = HPID_VSIE;
> scb_s->cpnc = scb_o->cpnc;
>
> + if (!(atomic_read(&scb_s->cpuflags) & CPUSTAT_ZARCH))
> + shadow_esa(vcpu, vsie_page);
> +
> prepare_ibc(vcpu, vsie_page);
> rc = shadow_crycb(vcpu, vsie_page);