* [Qemu-devel] [PATCH 0/4] Simplify cpu initialization
@ 2009-05-06 14:49 Glauber Costa
2009-05-06 14:49 ` [Qemu-devel] [PATCH 1/4] move registering of cpu_reset to inside cpu_init Glauber Costa
0 siblings, 1 reply; 22+ messages in thread
From: Glauber Costa @ 2009-05-06 14:49 UTC (permalink / raw)
To: qemu-devel; +Cc: aliguori
Currently, there are pieces of cpu initialization being done in two
different places. The big part of it, is done inside cpu_x86_init,
while minor others are done in pc.c, after cpu_x86_init returns.
For things like halting cpus != 0, registering reset handler, etc,
there is no reason whatsoever for not doing it in cpu initialization.
The apic initialization should be moved there too, and theorectically,
it should not depend on pci machine. However, it currently breaks
our isa machine, and to avoid a hack, it is left where it is.
^ permalink raw reply [flat|nested] 22+ messages in thread
* [Qemu-devel] [PATCH 1/4] move registering of cpu_reset to inside cpu_init
2009-05-06 14:49 [Qemu-devel] [PATCH 0/4] Simplify cpu initialization Glauber Costa
@ 2009-05-06 14:49 ` Glauber Costa
2009-05-06 14:49 ` [Qemu-devel] [PATCH 2/4] move CPUID_APIC flag to where it belongs Glauber Costa
` (2 more replies)
0 siblings, 3 replies; 22+ messages in thread
From: Glauber Costa @ 2009-05-06 14:49 UTC (permalink / raw)
To: qemu-devel; +Cc: aliguori
This is not pc specific by any means. So we can be
moved to inside cpu_x86_init().
This is part of an attempt to only initialize kvm state
after everything is already properly initialized. If we don't
do that, we can race against, for example, APIC state if kvm vcpus
are ran in threads (happens in qemu-kvm.git, soon to happen here too)
Signed-off-by: Glauber Costa <glommer@redhat.com>
---
hw/pc.c | 7 -------
target-i386/helper.c | 8 ++++++++
2 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/hw/pc.c b/hw/pc.c
index 61f6e7b..351de83 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -725,12 +725,6 @@ static void load_linux(target_phys_addr_t option_rom,
generate_bootsect(option_rom, gpr, seg, 0);
}
-static void main_cpu_reset(void *opaque)
-{
- CPUState *env = opaque;
- cpu_reset(env);
-}
-
static const int ide_iobase[2] = { 0x1f0, 0x170 };
static const int ide_iobase2[2] = { 0x3f6, 0x376 };
static const int ide_irq[2] = { 14, 15 };
@@ -861,7 +855,6 @@ static void pc_init1(ram_addr_t ram_size, int vga_ram_size,
/* XXX: enable it in all cases */
env->cpuid_features |= CPUID_APIC;
}
- qemu_register_reset(main_cpu_reset, env);
if (pci_enabled) {
apic_init(env);
}
diff --git a/target-i386/helper.c b/target-i386/helper.c
index a070e08..2210412 100644
--- a/target-i386/helper.c
+++ b/target-i386/helper.c
@@ -29,6 +29,7 @@
#include "exec-all.h"
#include "qemu-common.h"
#include "kvm.h"
+#include "hw/hw.h"
//#define DEBUG_MMU
@@ -507,6 +508,11 @@ void cpu_reset(CPUX86State *env)
cpu_watchpoint_remove_all(env, BP_CPU);
}
+static void main_cpu_reset(void *_env)
+{
+ cpu_reset((CPUState *)_env);
+}
+
void cpu_x86_close(CPUX86State *env)
{
qemu_free(env);
@@ -1689,6 +1695,8 @@ CPUX86State *cpu_x86_init(const char *cpu_model)
return NULL;
}
cpu_reset(env);
+ qemu_register_reset(main_cpu_reset, env);
+
#ifdef CONFIG_KQEMU
kqemu_init(env);
#endif
--
1.5.6.6
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [Qemu-devel] [PATCH 2/4] move CPUID_APIC flag to where it belongs
2009-05-06 14:49 ` [Qemu-devel] [PATCH 1/4] move registering of cpu_reset to inside cpu_init Glauber Costa
@ 2009-05-06 14:49 ` Glauber Costa
2009-05-06 14:49 ` [Qemu-devel] [PATCH 3/4] move halted state setting to inside of cpu_x86_init Glauber Costa
2009-05-06 15:40 ` [Qemu-devel] Re: [PATCH 2/4] move CPUID_APIC flag to where it belongs Jan Kiszka
2009-05-06 17:02 ` [Qemu-devel] Re: [PATCH 1/4] move registering of cpu_reset to inside cpu_init Jan Kiszka
2009-05-06 19:36 ` [Qemu-devel] " Blue Swirl
2 siblings, 2 replies; 22+ messages in thread
From: Glauber Costa @ 2009-05-06 14:49 UTC (permalink / raw)
To: qemu-devel; +Cc: aliguori
We can safely do that inconditionally, so move to processor defined
flags like any other flag.
Signed-off-by: Glauber Costa <glommer@redhat.com>
---
hw/pc.c | 4 ----
target-i386/helper.c | 2 +-
2 files changed, 1 insertions(+), 5 deletions(-)
diff --git a/hw/pc.c b/hw/pc.c
index 351de83..b726c17 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -851,10 +851,6 @@ static void pc_init1(ram_addr_t ram_size, int vga_ram_size,
}
if (i != 0)
env->halted = 1;
- if (smp_cpus > 1) {
- /* XXX: enable it in all cases */
- env->cpuid_features |= CPUID_APIC;
- }
if (pci_enabled) {
apic_init(env);
}
diff --git a/target-i386/helper.c b/target-i386/helper.c
index 2210412..2c11cd3 100644
--- a/target-i386/helper.c
+++ b/target-i386/helper.c
@@ -102,7 +102,7 @@ typedef struct x86_def_t {
char model_id[48];
} x86_def_t;
-#define I486_FEATURES (CPUID_FP87 | CPUID_VME | CPUID_PSE)
+#define I486_FEATURES (CPUID_FP87 | CPUID_VME | CPUID_PSE | CPUID_APIC)
#define PENTIUM_FEATURES (I486_FEATURES | CPUID_DE | CPUID_TSC | \
CPUID_MSR | CPUID_MCE | CPUID_CX8 | CPUID_MMX)
#define PENTIUM2_FEATURES (PENTIUM_FEATURES | CPUID_PAE | CPUID_SEP | \
--
1.5.6.6
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [Qemu-devel] [PATCH 3/4] move halted state setting to inside of cpu_x86_init
2009-05-06 14:49 ` [Qemu-devel] [PATCH 2/4] move CPUID_APIC flag to where it belongs Glauber Costa
@ 2009-05-06 14:49 ` Glauber Costa
2009-05-06 14:49 ` [Qemu-devel] [PATCH 4/4] move apic functions to a separate apic.h header Glauber Costa
` (2 more replies)
2009-05-06 15:40 ` [Qemu-devel] Re: [PATCH 2/4] move CPUID_APIC flag to where it belongs Jan Kiszka
1 sibling, 3 replies; 22+ messages in thread
From: Glauber Costa @ 2009-05-06 14:49 UTC (permalink / raw)
To: qemu-devel; +Cc: aliguori
cpus other than the first one starting at the halted state
is a safe assumption to anyone. Move it to where it belongs.
Signed-off-by: Glauber Costa <glommer@redhat.com>
---
hw/pc.c | 2 --
target-i386/helper.c | 3 +++
2 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/hw/pc.c b/hw/pc.c
index b726c17..06d1fca 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -849,8 +849,6 @@ static void pc_init1(ram_addr_t ram_size, int vga_ram_size,
fprintf(stderr, "Unable to find x86 CPU definition\n");
exit(1);
}
- if (i != 0)
- env->halted = 1;
if (pci_enabled) {
apic_init(env);
}
diff --git a/target-i386/helper.c b/target-i386/helper.c
index 2c11cd3..a0d0273 100644
--- a/target-i386/helper.c
+++ b/target-i386/helper.c
@@ -1694,6 +1694,9 @@ CPUX86State *cpu_x86_init(const char *cpu_model)
cpu_x86_close(env);
return NULL;
}
+
+ /* cpu 0 can run, others start at halted state */
+ env->halted = !!env->cpu_index;
cpu_reset(env);
qemu_register_reset(main_cpu_reset, env);
--
1.5.6.6
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [Qemu-devel] [PATCH 4/4] move apic functions to a separate apic.h header
2009-05-06 14:49 ` [Qemu-devel] [PATCH 3/4] move halted state setting to inside of cpu_x86_init Glauber Costa
@ 2009-05-06 14:49 ` Glauber Costa
2009-05-06 15:52 ` [Qemu-devel] " Jan Kiszka
2009-05-06 15:45 ` [Qemu-devel] Re: [PATCH 3/4] move halted state setting to inside of cpu_x86_init Jan Kiszka
2009-05-06 19:31 ` [Qemu-devel] " Blue Swirl
2 siblings, 1 reply; 22+ messages in thread
From: Glauber Costa @ 2009-05-06 14:49 UTC (permalink / raw)
To: qemu-devel; +Cc: aliguori
Later on, we'll want to call an apic function from helper.c.
The inclusion of pc.h, besides totally ugly, leads to a lot of
clashes.
Signed-off-by: Glauber Costa <glommer@redhat.com>
---
hw/apic.c | 1 +
hw/apic.h | 19 +++++++++++++++++++
hw/ioapic.c | 1 +
hw/mc146818rtc.c | 1 +
hw/pc.c | 1 +
hw/pc.h | 15 ---------------
6 files changed, 23 insertions(+), 15 deletions(-)
create mode 100644 hw/apic.h
diff --git a/hw/apic.c b/hw/apic.c
index d63d74b..72dbe88 100644
--- a/hw/apic.c
+++ b/hw/apic.c
@@ -19,6 +19,7 @@
*/
#include "hw.h"
#include "pc.h"
+#include "apic.h"
#include "qemu-timer.h"
#include "host-utils.h"
diff --git a/hw/apic.h b/hw/apic.h
new file mode 100644
index 0000000..2437e9f
--- /dev/null
+++ b/hw/apic.h
@@ -0,0 +1,19 @@
+#ifndef _APIC_H_
+#define _APIC_H_
+
+/* APIC */
+typedef struct IOAPICState IOAPICState;
+void apic_deliver_irq(uint8_t dest, uint8_t dest_mode,
+ uint8_t delivery_mode,
+ uint8_t vector_num, uint8_t polarity,
+ uint8_t trigger_mode);
+int apic_init(CPUState *env);
+int apic_accept_pic_intr(CPUState *env);
+void apic_deliver_pic_intr(CPUState *env, int level);
+int apic_get_interrupt(CPUState *env);
+IOAPICState *ioapic_init(void);
+void ioapic_set_irq(void *opaque, int vector, int level);
+void apic_reset_irq_delivered(void);
+int apic_get_irq_delivered(void);
+
+#endif
diff --git a/hw/ioapic.c b/hw/ioapic.c
index 317c2c2..064f9ce 100644
--- a/hw/ioapic.c
+++ b/hw/ioapic.c
@@ -22,6 +22,7 @@
*/
#include "hw.h"
+#include "apic.h"
#include "pc.h"
#include "qemu-timer.h"
#include "host-utils.h"
diff --git a/hw/mc146818rtc.c b/hw/mc146818rtc.c
index 888b85a..b71624f 100644
--- a/hw/mc146818rtc.c
+++ b/hw/mc146818rtc.c
@@ -25,6 +25,7 @@
#include "qemu-timer.h"
#include "sysemu.h"
#include "pc.h"
+#include "apic.h"
#include "isa.h"
#include "hpet_emul.h"
diff --git a/hw/pc.c b/hw/pc.c
index 06d1fca..2035705 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -23,6 +23,7 @@
*/
#include "hw.h"
#include "pc.h"
+#include "apic.h"
#include "fdc.h"
#include "pci.h"
#include "block.h"
diff --git a/hw/pc.h b/hw/pc.h
index 50e6c39..417ff65 100644
--- a/hw/pc.h
+++ b/hw/pc.h
@@ -40,21 +40,6 @@ uint32_t pic_intack_read(PicState2 *s);
void pic_info(Monitor *mon);
void irq_info(Monitor *mon);
-/* APIC */
-typedef struct IOAPICState IOAPICState;
-void apic_deliver_irq(uint8_t dest, uint8_t dest_mode,
- uint8_t delivery_mode,
- uint8_t vector_num, uint8_t polarity,
- uint8_t trigger_mode);
-int apic_init(CPUState *env);
-int apic_accept_pic_intr(CPUState *env);
-void apic_deliver_pic_intr(CPUState *env, int level);
-int apic_get_interrupt(CPUState *env);
-IOAPICState *ioapic_init(void);
-void ioapic_set_irq(void *opaque, int vector, int level);
-void apic_reset_irq_delivered(void);
-int apic_get_irq_delivered(void);
-
/* i8254.c */
#define PIT_FREQ 1193182
--
1.5.6.6
^ permalink raw reply related [flat|nested] 22+ messages in thread
* [Qemu-devel] Re: [PATCH 2/4] move CPUID_APIC flag to where it belongs
2009-05-06 14:49 ` [Qemu-devel] [PATCH 2/4] move CPUID_APIC flag to where it belongs Glauber Costa
2009-05-06 14:49 ` [Qemu-devel] [PATCH 3/4] move halted state setting to inside of cpu_x86_init Glauber Costa
@ 2009-05-06 15:40 ` Jan Kiszka
2009-05-06 15:51 ` Glauber Costa
1 sibling, 1 reply; 22+ messages in thread
From: Jan Kiszka @ 2009-05-06 15:40 UTC (permalink / raw)
To: Glauber Costa; +Cc: aliguori, qemu-devel
Glauber Costa wrote:
> We can safely do that inconditionally, so move to processor defined
> flags like any other flag.
>
> Signed-off-by: Glauber Costa <glommer@redhat.com>
> ---
> hw/pc.c | 4 ----
> target-i386/helper.c | 2 +-
> 2 files changed, 1 insertions(+), 5 deletions(-)
>
> diff --git a/hw/pc.c b/hw/pc.c
> index 351de83..b726c17 100644
> --- a/hw/pc.c
> +++ b/hw/pc.c
> @@ -851,10 +851,6 @@ static void pc_init1(ram_addr_t ram_size, int vga_ram_size,
> }
> if (i != 0)
> env->halted = 1;
> - if (smp_cpus > 1) {
> - /* XXX: enable it in all cases */
> - env->cpuid_features |= CPUID_APIC;
> - }
> if (pci_enabled) {
> apic_init(env);
> }
> diff --git a/target-i386/helper.c b/target-i386/helper.c
> index 2210412..2c11cd3 100644
> --- a/target-i386/helper.c
> +++ b/target-i386/helper.c
> @@ -102,7 +102,7 @@ typedef struct x86_def_t {
> char model_id[48];
> } x86_def_t;
>
> -#define I486_FEATURES (CPUID_FP87 | CPUID_VME | CPUID_PSE)
> +#define I486_FEATURES (CPUID_FP87 | CPUID_VME | CPUID_PSE | CPUID_APIC)
Without doing my homework:
What impact will it have on an emulated CPUs without [L]APIC? I'm
thinking of -M isapc e.g.
Jan
--
Siemens AG, Corporate Technology, CT SE 2
Corporate Competence Center Embedded Linux
^ permalink raw reply [flat|nested] 22+ messages in thread
* [Qemu-devel] Re: [PATCH 3/4] move halted state setting to inside of cpu_x86_init
2009-05-06 14:49 ` [Qemu-devel] [PATCH 3/4] move halted state setting to inside of cpu_x86_init Glauber Costa
2009-05-06 14:49 ` [Qemu-devel] [PATCH 4/4] move apic functions to a separate apic.h header Glauber Costa
@ 2009-05-06 15:45 ` Jan Kiszka
2009-05-06 19:31 ` [Qemu-devel] " Blue Swirl
2 siblings, 0 replies; 22+ messages in thread
From: Jan Kiszka @ 2009-05-06 15:45 UTC (permalink / raw)
To: Glauber Costa; +Cc: aliguori, qemu-devel
Glauber Costa wrote:
> cpus other than the first one starting at the halted state
> is a safe assumption to anyone. Move it to where it belongs.
>
> Signed-off-by: Glauber Costa <glommer@redhat.com>
> ---
> hw/pc.c | 2 --
> target-i386/helper.c | 3 +++
> 2 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/hw/pc.c b/hw/pc.c
> index b726c17..06d1fca 100644
> --- a/hw/pc.c
> +++ b/hw/pc.c
> @@ -849,8 +849,6 @@ static void pc_init1(ram_addr_t ram_size, int vga_ram_size,
> fprintf(stderr, "Unable to find x86 CPU definition\n");
> exit(1);
> }
> - if (i != 0)
> - env->halted = 1;
> if (pci_enabled) {
> apic_init(env);
> }
> diff --git a/target-i386/helper.c b/target-i386/helper.c
> index 2c11cd3..a0d0273 100644
> --- a/target-i386/helper.c
> +++ b/target-i386/helper.c
> @@ -1694,6 +1694,9 @@ CPUX86State *cpu_x86_init(const char *cpu_model)
> cpu_x86_close(env);
> return NULL;
> }
> +
> + /* cpu 0 can run, others start at halted state */
> + env->halted = !!env->cpu_index;
> cpu_reset(env);
> qemu_register_reset(main_cpu_reset, env);
>
That looks good to me.
Jan
--
Siemens AG, Corporate Technology, CT SE 2
Corporate Competence Center Embedded Linux
^ permalink raw reply [flat|nested] 22+ messages in thread
* [Qemu-devel] Re: [PATCH 2/4] move CPUID_APIC flag to where it belongs
2009-05-06 15:40 ` [Qemu-devel] Re: [PATCH 2/4] move CPUID_APIC flag to where it belongs Jan Kiszka
@ 2009-05-06 15:51 ` Glauber Costa
2009-05-06 17:29 ` Stanislav
0 siblings, 1 reply; 22+ messages in thread
From: Glauber Costa @ 2009-05-06 15:51 UTC (permalink / raw)
To: Jan Kiszka; +Cc: aliguori, qemu-devel
On Wed, May 06, 2009 at 05:40:40PM +0200, Jan Kiszka wrote:
> Glauber Costa wrote:
> > We can safely do that inconditionally, so move to processor defined
> > flags like any other flag.
> >
> > Signed-off-by: Glauber Costa <glommer@redhat.com>
> > ---
> > hw/pc.c | 4 ----
> > target-i386/helper.c | 2 +-
> > 2 files changed, 1 insertions(+), 5 deletions(-)
> >
> > diff --git a/hw/pc.c b/hw/pc.c
> > index 351de83..b726c17 100644
> > --- a/hw/pc.c
> > +++ b/hw/pc.c
> > @@ -851,10 +851,6 @@ static void pc_init1(ram_addr_t ram_size, int vga_ram_size,
> > }
> > if (i != 0)
> > env->halted = 1;
> > - if (smp_cpus > 1) {
> > - /* XXX: enable it in all cases */
> > - env->cpuid_features |= CPUID_APIC;
> > - }
> > if (pci_enabled) {
> > apic_init(env);
> > }
> > diff --git a/target-i386/helper.c b/target-i386/helper.c
> > index 2210412..2c11cd3 100644
> > --- a/target-i386/helper.c
> > +++ b/target-i386/helper.c
> > @@ -102,7 +102,7 @@ typedef struct x86_def_t {
> > char model_id[48];
> > } x86_def_t;
> >
> > -#define I486_FEATURES (CPUID_FP87 | CPUID_VME | CPUID_PSE)
> > +#define I486_FEATURES (CPUID_FP87 | CPUID_VME | CPUID_PSE | CPUID_APIC)
>
> Without doing my homework:
> What impact will it have on an emulated CPUs without [L]APIC? I'm
> thinking of -M isapc e.g.
I tried, and it still boots fine.
The flag just indicates it supports an apic, not that it has one.
^ permalink raw reply [flat|nested] 22+ messages in thread
* [Qemu-devel] Re: [PATCH 4/4] move apic functions to a separate apic.h header
2009-05-06 14:49 ` [Qemu-devel] [PATCH 4/4] move apic functions to a separate apic.h header Glauber Costa
@ 2009-05-06 15:52 ` Jan Kiszka
2009-05-06 16:08 ` Glauber Costa
0 siblings, 1 reply; 22+ messages in thread
From: Jan Kiszka @ 2009-05-06 15:52 UTC (permalink / raw)
To: Glauber Costa; +Cc: aliguori, qemu-devel
Glauber Costa wrote:
> Later on, we'll want to call an apic function from helper.c.
> The inclusion of pc.h, besides totally ugly, leads to a lot of
> clashes.
>
> Signed-off-by: Glauber Costa <glommer@redhat.com>
> ---
> hw/apic.c | 1 +
> hw/apic.h | 19 +++++++++++++++++++
> hw/ioapic.c | 1 +
> hw/mc146818rtc.c | 1 +
> hw/pc.c | 1 +
> hw/pc.h | 15 ---------------
> 6 files changed, 23 insertions(+), 15 deletions(-)
> create mode 100644 hw/apic.h
>
> diff --git a/hw/apic.c b/hw/apic.c
> index d63d74b..72dbe88 100644
> --- a/hw/apic.c
> +++ b/hw/apic.c
> @@ -19,6 +19,7 @@
> */
> #include "hw.h"
> #include "pc.h"
> +#include "apic.h"
Does it still need pc.h then?
> #include "qemu-timer.h"
> #include "host-utils.h"
>
> diff --git a/hw/apic.h b/hw/apic.h
> new file mode 100644
> index 0000000..2437e9f
> --- /dev/null
> +++ b/hw/apic.h
> @@ -0,0 +1,19 @@
> +#ifndef _APIC_H_
> +#define _APIC_H_
"APIC_H", otherwise fine.
> +
> +/* APIC */
> +typedef struct IOAPICState IOAPICState;
> +void apic_deliver_irq(uint8_t dest, uint8_t dest_mode,
> + uint8_t delivery_mode,
> + uint8_t vector_num, uint8_t polarity,
> + uint8_t trigger_mode);
> +int apic_init(CPUState *env);
> +int apic_accept_pic_intr(CPUState *env);
> +void apic_deliver_pic_intr(CPUState *env, int level);
> +int apic_get_interrupt(CPUState *env);
> +IOAPICState *ioapic_init(void);
> +void ioapic_set_irq(void *opaque, int vector, int level);
> +void apic_reset_irq_delivered(void);
> +int apic_get_irq_delivered(void);
> +
> +#endif
> diff --git a/hw/ioapic.c b/hw/ioapic.c
> index 317c2c2..064f9ce 100644
> --- a/hw/ioapic.c
> +++ b/hw/ioapic.c
> @@ -22,6 +22,7 @@
> */
>
> #include "hw.h"
> +#include "apic.h"
> #include "pc.h"
> #include "qemu-timer.h"
> #include "host-utils.h"
> diff --git a/hw/mc146818rtc.c b/hw/mc146818rtc.c
> index 888b85a..b71624f 100644
> --- a/hw/mc146818rtc.c
> +++ b/hw/mc146818rtc.c
> @@ -25,6 +25,7 @@
> #include "qemu-timer.h"
> #include "sysemu.h"
> #include "pc.h"
> +#include "apic.h"
> #include "isa.h"
> #include "hpet_emul.h"
>
> diff --git a/hw/pc.c b/hw/pc.c
> index 06d1fca..2035705 100644
> --- a/hw/pc.c
> +++ b/hw/pc.c
> @@ -23,6 +23,7 @@
> */
> #include "hw.h"
> #include "pc.h"
> +#include "apic.h"
> #include "fdc.h"
> #include "pci.h"
> #include "block.h"
> diff --git a/hw/pc.h b/hw/pc.h
> index 50e6c39..417ff65 100644
> --- a/hw/pc.h
> +++ b/hw/pc.h
> @@ -40,21 +40,6 @@ uint32_t pic_intack_read(PicState2 *s);
> void pic_info(Monitor *mon);
> void irq_info(Monitor *mon);
>
> -/* APIC */
> -typedef struct IOAPICState IOAPICState;
> -void apic_deliver_irq(uint8_t dest, uint8_t dest_mode,
> - uint8_t delivery_mode,
> - uint8_t vector_num, uint8_t polarity,
> - uint8_t trigger_mode);
> -int apic_init(CPUState *env);
> -int apic_accept_pic_intr(CPUState *env);
> -void apic_deliver_pic_intr(CPUState *env, int level);
> -int apic_get_interrupt(CPUState *env);
> -IOAPICState *ioapic_init(void);
> -void ioapic_set_irq(void *opaque, int vector, int level);
> -void apic_reset_irq_delivered(void);
> -int apic_get_irq_delivered(void);
> -
> /* i8254.c */
>
> #define PIT_FREQ 1193182
Jan
--
Siemens AG, Corporate Technology, CT SE 2
Corporate Competence Center Embedded Linux
^ permalink raw reply [flat|nested] 22+ messages in thread
* [Qemu-devel] Re: [PATCH 4/4] move apic functions to a separate apic.h header
2009-05-06 15:52 ` [Qemu-devel] " Jan Kiszka
@ 2009-05-06 16:08 ` Glauber Costa
0 siblings, 0 replies; 22+ messages in thread
From: Glauber Costa @ 2009-05-06 16:08 UTC (permalink / raw)
To: Jan Kiszka; +Cc: aliguori, qemu-devel
On Wed, May 06, 2009 at 05:52:04PM +0200, Jan Kiszka wrote:
> Glauber Costa wrote:
> > Later on, we'll want to call an apic function from helper.c.
> > The inclusion of pc.h, besides totally ugly, leads to a lot of
> > clashes.
> >
> > Signed-off-by: Glauber Costa <glommer@redhat.com>
> > ---
> > hw/apic.c | 1 +
> > hw/apic.h | 19 +++++++++++++++++++
> > hw/ioapic.c | 1 +
> > hw/mc146818rtc.c | 1 +
> > hw/pc.c | 1 +
> > hw/pc.h | 15 ---------------
> > 6 files changed, 23 insertions(+), 15 deletions(-)
> > create mode 100644 hw/apic.h
> >
> > diff --git a/hw/apic.c b/hw/apic.c
> > index d63d74b..72dbe88 100644
> > --- a/hw/apic.c
> > +++ b/hw/apic.c
> > @@ -19,6 +19,7 @@
> > */
> > #include "hw.h"
> > #include "pc.h"
> > +#include "apic.h"
>
> Does it still need pc.h then?
yes. For things like RTCState.
>
> > #include "qemu-timer.h"
> > #include "host-utils.h"
> >
> > diff --git a/hw/apic.h b/hw/apic.h
> > new file mode 100644
> > index 0000000..2437e9f
> > --- /dev/null
> > +++ b/hw/apic.h
> > @@ -0,0 +1,19 @@
> > +#ifndef _APIC_H_
> > +#define _APIC_H_
>
> "APIC_H", otherwise fine.
ok.
^ permalink raw reply [flat|nested] 22+ messages in thread
* [Qemu-devel] Re: [PATCH 1/4] move registering of cpu_reset to inside cpu_init
2009-05-06 14:49 ` [Qemu-devel] [PATCH 1/4] move registering of cpu_reset to inside cpu_init Glauber Costa
2009-05-06 14:49 ` [Qemu-devel] [PATCH 2/4] move CPUID_APIC flag to where it belongs Glauber Costa
@ 2009-05-06 17:02 ` Jan Kiszka
2009-05-06 19:36 ` [Qemu-devel] " Blue Swirl
2 siblings, 0 replies; 22+ messages in thread
From: Jan Kiszka @ 2009-05-06 17:02 UTC (permalink / raw)
To: Glauber Costa; +Cc: aliguori, qemu-devel
Glauber Costa wrote:
> This is not pc specific by any means. So we can be
> moved to inside cpu_x86_init().
>
> This is part of an attempt to only initialize kvm state
> after everything is already properly initialized. If we don't
> do that, we can race against, for example, APIC state if kvm vcpus
> are ran in threads (happens in qemu-kvm.git, soon to happen here too)
>
> Signed-off-by: Glauber Costa <glommer@redhat.com>
> ---
> hw/pc.c | 7 -------
> target-i386/helper.c | 8 ++++++++
> 2 files changed, 8 insertions(+), 7 deletions(-)
>
> diff --git a/hw/pc.c b/hw/pc.c
> index 61f6e7b..351de83 100644
> --- a/hw/pc.c
> +++ b/hw/pc.c
> @@ -725,12 +725,6 @@ static void load_linux(target_phys_addr_t option_rom,
> generate_bootsect(option_rom, gpr, seg, 0);
> }
>
> -static void main_cpu_reset(void *opaque)
> -{
> - CPUState *env = opaque;
> - cpu_reset(env);
> -}
> -
> static const int ide_iobase[2] = { 0x1f0, 0x170 };
> static const int ide_iobase2[2] = { 0x3f6, 0x376 };
> static const int ide_irq[2] = { 14, 15 };
> @@ -861,7 +855,6 @@ static void pc_init1(ram_addr_t ram_size, int vga_ram_size,
> /* XXX: enable it in all cases */
> env->cpuid_features |= CPUID_APIC;
> }
> - qemu_register_reset(main_cpu_reset, env);
> if (pci_enabled) {
> apic_init(env);
> }
> diff --git a/target-i386/helper.c b/target-i386/helper.c
> index a070e08..2210412 100644
> --- a/target-i386/helper.c
> +++ b/target-i386/helper.c
> @@ -29,6 +29,7 @@
> #include "exec-all.h"
> #include "qemu-common.h"
> #include "kvm.h"
> +#include "hw/hw.h"
>
> //#define DEBUG_MMU
>
> @@ -507,6 +508,11 @@ void cpu_reset(CPUX86State *env)
> cpu_watchpoint_remove_all(env, BP_CPU);
> }
>
> +static void main_cpu_reset(void *_env)
> +{
> + cpu_reset((CPUState *)_env);
> +}
> +
> void cpu_x86_close(CPUX86State *env)
> {
> qemu_free(env);
> @@ -1689,6 +1695,8 @@ CPUX86State *cpu_x86_init(const char *cpu_model)
> return NULL;
> }
> cpu_reset(env);
> + qemu_register_reset(main_cpu_reset, env);
> +
> #ifdef CONFIG_KQEMU
> kqemu_init(env);
> #endif
After digging through the dependencies of apic and cpu again, this looks
safe (it reorders reset execution, but that should have no side effect).
Jan
--
Siemens AG, Corporate Technology, CT SE 2
Corporate Competence Center Embedded Linux
^ permalink raw reply [flat|nested] 22+ messages in thread
* RE: [Qemu-devel] Re: [PATCH 2/4] move CPUID_APIC flag to where it belongs
2009-05-06 15:51 ` Glauber Costa
@ 2009-05-06 17:29 ` Stanislav
2009-05-06 17:41 ` Glauber Costa
2009-05-06 18:17 ` Anthony Liguori
0 siblings, 2 replies; 22+ messages in thread
From: Stanislav @ 2009-05-06 17:29 UTC (permalink / raw)
To: 'Glauber Costa', 'Jan Kiszka'; +Cc: aliguori, qemu-devel
If OS boot fine its more luck. The flag indicates presence of local apic,
not "if it is supported".
For example when lapic is globally disabled (i.e. not present) CPUID flag is
cleared off as well.
But CPU is still supports lapic, after reset it will be back.
Stanislav
> Without doing my homework:
> What impact will it have on an emulated CPUs without [L]APIC? I'm
> thinking of -M isapc e.g.
>I tried, and it still boots fine.
>The flag just indicates it supports an apic, not that it has one.
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] Re: [PATCH 2/4] move CPUID_APIC flag to where it belongs
2009-05-06 17:29 ` Stanislav
@ 2009-05-06 17:41 ` Glauber Costa
2009-05-06 17:43 ` Stanislav
2009-05-06 18:17 ` Anthony Liguori
1 sibling, 1 reply; 22+ messages in thread
From: Glauber Costa @ 2009-05-06 17:41 UTC (permalink / raw)
To: Stanislav; +Cc: 'Jan Kiszka', aliguori, qemu-devel
On Wed, May 06, 2009 at 08:29:23PM +0300, Stanislav wrote:
> If OS boot fine its more luck. The flag indicates presence of local apic,
> not "if it is supported".
> For example when lapic is globally disabled (i.e. not present) CPUID flag is
> cleared off as well.
> But CPU is still supports lapic, after reset it will be back.
What if we take out a cpu that supports lapic, and is connected to an apic system,
and connects it to a board that has no apic?
Also, note that in the old code, it was set regardless of the existance of an APIC
anyway. The only dependancy was on smp_cpus > 1.
^ permalink raw reply [flat|nested] 22+ messages in thread
* RE: [Qemu-devel] Re: [PATCH 2/4] move CPUID_APIC flag to where it belongs
2009-05-06 17:41 ` Glauber Costa
@ 2009-05-06 17:43 ` Stanislav
0 siblings, 0 replies; 22+ messages in thread
From: Stanislav @ 2009-05-06 17:43 UTC (permalink / raw)
To: 'Glauber Costa'; +Cc: 'Jan Kiszka', aliguori, qemu-devel
Local apic and i/o apic are not really related.
Local apic is actually a cpu feature, not optional external peripheral.
I/O apic is external hardware on board and if you don't have it - you can't
program your interrupts that much.
I am not telling if a patch is wrong/better than it was before - just want
to point out how it really works.
Stanislav
-----Original Message-----
From: Glauber Costa [mailto:glommer@redhat.com]
Sent: Wednesday, May 06, 2009 8:42 PM
To: Stanislav
Cc: 'Jan Kiszka'; aliguori@us.ibm.com; qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] Re: [PATCH 2/4] move CPUID_APIC flag to where it
belongs
On Wed, May 06, 2009 at 08:29:23PM +0300, Stanislav wrote:
> If OS boot fine its more luck. The flag indicates presence of local apic,
> not "if it is supported".
> For example when lapic is globally disabled (i.e. not present) CPUID flag
is
> cleared off as well.
> But CPU is still supports lapic, after reset it will be back.
What if we take out a cpu that supports lapic, and is connected to an apic
system,
and connects it to a board that has no apic?
Also, note that in the old code, it was set regardless of the existance of
an APIC
anyway. The only dependancy was on smp_cpus > 1.
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] Re: [PATCH 2/4] move CPUID_APIC flag to where it belongs
2009-05-06 17:29 ` Stanislav
2009-05-06 17:41 ` Glauber Costa
@ 2009-05-06 18:17 ` Anthony Liguori
1 sibling, 0 replies; 22+ messages in thread
From: Anthony Liguori @ 2009-05-06 18:17 UTC (permalink / raw)
To: Stanislav
Cc: 'Jan Kiszka', 'Glauber Costa', aliguori,
qemu-devel
Stanislav wrote:
> If OS boot fine its more luck. The flag indicates presence of local apic,
> not "if it is supported".
>
But having a local apic present in an isapc should not cause any
problems as it's backwards compatible with the pic.
But yeah, there really isn't a "is supported" flag. It's either there
or it's not.
Regards,
Anthony Liguori
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH 3/4] move halted state setting to inside of cpu_x86_init
2009-05-06 14:49 ` [Qemu-devel] [PATCH 3/4] move halted state setting to inside of cpu_x86_init Glauber Costa
2009-05-06 14:49 ` [Qemu-devel] [PATCH 4/4] move apic functions to a separate apic.h header Glauber Costa
2009-05-06 15:45 ` [Qemu-devel] Re: [PATCH 3/4] move halted state setting to inside of cpu_x86_init Jan Kiszka
@ 2009-05-06 19:31 ` Blue Swirl
2009-05-06 21:42 ` Glauber Costa
2 siblings, 1 reply; 22+ messages in thread
From: Blue Swirl @ 2009-05-06 19:31 UTC (permalink / raw)
To: Glauber Costa; +Cc: aliguori, qemu-devel
On 5/6/09, Glauber Costa <glommer@redhat.com> wrote:
> cpus other than the first one starting at the halted state
> is a safe assumption to anyone. Move it to where it belongs.
The code should be conditional to !CONFIG_USER_ONLY.
The same happens with Sparc, so I'd move this to exec.c:cpu_exec_init().
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH 1/4] move registering of cpu_reset to inside cpu_init
2009-05-06 14:49 ` [Qemu-devel] [PATCH 1/4] move registering of cpu_reset to inside cpu_init Glauber Costa
2009-05-06 14:49 ` [Qemu-devel] [PATCH 2/4] move CPUID_APIC flag to where it belongs Glauber Costa
2009-05-06 17:02 ` [Qemu-devel] Re: [PATCH 1/4] move registering of cpu_reset to inside cpu_init Jan Kiszka
@ 2009-05-06 19:36 ` Blue Swirl
2009-05-06 21:45 ` Glauber Costa
2 siblings, 1 reply; 22+ messages in thread
From: Blue Swirl @ 2009-05-06 19:36 UTC (permalink / raw)
To: Glauber Costa; +Cc: aliguori, qemu-devel
On 5/6/09, Glauber Costa <glommer@redhat.com> wrote:
> This is not pc specific by any means. So we can be
> moved to inside cpu_x86_init().
>
> This is part of an attempt to only initialize kvm state
> after everything is already properly initialized. If we don't
> do that, we can race against, for example, APIC state if kvm vcpus
> are ran in threads (happens in qemu-kvm.git, soon to happen here too)
I'd move this too to exec.c. Sparc registers two reset functions, the
first one for the main cpu disables halted state, the second one for
non-boot cpus halts them on reset. I wonder why i386 does not do the
same.
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH 3/4] move halted state setting to inside of cpu_x86_init
2009-05-06 19:31 ` [Qemu-devel] " Blue Swirl
@ 2009-05-06 21:42 ` Glauber Costa
0 siblings, 0 replies; 22+ messages in thread
From: Glauber Costa @ 2009-05-06 21:42 UTC (permalink / raw)
To: Blue Swirl; +Cc: aliguori, qemu-devel
On Wed, May 06, 2009 at 10:31:15PM +0300, Blue Swirl wrote:
> On 5/6/09, Glauber Costa <glommer@redhat.com> wrote:
> > cpus other than the first one starting at the halted state
> > is a safe assumption to anyone. Move it to where it belongs.
>
> The code should be conditional to !CONFIG_USER_ONLY.
Fine.
>
> The same happens with Sparc, so I'd move this to exec.c:cpu_exec_init().
It would be indeed, better.
Anyone from other arches opposes to this?
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH 1/4] move registering of cpu_reset to inside cpu_init
2009-05-06 19:36 ` [Qemu-devel] " Blue Swirl
@ 2009-05-06 21:45 ` Glauber Costa
0 siblings, 0 replies; 22+ messages in thread
From: Glauber Costa @ 2009-05-06 21:45 UTC (permalink / raw)
To: Blue Swirl; +Cc: aliguori, qemu-devel
On Wed, May 06, 2009 at 10:36:16PM +0300, Blue Swirl wrote:
> On 5/6/09, Glauber Costa <glommer@redhat.com> wrote:
> > This is not pc specific by any means. So we can be
> > moved to inside cpu_x86_init().
> >
> > This is part of an attempt to only initialize kvm state
> > after everything is already properly initialized. If we don't
> > do that, we can race against, for example, APIC state if kvm vcpus
> > are ran in threads (happens in qemu-kvm.git, soon to happen here too)
>
> I'd move this too to exec.c. Sparc registers two reset functions, the
> first one for the main cpu disables halted state, the second one for
> non-boot cpus halts them on reset. I wonder why i386 does not do the
> same.
Probably because we were halting the cpu separatedly.
Btw, after looking again, cpu_reset looks like an even better place
to hold the halted change.
^ permalink raw reply [flat|nested] 22+ messages in thread
* [Qemu-devel] [PATCH 4/4] move apic functions to a separate apic.h header
2009-05-07 18:51 ` [Qemu-devel] [PATCH 3/4] move halted state setting to inside of cpu_x86_init Glauber Costa
@ 2009-05-07 18:51 ` Glauber Costa
2009-05-07 19:12 ` malc
0 siblings, 1 reply; 22+ messages in thread
From: Glauber Costa @ 2009-05-07 18:51 UTC (permalink / raw)
To: qemu-devel; +Cc: aliguori
Later on, we'll want to call an apic function from helper.c.
The inclusion of pc.h, besides totally ugly, leads to a lot of
clashes.
Signed-off-by: Glauber Costa <glommer@redhat.com>
---
hw/apic.c | 1 +
hw/apic.h | 19 +++++++++++++++++++
hw/ioapic.c | 1 +
hw/mc146818rtc.c | 1 +
hw/pc.c | 1 +
hw/pc.h | 15 ---------------
6 files changed, 23 insertions(+), 15 deletions(-)
create mode 100644 hw/apic.h
diff --git a/hw/apic.c b/hw/apic.c
index d63d74b..72dbe88 100644
--- a/hw/apic.c
+++ b/hw/apic.c
@@ -19,6 +19,7 @@
*/
#include "hw.h"
#include "pc.h"
+#include "apic.h"
#include "qemu-timer.h"
#include "host-utils.h"
diff --git a/hw/apic.h b/hw/apic.h
new file mode 100644
index 0000000..2437e9f
--- /dev/null
+++ b/hw/apic.h
@@ -0,0 +1,19 @@
+#ifndef _APIC_H_
+#define _APIC_H_
+
+/* APIC */
+typedef struct IOAPICState IOAPICState;
+void apic_deliver_irq(uint8_t dest, uint8_t dest_mode,
+ uint8_t delivery_mode,
+ uint8_t vector_num, uint8_t polarity,
+ uint8_t trigger_mode);
+int apic_init(CPUState *env);
+int apic_accept_pic_intr(CPUState *env);
+void apic_deliver_pic_intr(CPUState *env, int level);
+int apic_get_interrupt(CPUState *env);
+IOAPICState *ioapic_init(void);
+void ioapic_set_irq(void *opaque, int vector, int level);
+void apic_reset_irq_delivered(void);
+int apic_get_irq_delivered(void);
+
+#endif
diff --git a/hw/ioapic.c b/hw/ioapic.c
index 317c2c2..064f9ce 100644
--- a/hw/ioapic.c
+++ b/hw/ioapic.c
@@ -22,6 +22,7 @@
*/
#include "hw.h"
+#include "apic.h"
#include "pc.h"
#include "qemu-timer.h"
#include "host-utils.h"
diff --git a/hw/mc146818rtc.c b/hw/mc146818rtc.c
index 888b85a..b71624f 100644
--- a/hw/mc146818rtc.c
+++ b/hw/mc146818rtc.c
@@ -25,6 +25,7 @@
#include "qemu-timer.h"
#include "sysemu.h"
#include "pc.h"
+#include "apic.h"
#include "isa.h"
#include "hpet_emul.h"
diff --git a/hw/pc.c b/hw/pc.c
index 06d1fca..2035705 100644
--- a/hw/pc.c
+++ b/hw/pc.c
@@ -23,6 +23,7 @@
*/
#include "hw.h"
#include "pc.h"
+#include "apic.h"
#include "fdc.h"
#include "pci.h"
#include "block.h"
diff --git a/hw/pc.h b/hw/pc.h
index 50e6c39..417ff65 100644
--- a/hw/pc.h
+++ b/hw/pc.h
@@ -40,21 +40,6 @@ uint32_t pic_intack_read(PicState2 *s);
void pic_info(Monitor *mon);
void irq_info(Monitor *mon);
-/* APIC */
-typedef struct IOAPICState IOAPICState;
-void apic_deliver_irq(uint8_t dest, uint8_t dest_mode,
- uint8_t delivery_mode,
- uint8_t vector_num, uint8_t polarity,
- uint8_t trigger_mode);
-int apic_init(CPUState *env);
-int apic_accept_pic_intr(CPUState *env);
-void apic_deliver_pic_intr(CPUState *env, int level);
-int apic_get_interrupt(CPUState *env);
-IOAPICState *ioapic_init(void);
-void ioapic_set_irq(void *opaque, int vector, int level);
-void apic_reset_irq_delivered(void);
-int apic_get_irq_delivered(void);
-
/* i8254.c */
#define PIT_FREQ 1193182
--
1.5.6.6
^ permalink raw reply related [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH 4/4] move apic functions to a separate apic.h header
2009-05-07 18:51 ` [Qemu-devel] [PATCH 4/4] move apic functions to a separate apic.h header Glauber Costa
@ 2009-05-07 19:12 ` malc
2009-05-07 19:22 ` Glauber Costa
0 siblings, 1 reply; 22+ messages in thread
From: malc @ 2009-05-07 19:12 UTC (permalink / raw)
To: Glauber Costa; +Cc: aliguori, qemu-devel
On Thu, 7 May 2009, Glauber Costa wrote:
> Later on, we'll want to call an apic function from helper.c.
> The inclusion of pc.h, besides totally ugly, leads to a lot of
> clashes.
[..snip..]
> +#ifndef _APIC_H_
> +#define _APIC_H_
Looks like you forgot to fix that.
[..snip..]
--
mailto:av1474@comtv.ru
^ permalink raw reply [flat|nested] 22+ messages in thread
* Re: [Qemu-devel] [PATCH 4/4] move apic functions to a separate apic.h header
2009-05-07 19:12 ` malc
@ 2009-05-07 19:22 ` Glauber Costa
0 siblings, 0 replies; 22+ messages in thread
From: Glauber Costa @ 2009-05-07 19:22 UTC (permalink / raw)
To: malc; +Cc: aliguori, qemu-devel
On Thu, May 07, 2009 at 11:12:17PM +0400, malc wrote:
> On Thu, 7 May 2009, Glauber Costa wrote:
>
> > Later on, we'll want to call an apic function from helper.c.
> > The inclusion of pc.h, besides totally ugly, leads to a lot of
> > clashes.
>
> [..snip..]
>
> > +#ifndef _APIC_H_
> > +#define _APIC_H_
>
> Looks like you forgot to fix that.
ughhh
you're right.
Anthony, mind committing the other patches? (if they are okay?)
I can then send just this one, to avoid confusion
^ permalink raw reply [flat|nested] 22+ messages in thread
end of thread, other threads:[~2009-05-07 19:18 UTC | newest]
Thread overview: 22+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-05-06 14:49 [Qemu-devel] [PATCH 0/4] Simplify cpu initialization Glauber Costa
2009-05-06 14:49 ` [Qemu-devel] [PATCH 1/4] move registering of cpu_reset to inside cpu_init Glauber Costa
2009-05-06 14:49 ` [Qemu-devel] [PATCH 2/4] move CPUID_APIC flag to where it belongs Glauber Costa
2009-05-06 14:49 ` [Qemu-devel] [PATCH 3/4] move halted state setting to inside of cpu_x86_init Glauber Costa
2009-05-06 14:49 ` [Qemu-devel] [PATCH 4/4] move apic functions to a separate apic.h header Glauber Costa
2009-05-06 15:52 ` [Qemu-devel] " Jan Kiszka
2009-05-06 16:08 ` Glauber Costa
2009-05-06 15:45 ` [Qemu-devel] Re: [PATCH 3/4] move halted state setting to inside of cpu_x86_init Jan Kiszka
2009-05-06 19:31 ` [Qemu-devel] " Blue Swirl
2009-05-06 21:42 ` Glauber Costa
2009-05-06 15:40 ` [Qemu-devel] Re: [PATCH 2/4] move CPUID_APIC flag to where it belongs Jan Kiszka
2009-05-06 15:51 ` Glauber Costa
2009-05-06 17:29 ` Stanislav
2009-05-06 17:41 ` Glauber Costa
2009-05-06 17:43 ` Stanislav
2009-05-06 18:17 ` Anthony Liguori
2009-05-06 17:02 ` [Qemu-devel] Re: [PATCH 1/4] move registering of cpu_reset to inside cpu_init Jan Kiszka
2009-05-06 19:36 ` [Qemu-devel] " Blue Swirl
2009-05-06 21:45 ` Glauber Costa
-- strict thread matches above, loose matches on Subject: below --
2009-05-07 18:50 [Qemu-devel] [PATCH 0/4] Simplify cpu_init Glauber Costa
2009-05-07 18:51 ` [Qemu-devel] [PATCH 1/4] move registering of cpu_reset to inside cpu_init Glauber Costa
2009-05-07 18:51 ` [Qemu-devel] [PATCH 2/4] move CPUID_APIC flag to where it belongs Glauber Costa
2009-05-07 18:51 ` [Qemu-devel] [PATCH 3/4] move halted state setting to inside of cpu_x86_init Glauber Costa
2009-05-07 18:51 ` [Qemu-devel] [PATCH 4/4] move apic functions to a separate apic.h header Glauber Costa
2009-05-07 19:12 ` malc
2009-05-07 19:22 ` Glauber Costa
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).