[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] Re: [PATCH] apic creation should not depend on pci
From: |
Gleb Natapov |
Subject: |
[Qemu-devel] Re: [PATCH] apic creation should not depend on pci |
Date: |
Sun, 7 Jun 2009 14:20:54 +0300 |
On Sun, Jun 07, 2009 at 01:01:54PM +0200, Jan Kiszka wrote:
> Gleb Natapov wrote:
> > Anybody knows why it currently does?
> >
> > Signed-off-by: Gleb Natapov <address@hidden>
> > diff --git a/hw/pc.c b/hw/pc.c
> > index 0934778..15c3efe 100644
> > --- a/hw/pc.c
> > +++ b/hw/pc.c
> > @@ -881,11 +881,9 @@ static void pc_init1(ram_addr_t ram_size,
> > 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) {
> > apic_init(env);
> > }
> > + qemu_register_reset(main_cpu_reset, 0, env);
> > }
> >
> > vmport_init();
>
> !pci_enabled means isapc, and that was probably once defined as "shall
> have no external APIC".
>
> But I wonder if we should change this test into "(env->cpuid_features &
> CPUID_APIC) || smp_cpus > 1", ie. also include isapc with LAPIC CPU
> (probably a synthetic case, but a selectable one) and non-LAPIC CPU with
> external APIC (for SMP).
>
Using (env->cpuid_features & CPUID_APIC) is definitely more correct that
what is there now.
> I also wonder if that explicit setting of CPUID_APIC for smp_cpus > 1 is
> correct. Either the selected CPU type has one, then it's set via
> PPRO_FEATURES, or not - then it could still exist externally for SMP,
> see above.
How software detects presence of apic on 486 smp boards? MPtable?
>
> Does this make some sense?
>
Yes (for me at least).
--
Gleb.