Port-sparc archive

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

Re: partially working SMP again



> so, this leaves the original cpuinfo page cached.  you need to
> modify the loop towards the end of pmap_bootstrap4m() so make
> it skip SRMMU_PG_C for the CPUINFO_VA page.

Okay, I've put another ugly code which makes CPUINFO_VA uncached,
but it still fails on cpu3 as the previous post.

It fails in CPU_INFO_FOREACH() in cpu.c:xcall().
CPU_INFO_FOREACH() macro in sparc/cpuvar.h is defined as:
> #define CPU_INFO_FOREACH(cii, cp)     \
> cii = 0; (cp = cpus[cii]) && cp->eintstack && cii < sparc_ncpus; cii++
so maybe we should allocate cpus[_MAXNCPU + 1] in cpu.c
to make sure cpus[4] == NULL.

Now it goes a bit further, but still fails:

---
OBP version 3, revision 2.25 (plugin rev 2)
going to pmap_kenter_pa(va=0xf045f000, pa=0x402000)
setting cpus self reference
set cpu0 ci_self address: 0xf045f000
set cpu1 ci_self address: 0xf0460000
set cpu2 ci_self address: 0xf0461000
set cpu3 ci_self address: 0xf0462000
pmap_bootstrap4m done
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008, 2009
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 5.99.12 (DEBUG) #27: Sat May 30 03:33:39 JST 2009
        tsutsui@mirage:/usr/src/sys/arch/sparc/compile/DEBUG
total memory = 127 MB
avail memory = 120 MB
bootpath: /iommu@f,e0000000/sbus@f,e0001000/espdma@f,400000/esp@f,800000/sd@1,0
mainbus0 (root): SUNW,SPARCstation-20: hostid 727aaa0a
cpu0 at mainbus0: mid 8: RT620/625 @ 150 MHz, on-chip FPU
cpu0: 512K byte write-back, 32 bytes/line, sw flush: cache enabled
cpu1 at mainbus0: mid 9: RT620/625 @ 150 MHz, on-chip FPU
cpu1: 512K byte write-back, 32 bytes/line, sw flush: cache enabled
cpu2 at mainbus0: mid 10: RT620/625 @ 150 MHz, on-chip FPU
cpu2: 512K byte write-back, 32 bytes/line, sw flush: cache enabled
cpu3 at mainbus0: mid 11: RT620/625 @ 150 MHz, on-chip FPU
cpu3: 512K byte write-back, 32 bytes/line, sw flush: cache enabled
obio0 at mainbus0
clock0 at obio0 slot 0 offset 0x200000: mk48t08
timer0 at obio0 slot 0 offset 0x300000: delay constant 73, frequency = 2000000 
Hz
zs0 at obio0 slot 0 offset 0x100000 level 12 softpri 6
zstty0 at zs0 channel 0 (console i/o)
zstty1 at zs0 channel 1
zs1 at obio0 slot 0 offset 0x0 level 12 softpri 6
zstty4 at zs1 channel 0
kbd0 at zstty4 (console input)
zstty5 at zs1 channel 1
ms0 at zstty5
wsmouse0 at ms0 mux 0
fdc0 at obio0 slot 0 offset 0x700000 level 11 softpri 4: chip 82077
fd0 at fdc0 drive 0: 1.44MB 80 cyl, 2 head, 18 sec
auxreg0 at obio0 slot 0 offset 0x800000
power0 at obio0 slot 0 offset 0xa01000 level 2
iommu0 at mainbus0 ioaddr 0xe0000000: version 0x3/0x1, page-size 4096, range 
64MB
sbus0 at iommu0: clock = 25 MHz
dma0 at sbus0 slot 15 offset 0x400000: DMA rev 2
esp0 at dma0 slot 15 offset 0x800000 level 4: ESP200, 40MHz, SCSI ID 7
scsibus0 at esp0: 8 targets, 8 luns per target
ledma0 at sbus0 slot 15 offset 0x400010: DMA rev 2
le0 at ledma0 slot 15 offset 0xc00000 level 6Reader / writer lock error: 
rw_vector_enter: locking against myself

lock address : 0x00000000f03d5ecc
current cpu  :                  0
current lwp  : 0x00000000f039f020
owner/count  : 0x00000000f039f020 flags    : 0x0000000000000004

