Re: Freebsd 6.0 doesnt detect local APIC on a Pentium 3 machine

From: John Baldwin <jhb_at_freebsd.org>
Date: Mon, 7 Nov 2005 11:05:56 -0500
On Sunday 06 November 2005 05:44 pm, Nate Lawson wrote:
> Vaibhave Agarwal wrote:
> > On Sun, 6 Nov 2005, John Baldwin wrote:
> >>We don't detect the local APIC via MSR's or the APIC bit in cpu_features,
> >> but rely on a working MP Table or MADT table to setup both the local
> >> APIC(s) and I/O APIC(s).  Does your machine have a valid MP Table or an
> >> APIC table in its acpidump?  Many UP machine BIOSes don't include those
> >> tables.
> >
> > I think you are right.
> > There is no valid APIC table in the acpidump.
> > The only place where APIC is mentioned in the acpidump(8) is in
> > following:
> >
> > Scope (\_SB)
> > {
> > 	Name (APIC, 0x00)
> >         Method (_PIC, 1, NotSerialized)
> >         {
> >             Store (Arg0, APIC)
> >         }
> > }
> >
> >
> > And I suppose APIC is disabled in the BIOS too.
> > Is there a way to enable APIC using software, without changing the BIOS,
> > since I dont have access to the BIOS, as it is a remote machine (with
> > root access) ?
>
> The above references to APIC just store a value in a convenience
> variable.  If there's nothing else in the AML that references the
> \_SB.APIC variable, then it has no effect on the system.  In that case,
> the only way to get APIC support on that machine is to implement another
> way of enumerating it.

And even then it can't be used for any device interrupts since there aren't 
any I/O APICs.  On a UP machine without I/O APICs, it's actually probably 
more optimal to just use irq0 and irq8 for clocks rather than the lapic timer 
anyway.  The only real possible gain is the ability to use the profiling 
interrupt from the local APIC.

-- 
John Baldwin <jhb_at_FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org
Received on Mon Nov 07 2005 - 15:18:59 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:38:47 UTC