Date: Thu, 11 Sep 2008 10:23:31 +0200 From: Marc =?iso-8859-1?q?L=F6rner?= <marc.loerner@hob.de> To: freebsd-ia64@freebsd.org, xcllnt@mac.com Subject: Montecito running and little SMP-bug Message-ID: <200809111023.31516.marc.loerner@hob.de>
next in thread | raw e-mail | index | archive | help
Hello!
I've got good news:
Finally GENERIC-kernel without SMP-support is running now on my montecito
box :-)
(It was as you suggested, after wiping out contents and partitions of harddisk
the bsd-installer started as expected)
When turning on SMP, I always get an Page-Not-Present in function vcnt
in vm/vm_meter.c when it iterates through found CPUs.
I seems that pcpu_find returns NULL.
This is the last output I see:
fatal kernel trap (cpu 0):
trap vector = 0x14 (Page Not Present)
cr.iip = 0xe00000000f577cb0
cr.ipsr = 0x1210080a6018 (ac,mfl,ic,i,dt,dfh,rt,cpl=0,it,ri=1,bn)
cr.isr = 0x20400000000 (code=0,vector=0,r,ei=1)
cr.ifa = 0x9bc
curthread = 0xe00000001029c000
pid = 64, comm = sysctl
[thread pid 64 tid 100033 ]
Stopped at vcnt+0xa1: [M1] ld4 r15=[r8]
db>
Following is the output of the APIC-table:
Table 'APIC' at 0xe0000000ff1b6620
Local APIC address=0xfee00000
Local SAPIC entry
ProcessorId=0x0, Id=0x0, Eid=0x0
Local SAPIC entry
ProcessorId=0x1, Id=0x1, Eid=0x0 (disabled)
Local SAPIC entry
ProcessorId=0x2, Id=0x2, Eid=0x0
Local SAPIC entry
ProcessorId=0x3, Id=0x3, Eid=0x0 (disabled)
I think the case of running/enabled CPUs being not contiguous is not thought
of when initializing pcpus. So the id is taken as index into pcpu-array
(cpuid_to_pcpu).
=> In above case we find 2 running cpus => mp_ncpus = 2, but cpuid_to_pcpu[1]
is zero (not enabled).
It seems that platform independend code relies on pcpu-array not having holes
and being filled contiguously.
=> We don't have to use "sapic->ID" as index into array (c.f. function
cpu_mp_add) instead we need own static index-counter that's incremented on
finding enabled CPU when iterating through APIC-table (see file
sys/ia64/acpica/madt.c)
Regards,
Marc Loerner
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200809111023.31516.marc.loerner>
