diff options
author | Thomas Huth <thuth@linux.vnet.ibm.com> | 2014-02-12 09:56:35 +0100 |
---|---|---|
committer | Christian Borntraeger <borntraeger@de.ibm.com> | 2014-02-27 09:51:26 +0100 |
commit | 49f5c9e98ab44700b58e23ca8c17e21850328da1 (patch) | |
tree | dc85da78de61a563e530ebc2f5afcfd812c74042 /target-s390x/cpu.c | |
parent | 0ca3611221d8d80bcf98337f4691addc07df0b08 (diff) | |
download | qemu-49f5c9e98ab44700b58e23ca8c17e21850328da1.zip qemu-49f5c9e98ab44700b58e23ca8c17e21850328da1.tar.gz qemu-49f5c9e98ab44700b58e23ca8c17e21850328da1.tar.bz2 |
s390x/cpu: Use ioctl to reset state in the kernel
Some of the state in the kernel can not be reset from QEMU yet.
For this we've got to use the KVM_S390_INITIAL_RESET ioctl to make
sure that the state in the kernel is set to the right values during
initial CPU reset, too.
Signed-off-by: Thomas Huth <thuth@linux.vnet.ibm.com>
Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Christian Borntraeger <borntraeger@de.ibm.com>
Diffstat (limited to 'target-s390x/cpu.c')
-rw-r--r-- | target-s390x/cpu.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/target-s390x/cpu.c b/target-s390x/cpu.c index f1319e5..1a8c1cc 100644 --- a/target-s390x/cpu.c +++ b/target-s390x/cpu.c @@ -108,6 +108,15 @@ static void s390_cpu_initial_reset(CPUState *s) env->cregs[14] = CR14_RESET; env->pfault_token = -1UL; + +#if defined(CONFIG_KVM) + /* Reset state inside the kernel that we cannot access yet from QEMU. */ + if (kvm_enabled()) { + if (kvm_vcpu_ioctl(s, KVM_S390_INITIAL_RESET, NULL)) { + perror("Initial CPU reset failed"); + } + } +#endif } /* CPUClass:reset() */ |