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.

AM6412: Kernel dump when copy big files

Part Number: AM6412
Other Parts Discussed in Thread: TMDS64EVM

env:

SDK:ti-processor-sdk-linux-am64xx-evm-08.06.00.42-Linux-x86-Install

CPU:AM6412

linux:5.10

memory:2G (MT40A1G16KNR-075:E)

steps:

1.We create a big file more than 300M in system.

2.cp -prf file new,The system will dump about copy 300M,and is mem  dump.

othes:

We check our DDR and Development board(TMDS64EVM),TMDS64EVM DDR:MT40A1G16KD-062E IT:E,Our board:MT40A1G16KNR-075:E
TMDS64EVM:only have BG0,A 0-16.

our board:use BG0-1,A 0-15.

So,Where should we modify it?
thank you very mush.

MT40A1G16KD-062E:

MT40A1G16KNR-075:E:

log:

3377.emmc.log
Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[ 67.927754] =============================================================================
[ 67.935944] BUG kmalloc-256 (Not tainted): objects 21 > max 0
[ 67.941676] -----------------------------------------------------------------------------
[ 67.941676]
[ 67.951306] Disabling lock debugging due to kernel taint
[ 67.956609] INFO: Slab 0x00000000c49ddadd objects=21 used=21 fp=0x0000000000000000 flags=0x10200
[ 67.965380] CPU: 1 PID: 1652 Comm: cp Tainted: G B 5.10.168-g2c23e6c538 #5
[ 67.973538] Hardware name: Texas Instruments AM642 EVM (DT)
[ 67.979097] Call trace:
[ 67.981551] dump_backtrace+0x0/0x1b0
[ 67.985207] show_stack+0x18/0x38
[ 67.988518] dump_stack+0xe8/0x124
[ 67.991912] slab_err+0xac/0xd4
[ 67.995050] check_slab+0xe8/0xf0
[ 67.998358] alloc_debug_processing+0x60/0x1a0
[ 68.002794] ___slab_alloc.constprop.0+0x6c0/0x788
[ 68.007574] __slab_alloc.isra.0.constprop.0+0x2c/0x58
[ 68.012700] __kmalloc+0x5f8/0x6a0
[ 68.016098] iter_file_splice_write+0x74/0x388
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • Hi JKun,

    Please follow my instruction in the following link to run memtester on your board to see if it reports any error.

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1337450/am6421-am6421-emmc

  • Hi,Bin:

    The attachment is the memtester 1G 1 log.

    We also suspect that only 1G of DDR was recognized.
    but,Our hardware on the board is 2G DDR,MT40A1G16KNR-075:E.
    so,Where do we need to modify for this DDR?
    thank you very mush!

    0488.emmc.log
    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    memtester 1G 1
    memtester version 4.3.0 (64-bit)
    Copyright (C) 2001-2012 Charles Cazabon.
    Licensed under the GNU General Public License version 2 (only).
    pagesize is 4096
    pagesizemask is 0xfffffffffffff000
    want 1024MB (1073741824 bytes)
    got 1024MB (1073741824 bytes), trying mlock ...[ 32.354405] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000008
    [ 32.358200] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000088
    [ 32.363192] Mem abort info:
    [ 32.363195] ESR = 0x96000046
    [ 32.363201] EC = 0x25: DABT (current EL), IL = 32 bits
    [ 32.363203] SET = 0, FnV = 0
    [ 32.363206] EA = 0, S1PTW = 0
    [ 32.363216] Data abort info:
    [ 32.392121] ISV = 0, ISS = 0x00000046
    [ 32.395944] CM = 0, WnR = 1
    [ 32.398904] user pgtable: 4k pages, 48-bit VAs, pgdp=00000000839fd000
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

  • Hi Jkun,

    does the same crash also happen in memtester on 512MB test?

  • Hi,Bin:

    512MB is OK .

    I changed uboot and kernel dts,2G->1G 

    reg = <0x00000000 0x80000000 0x00000000 0x80000000>;  2G

    reg = <0x00000000 0x80000000 0x00000000 0x40000000>;  1G

    This issue can't duplicate.
    So,Is there a configuration that needs to be modified for this DDR?

  • Hi Jkun,

    It seems your DDR is not configured properly. I am routing your query to our DDR expert for comments.

  • Jkun,

    you need to use the DDR Register Configuration Tool:  https://dev.ti.com/sysconfig/?product=Processor_DDR_Config&device=AM64x

    and ensure you have the following settings for your device

    Data Bus Width (per device): 8

    Density (per device) Gb: 8

    Chip Selects/ Ranks: 1

    Once these are configured, save the resulting output file and build into your code.

    Since you have a TwinDie device, you have to treat each die as an individual device when using the tool.

    Regards,

    James

  • Hi,Bin:

    Thank you for your help,We fixed this issue.