SMP on Compaq DL380

Nate Lawson nate at root.org
Tue Apr 26 12:34:39 PDT 2005


Matthew Sullivan wrote:
> Doug White wrote:
> 
>> On Tue, 26 Apr 2005, Matthew Sullivan wrote:
>>
>>  
>>
>>>>>> There definitely is a problem when you have identical APIC ids.  We
>>>>>> already blacklist one version of this BIOS.
>>>>>>
>>>>>>         
>>>>>
>>>>> That's not something I wanted to here right now... :-(
>>>>>       
>>>>
>>>> Are you __sure__ you're booting the right kernel?
>>>> http://scorpion.sorbs.net/dmesg.txt shows a kernel that does not 
>>>> have SMP
>>>> nor APIC enabled.  I'm still seeing ISA interrupt routing rather 
>>>> than APIC
>>>> mappings.  And as noted previously the APIC IDs are not set which means
>>>> they are not enabled.  (APIC IDs are always >0.)
>>>>
>>>> What is the output of 'sysctl kern.smp'?
>>>>
>>>>
>>>>     
>>>
>>> kern.smp.maxcpus: 16
>>> kern.smp.active: 0
>>> kern.smp.disabled: 0
>>> kern.smp.cpus: 1
>>> kern.smp.forward_signal_enabled: 1
>>> kern.smp.forward_roundrobin_enabled: 1
>>>   
>>
>>
>> You're booting the wrong kernel. Do a buildkernel + installkernel now,
>> reboot the system, and check that the kernel's build date has 
>> incremented.
>> Also watch the loader output and make sure someone hasn't overridden the
>> kernel name in loader.conf.
>>
>>  
>>
>>>> Have you tried booting without ACPI?
>>>>
>>>>
>>>>     
>>>
>>> No, but I am doing now...
>>>
>>> Btw now I have remote console this is what the BIOS shows....
>>>
>>>   1024 MB Detected
>>>
>>> COMPAQ System BIOS - P17 (12/18/2002)
>>> Copyright 1982,2002 Compaq Computer Corporation. All rights reserved.
>>>   
>>
>>
>> This appears to be the latest BIOS. Some Compaq systems are known to
>> generate bogus MPTables and such when configured to run Windows. You 
>> might
>> poke around the BIOS Setup and see if there is an "OS Type" field that 
>> can
>> be set to "SCO UNIX" or "Other" (not in PnP setup probably).
>>
>>  
>>
>>> Boot without ACPI is show at http://scorpion.sorbs.net/dmesg-noacpi.txt
>>>
>>> kern.smp.maxcpus: 16
>>> kern.smp.active: 0
>>> kern.smp.disabled: 0
>>> kern.smp.cpus: 1
>>> kern.smp.forward_signal_enabled: 1
>>> kern.smp.forward_roundrobin_enabled: 1
>>>
>>> I'm going to recompile the kernel again - with the current config - just
>>> to prove it's there...
>>>   
>>
>>
>> Good idea :)
>>
>>  
>>
> Ok, after building we have:
> root at scorpion:~# uname -a        FreeBSD scorpion.sorbs.net 
> 5.3-RELEASE-p9 FreeBSD 5.3-RELEASE-p9 #0: Tue Apr 26 14:35:20 EST 
> 2005     root at scorpion.sorbs.net:/usr/obj/usr/src/sys/SCORPION  i386
> 
> (why not #1..?)  the build date is current, the config file is at: 
> http://scorpion.sorbs.net/SMP/SCORPION
> 
> dmesg from boot -v is at: http://scorpion.sorbs.net/SMP/dmesg-v.txt
> 
> acpidump -t -d is at: http://scorpion.sorbs.net/SMP/acpidump-t-d.txt
> 
> sysclt -a is at: http://scorpion.sorbs.net/SMP/sysctl-a.txt
> 
> Have I forgotten anything? (I haven't done a non-acpi boot from this new 
> kernel)

I looked at your ASL and it looks fine.  We don't blacklist this exact 
BIOS but it appears to be derived from one we do (Compaq Racebait).  If 
you have a newer one you can update to, that may help.

As far as the APIC tables, they're fine as well.  The CPU ids match the 
Processor definitions in the ASL.  However, ACPI is not the primary way 
FreeBSD enumerates CPUs.  (You'll notice that the cpu announcements are 
printed before acpi0 is probed.  The apic code is the real determinant 
of whether a CPU is used or not although it does reference the ACPI tables.)

ACPI APIC Table: <A M I  OEMAPIC >
Timecounter "i8254" frequency 1193182 Hz quality 0
CPU: Intel(R) Pentium(R) 4 CPU 3.20GHz (3207.29-MHz 686-class CPU)
   Origin = "GenuineIntel"  Id = 0xf34  Stepping = 4
Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
   Hyperthreading: 2 logical CPUs
real memory  = 2146631680 (2047 MB)
avail memory = 2079891456 (1983 MB)
FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
  cpu0 (BSP): APIC ID:  0
  cpu1 (AP): APIC ID:  1
ioapic0 <Version 2.0> irqs 0-23 on motherboard

The reason only one ACPI cpu0 is announced is because the acpi cpu code 
only attaches to processors that have been added by the apic code (i.e. 
mp_maxid).  The real fix as someone else said is to change a BIOS 
setting or something to get your BIOS to announce all the CPUs.

-- 
Nate


More information about the freebsd-current mailing list