mirror of
https://github.com/torvalds/linux.git
synced 2026-05-27 08:33:17 +02:00
KVM: s390: vsie: Disable some bits when in ESA mode
In the event that a nested guest is put in ESA mode, ensure that some bits are scrubbed from the shadow SCB. Reviewed-by: Christian Borntraeger <borntraeger@linux.ibm.com> Signed-off-by: Eric Farman <farman@linux.ibm.com> Reviewed-by: Hendrik Brueckner <brueckner@linux.ibm.com> Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
This commit is contained in:
parent
b0ad874d98
commit
a9640e2eb7
|
|
@ -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 | ECB_TE);
|
||||
scb_s->ecb3 &= ~ECB3_RI;
|
||||
scb_s->ecd &= ~ECD_HOSTREGMGMT;
|
||||
}
|
||||
|
||||
/* 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);
|
||||
out:
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user