* -no-kvm broken since merge a5b526135d
@ 2009-06-19 15:01 Jan Kiszka
2009-06-19 17:11 ` [PATCH] qemu-kvm: x86: Fix CPU initialization Jan Kiszka
0 siblings, 1 reply; 4+ messages in thread
From: Jan Kiszka @ 2009-06-19 15:01 UTC (permalink / raw)
To: Avi Kivity; +Cc: kvm-devel
JFYI: qemu-kvm commit de408d70d8 works fine with -no-kvm, a5b526135d
produces
qemu: fatal: Trying to execute code outside RAM or ROM at 0x00000001000d5f4f
EAX=00000001 EBX=00000070 ECX=0000005f EDX=00000001
ESI=00000000 EDI=00000000 EBP=00000000 ESP=00000000
EIP=000e5f4f EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0000 00000000 0000ffff 00009200
CS =f000 ffff0000 0000ffff 00009a00
SS =0000 00000000 0000ffff 00009200
DS =0000 00000000 0000ffff 00009200
FS =0000 00000000 0000ffff 00009200
GS =0000 00000000 0000ffff 00009200
LDT=0000 00000000 0000ffff 00008200
TR =0000 00000000 0000ffff 00008b00
GDT= 00000000 0000ffff
IDT= 00000000 0000ffff
CR0=60000010 CR2=00000000 CR3=00000000 CR4=00000000
DR0=00000000 DR1=00000000 DR2=00000000 DR3=00000000
DR6=ffff0ff0 DR7=00000400
CCS=00000001 CCD=00000000 CCO=SUBL
FCW=037f FSW=0000 [ST=0] FTW=00 MXCSR=00001f80
FPR0=0000000000000000 0000 FPR1=0000000000000000 0000
FPR2=0000000000000000 0000 FPR3=0000000000000000 0000
FPR4=0000000000000000 0000 FPR5=0000000000000000 0000
FPR6=0000000000000000 0000 FPR7=0000000000000000 0000
XMM00=00000000000000000000000000000000
XMM01=00000000000000000000000000000000
XMM02=00000000000000000000000000000000
XMM03=00000000000000000000000000000000
XMM04=00000000000000000000000000000000
XMM05=00000000000000000000000000000000
XMM06=00000000000000000000000000000000
XMM07=00000000000000000000000000000000
(addresses may vary)
during early BIOS boot. Probably a merge conflict, but I do not yet see
which one. Maybe someone has an immediate idea what could cause this.
Upstream does not show this regression.
Jan
--
Siemens AG, Corporate Technology, CT SE 2
Corporate Competence Center Embedded Linux
^ permalink raw reply [flat|nested] 4+ messages in thread
* [PATCH] qemu-kvm: x86: Fix CPU initialization
2009-06-19 15:01 -no-kvm broken since merge a5b526135d Jan Kiszka
@ 2009-06-19 17:11 ` Jan Kiszka
2009-06-19 17:17 ` [PATCH v2] " Jan Kiszka
0 siblings, 1 reply; 4+ messages in thread
From: Jan Kiszka @ 2009-06-19 17:11 UTC (permalink / raw)
To: Avi Kivity; +Cc: kvm-devel
Fix regression in CPU initialization caused by merge a5b526135d and try
to avoid this in the future by dropping qemu-kvm specific pc_new_cpu. If
such refactoring is desired, it should go through upstream first.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
hw/pc.c | 44 ++++++++++++++++++--------------------------
1 files changed, 18 insertions(+), 26 deletions(-)
diff --git a/hw/pc.c b/hw/pc.c
index 6c19f55..c4117e5 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -839,31 +839,6 @@ int cpu_is_bsp(CPUState *env)
return env->cpuid_apic_id == 0;
}
-CPUState *pc_new_cpu(int cpu, const char *cpu_model, int pci_enabled)
-{
- CPUState *env = cpu_init(cpu_model);
- if (!env) {
- fprintf(stderr, "Unable to find x86 CPU definition\n");
- exit(1);
- }
- if (cpu != 0)
- env->halted = 1;
- if ((env->cpuid_features & CPUID_APIC) || smp_cpus > 1) {
- env->cpuid_apic_id = env->cpu_index;
- apic_init(env);
- }
- qemu_register_reset(main_cpu_reset, 0, env);
- if (pci_enabled) {
- apic_init(env);
- }
-
- /* kvm needs this to run after the apic is initialized. Otherwise,
- * it can access invalid state and crash.
- */
- qemu_init_vcpu(env);
- return env;
-}
-
/* PC hardware initialisation */
static void pc_init1(ram_addr_t ram_size,
const char *boot_device,
@@ -906,7 +881,24 @@ static void pc_init1(ram_addr_t ram_size,
}
for(i = 0; i < smp_cpus; i++) {
- env = pc_new_cpu(i, cpu_model, pci_enabled);
+ env = cpu_init(cpu_model);
+ if (!env) {
+ fprintf(stderr, "Unable to find x86 CPU definition\n");
+ exit(1);
+ }
+ if (cpu != 0)
+ env->halted = 1;
+ if ((env->cpuid_features & CPUID_APIC) || smp_cpus > 1) {
+ env->cpuid_apic_id = env->cpu_index;
+ apic_init(env);
+ }
+ qemu_register_reset(main_cpu_reset, 0, env);
+
+ /*
+ * FIXME: qemu-kvm needs this after apic_init as it accesses APIC
+ * structures.
+ */
+ qemu_init_vcpu(env);
}
vmport_init();
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH v2] qemu-kvm: x86: Fix CPU initialization
2009-06-19 17:11 ` [PATCH] qemu-kvm: x86: Fix CPU initialization Jan Kiszka
@ 2009-06-19 17:17 ` Jan Kiszka
2009-06-21 12:38 ` Avi Kivity
0 siblings, 1 reply; 4+ messages in thread
From: Jan Kiszka @ 2009-06-19 17:17 UTC (permalink / raw)
To: Avi Kivity; +Cc: kvm-devel
Jan Kiszka wrote:
> Fix regression in CPU initialization caused by merge a5b526135d and try
> to avoid this in the future by dropping qemu-kvm specific pc_new_cpu. If
> such refactoring is desired, it should go through upstream first.
F...ine. I'll write a hundred times: "Don't post while still compiling."
Here is a version that only fixes the regression.
----------->
Fix regression in CPU initialization caused by merge a5b526135d.
Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com>
---
hw/pc.c | 3 ---
1 files changed, 0 insertions(+), 3 deletions(-)
diff --git a/hw/pc.c b/hw/pc.c
index 6c19f55..cb5b4d0 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -853,9 +853,6 @@ CPUState *pc_new_cpu(int cpu, const char *cpu_model, int pci_enabled)
apic_init(env);
}
qemu_register_reset(main_cpu_reset, 0, env);
- if (pci_enabled) {
- apic_init(env);
- }
/* kvm needs this to run after the apic is initialized. Otherwise,
* it can access invalid state and crash.
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [PATCH v2] qemu-kvm: x86: Fix CPU initialization
2009-06-19 17:17 ` [PATCH v2] " Jan Kiszka
@ 2009-06-21 12:38 ` Avi Kivity
0 siblings, 0 replies; 4+ messages in thread
From: Avi Kivity @ 2009-06-21 12:38 UTC (permalink / raw)
To: Jan Kiszka; +Cc: kvm-devel
On 06/19/2009 08:17 PM, Jan Kiszka wrote:
> Jan Kiszka wrote:
>
>> Fix regression in CPU initialization caused by merge a5b526135d and try
>> to avoid this in the future by dropping qemu-kvm specific pc_new_cpu. If
>> such refactoring is desired, it should go through upstream first.
>>
>
> F...ine. I'll write a hundred times: "Don't post while still compiling."
> Here is a version that only fixes the regression.
>
Applied, thanks.
This has bitten us more than once. Care to upstream pc_new_cpu()?
we'll need it anyway when we upstream cpu hotplug, and this will make
life easier for us here downstream.
--
error compiling committee.c: too many arguments to function
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2009-06-21 12:38 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-06-19 15:01 -no-kvm broken since merge a5b526135d Jan Kiszka
2009-06-19 17:11 ` [PATCH] qemu-kvm: x86: Fix CPU initialization Jan Kiszka
2009-06-19 17:17 ` [PATCH v2] " Jan Kiszka
2009-06-21 12:38 ` Avi Kivity
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox