Port-arm archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
ARMADAXP status
Hi! all,
How is the status of ARMADAXP?
My 'OpenBlocks AX3' panics with ARMADAXP.
I know, this reason is not able to write to memory.
# I tried with attaching diff.
Should I make it newly derived from MARVELL?
Thanks,
--
kiyohara
BootROM 1.15
Booting from NOR flash
DDR3 Training Sequence - Ver 2.5.BootROM: Image checksum verification PASSED
? ** LOADER **
U-Boot 2009.08 (Jul 27 2012 - 18:23:11)
Plat'Home version: 1.1.1 (Base: Marvell BSP 2.2.3 NQ)
U-Boot Addressing:
Code: 00600000:006BFFF0
BSS: 0070D6A0
Stack: 0x5fff70
PageTable: 0x8e0000
Heap address: 0x900000:0xe00000
Board: OpenBlocks AX3
SoC: MV78260 A0
running 2 CPUs
Custom configuration
CPU: Marvell PJ4B (584) v7 (Rev 2) LE
CPU # 0
CPU @ 1333Mhz, L2 @ 667Mhz
DDR @ 667Mhz, TClock @ 250Mhz
DDR 64Bit Width, FastPath Memory Access
DDR ECC Disabled
PEX 0.0(0): Detected No Link.
PEX 0.1(1): Detected No Link.
DRAM: 1 GB
CS 0: base 0x00000000 size 1 GB
Addresses 14M - 0M are saved for the U-Boot usage.
Flash: 128 MB
POST: mac verify Eth0 PASSED Eth1 PASSED Eth2 PASSED Eth3 PASSED
FPU initialized to Run Fast Mode.
USB 0: Host Mode
USB 1: Host Mode
USB 2: Device Mode
Power Off External Interface
Modules Detected:
MMC: MRVL_MMC: 0
Net: egiga0, egiga1, egiga2, egiga3
Hit any key to stop autoboot: 0
openblocks>
openblocks>
openblocks> tftp evbarm/armadaxp/netbsd.ub
Using egiga0 device
TFTP from server 192.168.3.1; our IP address is 192.168.3.254
Filename 'evbarm/armadaxp/netbsd.ub'.
Load address: 0x2000000
Loading: #################################################################
#################################################################
#################################################################
#######################################################
done
Bytes transferred = 3663424 (37e640 hex)
openblocks> bootm
## Booting kernel from Legacy Image at 02000000 ...
Image Name: NetBSD/armadaxp 6.99.21
Created: 2013-06-22 8:50:40 UTC
Image Type: ARM NetBSD Kernel Image (uncompressed)
Data Size: 3663360 Bytes = 3.5 MB
Load Address: 00200000
Entry Point: 00200000
Verifying Checksum ... OK
Loading Kernel Image ... OK
OK
## Transferring control to NetBSD stage-2 loader (at address 00200000) ...
[ Kernel symbol table missing! ]
uvm_km_bootstrap: in
vmem_init: in
vmem_init: call qc_init
qc_init: in
qc_init: idx_max=0
vmem_init: OK qc_init
vmem_init: in
vmem_init: call qc_init
qc_init: in
qc_init: idx_max=0
vmem_init: OK qc_init
vmem_init: in
vmem_init: call qc_init
qc_init: in
qc_init: idx_max=0
vmem_init: OK qc_init
uvm_km_bootstrap: call vmem_init
vmem_init: in
vmem_init: call qc_init
qc_init: in
qc_init: idx_max=16
i=16, name='kva-65536', call pool_cache_init
pool_cache_init: in: &cache_pool=0xc059fe14
pool_get: in
pool_get: startover
pool_get: in
pool_get: startover
pool_prime_page: check: n=127, cp=0xc357e000, pr size=32
pool_prime_page: pp=0xc059f524, pr_curpage=0xc357efe0,
&LIST_FIRST(&ph->ph_itemlist)=0xc357effc
pool_get: startover
pool_get: ph=0xc357efe0, &LIST_FIRST(&ph->ph_itemlist)=0xc357effc
panic: pool_get: phpool-0: page empty
Stopped in pid 0.1 (system) at c021f020: bx r14
db>
db>
db> x c357effc <-- LIST FIRST
c357effc: 0
db> w c357effc 1 <-- write to 1
c357effc = 1
db> x c357effc <-- Why 0?
c357effc: 0
db>
Index: kern/subr_pool.c
===================================================================
RCS file: /cvsroot/src/sys/kern/subr_pool.c,v
retrieving revision 1.200
diff -u -r1.200 subr_pool.c
--- kern/subr_pool.c 11 Mar 2013 21:37:54 -0000 1.200
+++ kern/subr_pool.c 22 Jun 2013 09:02:56 -0000
@@ -739,6 +739,7 @@
struct pool_item_header *ph;
void *v;
+printf(" %s: in\n", __func__);
#ifdef DIAGNOSTIC
if (pp->pr_itemsperpage == 0)
panic("pool_get: pool '%s': pr_itemsperpage is zero, "
@@ -754,6 +755,7 @@
mutex_enter(&pp->pr_lock);
startover:
+printf(" %s: startover\n", __func__);
/*
* Check to see if we've reached the hard limit. If we have,
* and we can wait, then wait until an item has been returned to
@@ -800,6 +802,7 @@
pp->pr_nfail++;
mutex_exit(&pp->pr_lock);
+printf(" %s: NULL\n", __func__);
return (NULL);
}
@@ -839,6 +842,7 @@
pp->pr_nfail++;
mutex_exit(&pp->pr_lock);
+printf(" %s: Re: NULL\n", __func__);
return (NULL);
}
@@ -855,6 +859,7 @@
v = pr_item_notouch_get(pp, ph);
} else {
v = pi = LIST_FIRST(&ph->ph_itemlist);
+printf(" %s: ph=%p, &LIST_FIRST(&ph->ph_itemlist)=%p\n", __func__, ph,
&LIST_FIRST(&ph->ph_itemlist));
if (__predict_false(v == NULL)) {
mutex_exit(&pp->pr_lock);
panic("pool_get: %s: page empty", pp->pr_wchan);
@@ -933,6 +938,7 @@
mutex_exit(&pp->pr_lock);
KASSERT((((vaddr_t)v + pp->pr_itemoffset) & (pp->pr_align - 1)) == 0);
FREECHECK_OUT(&pp->pr_freecheck, v);
+printf(" %s: out\n", __func__);
return (v);
}
@@ -1181,6 +1187,7 @@
if (pp->pr_roflags & PR_NOTOUCH) {
pr_item_notouch_init(pp, ph);
} else {
+printf("%s: check: n=%d, cp=%p, pr size=%d\n", __func__, n, cp, pp->pr_size);
while (n--) {
pi = (struct pool_item *)cp;
@@ -1202,6 +1209,7 @@
*/
if (pp->pr_curpage == NULL)
pp->pr_curpage = ph;
+printf("%s: pp=%p, pr_curpage=%p, LIST_FIRST(&ph->ph_itemlist)=%p\n",
__func__, pp, pp->pr_curpage, &LIST_FIRST(&ph->ph_itemlist));
if (++pp->pr_npages > pp->pr_hiwat)
pp->pr_hiwat = pp->pr_npages;
@@ -1702,13 +1710,16 @@
{
pool_cache_t pc;
+printf(" %s: in: &cache_pool=%p\n", __func__, &cache_pool);
pc = pool_get(&cache_pool, PR_WAITOK);
if (pc == NULL)
return NULL;
+printf(" %s: check\n", __func__);
pool_cache_bootstrap(pc, size, align, align_offset, flags, wchan,
palloc, ipl, ctor, dtor, arg);
+printf(" %s: out\n", __func__);
return pc;
}
Index: kern/subr_vmem.c
===================================================================
RCS file: /cvsroot/src/sys/kern/subr_vmem.c,v
retrieving revision 1.83
diff -u -r1.83 subr_vmem.c
--- kern/subr_vmem.c 6 Mar 2013 11:20:10 -0000 1.83
+++ kern/subr_vmem.c 22 Jun 2013 09:02:56 -0000
@@ -532,6 +532,7 @@
int qcache_idx_max;
int i;
+printf(" %s: in\n", __func__);
KASSERT((qcache_max & vm->vm_quantum_mask) == 0);
if (qcache_max > (VMEM_QCACHE_IDX_MAX << vm->vm_quantum_shift)) {
qcache_max = VMEM_QCACHE_IDX_MAX << vm->vm_quantum_shift;
@@ -545,6 +546,7 @@
qcache_idx_max = qcache_max >> vm->vm_quantum_shift;
prevqc = NULL;
+printf(" %s: idx_max=%d\n", __func__, qcache_idx_max);
for (i = qcache_idx_max; i > 0; i--) {
qcache_t *qc = &vm->vm_qcache_store[i - 1];
size_t size = i << vm->vm_quantum_shift;
@@ -554,6 +556,7 @@
snprintf(qc->qc_name, sizeof(qc->qc_name), "%s-%zu",
vm->vm_name, size);
+printf(" i=%d, name='%s', call pool_cache_init\n", i, qc->qc_name);
pc = pool_cache_init(size,
ORDER2SIZE(vm->vm_quantum_shift), 0,
PR_NOALIGN | PR_NOTOUCH | PR_RECURSIVE /* XXX */,
@@ -866,6 +869,7 @@
KASSERT((flags & (VM_SLEEP|VM_NOSLEEP)) != 0);
KASSERT((~flags & (VM_SLEEP|VM_NOSLEEP)) != 0);
KASSERT(quantum > 0);
+printf(" %s: in\n", __func__);
#if defined(_KERNEL)
/* XXX: SMP, we get called early... */
@@ -897,7 +901,9 @@
vm->vm_size = 0;
vm->vm_inuse = 0;
#if defined(QCACHE)
+printf(" %s: call qc_init\n", __func__);
qc_init(vm, qcache_max, ipl);
+printf(" %s: OK qc_init\n", __func__);
#endif /* defined(QCACHE) */
CIRCLEQ_INIT(&vm->vm_seglist);
Index: uvm/uvm_km.c
===================================================================
RCS file: /cvsroot/src/sys/uvm/uvm_km.c,v
retrieving revision 1.138
diff -u -r1.138 uvm_km.c
--- uvm/uvm_km.c 29 Jan 2013 21:29:40 -0000 1.138
+++ uvm/uvm_km.c 22 Jun 2013 09:02:57 -0000
@@ -258,6 +258,7 @@
struct uvm_map_args args;
int error;
+printf("%s: in\n", __func__);
UVMHIST_FUNC(__func__); UVMHIST_CALLED(maphist);
UVMHIST_LOG(maphist, "start=%"PRIxVADDR" end=%#"PRIxVADDR,
start, end, 0,0);
@@ -349,10 +350,12 @@
UVMHIST_LOG(maphist, "kmem vmem created (base=%#"PRIxVADDR
", size=%#"PRIxVSIZE, kmembase, kmemsize, 0,0);
+printf("%s: call vmem_init\n", __func__);
kmem_va_arena = vmem_init(&kmem_va_arena_store, "kva",
0, 0, PAGE_SIZE, vmem_alloc, vmem_free, kmem_arena,
(kmem_arena_small ? 4 : VMEM_QCACHE_IDX_MAX) * PAGE_SIZE,
VM_NOSLEEP, IPL_VM);
+printf("%s: out\n", __func__);
UVMHIST_LOG(maphist, "<- done", 0,0,0,0);
}
Home |
Main Index |
Thread Index |
Old Index