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