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 Hangs on 'Freeing unused kernel memory"

Other Parts Discussed in Thread: OMAPL138, DA8XX

I am booting linux on a custom board with an omapl138. I have 2 problems; One i have no UART output, 2 the kernel hangs in the boot process after "Freeing unused kernel memory". I was able to capture the kernel output at least using the log buffer, and because i had to copy and paste from memory dumps please excuse how jumbled it is.

I think i have no UART output because of the "serial8250.0 unable to register port at index 0 (IO0 MEM1c42000 IRQ25) line seen below. Any ideas how to fix? i Only want to register UART0, so for now im not worried that it happens on all 3 uarts and would prefer to register only 1 acutally.

I have no idea why the kernel hangs after freeing the memory, which mostly looks like __init code from looking at system.map file.

Log buffer from uboot memory dump after warm reset (tried to remove and space a little better for readability):

U-Boot 2012.04.01-svn1973 (Mar 02 2015 - 15:54:04)

DRAM: 64 MiB
WARNING: Caches not enabled
Using default environment

In: serial
Out: serial
Err: serial
Net: DaVinci-EMAC
Hit any key to stop autoboot: 0
U-Boot > md 0xc147dd48 0x1000
c147dd48: 00000000 00000000 00210038 c6000000 ........8.!.....
Booting Linux on physical CPU 0x0...............
Linux version 3.19.0-rc5-08930-g2d911e3-dirty (dan@DWAYER-UBUNTU) (gcc version 4.5.3 20110311 (prerelease) (GCC) )
#4 PREEMPT Tue Mar 313:55:18 CST 2015...............P.=.....
CPU: ARM926EJ-S [41069265] revision 5 (ARMv5TEJ), cr=0005317f...........@.,.....
CPU: VIVT data cache, VIVT instruction cache............
(.......Machine: AMSC NGCC board........8.&.....
Memory policy: Data cache writethrough..........
@.).....
DaVincida850/amsc-ngcc/am18x variant 0x1...............0.......
On node0 totalpages: 12288.............X.B.....
free_area_init_node: node 0, pgdat c047bbe0, node_mem_map c2f99000..............8.$.....
DMA zone: 96 pages used for memmap............
0....... DMA zone: 0 pages reserved............
8.%..... DMA zone: 12288 pages,
LIFO batch:1...........@.-.....pcpu-alloc: s0 r0 d32768 u32768alloc=1*32768...
........(.......
pcpu-alloc: [0]0 ..............
`.J.....Built 1zonelists in Zone order, mobility grouping on.
Total pages: 12192..............
x.f.....Kernel command line: mem=48M@0xC1000000 console=ttyS0,115200n8 root=/dev/ram0 rw initrd=0xC1800000,4MB..
........H.3.....
PID hash table entries: 256 (order: -2, 1024 bytes).............
P.=.....Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)...........
P.<.....Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)....................
Memory:38780K/49152K available (3190K kernel code, 217K rwdata, 988K rodata, 164K init, 1198K bss, 10372K reserved, 0K cma-reserved)...................
Virtual kernel memory layout:
.vector : 0xffff0000 - 0xffff1000 ( 4 kB).
fixmap : 0xffc00000 - 0xfff00000 (3072 kB).
vmalloc :0xc3800000 - 0xff000000 ( 952MB).
lowmem: 0xc0000000 - 0xc3000000 ( 48 MB).
modules : 0xbf000000 - 0xc0000000 ( 16 MB).
.text : 0xc0008000 - 0xc041ce9c(4180 kB).
.init : 0xc041d000 - 0xc0446000 ( 164 kB).
.data : 0xc0446000 - 0xc047c6e0 ( 218 kB).
.bss : 0xc047c6e0 - 0xc05a800c (1199 kB).
........P.:.....
SLUB: HWalign=32, Order=0-3, Min Objects=0, CPUs=1, Nodes=1......
........@.,.....
Preemptible hierarchical RCU implementation.....
........ .......
NR_IRQS:245.....
........`.J.....
sched_clock: 32bits at 24MHz, resolution 41ns,wraps every 178956969942ns......
.u......8.".....
Console: colourdummy device 80x30..............
H.7.....Calibrating delay loop..
. 227.32 BogoMIPS (lpj=1136640).
..-.....8.$.....
pid_max: default: 32768 minimum: 301....:.3.....
P.;.....Mount-cache hash table entries: 1024 (order: 0, 4096 bytes).......4.....
P.@.....Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes).xP.....
8.'.....CPU: Testing write buffer coherency: ok.
.._.....P.:.....
Setting up static identity map for 0xc1324430 -0xc1324488......
........(.......
devtmpfs: initialized....@?.....
@.+.....pinctrlcore: initialized pinctrl subsystem.....A.......
8.".....NET: Registered protocol family 16......
........P.>.....
DMA: preallocated 256 KiB pool for atomic coherent allocations..
........0.......
cpuidle: using governor ladder..
........0.......
cpuidle: using governor menu....
.`......H.1....fdavinci_serial_init:85: failed to get UART0 clock........K......
H.1....fdavinci_serial_init:85:failed to get UART1 clock.......
........H.1....fdavinci_serial_init:85: failed to get UART2 clock.......4.......
..<.5...edma-dma-engine edma-dma-engine.0: TI EDMA DMA engine driverSUBSYSTEM=platform.DEVICE=+platform:edma-dma-engine.0.......
V.........<.5...
edma-dma-engine
edma-dma-engine.1: TI EDMA DMA engine driverSUBSYSTEM=platform.DEVICE=+platform:edma-dma-engine.
1.........2.....
0. .....Switched to clocksourcetimer0_1y.......
8.!.....NET: Registered protocol family 2.......
.`......P.?.....
TCP established hash table entries: 1024 (order: 0, 4096 bytes).
........H.8.....
TCP bind hash table entries: 1024 (order: 0, 4096 bytes)........
H.8.....TCP: Hash tables configured (established 1024 bind 1024)W.......(.......
TCP: reno registered............
H.2.....UDP hash table entries:256 (order: 0, 4096 bytes)......
2.......H.7.....
UDP-Lite hash table entries: 256
(order: 0, 4096 bytes)._.......
8.!.....NET: Registered protocol family 1.......
&|......H.3.....
RPC: Registered named UNIX socket transport module..............
8.%.....RPC: Registered udp transport module....
.K......8.%.....
RPC: Registeredtcp transport module....U.......
P.9.....RPC: Registered tcp NFSv4.1 backchanneltransport module
................
@.-.....Trying to unpack rootfsimage as initramfs......."M.....
X.C.....rootfs image is not initramfs (no cpio magic); looks like an initrd.....
...#....H.2.....
Freeing initrd memory: 4096K (c0800000 - c0c00000)........N$....
H.5.....futex hash table entries: 256 (order: -1, 3072 bytes)...
...*....8.&.....
io scheduler noop registered (default)..vaLY....
H.8.....Serial:8250/16550 driver, 3 ports, IRQ sharing disabled
...Y......W.0..f
serial8250 serial8250.0: unable to register port at index 0 (IO0 MEM1c42000 IRQ25): -22SUBSYSTEM
=platform.DEVICE
=+platform:serial8250.0....Y....
..W.0..fserial8250 serial8250.1: unable to register port at index 0 (IO0 MEM1d0c000 IRQ53): -22SUBSYSTEM=platform.DEVICE=+platform:serial8250.1.
.s.Y......W.0..f
serial8250 serial8250.2: unable to register port at index 0 (IO0 MEM1d0d000 IRQ61): -22SUBSYSTEM
=platform.DEVICE
=+platform:serial8250.2...;Z....
(.......brd: module loaded......
...Z....(.......
i2c /dev entries driver.C..Z....
(.......TCP: cubic registered...
._.Z....8.".....
NET: Registered protocol family 17......I..[....
0.......console [netcon0] enabled.......Tn.[....
8.#.....netconsole: network logging started.....
+_.[....H.7....f
drivers/rtc/hcto
sys.c: unable to open rtc device
(rtc0)..G.[....
@.+....fWarning: unable to open an initial console.......d.[....
8.$.....RAMDISK: gzip image found at block 0....
..y.....H.2.....
VFS: Mounted root (ext2 filesystem) on device 1:
0.......El......
(.......devtmpfs: mounted.......
f.......H.8.....
Freeing unused kernel memory: 164K (c041d000 - c0446000)
c147f4a8: 00000000 00000000 00000000 00000000 ................
c147f4b8: 00000000 00000000 00000000 00000000 ................
c147f4c8: 00000000 00000000 00000000 00000000 ................
c147f4d8: 00000000 00000000 00000000 00000000 ................
c147f4e8: 00000000 00000000 00000000 00000000 ................
c147f4f8: 00000000 00000000 00000000 00000000 ................
c147f508: 00000000 00000000 00000000 00000000 ................
c147f518: 00000000 00000000 00000000 00000000 ................
c147f528: 00000000 00000000 00000000 00000000 ................
c147f538: 00000000 00000000 00000000 00000000 ................
c147f548: 00000000 00000000 00000000 00000000 ................
c147f558: 00000000 00000000 00000000 00000000 ................
c147f568: 00000000 00000000 00000000 00000000 ................

  • Moving this post to OMAPL1x Processors
  • Hi Daniel,

    I am booting linux on a custom board with an omapl138. I have 2 problems; One i have no UART output, 2 the kernel hangs in the boot process after "Freeing unused kernel memory". I was able to capture the kernel output at least using the log buffer, and because i had to copy and paste from memory dumps please excuse how jumbled it is.


    How did you boot linux without UART message ?

    What is your flash device ie NAND or NOR or SPI etc ., ?

    You have to take kernel from any one of aforementioned flash device or network to boot the board.

    Have you tried to boot linux on your TI EVM board ?

    What is your reference board ?

    DA850 SDI EVM or OMAPL138 LCKD board etc.,


    Hit any key to stop autoboot: 0
    U-Boot > md 0xc147dd48 0x1000
    c147dd48: 00000000 00000000 00210038 c6000000 ........8.!.....
    Booting Linux on physical CPU 0x0...............


    Actually you are not booting linux, just doing memory display it seems.

    Load the kernel into DDR and call "bootm" with proper u-boot boot parameters that's why you are getting the hang after ""Freeing unused kernel memory" and it expects the init call from filesystem.

    NFS boot:

    setenv bootcmd 'tftpboot 0x80700000 uImage;bootm'

    setenv bootargs 'console=ttyS2,115200n8 ip=dhcp nfsroot=192.168.1.145:/home/titus/filesystem_omapl138 root=/dev/nfs rw rootwait'

    SD boot:

    setenv bootargs console=ttyO2,115200n8 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 rw rootdelay=5
  • I'm sorry i should be more specific.

    My boot process is ubl run on PRU and loads Uboot, filesystem and kernel to ddr ram from spi flash, and jumps to let uboot run.

    To clarify, i have no when uart output AFTER "uncompressing linux.... Done booting the kernel". Because of this i have found that i can let the boot get as far as possible, do a warm reset, stop uboot, and do a memory dump of the kernel log buff to get the output i have pasted above.

    You can see my bootargs above in the logbuf "Kernel command line: mem=48M@0xC1000000 console=ttyS0,115200n8 root=/dev/ram0 rw initrd=0xC1800000,4MB..".

    I get no uart output because the driver fails to register the port (also seen above in the logbuf):
    serial8250 serial8250.0: unable to register port at index 0 (IO0 MEM1c42000 IRQ25): -22

    It looks like the -22 is the return code of the serial8250_register_8250_port function. Do you know when i can find the definition of this return code? I would like to first get uart0 up and running w/ some output then worry more about why the kernel is hung...

    *Update* serial port fails to register inside serial8250_register_8250_port() becaue the port does not define a clock...

    int serial8250_register_8250_port(struct uart_8250_port *up)
    {
    struct uart_8250_port *uart;
    int ret = -ENOSPC;

    if (up->port.uartclk == 0)
    return -EINVAL;

    Where is this done in the board file? I am calling davinci_serial_init(da8xx_serial_device) the same as the lcdk  does...



    thanks,
    Dan