diff options
-rw-r--r-- | arch/s390/kvm/priv.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/s390/kvm/priv.c b/arch/s390/kvm/priv.c index 7b397b37d11a..844a2b986112 100644 --- a/arch/s390/kvm/priv.c +++ b/arch/s390/kvm/priv.c | |||
@@ -286,7 +286,8 @@ int kvm_s390_handle_lpsw(struct kvm_vcpu *vcpu) | |||
286 | 286 | ||
287 | vcpu->arch.sie_block->gpsw.mask = | 287 | vcpu->arch.sie_block->gpsw.mask = |
288 | (new_psw.mask & ~PSW32_MASK_BASE) << 32; | 288 | (new_psw.mask & ~PSW32_MASK_BASE) << 32; |
289 | vcpu->arch.sie_block->gpsw.addr = new_psw.addr; | 289 | vcpu->arch.sie_block->gpsw.mask |= new_psw.addr & PSW32_ADDR_AMODE; |
290 | vcpu->arch.sie_block->gpsw.addr = new_psw.addr & ~PSW32_ADDR_AMODE; | ||
290 | 291 | ||
291 | if ((vcpu->arch.sie_block->gpsw.mask & PSW_MASK_UNASSIGNED) || | 292 | if ((vcpu->arch.sie_block->gpsw.mask & PSW_MASK_UNASSIGNED) || |
292 | (!(vcpu->arch.sie_block->gpsw.mask & PSW_MASK_ADDR_MODE) && | 293 | (!(vcpu->arch.sie_block->gpsw.mask & PSW_MASK_ADDR_MODE) && |