|
@@ -27,6 +27,8 @@
|
|
#define IOINT_CSSID_MASK 0x03fc0000
|
|
#define IOINT_CSSID_MASK 0x03fc0000
|
|
#define IOINT_AI_MASK 0x04000000
|
|
#define IOINT_AI_MASK 0x04000000
|
|
#define PFAULT_INIT 0x0600
|
|
#define PFAULT_INIT 0x0600
|
|
|
|
+#define PFAULT_DONE 0x0680
|
|
|
|
+#define VIRTIO_PARAM 0x0d00
|
|
|
|
|
|
static int __must_check deliver_ckc_interrupt(struct kvm_vcpu *vcpu);
|
|
static int __must_check deliver_ckc_interrupt(struct kvm_vcpu *vcpu);
|
|
|
|
|
|
@@ -391,7 +393,7 @@ static int __must_check __do_deliver_interrupt(struct kvm_vcpu *vcpu,
|
|
trace_kvm_s390_deliver_interrupt(vcpu->vcpu_id, inti->type, 0,
|
|
trace_kvm_s390_deliver_interrupt(vcpu->vcpu_id, inti->type, 0,
|
|
inti->ext.ext_params2);
|
|
inti->ext.ext_params2);
|
|
rc = put_guest_lc(vcpu, 0x2603, (u16 *)__LC_EXT_INT_CODE);
|
|
rc = put_guest_lc(vcpu, 0x2603, (u16 *)__LC_EXT_INT_CODE);
|
|
- rc |= put_guest_lc(vcpu, 0x0680, (u16 *)__LC_EXT_CPU_ADDR);
|
|
|
|
|
|
+ rc |= put_guest_lc(vcpu, PFAULT_DONE, (u16 *)__LC_EXT_CPU_ADDR);
|
|
rc |= write_guest_lc(vcpu, __LC_EXT_OLD_PSW,
|
|
rc |= write_guest_lc(vcpu, __LC_EXT_OLD_PSW,
|
|
&vcpu->arch.sie_block->gpsw,
|
|
&vcpu->arch.sie_block->gpsw,
|
|
sizeof(psw_t));
|
|
sizeof(psw_t));
|
|
@@ -408,7 +410,7 @@ static int __must_check __do_deliver_interrupt(struct kvm_vcpu *vcpu,
|
|
inti->ext.ext_params,
|
|
inti->ext.ext_params,
|
|
inti->ext.ext_params2);
|
|
inti->ext.ext_params2);
|
|
rc = put_guest_lc(vcpu, 0x2603, (u16 *)__LC_EXT_INT_CODE);
|
|
rc = put_guest_lc(vcpu, 0x2603, (u16 *)__LC_EXT_INT_CODE);
|
|
- rc |= put_guest_lc(vcpu, 0x0d00, (u16 *)__LC_EXT_CPU_ADDR);
|
|
|
|
|
|
+ rc |= put_guest_lc(vcpu, VIRTIO_PARAM, (u16 *)__LC_EXT_CPU_ADDR);
|
|
rc |= write_guest_lc(vcpu, __LC_EXT_OLD_PSW,
|
|
rc |= write_guest_lc(vcpu, __LC_EXT_OLD_PSW,
|
|
&vcpu->arch.sie_block->gpsw,
|
|
&vcpu->arch.sie_block->gpsw,
|
|
sizeof(psw_t));
|
|
sizeof(psw_t));
|