panic: lock error
Stopped in pid 0.1 (system) at  netbsd:cpu_Debugger+0x4:        or              
%o7, %g0, %g1
db{0}> tr
cpu_Debugger(0xf0372090, 0xf039f020, 0x4, 0xf039a400, 0x104, 0xf03e7800) at 
netbsd:lockdebug_abort+0x20
lockdebug_abort(0xf03d5ecc, 0xf039f340, 0xf0336130, 0xf035d0f0, 0xf04b9830, 
0xf0762b60) at netbsd:rw_enter+0xc0
rw_enter(0xf03d5ecc, 0x1, 0xf03940ac, 0xf03e9000, 0x0, 0xf04b9008) at 
netbsd:vm_map_lock+0x68
vm_map_lock(0xf03d5ec8, 0xf03e9534, 0x0, 0xf03e9874, 0x0, 0x4) at 
netbsd:uvm_map_prepare+0x74
uvm_map_prepare(0xf03d5ec8, 0x0, 0x1000, 0x0, 0xffffffff, 0xffffffff) at 
netbsd:uvm_kmapent_alloc+0xec
uvm_kmapent_alloc(0xf03d5ec8, 0x41727, 0x0, 0xf0394288, 0x1e401fe7, 0xf03d7fd9) 
at netbsd:uvm_map_clip_start+0x10
uvm_map_clip_start(0xf03d5ec8, 0xf3967ee0, 0xf3a04000, 0xf0394288, 0x0, 
0xf3967e88) at netbsd:uvm_unmap_remove+0x2b8
uvm_unmap_remove(0xf03d5ec8, 0xf3a83000, 0xf3a83000, 0xf0394294, 0xf0394288, 
0x0) at netbsd:uvm_unmap1+0x38
uvm_unmap1(0xf03d5ec8, 0xf3a04000, 0xf3a83000, 0x0, 0xffffffff, 0xffffffff) at 
netbsd:_bus_dma_valloc_skewed+0xcc
_bus_dma_valloc_skewed(0xf3a00000, 0x83000, 0x80000, 0x0, 0xf04b9830, 
0xf0762b60) at netbsd:iommu_dmamem_map+0x64
iommu_dmamem_map(0xc, 0xf03943e8, 0x1, 0x4000, 0xf39d06a8, 0x5) at 
netbsd:leattach_ledma+0x12c
leattach_ledma(0xf39d0008, 0x4000, 0xf03944e0, 0xf03e7bb4, 0xf0397128, 0x2) at 
netbsd:config_attach_loc+0x1a4
config_attach_loc(0xf39d00b0, 0xf0396360, 0x0, 0xf03944e0, 0xf005ee58, 
0xf39d0008) at netbsd:dmaattach_sbus+0x130
dmaattach_sbus(0xf03944e0, 0xf39d0008, 0xffd74d50, 0xf03e7bb4, 0xf0397128, 0x2) 
at netbsd:config_attach_loc+0x1a4
config_attach_loc(0xf39d0008, 0xf0396d98, 0x0, 0xf03945e0, 0xf0222e40, 
0xf39bd350) at netbsd:sbus_attach_common+0x240
sbus_attach_common(0xf39ba040, 0xf0347638, 0xffd5c0e0, 0x0, 0xf0397128, 0x2) at 
netbsd:config_attach_loc+0x1a4
config_attach_loc(0xf39bd350, 0xf0396d08, 0x0, 0xf03946e8, 0xf00d76b8, 
0xf39bb600) at netbsd:iommu_attach+0x544
iommu_attach(0xf0347400, 0xf39bb600, 0xf03947e8, 0xf0348000, 0x280000, 
0xf039e800) at netbsd:config_attach_loc+0x1a4
config_attach_loc(0xf39bb600, 0xf0396540, 0x0, 0xf03947e8, 0xf00199d0, 
0xf3956c00) at netbsd:mainbus_attach+0x460
mainbus_attach(0x0, 0xf3956c00, 0x0, 0xf03e7bb4, 0xf0394800, 0xf03a0c00) at 
netbsd:config_attach_loc+0x1a4
config_attach_loc(0xf3956c00, 0xf0396528, 0x0, 0x0, 0x0, 0xf03d8114) at 
netbsd:cpu_configure+0x234
cpu_configure(0xf0351400, 0xf039f024, 0x0, 0xf039f024, 0xf0397400, 0xf0397400) 
at netbsd:main+0x224
main(0x0, 0xfffffff8, 0x0, 0x0, 0xffef2010, 0xf0002318) at 
netbsd:ft_want_ast+0xf78
db{0}> 
---
Izumi Tsutsui


Home | Main Index | Thread Index | Old Index