diff options
author | David Hildenbrand <dahi@linux.vnet.ibm.com> | 2014-09-30 10:57:31 +0200 |
---|---|---|
committer | Cornelia Huck <cornelia.huck@de.ibm.com> | 2014-10-10 10:37:47 +0200 |
commit | 99607144a423dd2cd3113587e36bc4dc65c4ddf1 (patch) | |
tree | 14c9763960ea9a5056170f54d7badf4dc5b16f9d /target-s390x | |
parent | c9e659c9ee75d33ff11a8573cea738ad26bb6f86 (diff) |
s390x/kvm: reuse kvm_s390_reset_vcpu() to get rid of ifdefs
This patch reuses kvm_s390_reset_vcpu() to get rid of some CONFIG_KVM and
CONFIG_USER_ONLY ifdefs in cpu.c.
In order to get rid of CONFIG_USER_ONLY, kvm_s390_reset_vcpu() has to provide a
dummy implementation - the two definitions are moved to the proper section in
cpu.h.
Signed-off-by: David Hildenbrand <dahi@linux.vnet.ibm.com>
Signed-off-by: Jens Freimann <jfrei@linux.vnet.ibm.com>
Reviewed-by: Cornelia Huck <cornelia.huck@de.ibm.com>
CC: Andreas Faerber <afaerber@suse.de>
Tested-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Diffstat (limited to 'target-s390x')
-rw-r--r-- | target-s390x/cpu.c | 9 | ||||
-rw-r--r-- | target-s390x/cpu.h | 8 | ||||
-rw-r--r-- | target-s390x/kvm.c | 2 |
3 files changed, 7 insertions, 12 deletions
diff --git a/target-s390x/cpu.c b/target-s390x/cpu.c index 9dbb0dfcdb..ec7df90dcd 100644 --- a/target-s390x/cpu.c +++ b/target-s390x/cpu.c @@ -117,14 +117,10 @@ static void s390_cpu_initial_reset(CPUState *s) 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"); - } + kvm_s390_reset_vcpu(cpu); } -#endif } /* CPUClass:reset() */ @@ -145,11 +141,10 @@ static void s390_cpu_full_reset(CPUState *s) env->pfault_token = -1UL; -#if !defined(CONFIG_USER_ONLY) + /* Reset state inside the kernel that we cannot access yet from QEMU. */ if (kvm_enabled()) { kvm_s390_reset_vcpu(cpu); } -#endif tlb_flush(s, 1); } diff --git a/target-s390x/cpu.h b/target-s390x/cpu.h index 6b3aaed842..fe2f95d084 100644 --- a/target-s390x/cpu.h +++ b/target-s390x/cpu.h @@ -389,16 +389,12 @@ int s390_virtio_hypercall(CPUS390XState *env); void s390_virtio_irq(int config_change, uint64_t token); #ifdef CONFIG_KVM -void kvm_s390_reset_vcpu(S390CPU *cpu); void kvm_s390_virtio_irq(int config_change, uint64_t token); void kvm_s390_service_interrupt(uint32_t parm); void kvm_s390_vcpu_interrupt(S390CPU *cpu, struct kvm_s390_irq *irq); void kvm_s390_floating_interrupt(struct kvm_s390_irq *irq); int kvm_s390_inject_flic(struct kvm_s390_irq *irq); #else -static inline void kvm_s390_reset_vcpu(S390CPU *cpu) -{ -} static inline void kvm_s390_virtio_irq(int config_change, uint64_t token) { } @@ -1073,6 +1069,7 @@ int kvm_s390_cpu_restart(S390CPU *cpu); int kvm_s390_get_memslot_count(KVMState *s); void kvm_s390_clear_cmma_callback(void *opaque); int kvm_s390_set_cpu_state(S390CPU *cpu, uint8_t cpu_state); +void kvm_s390_reset_vcpu(S390CPU *cpu); #else static inline void kvm_s390_io_interrupt(uint16_t subchannel_id, uint16_t subchannel_nr, @@ -1107,6 +1104,9 @@ static inline int kvm_s390_set_cpu_state(S390CPU *cpu, uint8_t cpu_state) { return -ENOSYS; } +static inline void kvm_s390_reset_vcpu(S390CPU *cpu) +{ +} #endif static inline void cmma_reset(S390CPU *cpu) diff --git a/target-s390x/kvm.c b/target-s390x/kvm.c index 7c90b18631..e4c4c8dc18 100644 --- a/target-s390x/kvm.c +++ b/target-s390x/kvm.c @@ -198,7 +198,7 @@ void kvm_s390_reset_vcpu(S390CPU *cpu) * Before this ioctl cpu_synchronize_state() is called in common kvm * code (kvm-all) */ if (kvm_vcpu_ioctl(cs, KVM_S390_INITIAL_RESET, NULL)) { - perror("Can't reset vcpu\n"); + error_report("Initial CPU reset failed on CPU %i\n", cs->cpu_index); } } |