aboutsummaryrefslogtreecommitdiff
path: root/target/s390x/kvm/kvm.c
diff options
context:
space:
mode:
authorCollin Walling <walling@linux.ibm.com>2021-11-17 10:23:03 -0500
committerThomas Huth <thuth@redhat.com>2021-12-17 09:12:37 +0100
commitc35aff184b2ed5be930da671ea25c857713555af (patch)
tree9aeb3d57964526db3b94d851ce868bd622421642 /target/s390x/kvm/kvm.c
parent29eb5c2c86f935b0e9700fad2ecfe8a32b011d57 (diff)
downloadqemu-c35aff184b2ed5be930da671ea25c857713555af.zip
qemu-c35aff184b2ed5be930da671ea25c857713555af.tar.gz
qemu-c35aff184b2ed5be930da671ea25c857713555af.tar.bz2
s390: kvm: adjust diag318 resets to retain data
The CPNC portion of the diag318 data is erroneously reset during an initial CPU reset caused by SIGP. Let's go ahead and relocate the diag318_info field within the CPUS390XState struct such that it is only zeroed during a clear reset. This way, the CPNC will be retained for each VCPU in the configuration after the diag318 instruction has been invoked. The s390_machine_reset code already takes care of zeroing the diag318 data on VM resets, which also cover resets caused by diag308. Fixes: fabdada9357b ("s390: guest support for diagnose 0x318") Reported-by: Christian Borntraeger <borntraeger@de.ibm.com> Signed-off-by: Collin Walling <walling@linux.ibm.com> Reviewed-by: Janosch Frank <frankja@linux.ibm.com> Reviewed-by: Christian Borntraeger <borntraeger@linux.ibm.com> Message-Id: <20211117152303.627969-1-walling@linux.ibm.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
Diffstat (limited to 'target/s390x/kvm/kvm.c')
-rw-r--r--target/s390x/kvm/kvm.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/target/s390x/kvm/kvm.c b/target/s390x/kvm/kvm.c
index 5b1fdb5..6acf14d 100644
--- a/target/s390x/kvm/kvm.c
+++ b/target/s390x/kvm/kvm.c
@@ -1585,6 +1585,10 @@ void kvm_s390_set_diag318(CPUState *cs, uint64_t diag318_info)
env->diag318_info = diag318_info;
cs->kvm_run->s.regs.diag318 = diag318_info;
cs->kvm_run->kvm_dirty_regs |= KVM_SYNC_DIAG318;
+ /*
+ * diag 318 info is zeroed during a clear reset and
+ * diag 308 IPL subcodes.
+ */
}
}