mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-16 18:22:00 -04: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:
committed by
Janosch Frank
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:
|
||||
|
||||
Reference in New Issue
Block a user