Port-sparc archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: partially working SMP again



On Wed, May 27, 2009 at 03:26:20PM -0400, Michael wrote:
> I just built a MULTIPROCESSOR kernel for my SS20, here's the result:

You need LOCKDEBUG, DIAGNOSTIC and DEBUG for all the fun ;-)

> NetBSD 5.99.12 (POTEEN) #98: Wed May 27 11:16:30 EDT 2009
>         ml@talisker:/dump/build/obj_sparc/sys/arch/sparc/compile/POTEEN
> total memory = 319 MB
> avail memory = 309 MB
> WARNING: module error: can't find `layerfs'
> timecounter: Timecounters tick every 10.000 msec
> bootpath: /iommu@f,e0000000/sbus@f,e0001000/espdma@f,400000/esp@f, 
> 800000/sd@1,0
> mainbus0 (root): SUNW,SPARCstation-20: hostid whatever
> cpu0 at mainbus0: mid 8: RT620/625 @ 125 MHz, (null) FPU
[..]
> Hmm, (null) FPU? An UP kernel gets that right.

That info is part of the (non working) cpu_info mapping; a LOCKDEBUG
kernel dies way earlier because of inconsistent CPUINFO_VA vs. curcpu(),
especially the LOCKDEBUG on demand per cpu initialization happening on
one view while later usage happens on another.

An easy check is to add this at the end of pmap_bootstrap4m:

        if (curcpu()->ci_self != cpus[0])
                panic("cpuinfo inconsistent");

As long as this check does not work out, everything else is a lost cause.

Martin


Home | Main Index | Thread Index | Old Index