提交 dd1750d7 编写于 作者: A Andreas Färber

kvm: Change kvm_cpu_synchronize_state() argument to CPUState

It no longer relies on CPUArchState since 20d695a9.
Reviewed-by: Nliguang <lig.fnst@cn.fujitsu.com>
Acked-by: NPaolo Bonzini <pbonzini@redhat.com>
Reviewed-by: NRichard Henderson <rth@twiddle.net>
Signed-off-by: NAndreas Färber <afaerber@suse.de>
上级 c52a6b67
...@@ -184,7 +184,7 @@ static void rtas_start_cpu(sPAPREnvironment *spapr, ...@@ -184,7 +184,7 @@ static void rtas_start_cpu(sPAPREnvironment *spapr,
/* This will make sure qemu state is up to date with kvm, and /* This will make sure qemu state is up to date with kvm, and
* mark it dirty so our changes get flushed back before the * mark it dirty so our changes get flushed back before the
* new cpu enters */ * new cpu enters */
kvm_cpu_synchronize_state(env); kvm_cpu_synchronize_state(cs);
env->msr = (1ULL << MSR_SF) | (1ULL << MSR_ME); env->msr = (1ULL << MSR_SF) | (1ULL << MSR_ME);
env->nip = start; env->nip = start;
......
...@@ -259,14 +259,14 @@ int kvm_check_extension(KVMState *s, unsigned int extension); ...@@ -259,14 +259,14 @@ int kvm_check_extension(KVMState *s, unsigned int extension);
uint32_t kvm_arch_get_supported_cpuid(KVMState *env, uint32_t function, uint32_t kvm_arch_get_supported_cpuid(KVMState *env, uint32_t function,
uint32_t index, int reg); uint32_t index, int reg);
void kvm_cpu_synchronize_state(CPUArchState *env); void kvm_cpu_synchronize_state(CPUState *cpu);
/* generic hooks - to be moved/refactored once there are more users */ /* generic hooks - to be moved/refactored once there are more users */
static inline void cpu_synchronize_state(CPUArchState *env) static inline void cpu_synchronize_state(CPUArchState *env)
{ {
if (kvm_enabled()) { if (kvm_enabled()) {
kvm_cpu_synchronize_state(env); kvm_cpu_synchronize_state(ENV_GET_CPU(env));
} }
} }
......
...@@ -1590,10 +1590,8 @@ static void do_kvm_cpu_synchronize_state(void *arg) ...@@ -1590,10 +1590,8 @@ static void do_kvm_cpu_synchronize_state(void *arg)
} }
} }
void kvm_cpu_synchronize_state(CPUArchState *env) void kvm_cpu_synchronize_state(CPUState *cpu)
{ {
CPUState *cpu = ENV_GET_CPU(env);
if (!cpu->kvm_vcpu_dirty) { if (!cpu->kvm_vcpu_dirty) {
run_on_cpu(cpu, do_kvm_cpu_synchronize_state, cpu); run_on_cpu(cpu, do_kvm_cpu_synchronize_state, cpu);
} }
......
...@@ -42,7 +42,7 @@ void kvm_flush_coalesced_mmio_buffer(void) ...@@ -42,7 +42,7 @@ void kvm_flush_coalesced_mmio_buffer(void)
{ {
} }
void kvm_cpu_synchronize_state(CPUArchState *env) void kvm_cpu_synchronize_state(CPUState *cpu)
{ {
} }
......
...@@ -1857,7 +1857,7 @@ int kvm_arch_process_async_events(CPUState *cs) ...@@ -1857,7 +1857,7 @@ int kvm_arch_process_async_events(CPUState *cs)
cs->interrupt_request &= ~CPU_INTERRUPT_MCE; cs->interrupt_request &= ~CPU_INTERRUPT_MCE;
kvm_cpu_synchronize_state(env); kvm_cpu_synchronize_state(cs);
if (env->exception_injected == EXCP08_DBLE) { if (env->exception_injected == EXCP08_DBLE) {
/* this means triple fault */ /* this means triple fault */
...@@ -1888,16 +1888,16 @@ int kvm_arch_process_async_events(CPUState *cs) ...@@ -1888,16 +1888,16 @@ int kvm_arch_process_async_events(CPUState *cs)
cs->halted = 0; cs->halted = 0;
} }
if (cs->interrupt_request & CPU_INTERRUPT_INIT) { if (cs->interrupt_request & CPU_INTERRUPT_INIT) {
kvm_cpu_synchronize_state(env); kvm_cpu_synchronize_state(cs);
do_cpu_init(cpu); do_cpu_init(cpu);
} }
if (cs->interrupt_request & CPU_INTERRUPT_SIPI) { if (cs->interrupt_request & CPU_INTERRUPT_SIPI) {
kvm_cpu_synchronize_state(env); kvm_cpu_synchronize_state(cs);
do_cpu_sipi(cpu); do_cpu_sipi(cpu);
} }
if (cs->interrupt_request & CPU_INTERRUPT_TPR) { if (cs->interrupt_request & CPU_INTERRUPT_TPR) {
cs->interrupt_request &= ~CPU_INTERRUPT_TPR; cs->interrupt_request &= ~CPU_INTERRUPT_TPR;
kvm_cpu_synchronize_state(env); kvm_cpu_synchronize_state(cs);
apic_handle_tpr_access_report(env->apic_state, env->eip, apic_handle_tpr_access_report(env->apic_state, env->eip,
env->tpr_access_type); env->tpr_access_type);
} }
...@@ -2184,7 +2184,7 @@ bool kvm_arch_stop_on_emulation_error(CPUState *cs) ...@@ -2184,7 +2184,7 @@ bool kvm_arch_stop_on_emulation_error(CPUState *cs)
X86CPU *cpu = X86_CPU(cs); X86CPU *cpu = X86_CPU(cs);
CPUX86State *env = &cpu->env; CPUX86State *env = &cpu->env;
kvm_cpu_synchronize_state(env); kvm_cpu_synchronize_state(cs);
return !(env->cr[0] & CR0_PE_MASK) || return !(env->cr[0] & CR0_PE_MASK) ||
((env->segs[R_CS].selector & 3) != 3); ((env->segs[R_CS].selector & 3) != 3);
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册