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.

AM623: AM623: Memory can't be configured to 4GB from device-tree

Part Number: AM623
Other Parts Discussed in Thread: SYSCONFIG, AM625

Hello,

I have tested the patches provided by James. u-boot and the Linux kernel have been modified.

The u-boot is detected the 2 memory areas of 2GB at adress 0x80000000 and 0x880000000.

I use the command bdinfo to get the information.

I test that:

- The area 0x880000000 is writable by using :  mw.b 0x880000000 0xDD 0x40000000

- The area 0x880000000 is readable by using :  md 0x880000000

But the kernel seems to detect the 4GB memory but still crash with a kernel panic.

It seems that some instructions is not defined, or not understand by the CPU.

I built the tiny image using bitbake from clean a clean repository.

AM62x-4GB-Boot.txt
U-Boot SPL 2021.01-g2dd2e1d366 (Jul 31 2023 - 11:02:03 +0000)
SYSFW ABI: 3.1 (firmware rev 0x0008 '8.4.7--v08.04.07 (Jolly Jellyfi')
SPL initial stack usage: 13424 bytes
Trying to boot from eth device
Loading Environment from MMC... *** Warning - No MMC card found, using default environment

eth0: ethernet@8000000port@1
ethernet@8000000port@1 Waiting for PHY auto negotiation to complete........ done
link up on port 1, speed 1000, full duplex
BOOTP broadcast 1
BOOTP broadcast 2
BOOTP broadcast 3
DHCP client bound to address 10.0.0.106 (1003 ms)
Using ethernet@8000000port@1 device
TFTP from server 10.0.0.1; our IP address is 10.0.0.106
Filename 'tispl.bin'.
Load address: 0x82000000
Loading: #################################################################
         #################################################################
         #####################################################
         4.4 MiB/s
done
Bytes transferred = 935848 (e47a8 hex)
udma_stop_mem2dev: peer not stopped TIMEOUT !
Loading Environment from MMC... *** Warning - No MMC card found, using default environment

init_env from device 4 not supported!
Starting ATF on ARM64 core...

NOTICE:  BL31: v2.7(release):v2.7.0-dirty
NOTICE:  BL31: Built : 10:08:45, Jul 31 2023

U-Boot SPL 2021.01-g2dd2e1d366 (Sep 05 2023 - 07:32:24 +0000)
SYSFW ABI: 3.1 (firmware rev 0x0008 '8.4.7--v08.04.07 (Jolly Jellyfi')
Trying to boot from eth device
Loading Environment from MMC... *** Warning - No MMC card found, using default environment

eth0: ethernet@8000000port@1
ethernet@8000000port@1 Waiting for PHY auto negotiation to complete........ done
link up on port 1, speed 1000, full duplex
BOOTP broadcast 1
BOOTP broadcast 2
BOOTP broadcast 3
BOOTP broadcast 4
DHCP client bound to address 10.0.0.106 (1761 ms)
Using ethernet@8000000port@1 device
TFTP from server 10.0.0.1; our IP address is 10.0.0.106
Filename 'u-boot.img'.
Load address: 0x82000000
Loading: #################################################################
         #################################################################
         ####################################
         705.1 KiB/s
done
Bytes transferred = 847792 (cefb0 hex)


U-Boot 2021.01-g2dd2e1d366 (Sep 05 2023 - 07:32:24 +0000)

SoC:   AM62X SR1.0 GP
Model: Texas Instruments AM625 SK
i2c_write: error waiting for data ACK (status=0x116)
EEPROM not available at 0x50, trying to read at 0x51
i2c_write: error waiting for data ACK (status=0x116)
Reading on-board EEPROM at 0x51 failed -121
DRAM:  4 GiB
MMC:   mmc@fa10000: 0, mmc@fa00000: 1, mmc@fa20000: 2
Loading Environment from MMC... OK
In:    serial@2800000
Out:   serial@2800000
Err:   serial@2800000
i2c_write: error waiting for data ACK (status=0x116)
EEPROM not available at 0x50, trying to read at 0x51
i2c_write: error waiting for data ACK (status=0x116)
Reading on-board EEPROM at 0x51 failed -121
Net:   eth0: ethernet@8000000port@1
Hit any key to stop autoboot:  0 
=> bdinfo 
boot_params = 0x0000000000000000
DRAM bank   = 0x0000000000000000
-> start    = 0x0000000080000000
-> size     = 0x0000000080000000
DRAM bank   = 0x0000000000000001
-> start    = 0x0000000880000000
-> size     = 0x0000000080000000
flashstart  = 0x0000000000000000
flashsize   = 0x0000000000000000
flashoffset = 0x0000000000000000
baudrate    = 115200 bps
relocaddr   = 0x00000000fff1c000
reloc off   = 0x000000007f71c000
Build       = 64-bit
current eth = ethernet@8000000port@1
ethaddr     = 34:08:e1:87:76:aa
IP addr     = 10.0.0.106
fdt_blob    = 0x00000000f7ef2920
new_fdt     = 0x00000000f7ef2920
fdt_size    = 0x00000000000094c0
multi_dtb_fit= 0x0000000000000000
lmb_dump_all:
    memory.cnt             = 0x2
    memory.size            = 0x0
    memory.reg[0x0].base   = 0x80000000
                   .size   = 0x80000000
    memory.reg[0x1].base   = 0x880000000
                   .size   = 0x80000000

    reserved.cnt           = 0x3
    reserved.size          = 0x0
    reserved.reg[0x0].base = 0x9db00000
                     .size = 0xc00000
    reserved.reg[0x1].base = 0x9e780000
                     .size = 0x1880000
    reserved.reg[0x2].base = 0xf7ef1520
                     .size = 0x810eae0
arch_number = 0x0000000000000000
TLB addr    = 0x00000000ffff0000
irq_sp      = 0x00000000f7ef2910
sp start    = 0x00000000f7ef2910
Early malloc usage: 2f30 / 8000
=> boot
link up on port 1, speed 1000, full duplex
Using ethernet@8000000port@1 device
TFTP from server 10.0.0.1; our IP address is 10.0.0.106
Filename 'k3-am625-sk.dtb'.
Load address: 0x88000000
Loading: ####
         11.4 MiB/s
done
Bytes transferred = 47749 (ba85 hex)
link up on port 1, speed 1000, full duplex
Using ethernet@8000000port@1 device
TFTP from server 10.0.0.1; our IP address is 10.0.0.106
Filename 'Image'.
Load address: 0x82000000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ############################
         12.8 MiB/s
done
Bytes transferred = 18536960 (11ada00 hex)
## Flattened Device Tree blob at 88000000
   Booting using the fdt blob at 0x88000000
   Loading Device Tree to 000000008fff1000, end 000000008ffffa84 ... OK

Starting kernel ...

