[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 2/2] target-i386: move cpu_reset and reset callback
From: |
Igor Mammedov |
Subject: |
[Qemu-devel] [PATCH 2/2] target-i386: move cpu_reset and reset callback to cpu.c |
Date: |
Tue, 10 Jul 2012 15:15:52 +0200 |
Moving reset callback into cpu object from board level and
resetting cpu at the end of x86_cpu_realize() will allow properly
create cpu object during run-time (hotplug) without calling reset exteraly.
When reset over QOM hierarchy is implemented, reset callback
should be removed.
v2:
leave cpu_reset in pc_new_cpu() for now, it's to be cleaned up when APIC init
is moved in cpu.c
Signed-off-by: Igor Mammedov <address@hidden>
---
hw/pc.c | 9 +--------
target-i386/cpu.c | 16 ++++++++++++++++
2 files changed, 17 insertions(+), 8 deletions(-)
diff --git a/hw/pc.c b/hw/pc.c
index 50c1715..d74ca6e 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -918,12 +918,6 @@ void pc_acpi_smi_interrupt(void *opaque, int irq, int
level)
}
}
-static void pc_cpu_reset(void *opaque)
-{
- X86CPU *cpu = opaque;
- cpu_reset(CPU(cpu));
-}
-
static X86CPU *pc_new_cpu(const char *cpu_model)
{
X86CPU *cpu;
@@ -938,8 +932,7 @@ static X86CPU *pc_new_cpu(const char *cpu_model)
if ((env->cpuid_features & CPUID_APIC) || smp_cpus > 1) {
env->apic_state = apic_init(env, env->cpuid_apic_id);
}
- qemu_register_reset(pc_cpu_reset, cpu);
- pc_cpu_reset(cpu);
+ cpu_reset(CPU(cpu));
return cpu;
}
diff --git a/target-i386/cpu.c b/target-i386/cpu.c
index f9ed6d8..65c7446 100644
--- a/target-i386/cpu.c
+++ b/target-i386/cpu.c
@@ -31,6 +31,8 @@
#include "hyperv.h"
+#include "hw/hw.h"
+
/* feature flags taken from "Intel Processor Identification and the CPUID
* Instruction" and AMD's "CPUID Specification". In cases of disagreement
* between feature naming conventions, aliases may be added.
@@ -1697,6 +1699,15 @@ static void x86_cpu_reset(CPUState *s)
#endif
}
+#ifndef CONFIG_USER_ONLY
+/* TODO: remove me, when reset over QOM tree is implemented */
+static void x86_cpu_machine_reset_cb(void *opaque)
+{
+ X86CPU *cpu = opaque;
+ cpu_reset(CPU(cpu));
+}
+#endif
+
static void mce_init(X86CPU *cpu)
{
CPUX86State *cenv = &cpu->env;
@@ -1717,8 +1728,13 @@ void x86_cpu_realize(Object *obj, Error **errp)
{
X86CPU *cpu = X86_CPU(obj);
+#ifndef CONFIG_USER_ONLY
+ qemu_register_reset(x86_cpu_machine_reset_cb, cpu);
+#endif
+
mce_init(cpu);
qemu_init_vcpu(&cpu->env);
+ cpu_reset(CPU(cpu));
}
static void x86_cpu_initfn(Object *obj)
--
1.7.1
- [Qemu-devel] [PATCH 0/2 v2] target-i386: refactor reset handling and move it into cpu.c, Igor Mammedov, 2012/07/10
- [Qemu-devel] [PATCH 1/2] target-i386: move cpu halted decision into x86_cpu_reset, Igor Mammedov, 2012/07/10
- Re: [Qemu-devel] [PATCH 1/2] target-i386: move cpu halted decision into x86_cpu_reset, Gleb Natapov, 2012/07/12
- Re: [Qemu-devel] [PATCH 1/2] target-i386: move cpu halted decision into x86_cpu_reset, Igor Mammedov, 2012/07/12
- [Qemu-devel] [PATCH v2] MP initialization protocol differs between cpu families, and for P6 and onward models it is up to CPU to decide if it will be BSP using this protocol, so try to model this. However there is no point in implementing MP initialization protocol in qemu. Thus first CPU is always marked as BSP., Igor Mammedov, 2012/07/12
- Re: [Qemu-devel] [PATCH v2] MP initialization protocol differs between cpu families, and for P6 and onward models it is up to CPU to decide if it will be BSP using this protocol, so try to model this. However there is no point in implementing MP initialization protocol in qemu. Thus first CPU is always marked as BSP., Igor Mammedov, 2012/07/23
- Re: [Qemu-devel] [PATCH v2] MP initialization protocol differs between cpu families, and for P6 and onward models it is up to CPU to decide if it will be BSP using this protocol, so try to model this. However there is no point in implementing MP initialization protocol in qemu. Thus first CPU is always marked as BSP., Gleb Natapov, 2012/07/23
- Re: [Qemu-devel] [PATCH v2] MP initialization protocol differs between cpu families, and for P6 and onward models it is up to CPU to decide if it will be BSP using this protocol, so try to model this. However there is no point in implementing MP initialization protocol in qemu. Thus first CPU is always marked as BSP., Andreas Färber, 2012/07/23
[Qemu-devel] [PATCH 2/2] target-i386: move cpu_reset and reset callback to cpu.c,
Igor Mammedov <=