This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Kernel panic on system configured for 256 MB RAM

Hi, I'm using the TI814x EVM with a custom build using the standard PSP Linux kernel based on v2.6.37_TI81XXPSP_04.04.00.01.

My intention it to eventually run a system with 256 MB RAM. I'm not using the graphics, video or DSP so I'd like to reserve all that memory for use by Linux.

I have remapped the DMM LISA region to be only 256MB in size, however when I try to boot the Linux kernel with the mem=256M parameter I get an "Unhandled fault: external abort on non-linefetch (0x1018) at 0xffff0fe8" and the kernel crashes. The kernel boots fine if I uses mem=145M as per the memory map instructions I found in the wiki, but obviously in my case that is somewhat suboptimal.

I would like to know if there is a way to make more of the total memory available to Linux since I'm not using any of the aforementioned devices. If that's the case, where and what do I need to change to make this possible?

Thanks for any suggestions.

 

  

Here is the full stack trace in case it helps anyone figure out my issue:

bootconsole [earlycon0] enabled
reserved size = 0 at 0x0
Memory policy: ECC disabled, Data cache writeback
OMAP chip is TI8148 2.0
SRAM: Mapped pa 0x402f1000 to va 0xfe400000 size: 0xf000
Unhandled fault: external abort on non-linefetch (0x1018) at 0xffff0fe8
Internal error: : 1018 [#1]
last sysfs file:
Modules linked in:
CPU: 0 Not tainted (2.6.37 #84)
PC is at memcpy+0x8c/0x330
LR is at early_trap_init+0x60/0xfc
pc : [<c01b124c>] lr : [<c000c15c>] psr: 00000193
sp : c0497f54 ip : 0000001c fp : c0497f84
r10: 00000009 r9 : c0497fd4 r8 : 00000018
r7 : 00000002 r6 : c002a244 r5 : c04d94c0 r4 : ffff0000
r3 : e59f0008 r2 : ffffffe4 r1 : ffff0fe8 r0 : ffff0fe0
Flags: nzcv IRQs off FIQs on Mode SVC_32 ISA ARM Segment kernel
Control: 10c5387f Table: 80004019 DAC: 0000001f
Process swapper (pid: 0, stack limit = 0xc04962e8)
Stack: (0xc0497f54 to 0xc0498000)
7f40: c04d94c0 c002a244 00000002
7f60: 00000018 ffff0fe0 ffff0000 c000c15c c071b840 c04d94c0 c0497fc4 c0497f88
7f80: c000bf98 c000c108 c044e13b 10c53c7f c0497fb4 c002ba1c c036a778 ffffffff
7fa0: c04d92c0 c002be4c c049a0f4 80000000 413fc082 0000001f c0497ff4 c0497fc8
7fc0: c0008ac0 c000b9dc 00000000 00000000 00000000 c002be50 00000000 10c53c7d
7fe0: c04d945c c002be4c 00000000 c0497ff8 80008048 c0008a60 00000000 00000000
Backtrace:
[<c000c0fc>] (early_trap_init+0x0/0xfc) from [<c000bf98>] (setup_arch+0x5c8/0x6b8) r5:c04d94c0 r4:c071b840
[<c000b9d0>] (setup_arch+0x0/0x6b8) from [<c0008ac0>] (start_kernel+0x6c/0x2c8)
[<c0008a54>] (start_kernel+0x0/0x2c8) from [<80008048>] (0x80008048) r6:c002be4c r5:c04d945c r4:10c53c7d
Code: e4915004 e4916004 e4917004 e4918004 (e491e004)
---[ end trace 1b75b31a2719ed1c ]---
Kernel panic - not syncing: Attempted to kill the idle task!
Backtrace:
[<c0044bf4>] (dump_backtrace+0x0/0x110) from [<c036a5cc>] (dump_stack+0x18/0x1c) r7:c01b1250 r6:c04990c8 r5:c01b124e r4:c04d9a10
[<c036a5b4>] (dump_stack+0x0/0x1c) from [<c036a630>] (panic+0x60/0x184)
[<c036a5d0>] (panic+0x0/0x184) from [<c006b468>] (do_exit+0x74/0x5e4) r3:00000000 r2:c0497da0 r1:c0496000 r0:c0431199
[<c006b3f4>] (do_exit+0x0/0x5e4) from [<c0044fa0>] (die+0x29c/0x2d8)
[<c0044d04>] (die+0x0/0x2d8) from [<c004509c>] (arm_notify_die+0x5c/0x60)
[<c0045040>] (arm_notify_die+0x0/0x60) from [<c00362f0>] (do_DataAbort+0x88/0x9c) r5:c049a7c0 r4:00000007
[<c0036268>] (do_DataAbort+0x0/0x9c) from [<c036c5ec>] (__dabt_svc+0x4c/0x60)
Exception stack(0xc0497f08 to 0xc0497f50)
7f00: ffff0fe0 ffff0fe8 ffffffe4 e59f0008 ffff0000 c04d94c0
7f20: c002a244 00000002 00000018 c0497fd4 00000009 c0497f84 0000001c c0497f54
7f40: c000c15c c01b124c 00000193 ffffffff
r8:00000018 r7:00000002 r6:c002a244 r5:c0497f3c r4:ffffffff
[<c000c0fc>] (early_trap_init+0x0/0xfc) from [<c000bf98>] (setup_arch+0x5c8/0x6b8) r5:c04d94c0 r4:c071b840
[<c000b9d0>] (setup_arch+0x0/0x6b8) from [<c0008ac0>] (start_kernel+0x6c/0x2c8)
[<c0008a54>] (start_kernel+0x0/0x2c8) from [<80008048>] (0x80008048) r6:c002be4c r5:c04d945c r4:10c53c7d

 

  • Hi Przemyslaw,

    I will need more details. Could you please provide me the sequence (step by step) that you are using to configure your system for 256M ?

    Regards,

    Pavel

  • Hi Pavel,

    I can trigger this issue with the standard U-Boot configuration for the TI814x platform with one modification. I change the DMM LISA Map 3 register to allocate only a single 256 MB section.

    So instead of:

    __raw_writel(PG2_1_DMM_LISA_MAP__3, DMM_LISA_MAP__3);

    I would do:

    __raw_writel(0x80440300, DMM_LISA_MAP__3);

    (I have a few other changes in the configuration I'm using but they're not relevant to triggering this issue).

     

    The other important thing is to pass the mem=256M parameter in the kernel arguments. My full kernel argument list is:

    console=ttyO0,115200n8 mem=256M earlyprintk noinitrd ro ubi.mtd=one ubi.mtd=two rootfstype=ubifs root=ubi0:volume

     

    Let me know if you need any other details from me.

    Regards,
    Przemyslaw