* [Qemu-devel] [PATCH v2] Apic creation should not depend on pci @ 2009-06-08 12:59 Gleb Natapov 2009-06-08 14:03 ` [Qemu-devel] " Jan Kiszka 0 siblings, 1 reply; 6+ messages in thread From: Gleb Natapov @ 2009-06-08 12:59 UTC (permalink / raw) To: qemu-devel It should depend on whether cpu has APIC. Signed-off-by: Gleb Natapov <gleb@redhat.com> diff --git a/hw/pc.c b/hw/pc.c index 0934778..cb49772 100644 --- a/hw/pc.c +++ b/hw/pc.c @@ -878,14 +878,10 @@ static void pc_init1(ram_addr_t ram_size, } if (i != 0) env->halted = 1; - if (smp_cpus > 1) { - /* XXX: enable it in all cases */ - env->cpuid_features |= CPUID_APIC; - } - qemu_register_reset(main_cpu_reset, 0, env); - if (pci_enabled) { + if ((env->cpuid_features & CPUID_APIC) || smp_cpus > 1) { apic_init(env); } + qemu_register_reset(main_cpu_reset, 0, env); } vmport_init(); -- Gleb. ^ permalink raw reply related [flat|nested] 6+ messages in thread
* [Qemu-devel] Re: [PATCH v2] Apic creation should not depend on pci 2009-06-08 12:59 [Qemu-devel] [PATCH v2] Apic creation should not depend on pci Gleb Natapov @ 2009-06-08 14:03 ` Jan Kiszka 2009-06-08 14:06 ` Gleb Natapov 2009-06-09 8:14 ` Gleb Natapov 0 siblings, 2 replies; 6+ messages in thread From: Jan Kiszka @ 2009-06-08 14:03 UTC (permalink / raw) To: Gleb Natapov; +Cc: qemu-devel Gleb Natapov wrote: > > It should depend on whether cpu has APIC. > > Signed-off-by: Gleb Natapov <gleb@redhat.com> > diff --git a/hw/pc.c b/hw/pc.c > index 0934778..cb49772 100644 > --- a/hw/pc.c > +++ b/hw/pc.c > @@ -878,14 +878,10 @@ static void pc_init1(ram_addr_t ram_size, > } > if (i != 0) > env->halted = 1; > - if (smp_cpus > 1) { > - /* XXX: enable it in all cases */ > - env->cpuid_features |= CPUID_APIC; > - } > - qemu_register_reset(main_cpu_reset, 0, env); > - if (pci_enabled) { > + if ((env->cpuid_features & CPUID_APIC) || smp_cpus > 1) { Obviously :), I'm fine with that change. Needs testing, though. What scenarios did you already check? > apic_init(env); > } > + qemu_register_reset(main_cpu_reset, 0, env); But this line silently reorders CPU and APIC reset handlers. If you did it intentionally (I vaguely recall it may have some benefit /wrt KVM synchronizing kernel and user space states), I would suggest pushing it as a separate patch. > } > > vmport_init(); > -- > Gleb. > Jan -- Siemens AG, Corporate Technology, CT SE 2 Corporate Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] Re: [PATCH v2] Apic creation should not depend on pci 2009-06-08 14:03 ` [Qemu-devel] " Jan Kiszka @ 2009-06-08 14:06 ` Gleb Natapov 2009-06-09 8:14 ` Gleb Natapov 1 sibling, 0 replies; 6+ messages in thread From: Gleb Natapov @ 2009-06-08 14:06 UTC (permalink / raw) To: Jan Kiszka; +Cc: qemu-devel On Mon, Jun 08, 2009 at 04:03:19PM +0200, Jan Kiszka wrote: > Gleb Natapov wrote: > > > > It should depend on whether cpu has APIC. > > > > Signed-off-by: Gleb Natapov <gleb@redhat.com> > > diff --git a/hw/pc.c b/hw/pc.c > > index 0934778..cb49772 100644 > > --- a/hw/pc.c > > +++ b/hw/pc.c > > @@ -878,14 +878,10 @@ static void pc_init1(ram_addr_t ram_size, > > } > > if (i != 0) > > env->halted = 1; > > - if (smp_cpus > 1) { > > - /* XXX: enable it in all cases */ > > - env->cpuid_features |= CPUID_APIC; > > - } > > - qemu_register_reset(main_cpu_reset, 0, env); > > - if (pci_enabled) { > > + if ((env->cpuid_features & CPUID_APIC) || smp_cpus > 1) { > > Obviously :), I'm fine with that change. Needs testing, though. What > scenarios did you already check? > :) Only standard runs. I don't have 486 smp guest around. > > apic_init(env); > > } > > + qemu_register_reset(main_cpu_reset, 0, env); > > But this line silently reorders CPU and APIC reset handlers. If you did > it intentionally (I vaguely recall it may have some benefit /wrt KVM > synchronizing kernel and user space states), I would suggest pushing it > as a separate patch. I don't know what this line is doing here. I'll remove it -- Gleb. ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] Re: [PATCH v2] Apic creation should not depend on pci 2009-06-08 14:03 ` [Qemu-devel] " Jan Kiszka 2009-06-08 14:06 ` Gleb Natapov @ 2009-06-09 8:14 ` Gleb Natapov 2009-06-09 8:37 ` Jan Kiszka 1 sibling, 1 reply; 6+ messages in thread From: Gleb Natapov @ 2009-06-09 8:14 UTC (permalink / raw) To: Jan Kiszka; +Cc: qemu-devel On Mon, Jun 08, 2009 at 04:03:19PM +0200, Jan Kiszka wrote: > Gleb Natapov wrote: > > > > It should depend on whether cpu has APIC. > > > > Signed-off-by: Gleb Natapov <gleb@redhat.com> > > diff --git a/hw/pc.c b/hw/pc.c > > index 0934778..cb49772 100644 > > --- a/hw/pc.c > > +++ b/hw/pc.c > > @@ -878,14 +878,10 @@ static void pc_init1(ram_addr_t ram_size, > > } > > if (i != 0) > > env->halted = 1; > > - if (smp_cpus > 1) { > > - /* XXX: enable it in all cases */ > > - env->cpuid_features |= CPUID_APIC; > > - } > > - qemu_register_reset(main_cpu_reset, 0, env); > > - if (pci_enabled) { > > + if ((env->cpuid_features & CPUID_APIC) || smp_cpus > 1) { > > Obviously :), I'm fine with that change. Needs testing, though. What > scenarios did you already check? > > > apic_init(env); > > } > > + qemu_register_reset(main_cpu_reset, 0, env); > > But this line silently reorders CPU and APIC reset handlers. If you did > it intentionally (I vaguely recall it may have some benefit /wrt KVM > synchronizing kernel and user space states), I would suggest pushing it > as a separate patch. > BTW relying on order of callback registration is not a good idea especially since we have "order" parameter now. On the other hand apic reset handler already resets cpu so if apic is present there is no need to register main_cpu_reset(). -- Gleb. ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] Re: [PATCH v2] Apic creation should not depend on pci 2009-06-09 8:14 ` Gleb Natapov @ 2009-06-09 8:37 ` Jan Kiszka 2009-06-09 8:54 ` Gleb Natapov 0 siblings, 1 reply; 6+ messages in thread From: Jan Kiszka @ 2009-06-09 8:37 UTC (permalink / raw) To: Gleb Natapov; +Cc: qemu-devel Gleb Natapov wrote: > On Mon, Jun 08, 2009 at 04:03:19PM +0200, Jan Kiszka wrote: >> Gleb Natapov wrote: >>> >>> It should depend on whether cpu has APIC. >>> >>> Signed-off-by: Gleb Natapov <gleb@redhat.com> >>> diff --git a/hw/pc.c b/hw/pc.c >>> index 0934778..cb49772 100644 >>> --- a/hw/pc.c >>> +++ b/hw/pc.c >>> @@ -878,14 +878,10 @@ static void pc_init1(ram_addr_t ram_size, >>> } >>> if (i != 0) >>> env->halted = 1; >>> - if (smp_cpus > 1) { >>> - /* XXX: enable it in all cases */ >>> - env->cpuid_features |= CPUID_APIC; >>> - } >>> - qemu_register_reset(main_cpu_reset, 0, env); >>> - if (pci_enabled) { >>> + if ((env->cpuid_features & CPUID_APIC) || smp_cpus > 1) { >> Obviously :), I'm fine with that change. Needs testing, though. What >> scenarios did you already check? >> >>> apic_init(env); >>> } >>> + qemu_register_reset(main_cpu_reset, 0, env); >> But this line silently reorders CPU and APIC reset handlers. If you did >> it intentionally (I vaguely recall it may have some benefit /wrt KVM >> synchronizing kernel and user space states), I would suggest pushing it >> as a separate patch. >> > BTW relying on order of callback registration is not a good idea > especially since we have "order" parameter now. The order parameter is obsolete, I already posted a patch to revert this idea again (reminds me of posting an update as a new reset handler arrived in the meantime). The system-wide assumed and applied order is that earlier instantiated devices will be reset first. That specifically makes sense if you think of bus/device relations. > On the other hand apic > reset handler already resets cpu so if apic is present there is no need to > register main_cpu_reset(). OK, this is a special case as the APIC reset triggers an init IPI and that resets the CPU, too. Then make this explicit, replace main_cpu_reset with cpu_reset (so that no one adds code to the former that is not run in the APIC case) and add some comment why. Jan -- Siemens AG, Corporate Technology, CT SE 2 Corporate Competence Center Embedded Linux ^ permalink raw reply [flat|nested] 6+ messages in thread
* [Qemu-devel] Re: [PATCH v2] Apic creation should not depend on pci 2009-06-09 8:37 ` Jan Kiszka @ 2009-06-09 8:54 ` Gleb Natapov 0 siblings, 0 replies; 6+ messages in thread From: Gleb Natapov @ 2009-06-09 8:54 UTC (permalink / raw) To: Jan Kiszka; +Cc: qemu-devel On Tue, Jun 09, 2009 at 10:37:53AM +0200, Jan Kiszka wrote: > Gleb Natapov wrote: > > On Mon, Jun 08, 2009 at 04:03:19PM +0200, Jan Kiszka wrote: > >> Gleb Natapov wrote: > >>> > >>> It should depend on whether cpu has APIC. > >>> > >>> Signed-off-by: Gleb Natapov <gleb@redhat.com> > >>> diff --git a/hw/pc.c b/hw/pc.c > >>> index 0934778..cb49772 100644 > >>> --- a/hw/pc.c > >>> +++ b/hw/pc.c > >>> @@ -878,14 +878,10 @@ static void pc_init1(ram_addr_t ram_size, > >>> } > >>> if (i != 0) > >>> env->halted = 1; > >>> - if (smp_cpus > 1) { > >>> - /* XXX: enable it in all cases */ > >>> - env->cpuid_features |= CPUID_APIC; > >>> - } > >>> - qemu_register_reset(main_cpu_reset, 0, env); > >>> - if (pci_enabled) { > >>> + if ((env->cpuid_features & CPUID_APIC) || smp_cpus > 1) { > >> Obviously :), I'm fine with that change. Needs testing, though. What > >> scenarios did you already check? > >> > >>> apic_init(env); > >>> } > >>> + qemu_register_reset(main_cpu_reset, 0, env); > >> But this line silently reorders CPU and APIC reset handlers. If you did > >> it intentionally (I vaguely recall it may have some benefit /wrt KVM > >> synchronizing kernel and user space states), I would suggest pushing it > >> as a separate patch. > >> > > BTW relying on order of callback registration is not a good idea > > especially since we have "order" parameter now. > > The order parameter is obsolete, I already posted a patch to revert this > idea again (reminds me of posting an update as a new reset handler > arrived in the meantime). > > The system-wide assumed and applied order is that earlier instantiated > devices will be reset first. That specifically makes sense if you think > of bus/device relations. > Sounds fragile to me, but explicit order far from ideal too. Why should order matter anyway. Device reset callbacks should not rely on the state of other devices. > > On the other hand apic > > reset handler already resets cpu so if apic is present there is no need to > > register main_cpu_reset(). > > OK, this is a special case as the APIC reset triggers an init IPI and > that resets the CPU, too. Then make this explicit, replace > main_cpu_reset with cpu_reset (so that no one adds code to the former > that is not run in the APIC case) and add some comment why. Already doing it on top of this patch. -- Gleb. ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2009-06-09 8:54 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2009-06-08 12:59 [Qemu-devel] [PATCH v2] Apic creation should not depend on pci Gleb Natapov 2009-06-08 14:03 ` [Qemu-devel] " Jan Kiszka 2009-06-08 14:06 ` Gleb Natapov 2009-06-09 8:14 ` Gleb Natapov 2009-06-09 8:37 ` Jan Kiszka 2009-06-09 8:54 ` Gleb Natapov
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).