[    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
[    0.000000] Linux version 5.10.140-g5e63ae91b2 (oe-user@oe-host) (aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10)) 9.2.1 20191025, GNU ld (GNU Toolchai3
[    0.000000] Machine model: Texas Instruments AM625 SK
[    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
[    0.000000] printk: bootconsole [ns16550a0] enabled
[    0.000000] efi: UEFI not found.
[    0.000000] Reserved memory: created DMA memory pool at 0x000000009c800000, size 3 MiB
[    0.000000] OF: reserved mem: initialized node ipc-memories@9c800000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x000000009cb00000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node m4f-dma-memory@9cb00000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x000000009cc00000, size 13 MiB
[    0.000000] OF: reserved mem: initialized node m4f-memory@9cc00000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x000000009d900000, size 1 MiB
[    0.000000] OF: reserved mem: initialized node r5f-dma-memory@9d900000, compatible id shared-dma-pool
[    0.000000] Reserved memory: created DMA memory pool at 0x000000009da00000, size 13 MiB
[    0.000000] OF: reserved mem: initialized node r5f-memory@9da00000, compatible id shared-dma-pool
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000080000000-0x00000000ffffffff]
[    0.000000]   DMA32    empty
[    0.000000]   Normal   [mem 0x0000000100000000-0x00000008ffffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000080000000-0x000000009c7fffff]
[    0.000000]   node   0: [mem 0x000000009c800000-0x000000009e6fffff]
[    0.000000]   node   0: [mem 0x000000009e700000-0x000000009e77ffff]
[    0.000000]   node   0: [mem 0x000000009e780000-0x000000009fffffff]
[    0.000000]   node   0: [mem 0x00000000a0000000-0x00000000ffffffff]
[    0.000000]   node   0: [mem 0x0000000880000000-0x00000008ffffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000008ffffffff]
[    0.000000] cma: Reserved 512 MiB at 0x00000000e0000000
[    0.000000] psci: probing for conduit method from DT.
[    0.000000] psci: PSCIv1.1 detected in firmware.
[    0.000000] psci: Using standard PSCI v0.2 function IDs
[    0.000000] psci: Trusted OS migration not required
[    0.000000] psci: SMC Calling Convention v1.2
[    0.000000] percpu: Embedded 22 pages/cpu s50008 r8192 d31912 u90112
[    0.000000] Detected VIPT I-cache on CPU0
[    0.000000] CPU features: detected: ARM erratum 845719
[    0.000000] CPU features: detected: GIC system register CPU interface
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 1032192
[    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 root=/dev/nfs rootfstype=nfs ip=dhcp nfsroot=10.0.0.28:/media/alognon/build/sitara/netboot/nfs,nfsvers=3,tck
[    0.000000] Dentry cache hash table entries: 524288 (order: 10, 4194304 bytes, linear)
[    0.000000] Inode-cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
[    0.000000] software IO TLB: mapped [mem 0x00000000dc000000-0x00000000e0000000] (64MB)
[    0.000000] Memory: 3447816K/4194304K available (10880K kernel code, 1142K rwdata, 4200K rodata, 1792K init, 430K bss, 222200K reserved, 524288K cma-reserved)
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] rcu: Preemptible hierarchical RCU implementation.
[    0.000000] rcu:     RCU event tracing is enabled.
[    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=4.
[    0.000000]  Trampoline variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
[    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
[    0.000000] GICv3: 256 SPIs implemented
[    0.000000] GICv3: 0 Extended SPIs implemented
[    0.000000] GICv3: Distributor has no Range Selector support
[    0.000000] GICv3: 16 PPIs implemented
[    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001880000
[    0.000000] ITS [mem 0x01820000-0x0182ffff]
[    0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
[    0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
[    0.000000] ITS@0x0000000001820000: allocated 524288 Devices @880800000 (flat, esz 8, psz 64K, shr 0)
[    0.000000] ITS: using cache flushing for cmd queue
[    0.000000] GICv3: using LPI property table @0x0000000880030000
[    0.000000] GIC: using cache flushing for LPI property table
[    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000880040000
[    0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
[    0.000000] clocksource: arch_sys_counter: mask: 0xffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
[    0.000005] sched_clock: 56 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
[    0.008509] Console: colour dummy device 80x25
[    0.013101] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=800000)
[    0.023783] pid_max: default: 32768 minimum: 301
[    0.028586] LSM: Security Framework initializing
[    0.033390] Mount-cache hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.040987] Mountpoint-cache hash table entries: 8192 (order: 4, 65536 bytes, linear)
[    0.050730] rcu: Hierarchical SRCU implementation.
[    0.055913] Platform MSI: msi-controller@1820000 domain created
[    0.062185] PCI/MSI: /bus@f0000/interrupt-controller@1800000/msi-controller@1820000 domain created
[    0.071423] EFI services will not be available.
[    0.076330] smp: Bringing up secondary CPUs ...
[    0.081612] Detected VIPT I-cache on CPU1
[    0.081650] GICv3: CPU1: found redistributor 1 region 0:0x00000000018a0000
[    0.081665] GICv3: CPU1: using allocated LPI pending table @0x0000000880050000
[    0.081728] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
[    0.082401] Detected VIPT I-cache on CPU2
[    0.082426] GICv3: CPU2: found redistributor 2 region 0:0x00000000018c0000
[    0.082437] GICv3: CPU2: using allocated LPI pending table @0x0000000880060000
[    0.082473] CPU2: Booted secondary processor 0x0000000002 [0x410fd034]
[    0.083097] Detected VIPT I-cache on CPU3
[    0.083118] GICv3: CPU3: found redistributor 3 region 0:0x00000000018e0000
[    0.083127] GICv3: CPU3: using allocated LPI pending table @0x0000000880070000
[    0.083158] CPU3: Booted secondary processor 0x0000000003 [0x410fd034]
[    0.083227] smp: Brought up 1 node, 4 CPUs
[    0.162963] SMP: Total of 4 processors activated.
[    0.167777] CPU features: detected: 32-bit EL0 Support
[    0.173049] CPU features: detected: CRC32 instructions
[    0.185977] CPU: All CPU(s) started at EL2
[    0.190186] alternatives: patching kernel code
[    0.195903] devtmpfs: initialized
[    0.205132] KASLR disabled due to lack of seed
[    0.209885] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.219862] futex hash table entries: 1024 (order: 4, 65536 bytes, linear)
[    0.242246] pinctrl core: initialized pinctrl subsystem
[    0.248276] DMI not present or invalid.
[    0.252891] NET: Registered protocol family 16
[    0.258755] DMA: preallocated 512 KiB GFP_KERNEL pool for atomic allocations
[    0.266087] DMA: preallocated 512 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
[    0.274201] DMA: preallocated 512 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
[    0.282826] thermal_sys: Registered thermal governor 'step_wise'
[    0.282832] thermal_sys: Registered thermal governor 'power_allocator'
[    0.289529] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
[    0.303246] ASID allocator initialised with 65536 entries
[    0.329175] HugeTLB registered 1.00 GiB page size, pre-allocated 0 pages
[    0.336060] HugeTLB registered 32.0 MiB page size, pre-allocated 0 pages
[    0.342937] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.349790] HugeTLB registered 64.0 KiB page size, pre-allocated 0 pages
[    0.357717] cryptd: max_cpu_qlen set to 1000
[    0.364956] k3-chipinfo 43000014.chipid: Family:AM62X rev:SR1.0 JTAGID[0x0bb7e02f] Detected
[    0.374001] vcc_5v0: supplied by vmain_pd
[    0.378476] vcc_3v3_sys: supplied by vmain_pd
[    0.383345] vcc_1v8: supplied by vcc_3v3_sys
[    0.388503] iommu: Default domain type: Translated 
[    0.393824] SCSI subsystem initialized
[    0.398085] mc: Linux media interface: v0.10
[    0.402483] videodev: Linux video capture interface: v2.00
[    0.408163] pps_core: LinuxPPS API ver. 1 registered
[    0.413239] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
[    0.422589] PTP clock support registered
[    0.426627] EDAC MC: Ver: 3.0.0
[    0.430459] omap-mailbox 29000000.mailbox: omap mailbox rev 0x66fc9100
[    0.437543] FPGA manager framework
[    0.441104] Advanced Linux Sound Architecture Driver Initialized.
[    0.448254] clocksource: Switched to clocksource arch_sys_counter
[    0.454709] VFS: Disk quotas dquot_6.6.0
[    0.458780] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
[    0.471208] NET: Registered protocol family 2
[    0.476072] IP idents hash table entries: 65536 (order: 7, 524288 bytes, linear)
[    0.485437] tcp_listen_portaddr_hash hash table entries: 2048 (order: 3, 32768 bytes, linear)
[    0.494242] TCP established hash table entries: 32768 (order: 6, 262144 bytes, linear)
[    0.502544] TCP bind hash table entries: 32768 (order: 7, 524288 bytes, linear)
[    0.510533] TCP: Hash tables configured (established 32768 bind 32768)
[    0.517503] UDP hash table entries: 2048 (order: 4, 65536 bytes, linear)
[    0.524432] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes, linear)
[    0.531966] NET: Registered protocol family 1
[    0.536945] RPC: Registered named UNIX socket transport module.
[    0.543027] RPC: Registered udp transport module.
[    0.547865] RPC: Registered tcp transport module.
[    0.552680] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.559274] PCI: CLS 0 bytes, default 64
[    0.564161] hw perfevents: enabled with armv8_cortex_a53 PMU driver, 7 counters available
[    0.576204] Initialise system trusted keyrings
[    0.581000] workingset: timestamp_bits=46 max_order=20 bucket_order=0
[    0.591357] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.597898] NFS: Registering the id_resolver key type
[    0.603126] Key type id_resolver registered
[    0.607406] Key type id_legacy registered
[    0.611569] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
[    0.618423] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
[    0.626185] 9p: Installing v9fs 9p2000 file system support
[    0.666393] Key type asymmetric registered
[    0.670590] Asymmetric key parser 'x509' registered
[    0.675616] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 243)
[    0.683182] io scheduler mq-deadline registered
[    0.687813] io scheduler kyber registered
[    0.693773] pinctrl-single 4084000.pinctrl: 34 pins, size 136
[    0.700081] pinctrl-single f4000.pinctrl: 171 pins, size 684
[    0.712724] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
[    0.724223] panel-simple display: supply power not found, using dummy regulator
[    0.731914] ------------[ cut here ]------------
[    0.736646] WARNING: CPU: 0 PID: 1 at drivers/gpu/drm/panel/panel-simple.c:579 panel_simple_probe+0x304/0x3d8
[    0.746780] Modules linked in:
[    0.749906] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 5.10.140-g5e63ae91b2 #1
[    0.757196] Hardware name: Texas Instruments AM625 SK (DT)
[    0.762802] pstate: a0000005 (NzCv daif -PAN -UAO -TCO BTYPE=--)
[    0.768938] pc : panel_simple_probe+0x304/0x3d8
[    0.773564] lr : panel_simple_probe+0x11c/0x3d8
[    0.778188] sp : ffff80001124bac0
[    0.781570] x29: ffff80001124bac0 x28: 0000000000000000 
[    0.787000] x27: ffff800010f41078 x26: ffff800010ed04c0 
[    0.792429] x25: ffff800011161070 x24: 0000000000000000 
[    0.797858] x23: ffff800010b6b130 x22: ffff0008000f8000 
[    0.803287] x21: ffff0008003e3810 x20: ffff00080116c480 
[    0.808716] x19: 0000000000000000 x18: 0000000000000002 
[    0.814144] x17: 0000000000000000 x16: 00000000832ab565 
[    0.819573] x15: 0000000000000001 x14: 000000000007a318 
[    0.825001] x13: ffff000800db1a1c x12: 0000000000000020 
[    0.830430] x11: 0101010101010101 x10: 7f7f7f7f7f7f7f7f 
[    0.835860] x9 : fefefeff666d686c x8 : 7f7f7f7f7f7f7f7f 
[    0.841288] x7 : 68732c6b646d606f x6 : 0000000080808080 
[    0.846716] x5 : ffff00087f80f1f8 x4 : 0000000000000000 
[    0.852145] x3 : 0000000000000007 x2 : 00000000ffffeff0 
[    0.857573] x1 : 00000000fffffffa x0 : 000000000000100a 
[    0.863002] Call trace:
[    0.865497]  panel_simple_probe+0x304/0x3d8
[    0.869768]  panel_simple_platform_probe+0x34/0x50
[    0.874665]  platform_drv_probe+0x54/0xa8
[    0.878760]  really_probe+0xec/0x3e0
[    0.882409]  driver_probe_device+0x58/0xb8
[    0.886591]  device_driver_attach+0x74/0x80
[    0.890862]  __driver_attach+0x58/0xf0
[    0.894690]  bus_for_each_dev+0x70/0xc0
[    0.898606]  driver_attach+0x24/0x30
[    0.902255]  bus_add_driver+0x150/0x200
[    0.906171]  driver_register+0x64/0x120
[    0.910087]  __platform_driver_register+0x48/0x58
[    0.914896]  panel_simple_init+0x24/0x4c
[    0.918904]  do_one_initcall+0x54/0x1b8
[    0.922821]  kernel_init_freeable+0x220/0x2a0
[    0.927273]  kernel_init+0x14/0x114
[    0.930834]  ret_from_fork+0x10/0x34
[    0.934505] ---[ end trace b610c5260d4587b9 ]---
[    0.947387] brd: module loaded
[    0.957653] loop: module loaded
[    0.961715] megasas: 07.714.04.00-rc1
[    0.968750] tun: Universal TUN/TAP device driver, 1.6
[    0.974414] igbvf: Intel(R) Gigabit Virtual Function Network Driver
[    0.980831] igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
[    0.986939] sky2: driver version 1.30
[    0.991659] VFIO - User Level meta-driver version: 0.3
[    0.997802] i2c /dev entries driver
[    1.002899] sdhci: Secure Digital Host Controller Interface driver
[    1.009233] sdhci: Copyright(c) Pierre Ossman
[    1.013967] sdhci-pltfm: SDHCI platform and OF driver helper
[    1.020617] ledtrig-cpu: registered to indicate activity on CPUs
[    1.027084] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
[    1.034710] optee: probing for conduit method.
[    1.039302] optee: revision 3.18 (8e155bae)
[    1.039576] optee: dynamic shared memory is enabled
[    1.049086] optee: initialized driver
[    1.054631] NET: Registered protocol family 17
[    1.059351] 9pnet: Installing 9P2000 support
[    1.063822] Key type dns_resolver registered
[    1.068418] Loading compiled-in X.509 certificates
[    1.082021] ti-sci 44043000.system-controller: ti,ctx-memory-region is required for suspend but not provided.
[    1.092195] ti-sci 44043000.system-controller: ti_sci_init_suspend failed, mem suspend will be non-functional.
[    1.102437] ti-sci 44043000.system-controller: ABI: 3.1 (firmware rev 0x0008 '8.4.7--v08.04.07 (Jolly Jellyfi')
[    1.138257] davinci-mcasp 2b10000.mcasp: IRQ common not found
[    1.147148] omap_i2c 20000000.i2c: bus 0 rev0.12 at 400 kHz
[    1.154458] omap_i2c 20010000.i2c: bus 1 rev0.12 at 100 kHz
[    1.161252] omap_i2c 20020000.i2c: bus 2 rev0.12 at 100 kHz
[    1.167364] ti-sci-intr 4210000.interrupt-controller: Interrupt Router 5 domain created
[    1.175708] ti-sci-intr bus@f0000:interrupt-controller@a00000: Interrupt Router 3 domain created
[    1.184947] ti-sci-inta 48000000.interrupt-controller: Interrupt Aggregator domain 28 created
[    1.193981] ti-bcdma 485c0100.dma-controller: Number of rings: 82
[    1.202110] ti-bcdma 485c0100.dma-controller: Channels: 48 (bchan: 18, tchan: 12, rchan: 18)
[    1.213287] ti-pktdma 485c0000.dma-controller: Number of rings: 150
[    1.223352] ti-pktdma 485c0000.dma-controller: Channels: 35 (tchan: 20, rchan: 15)
[    1.233725] printk: console [ttyS2] disabled
[    1.238173] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 18, base_baud = 3000000) is a 8250
[    1.246945] printk: console [ttyS2] enabled
[    1.246945] printk: console [ttyS2] enabled
[    1.255387] printk: bootconsole [ns16550a0] disabled
[    1.255387] printk: bootconsole [ns16550a0] disabled
[    1.266454] tfp410-bridge dvi-bridge: failed to parse powerdown gpio
[    1.279874] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
[    1.324257] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
[    1.333837] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver TI DP83867
[    1.341942] davinci_mdio 8000f00.mdio: phy[1]: device 8000f00.mdio:01, driver unknown
[    1.349874] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA01103, cpsw version 0x6BA81103 Ports: 3 quirks:00000002
[    1.362804] am65-cpsw-nuss 8000000.ethernet: Use random MAC address
[    1.369080] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.5
[    1.376206] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512
[    1.382888] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:0
[    1.497566] davinci-mcasp 2b10000.mcasp: IRQ common not found
[    1.503501] mmc1: CQHCI version 5.10
[    1.503541] mmc0: CQHCI version 5.10
[    1.517651] [drm] Initialized tidss 1.0.0 20180215 for 30200000.dss on minor 0
[    1.548296] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
[    1.548349] mmc1: SDHCI controller on fa00000.mmc [fa00000.mmc] using ADMA 64-bit
[    1.585623] Console: switching to colour frame buffer device 100x30
[    1.608197] tidss 30200000.dss: [drm] fb0: tidssdrmfb frame buffer device
[    1.615935] debugfs: Directory 'pd:182' with parent 'pm_genpd' already present!
[    1.622507] mmc0: new HS200 MMC card at address 0001
[    1.625761] am65-cpsw-nuss 8000000.ethernet: down msc_sl e0000000 tmo 0
[    1.629020] mmcblk0: mmc0:0001 Q2J54A 3.59 GiB 
[    1.639695] mmcblk0boot0: mmc0:0001 Q2J54A partition 1 16.0 MiB
[    1.640904] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 19
[    1.645959] mmcblk0boot1: mmc0:0001 Q2J54A partition 2 16.0 MiB
[    1.658112] mmcblk0rpmb: mmc0:0001 Q2J54A partition 3 512 KiB, chardev (237:0)
[    1.659239] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:00] driver [TI DP83867] (irq=POLL)
[    1.674827] am65-cpsw-nuss 8000000.ethernet eth0: configuring for phy/rgmii-rxid link mode
[    1.686119] am65-cpsw-nuss 8000000.ethernet: down msc_sl e0000000 tmo 0
[    1.695192] am65-cpsw-nuss 8000000.ethernet eth1: PHY [8000f00.mdio:01] driver [Generic PHY] (irq=POLL)
[    1.704687] am65-cpsw-nuss 8000000.ethernet eth1: configuring for phy/rgmii-rxid link mode
[    1.714623] am65-cpsw-nuss 8000000.ethernet eth1: Link is Up - 100Mbps/Full - flow control rx/tx
[    1.716101] mmc1: error -84 whilst initialising SD card
[    1.732253] Sending DHCP requests .
[    1.957810] mmc1: new ultra high speed SDR104 SDXC card at address 59b4
[    1.968693] mmcblk1: mmc1:59b4 SD64G 59.4 GiB 
[    1.975084]  mmcblk1: p1 p2
[    4.500252] .
[    5.789303] am65-cpsw-nuss 8000000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off
[    9.340245] ., OK
[    9.358206] IP-Config: Got DHCP answer from 10.0.0.1, my address is 10.0.0.106
[    9.365420] IP-Config: Complete:
[    9.368645]      device=eth0, hwaddr=34:08:e1:87:76:aa, ipaddr=10.0.0.106, mask=255.0.0.0, gw=255.255.255.255
[    9.378540]      host=10.0.0.106, domain=, nis-domain=(none)
[    9.384188]      bootserver=10.0.0.1, rootserver=10.0.0.28, rootpath=
[    9.384191]      nameserver0=10.0.0.1
[    9.396141] am65-cpsw-nuss 8000000.ethernet eth1: Link is Down
[    9.405862] ALSA device list:
[    9.408844]   No soundcards found.
[    9.420333] VFS: Mounted root (nfs filesystem) readonly on device 0:21.
[    9.427392] devtmpfs: mounted
[    9.431594] Freeing unused kernel memory: 1792K
[    9.452305] Run /sbin/init as init process
[    9.470895] ------------[ cut here ]------------
[    9.475529] kernel BUG at arch/arm64/kernel/traps.c:407!
[    9.480828] Internal error: Oops - BUG: 0 [#1] PREEMPT SMP
[    9.486300] Modules linked in:
[    9.489355] CPU: 1 PID: -1494815096 Comm:  Tainted: G        W         5.10.140-g5e63ae91b2 #1
[    9.497945] Hardware name: Texas Instruments AM625 SK (DT)
[    9.503439] pstate: 000003c5 (nzcv DAIF -PAN -UAO -TCO BTYPE=--)
[    9.509447] pc : do_undefinstr+0x2f4/0x318
[    9.513532] lr : do_undefinstr+0x1e8/0x318
[    9.517614] sp : ffff80001124bcd0
[    9.520916] x29: ffff80001124bcd0 x28: 0000ffffe541bb50 
[    9.526217] x27: 0000000000000000 x26: 0000000000000000 
[    9.531516] x25: 0000000000000000 x24: 0000000000000000 
[    9.536816] x23: 00000000400003c5 x22: ffff800010012940 
[    9.542116] x21: ffff80001124beb0 x20: 0000ffffe541bb50 
[    9.547416] x19: ffff80001124bd60 x18: 0000000000000002 
[    9.552715] x17: 0000000000000000 x16: 0000000000000000 
[    9.558015] x15: ffff800010012940 x14: 0000000000000195 
[    9.563314] x13: 0000000000000002 x12: 0000000000000001 
[    9.568614] x11: 0000000000000000 x10: ffff000800008c00 
[    9.573913] x9 : 000000000000000d x8 : 0000000000000001 
[    9.579212] x7 : 000000000000000f x6 : ffff80001124bd28 
[    9.584512] x5 : 00000000d5300000 x4 : ffff8000110a3dc0 
[    9.589811] x3 : 0000000000000000 x2 : 0000000000000000 
[    9.595110] x1 : 0000ffffe541bb50 x0 : 00000000400003c5 
[    9.600411] Call trace:
[    9.602853] Code: f9401bf7 17ffff7b a9025bf5 f9001bf7 (d4210000) 
[    9.608942] ---[ end trace b610c5260d4587bb ]---
[    9.613546] Kernel panic - not syncing: Oops - BUG: Fatal exception in interrupt
[    9.620924] SMP: stopping secondary CPUs
[    9.624841] Kernel Offset: disabled
[    9.628319] CPU features: 0x0040002,2000200c
[    9.632575] Memory Limit: none
[    9.635624] ---[ end Kernel panic - not syncing: Oops - BUG: Fatal exception in interrupt ]---

The syconfig tools has been used to configure the DDR4 has requested by James.

Here is the patch I used and the DDR configuration and the sysconfig of the AM62x file:

0001-Configure-DDR4-for-4GB.txt

AM62x-LP4-50-800_dualrank_SVB.txt

devicetree_16_06_2023.txt
/**
 * These arguments were used when this file was generated. They will be automatically applied on subsequent loads
 * via the GUI or CLI. Run CLI with '--help' for additional information on how to override these arguments.
 * @cliArgs --device "AM62x" --package "ALW" --part "Default"
 * @versions {"tool":"1.13.0+2553"}
 */

/**
 * These are the peripherals and settings in this configuration
 */
const iDDRSS1                       = scripting.addPeripheral("DDRSS");
iDDRSS1.$name                       = "MyDDRSS1";
const iDSS1                         = scripting.addPeripheral("DSS");
iDSS1.$name                         = "MyDSS1";
const iGPIO1                        = scripting.addPeripheral("GPIO");
iGPIO1["12"].pu_pd                  = "pu";
iGPIO1["12"].rx                     = false;
iGPIO1["12"].$used                  = true;
iGPIO1["13"].$used                  = true;
iGPIO1["14"].$used                  = true;
iGPIO1["39"].pu_pd                  = "pd";
iGPIO1["39"].rx                     = false;
iGPIO1["39"].$used                  = true;
iGPIO1["41"].pu_pd                  = "pu";
iGPIO1["41"].rx                     = false;
iGPIO1["41"].$assign                = "ball.M21";
iGPIO1["41"].$used                  = true;
iGPIO1["42"].pu_pd                  = "pd";
iGPIO1["42"].rx                     = false;
iGPIO1["42"].$assign                = "ball.L21";
iGPIO1["42"].$used                  = true;
iGPIO1["65"].pu_pd                  = "pu";
iGPIO1["65"].rx                     = false;
iGPIO1["65"].$used                  = true;
iGPIO1["66"].pu_pd                  = "pu";
iGPIO1["66"].rx                     = false;
iGPIO1["66"].$used                  = true;
iGPIO1["67"].pu_pd                  = "pu";
iGPIO1["67"].rx                     = false;
iGPIO1["67"].$used                  = true;
iGPIO1["68"].pu_pd                  = "pu";
iGPIO1["68"].rx                     = false;
iGPIO1["68"].$used                  = true;
iGPIO1["69"].pu_pd                  = "pu";
iGPIO1["69"].rx                     = false;
iGPIO1["69"].$used                  = true;
iGPIO1["70"].pu_pd                  = "pu";
iGPIO1["70"].rx                     = false;
iGPIO1["70"].$used                  = true;
iGPIO1["71"].pu_pd                  = "pd";
iGPIO1["71"].rx                     = false;
iGPIO1["71"].$used                  = true;
iGPIO1["72"].pu_pd                  = "pd";
iGPIO1["72"].rx                     = false;
iGPIO1["72"].$used                  = true;
iGPIO1.$name                        = "MyGPIO1";
const iGPIO2                        = scripting.addPeripheral("GPIO");
iGPIO2["22"].$assign                = "ball.A15";
iGPIO2["22"].$used                  = true;
iGPIO2["23"].$assign                = "ball.B15";
iGPIO2["23"].$used                  = true;
iGPIO2["49"].pu_pd                  = "pu";
iGPIO2["49"].rx                     = false;
iGPIO2["49"].$assign                = "ball.C17";
iGPIO2["49"].$used                  = true;
iGPIO2["51"].rx                     = false;
iGPIO2.$name                        = "MyGPIO2";
const iI2C1                         = scripting.addPeripheral("I2C");
iI2C1.$name                         = "MyI2C1";
const iI2C2                         = scripting.addPeripheral("I2C");
iI2C2.$name                         = "MyI2C2";
const iI2C3                         = scripting.addPeripheral("I2C");
iI2C3.$name                         = "MyI2C3";
const iJTAG1                        = scripting.addPeripheral("JTAG");
iJTAG1.$name                        = "MyJTAG1";
const iMCAN1                        = scripting.addPeripheral("MCAN");
iMCAN1.$name                        = "MyMCAN1";
const iMCU_GPIO1                    = scripting.addPeripheral("MCU_GPIO");
iMCU_GPIO1.$name                    = "MyMCU_GPIO1";
const iMCU_I2C1                     = scripting.addPeripheral("MCU_I2C");
iMCU_I2C1.$name                     = "MyMCU_I2C1";
const iMCU_MCAN1                    = scripting.addPeripheral("MCU_MCAN");
iMCU_MCAN1.$name                    = "MyMCU_MCAN1";
const iMCU_MCAN2                    = scripting.addPeripheral("MCU_MCAN");
iMCU_MCAN2.$name                    = "MyMCU_MCAN2";
const iMCU_SPI1                     = scripting.addPeripheral("MCU_SPI");
iMCU_SPI1.$name                     = "MyMCU_SPI1";
const iMCU_SYSTEM1                  = scripting.addPeripheral("MCU_SYSTEM");
iMCU_SYSTEM1.$name                  = "MyMCU_SYSTEM1";
iMCU_SYSTEM1.MCU_EXT_REFCLK0.$used  = false;
iMCU_SYSTEM1.MCU_OBSCLK0.$used      = false;
iMCU_SYSTEM1.MCU_RESETSTATz.$assign = "ball.B12";
iMCU_SYSTEM1.MCU_SYSCLKOUT0.$used   = false;
const iMCU_TIMER1                   = scripting.addPeripheral("MCU_TIMER");
iMCU_TIMER1.$name                   = "MyMCU_TIMER1";
const iMCU_UART1                    = scripting.addPeripheral("MCU_UART");
iMCU_UART1.$name                    = "MyMCU_UART1";
const iMDIO1                        = scripting.addPeripheral("MDIO");
iMDIO1.$name                        = "MyMDIO1";
iMDIO1.MDC.$assign                  = "ball.AD24";
iMDIO1.MDIO.$assign                 = "ball.AB22";
const iMMC01                        = scripting.addPeripheral("MMC0");
iMMC01.$name                        = "MyMMC01";
const iMMC11                        = scripting.addPeripheral("MMC1");
iMMC11.$name                        = "MyMMC11";
iMMC11.CMD.$assign                  = "ball.A21";
iMMC11.SDWP.$used                   = false;
const iOLDI1                        = scripting.addPeripheral("OLDI");
iOLDI1.$name                        = "MyOLDI1";
const iOSPI1                        = scripting.addPeripheral("OSPI");
iOSPI1.$name                        = "MyOSPI1";
iOSPI1.CLK.$assign                  = "ball.H24";
iOSPI1.CSn0.$assign                 = "ball.F23";
iOSPI1.CSn1.$used                   = false;
iOSPI1.CSn2.$used                   = false;
iOSPI1.CSn3.$used                   = false;
iOSPI1.D0.$assign                   = "ball.E25";
iOSPI1.D1.$assign                   = "ball.G24";
iOSPI1.D2.$assign                   = "ball.F25";
iOSPI1.D3.$assign                   = "ball.F24";
iOSPI1.D4.$assign                   = "ball.J23";
iOSPI1.D5.$assign                   = "ball.J25";
iOSPI1.D6.$assign                   = "ball.H25";
iOSPI1.D7.$assign                   = "ball.J22";
iOSPI1.DQS.$assign                  = "ball.J24";
iOSPI1.LBCLKO.$assign               = "ball.G25";
iOSPI1.LBCLKO.$used                 = true;
const iPRU_ICSSM0_PRU1              = scripting.addPeripheral("PRU_ICSSM0_PRU");
iPRU_ICSSM0_PRU1.$name              = "MyPRU_ICSSM0_PRU1";
iPRU_ICSSM0_PRU1.GPI12.$used        = false;
iPRU_ICSSM0_PRU1.GPI13.$used        = false;
iPRU_ICSSM0_PRU1.GPI14.$used        = false;
iPRU_ICSSM0_PRU1.GPI15.$used        = false;
iPRU_ICSSM0_PRU1.GPI16.$used        = false;
iPRU_ICSSM0_PRU1.GPI17.$used        = false;
iPRU_ICSSM0_PRU1.GPI18.$used        = false;
iPRU_ICSSM0_PRU1.GPI19.$used        = false;
iPRU_ICSSM0_PRU1.GPI2.$used         = false;
iPRU_ICSSM0_PRU1.GPI3.$used         = false;
iPRU_ICSSM0_PRU1.GPI4.$used         = false;
iPRU_ICSSM0_PRU1.GPI6.$used         = false;
iPRU_ICSSM0_PRU1.GPO0.$used         = false;
iPRU_ICSSM0_PRU1.GPO1.$used         = false;
iPRU_ICSSM0_PRU1.GPO10.$used        = false;
iPRU_ICSSM0_PRU1.GPO11.$used        = false;
iPRU_ICSSM0_PRU1.GPO15.$used        = false;
iPRU_ICSSM0_PRU1.GPO17.$used        = false;
iPRU_ICSSM0_PRU1.GPO18.$used        = false;
iPRU_ICSSM0_PRU1.GPO19.$used        = false;
iPRU_ICSSM0_PRU1.GPO5.$used         = false;
iPRU_ICSSM0_PRU1.GPO7.$used         = false;
iPRU_ICSSM0_PRU1.GPO8.$used         = false;
iPRU_ICSSM0_PRU1.GPO9.$used         = false;
const iRGMII1                       = scripting.addPeripheral("RGMII");
iRGMII1.$name                       = "MyRGMII1";
const iRGMII2                       = scripting.addPeripheral("RGMII");
iRGMII2.$name                       = "MyRGMII2";
const iSPI1                         = scripting.addPeripheral("SPI");
iSPI1.$name                         = "MySPI1";
iSPI1.CS2.$used                     = false;
iSPI1.CS3.$used                     = false;
const iSYSTEM1                      = scripting.addPeripheral("SYSTEM");
iSYSTEM1.$name                      = "MySYSTEM1";
iSYSTEM1.CLKOUT0.$assign            = "ball.A18";
iSYSTEM1.EXTINTn.$assign            = "ball.D16";
const iUART1                        = scripting.addPeripheral("UART");
iUART1.$name                        = "MyUART1";
iUART1.CTSn.$used                   = false;
iUART1.DCDn.$used                   = false;
iUART1.DSRn.$used                   = false;
iUART1.DTRn.$used                   = false;
iUART1.RIn.$used                    = false;
iUART1.RTSn.$used                   = false;
iUART1.RXD.$assign                  = "ball.D14";
iUART1.TXD.$assign                  = "ball.E14";
const iUSB1                         = scripting.addPeripheral("USB");
iUSB1.$name                         = "MyUSB1";
iUSB1.DRVVBUS.pu_pd                 = "pu";
iUSB1.DRVVBUS.rx                    = false;
const iUSB2                         = scripting.addPeripheral("USB");
iUSB2.$name                         = "MyUSB2";
const iWKUP_I2C1                    = scripting.addPeripheral("WKUP_I2C");
iWKUP_I2C1.$name                    = "MyWKUP_I2C1";
iWKUP_I2C1.SCL.$assign              = "ball.B9";
iWKUP_I2C1.SDA.$assign              = "ball.A9";
const iWKUP_SYSTEM1                 = scripting.addPeripheral("WKUP_SYSTEM");
iWKUP_SYSTEM1.$name                 = "MyWKUP_SYSTEM1";
iWKUP_SYSTEM1.WKUP_CLKOUT0.$assign  = "ball.A12";
iWKUP_SYSTEM1.PMIC_LPM_EN0.$assign  = "ball.B7";
const iWKUP_UART1                   = scripting.addPeripheral("WKUP_UART");
iWKUP_UART1.$name                   = "MyWKUP_UART1";
iWKUP_UART1.CTSn.$assign            = "ball.C6";
iWKUP_UART1.RTSn.$assign            = "ball.A4";
iWKUP_UART1.RXD.$assign             = "ball.B4";
iWKUP_UART1.TXD.$assign             = "ball.C5";

/**
 * Pinmux solution for unlocked pins/peripherals. This ensures that minor changes to the automatic solver in a future
 * version of the tool will not impact the pinmux you originally saw.  These lines can be completely deleted in order to
 * re-solve from scratch.
 */
iDDRSS1.$suggestSolution                  = "DDR0";
iDDRSS1.A0.$suggestSolution               = "ball.J1";
iDDRSS1.A1.$suggestSolution               = "ball.J2";
iDDRSS1.A10.$suggestSolution              = "ball.R5";
iDDRSS1.A11.$suggestSolution              = "ball.P5";
iDDRSS1.A12.$suggestSolution              = "ball.R6";
iDDRSS1.A13.$suggestSolution              = "ball.R1";
iDDRSS1.A2.$suggestSolution               = "ball.K3";
iDDRSS1.A3.$suggestSolution               = "ball.L5";
iDDRSS1.A4.$suggestSolution               = "ball.K4";
iDDRSS1.A5.$suggestSolution               = "ball.K1";
iDDRSS1.A6.$suggestSolution               = "ball.R2";
iDDRSS1.A7.$suggestSolution               = "ball.P2";
iDDRSS1.A8.$suggestSolution               = "ball.P1";
iDDRSS1.A9.$suggestSolution               = "ball.P4";
iDDRSS1.ACT_n.$suggestSolution            = "ball.N6";
iDDRSS1.ALERT_n.$suggestSolution          = "ball.R3";
iDDRSS1.BA0.$suggestSolution              = "ball.M1";
iDDRSS1.BA1.$suggestSolution              = "ball.N1";
iDDRSS1.BG0.$suggestSolution              = "ball.T4";
iDDRSS1.BG1.$suggestSolution              = "ball.N2";
iDDRSS1.CAS_n.$suggestSolution            = "ball.M4";
iDDRSS1.CK0.$suggestSolution              = "ball.L1";
iDDRSS1.CK0_n.$suggestSolution            = "ball.L2";
iDDRSS1.CKE0.$suggestSolution             = "ball.H2";
iDDRSS1.CKE1.$suggestSolution             = "ball.J4";
iDDRSS1.CS0_n.$suggestSolution            = "ball.L6";
iDDRSS1.CS1_n.$suggestSolution            = "ball.K2";
iDDRSS1.DM0.$suggestSolution              = "ball.H5";
iDDRSS1.DM1.$suggestSolution              = "ball.W5";
iDDRSS1.DQ0.$suggestSolution              = "ball.F4";
iDDRSS1.DQ1.$suggestSolution              = "ball.G5";
iDDRSS1.DQ10.$suggestSolution             = "ball.U2";
iDDRSS1.DQ11.$suggestSolution             = "ball.V5";
iDDRSS1.DQ12.$suggestSolution             = "ball.W2";
iDDRSS1.DQ13.$suggestSolution             = "ball.V6";
iDDRSS1.DQ14.$suggestSolution             = "ball.Y1";
iDDRSS1.DQ15.$suggestSolution             = "ball.W1";
iDDRSS1.DQ2.$suggestSolution              = "ball.F3";
iDDRSS1.DQ3.$suggestSolution              = "ball.H6";
iDDRSS1.DQ4.$suggestSolution              = "ball.E3";
iDDRSS1.DQ5.$suggestSolution              = "ball.G2";
iDDRSS1.DQ6.$suggestSolution              = "ball.F2";
iDDRSS1.DQ7.$suggestSolution              = "ball.F1";
iDDRSS1.DQ8.$suggestSolution              = "ball.U1";
iDDRSS1.DQ9.$suggestSolution              = "ball.U3";
iDDRSS1.DQS0.$suggestSolution             = "ball.E1";
iDDRSS1.DQS0_n.$suggestSolution           = "ball.E2";
iDDRSS1.DQS1.$suggestSolution             = "ball.V1";
iDDRSS1.DQS1_n.$suggestSolution           = "ball.V2";
iDDRSS1.ODT0.$suggestSolution             = "ball.H1";
iDDRSS1.ODT1.$suggestSolution             = "ball.J3";
iDDRSS1.PAR.$suggestSolution              = "ball.T1";
iDDRSS1.RAS_n.$suggestSolution            = "ball.M5";
iDDRSS1.RESET0_n.$suggestSolution         = "ball.G1";
iDDRSS1.WE_n.$suggestSolution             = "ball.N3";
iDDRSS1.CAL0.$suggestSolution             = "ball.M2";
iDSS1.$suggestSolution                    = "DSS0";
iDSS1.VSYNC.$suggestSolution              = "ball.AC25";
iDSS1.HSYNC.$suggestSolution              = "ball.AB24";
iDSS1.PCLK.$suggestSolution               = "ball.AC24";
iDSS1.DE.$suggestSolution                 = "ball.Y20";
iDSS1.DATA0.$suggestSolution              = "ball.U22";
iDSS1.DATA1.$suggestSolution              = "ball.V24";
iDSS1.DATA2.$suggestSolution              = "ball.W25";
iDSS1.DATA3.$suggestSolution              = "ball.W24";
iDSS1.DATA4.$suggestSolution              = "ball.Y25";
iDSS1.DATA5.$suggestSolution              = "ball.Y24";
iDSS1.DATA6.$suggestSolution              = "ball.Y23";
iDSS1.DATA7.$suggestSolution              = "ball.AA25";
iDSS1.DATA8.$suggestSolution              = "ball.V21";
iDSS1.DATA9.$suggestSolution              = "ball.W21";
iDSS1.DATA10.$suggestSolution             = "ball.V20";
iDSS1.DATA11.$suggestSolution             = "ball.AA23";
iDSS1.DATA12.$suggestSolution             = "ball.AB25";
iDSS1.DATA13.$suggestSolution             = "ball.AA24";
iDSS1.DATA14.$suggestSolution             = "ball.Y22";
iDSS1.DATA15.$suggestSolution             = "ball.AA21";
iDSS1.DATA16.$suggestSolution             = "ball.R24";
iDSS1.DATA17.$suggestSolution             = "ball.R25";
iDSS1.DATA18.$suggestSolution             = "ball.T25";
iDSS1.DATA19.$suggestSolution             = "ball.R21";
iDSS1.DATA20.$suggestSolution             = "ball.T22";
iDSS1.DATA21.$suggestSolution             = "ball.T24";
iDSS1.DATA22.$suggestSolution             = "ball.U25";
iDSS1.DATA23.$suggestSolution             = "ball.U24";
iDSS1.EXTPCLKIN.$suggestSolution          = "ball.V25";
iGPIO1["12"].$suggestSolution             = "ball.G21";
iGPIO1["13"].$suggestSolution             = "ball.H21";
iGPIO1["14"].$suggestSolution             = "ball.E24";
iGPIO1["39"].$suggestSolution             = "ball.K25";
iGPIO1["65"].$suggestSolution             = "ball.D24";
iGPIO1["66"].$suggestSolution             = "ball.E23";
iGPIO1["67"].$suggestSolution             = "ball.C25";
iGPIO1["68"].$suggestSolution             = "ball.B24";
iGPIO1["69"].$suggestSolution             = "ball.D25";
iGPIO1["70"].$suggestSolution             = "ball.C24";
iGPIO1["71"].$suggestSolution             = "ball.A23";
iGPIO1["72"].$suggestSolution             = "ball.B23";
iGPIO1.$suggestSolution                   = "GPIO0";
iGPIO2.$suggestSolution                   = "GPIO1";
iI2C1.$suggestSolution                    = "I2C2";
iI2C1.SCL.$suggestSolution                = "ball.K22";
iI2C1.SDA.$suggestSolution                = "ball.K24";
iI2C2.$suggestSolution                    = "I2C1";
iI2C2.SCL.$suggestSolution                = "ball.B17";
iI2C2.SDA.$suggestSolution                = "ball.A17";
iI2C3.$suggestSolution                    = "I2C0";
iI2C3.SCL.$suggestSolution                = "ball.B16";
iI2C3.SDA.$suggestSolution                = "ball.A16";
iJTAG1.$suggestSolution                   = "MCU_DEBUG0";
iJTAG1.EMU0.$suggestSolution              = "ball.E12";
iJTAG1.EMU1.$suggestSolution              = "ball.C11";
iJTAG1.TCK.$suggestSolution               = "ball.A10";
iJTAG1.TDI.$suggestSolution               = "ball.A11";
iJTAG1.TDO.$suggestSolution               = "ball.D12";
iJTAG1.TMS.$suggestSolution               = "ball.B11";
iJTAG1.TRSTn.$suggestSolution             = "ball.B10";
iMCAN1.$suggestSolution                   = "MCAN0";
iMCAN1.RX.$suggestSolution                = "ball.E15";
iMCAN1.TX.$suggestSolution                = "ball.C15";
iMCU_GPIO1.$suggestSolution               = "MCU_GPIO0";
iMCU_I2C1.$suggestSolution                = "MCU_I2C0";
iMCU_I2C1.SCL.$suggestSolution            = "ball.A8";
iMCU_I2C1.SDA.$suggestSolution            = "ball.D10";
iMCU_MCAN1.$suggestSolution               = "MCU_MCAN1";
iMCU_MCAN1.RX.$suggestSolution            = "ball.D4";
iMCU_MCAN1.TX.$suggestSolution            = "ball.E5";
iMCU_MCAN2.$suggestSolution               = "MCU_MCAN0";
iMCU_MCAN2.RX.$suggestSolution            = "ball.B3";
iMCU_MCAN2.TX.$suggestSolution            = "ball.D6";
iMCU_SPI1.$suggestSolution                = "MCU_SPI0";
iMCU_SPI1.CLK.$suggestSolution            = "ball.A7";
iMCU_SPI1.CS0.$suggestSolution            = "ball.E8";
iMCU_SPI1.D0.$suggestSolution             = "ball.D9";
iMCU_SPI1.D1.$suggestSolution             = "ball.C9";
iMCU_SYSTEM1.$suggestSolution             = "MCU_SYSTEM0";
iMCU_SYSTEM1.MCU_ERRORn.$suggestSolution  = "ball.D1";
iMCU_SYSTEM1.MCU_PORz.$suggestSolution    = "ball.D2";
iMCU_SYSTEM1.MCU_RESETz.$suggestSolution  = "ball.E11";
iMCU_TIMER1.$suggestSolution              = "MCU_DMTIMER1";
iMCU_TIMER1.MCU_TIMER_IO.$suggestSolution = "ball.B8";
iMCU_UART1.$suggestSolution               = "MCU_USART0";
iMCU_UART1.CTSn.$suggestSolution          = "ball.A6";
iMCU_UART1.RTSn.$suggestSolution          = "ball.B6";
iMCU_UART1.RXD.$suggestSolution           = "ball.B5";
iMCU_UART1.TXD.$suggestSolution           = "ball.A5";
iMDIO1.$suggestSolution                   = "MDIO0";
iMMC01.$suggestSolution                   = "MMC0";
iMMC01.CMD.$suggestSolution               = "ball.Y3";
iMMC01.CLK.$suggestSolution               = "ball.AB1";
iMMC01.DAT0.$suggestSolution              = "ball.AA2";
iMMC01.DAT1.$suggestSolution              = "ball.AA1";
iMMC01.DAT2.$suggestSolution              = "ball.AA3";
iMMC01.DAT3.$suggestSolution              = "ball.Y4";
iMMC01.DAT4.$suggestSolution              = "ball.AB2";
iMMC01.DAT5.$suggestSolution              = "ball.AC1";
iMMC01.DAT6.$suggestSolution              = "ball.AD2";
iMMC01.DAT7.$suggestSolution              = "ball.AC2";
iMMC11.$suggestSolution                   = "MMC1";
iMMC11.CLK.$suggestSolution               = "ball.B22";
iMMC11.DAT0.$suggestSolution              = "ball.A22";
iMMC11.DAT1.$suggestSolution              = "ball.B21";
iMMC11.DAT2.$suggestSolution              = "ball.C21";
iMMC11.DAT3.$suggestSolution              = "ball.D22";
iMMC11.SDCD.$suggestSolution              = "ball.D17";
iOLDI1.$suggestSolution                   = "OLDI0";
iOLDI1.A0N.$suggestSolution               = "ball.AA5";
iOLDI1.A0P.$suggestSolution               = "ball.Y6";
iOLDI1.A1N.$suggestSolution               = "ball.AD3";
iOLDI1.A1P.$suggestSolution               = "ball.AB4";
iOLDI1.A2N.$suggestSolution               = "ball.Y8";
iOLDI1.A2P.$suggestSolution               = "ball.AA8";
iOLDI1.A3N.$suggestSolution               = "ball.AB6";
iOLDI1.A3P.$suggestSolution               = "ball.AA7";
iOLDI1.A4N.$suggestSolution               = "ball.AC6";
iOLDI1.A4P.$suggestSolution               = "ball.AC5";
iOLDI1.A5N.$suggestSolution               = "ball.AE5";
iOLDI1.A5P.$suggestSolution               = "ball.AD6";
iOLDI1.A6N.$suggestSolution               = "ball.AE6";
iOLDI1.A6P.$suggestSolution               = "ball.AD7";
iOLDI1.A7N.$suggestSolution               = "ball.AD8";
iOLDI1.A7P.$suggestSolution               = "ball.AE7";
iOLDI1.CLK0N.$suggestSolution             = "ball.AD4";
iOLDI1.CLK0P.$suggestSolution             = "ball.AE3";
iOLDI1.CLK1N.$suggestSolution             = "ball.AE4";
iOLDI1.CLK1P.$suggestSolution             = "ball.AD5";
iOSPI1.$suggestSolution                   = "OSPI0";
iPRU_ICSSM0_PRU1.$suggestSolution         = "PRU_ICSSM0_PRU0";
iPRU_ICSSM0_PRU1.GPI0.$suggestSolution    = "ball.M25";
iPRU_ICSSM0_PRU1.GPI1.$suggestSolution    = "ball.N23";
iPRU_ICSSM0_PRU1.GPI10.$suggestSolution   = "ball.L24";
iPRU_ICSSM0_PRU1.GPI11.$suggestSolution   = "ball.L25";
iPRU_ICSSM0_PRU1.GPI5.$suggestSolution    = "ball.P22";
iPRU_ICSSM0_PRU1.GPI7.$suggestSolution    = "ball.R23";
iPRU_ICSSM0_PRU1.GPI8.$suggestSolution    = "ball.P25";
iPRU_ICSSM0_PRU1.GPI9.$suggestSolution    = "ball.L23";
iPRU_ICSSM0_PRU1.GPO12.$suggestSolution   = "ball.M24";
iPRU_ICSSM0_PRU1.GPO13.$suggestSolution   = "ball.N20";
iPRU_ICSSM0_PRU1.GPO14.$suggestSolution   = "ball.U23";
iPRU_ICSSM0_PRU1.GPO16.$suggestSolution   = "ball.M22";
iPRU_ICSSM0_PRU1.GPO2.$suggestSolution    = "ball.N24";
iPRU_ICSSM0_PRU1.GPO3.$suggestSolution    = "ball.N25";
iPRU_ICSSM0_PRU1.GPO4.$suggestSolution    = "ball.P24";
iPRU_ICSSM0_PRU1.GPO6.$suggestSolution    = "ball.P21";
iRGMII1.$suggestSolution                  = "RGMII2";
iRGMII1.RD0.$suggestSolution              = "ball.AE23";
iRGMII1.RD1.$suggestSolution              = "ball.AB20";
iRGMII1.RD2.$suggestSolution              = "ball.AC21";
iRGMII1.RD3.$suggestSolution              = "ball.AE22";
iRGMII1.RXC.$suggestSolution              = "ball.AD23";
iRGMII1.RX_CTL.$suggestSolution           = "ball.AD22";
iRGMII1.TD0.$suggestSolution              = "ball.Y18";
iRGMII1.TD1.$suggestSolution              = "ball.AA18";
iRGMII1.TD2.$suggestSolution              = "ball.AD21";
iRGMII1.TD3.$suggestSolution              = "ball.AC20";
iRGMII1.TXC.$suggestSolution              = "ball.AE21";
iRGMII1.TX_CTL.$suggestSolution           = "ball.AA19";
iRGMII2.$suggestSolution                  = "RGMII1";
iRGMII2.RD0.$suggestSolution              = "ball.AB17";
iRGMII2.RD1.$suggestSolution              = "ball.AC17";
iRGMII2.RD2.$suggestSolution              = "ball.AB16";
iRGMII2.RD3.$suggestSolution              = "ball.AA15";
iRGMII2.RXC.$suggestSolution              = "ball.AD17";
iRGMII2.RX_CTL.$suggestSolution           = "ball.AE17";
iRGMII2.TD0.$suggestSolution              = "ball.AE20";
iRGMII2.TD1.$suggestSolution              = "ball.AD20";
iRGMII2.TD2.$suggestSolution              = "ball.AE18";
iRGMII2.TD3.$suggestSolution              = "ball.AD18";
iRGMII2.TXC.$suggestSolution              = "ball.AE19";
iRGMII2.TX_CTL.$suggestSolution           = "ball.AD19";
iSPI1.$suggestSolution                    = "SPI0";
iSPI1.CLK.$suggestSolution                = "ball.A14";
iSPI1.CS0.$suggestSolution                = "ball.A13";
iSPI1.CS1.$suggestSolution                = "ball.C13";
iSPI1.D0.$suggestSolution                 = "ball.B13";
iSPI1.D1.$suggestSolution                 = "ball.B14";
iSYSTEM1.$suggestSolution                 = "SYSTEM0";
iSYSTEM1.PORz_OUT.$suggestSolution        = "ball.E21";
iSYSTEM1.RESETSTATz.$suggestSolution      = "ball.F22";
iSYSTEM1.RESET_REQz.$suggestSolution      = "ball.F20";
iUART1.$suggestSolution                   = "USART0";
iUSB1.$suggestSolution                    = "USB1";
iUSB1.DM.$suggestSolution                 = "ball.AD10";
iUSB1.DP.$suggestSolution                 = "ball.AE9";
iUSB1.DRVVBUS.$suggestSolution            = "ball.F18";
iUSB1.RCALIB.$suggestSolution             = "ball.AC9";
iUSB1.VBUS.$suggestSolution               = "ball.AB10";
iUSB2.$suggestSolution                    = "USB0";
iUSB2.DM.$suggestSolution                 = "ball.AE11";
iUSB2.DP.$suggestSolution                 = "ball.AD11";
iUSB2.DRVVBUS.$suggestSolution            = "ball.C20";
iUSB2.RCALIB.$suggestSolution             = "ball.AE10";
iUSB2.VBUS.$suggestSolution               = "ball.AC11";
iWKUP_I2C1.$suggestSolution               = "WKUP_I2C0";
iWKUP_SYSTEM1.$suggestSolution            = "WKUP_SYSTEM";
iWKUP_UART1.$suggestSolution              = "WKUP_USART0";

4401.patch.txt

  • It seems the following changes is not optional.

    ======================================================================

    Kernel:  this is an optional change just for testing.  It allows you to perform devmem2 in the kernel to access the upper 2GB without permission failures.  You can also perform memtester on upper 2GB using the following command:  memtester -p 0x880000000 4M

    @@ -81,6 +82,12 @@
    alignment = <0x1000>;
    no-map;
    };
    +
    + upper_2gb: upper-2gb@880000000 {
    + reg = <0x08 0x80000000 0x00 0x80000000>;
    + alignment = <0x1000>;
    + no-map;
    + };
    };

    vmain_pd: regulator-0 {

    By adding it the kernel panic is not raised, but I the /proc/meminfo returns:

    root@am62xx-evm:~# cat /proc/meminfo
    MemTotal:        1880848 kB
    MemFree:         1836700 kB
    MemAvailable:    1772560 kB

    So we are still limited at 2 GB of DDR4.

    Even if in the linux boot the line below indicates 4194304K :

    [    0.000000] Memory: 1354768K/4194304K available (10880K kernel code, 1142K rwdata, 4200K rodata, 1792K init, 430K bss, 2315248K reserved, 524288K cma-reserved)

    I'm going to add memtester to the image in order to test that the 0x880000000 memory area is accessible.

    Regards,

    Alexis.

  • Here is the result of the memtester command line:

    root@am62xx-evm:~# memtester -p 0x880000000 4M
    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 4MB (4194304 bytes)
    Loo[   33.004936] Unable to handle kernel paging request at virtual address fffe8000cac2eef7
    [   33.004940] Unable to handle kernel paging request at virtual address fffe8000cac70ef7
    [   33.004953] Mem abort info:
    [   33.015225] Internal error: SP/PC alignment exception: 8a000000 [#1] PREEMPT SMP
    [   33.023116]   ESR = 0x96000004
    [   33.025899] Modules linked in:
    [   33.033272]   EC = 0x25: DABT (current EL), IL = 32 bits
    [   33.036311]
    [   33.039350]   SET = 0, FnV = 0
    [   33.044648] CPU: 0 PID: 0 Comm: swapper/0 Tainted: G        W         5.10.140-g5e63ae91b2 #1
    [   33.046122]   EA = 0, S1PTW = 0
    [   33.049162] Hardware name: Texas Instruments AM625 SK (DT)
    [   33.057662] Data abort info:
    [   33.060791] pstate: 00000085 (nzcv daIf -PAN -UAO -TCO BTYPE=--)
    [   33.066255]   ISV = 0, ISS = 0x00000004
    [   33.069127] pc : 0xdddddddddddddddd
    [   33.075107]   CM = 0, WnR = 0
    [   33.078937] lr : __ipi_send_mask+0x2c/0x108
    [   33.082400] [fffe8000cac70ef7] address between user and kernel address ranges
    [   33.085352] sp : ffff80001122b8e0
    [   33.099931] x29: ffff80001122b8e0 x28: ffff8000111b8df8
    [   33.105233] x27: 0000000000000080 x26: 0000000000000000
    [   33.110534] x25: ffff800010d5ee88 x24: 0000000000000000
    [   33.115833] x23: 0000000000000000 x22: ffff00005bff7387
    [   33.121134] x21: 000000000000004a x20: ffff000000007c60
    [   33.126433] x19: 0000000000000001 x18: 0000000000000010
    [   33.131734] x17: 0000000000000000 x16: 0000000000000000
    [   33.137034] x15: ffff8000110a1eb0 x14: 656c646e6168206f
    [   33.142335] x13: 7420656c62616e55 x12: 7220676e69676170
    [   33.147636] x11: 206c656e72656b20 x10: 6175747269762074
    [   33.152937] x9 : 6120747365757165 x8 : 3038656666662073
    [   33.153794] Unable to handle kernel paging request at virtual address fffe8000cac583ff
    [   33.158236] x7 : 736572646461206c x6 : ffff8000111b8e2f


    It seems that the upper 2GB memory area is not seen by linux.

    Regards,

    Alexis.

  • I reduced the upper_2gb area :


    upper_2gb: upper-2gb@880000000 {
    reg = <0x08 0x80000000 0x00 0x10000000>;
    alignment = <0x1000>;
    no-map;

    Then I got the following result :

    am62xx-evm login: root
    root@am62xx-evm:~# cat /proc/meminfo
    MemTotal:        3712328 kB
    MemFree:         3666024 kB
    MemAvailable:    3595036 kB
    Buffers:               0 kB

    But if I reduce again the value by example to 0x01000000, the system freeze.

    Do you have any idea, because  I lost 256 MB of RAM.

    Regards,

    Alexis.

  • Hi Alexis,

    root@am62xx-evm:~# memtester -p 0x880000000 4M

    Can you please test with different memory size smaller than 4MB to see the failure/pass (if passes) pattern?

  • Hi Bin,

    I test with 1M, it seems to work, but the test is still running.

    My concern is regarding the memory configuration in the device tree.

    As explain I have to reserve at least 256MB of reserved memory to have the system booting.

    I fit is not done and the upper_2gb section is remove the linux boot hang in /sbin/init.

    I want to have the full 4GB memory available not 4GB-256MB.

    Moreover I try to test the memory address 0x890000000 which should be the memory after the 256MB reserved. But the memtester command indicate that the permission is denied to access this area.

    Does it means that I have to reserved 2GB in upper_2gb section to test the 2GB of memory starting at 0x880000000 ?

    So could you help me to configure the system to get the 4GB available in the command cat /proc/meminfo ?

    Regards,

    Alexis.

  • Hi Bin,

    I test with 1M, it seems to work, but the test is still running.

    My concern is regarding the memory configuration in the device tree.

    As explain I have to reserve at least 256MB of reserved memory to have the system booting.

    I fit is not done and the upper_2gb section is remove the linux boot hang in /sbin/init.


    I want to have the full 4GB memory available not 4GB-256MB.

    Moreover I try to test the memory address 0x890000000 which should be the memory after the 256MB reserved. But the memtester command indicate that the permission is denied to access this area.

    Does it means that I have to reserved 2GB in upper_2gb section to test the 2GB of memory starting at 0x880000000 ?


    So could you help me to configure the system to get the 4GB available in the command cat /proc/meminfo ?


    Regards,

    Alexis.


  • Hi Alexis,


    I test with 1M, it seems to work, but the test is still running.

    The memtester command by default runs forever. But you can pass in the number-of-loops parameter, for example, "memtester -p 0x880000000 1M 2" runs the test twice.


    I want to have the full 4GB memory available not 4GB-256MB.

    Yes, we need to figure out why kernel crashes when the full 4GB memory is available.

    Moreover I try to test the memory address 0x890000000 which should be the memory after the 256MB reserved. But the memtester command indicate that the permission is denied to access this area.

    If you want to test 0x890000000, you would have to modify the DT upper_2gb node to reserve this memory region first, then you can run memtester on it.

    Could you please run multiple memtester, on different memory region (reserve it first in DTS, of cause), with different size, to see if we can understand the failure pattern?

  • Hi Bin,

    I currently work on other task, so could you give me a the list of the memtester command I had to do ?

    I will do that as soon as I have some time.

    Regards,

    Alexis.

  • Hi Alexis,

    The memtester command is

    # memtester -p <physical address> <size> <loop iterations>

    So, since your current upper reserved memory is 256MB @0x880000000, you can try to play with the <physical address> and <size> to see if memtester fails and the failure pattern.

    You can also modify the upper reseverd memory to 256MB @0x890000000 to see if kernel boot fails. If it does, it likely means the 256MB @0x880000000 is something special.

  • Part Number: AM623

    Alexis, 

    Do you really get the complete 4GB work normally in Linux kernel? 

    BR, Rich