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

Janosch Frank
2026-04-01T14:50:38Z

On 4/1/26 15:46, Eric Farman wrote:
> On Wed, 2026-04-01 at 14:58 +0200, Christian Borntraeger wrote:
>>
>> 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)?
>
> Ahh, good point. Yeah, that should be removed.
>
> @Janosch, I'll spin a quick v2 with this and the other nits, so you don't have to do the fixups.
> Just want to doublecheck this one.

Great, thanks

>
>>
>>> +}
>>> +
>>> /* 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);