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.

Linux boot hang on mmc read

Other Parts Discussed in Thread: TPS65217

I have a beaglebone derived custom board that hangs once it gets to looking for the rootfs off the mmc:

Uncompressing Linux... done, booting the kernel.
[    0.000000] Initializing cgroup subsys cpuset
[    0.000000] Initializing cgroup subsys cpu
[    0.000000] Linux version 3.2.16 (koen@dominion) (gcc version 4.5.4 20120305 (prerelease) (GCC) ) #1 Tue May 8 08:46:05 CEST 2012
[    0.000000] CPU: ARMv7 Processor [413fc082] revision 2 (ARMv7), cr=50c53c7d
[    0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache
[    0.000000] Machine: am335xevm
[    0.000000] Memory policy: ECC disabled, Data cache writeback
[    0.000000] AM335X ES1.0 (neon )
[    0.000000] Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 65024
[    0.000000] Kernel command line: console=ttyO0,115200n8 run_hardware_tests root=/dev/mmcblk0p2 ro rootfstype=ext4 rootwait ip=none
[    0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes)
[    0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
[    0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
[    0.000000] allocated 1048576 bytes of page_cgroup
[    0.000000] please try 'cgroup_disable=memory' option if you don't want memory cgroups
[    0.000000] Memory: 256MB = 256MB total
[    0.000000] Memory: 253712k/253712k available, 8432k reserved, 0K highmem
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000]     vmalloc : 0xd0800000 - 0xff000000   ( 744 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xd0000000   ( 256 MB)
[    0.000000]     modules : 0xbf800000 - 0xc0000000   (   8 MB)
[    0.000000]       .text : 0xc0008000 - 0xc0431000   (4260 kB)
[    0.000000]       .init : 0xc0431000 - 0xc0468000   ( 220 kB)
[    0.000000]       .data : 0xc0468000 - 0xc04b8580   ( 322 kB)
[    0.000000]        .bss : 0xc04b85a4 - 0xc04ffa0c   ( 286 kB)
[    0.000000] NR_IRQS:410 nr_irqs:410 410
[    0.000000] IRQ: Found an INTC at 0xfa200000 (revision 5.0) with 128 interrupts
[    0.000000] Total of 128 interrupts on 1 active controller
[    0.000000] OMAP clockevent source: GPTIMER2 at 24000000 Hz
[    0.000000] omap_dm_timer_switch_src: Switching to HW default clocksource(sys_clkin_ck) for timer1, this may impact timekeeping in low power state
[    0.000000] OMAP clocksource: GPTIMER1 at 24000000 Hz
[    0.000000] sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956ms
[    0.000000] Console: colour dummy device 80x30
[    0.000219] Calibrating delay loop... 498.89 BogoMIPS (lpj=2494464)
[    0.056305] pid_max: default: 32768 minimum: 301
[    0.056474] Security Framework initialized
[    0.056551] Mount-cache hash table entries: 512
[    0.056984] Initializing cgroup subsys cpuacct
[    0.057029] Initializing cgroup subsys memory
[    0.057074] Initializing cgroup subsys devices
[    0.057089] Initializing cgroup subsys freezer
[    0.057103] Initializing cgroup subsys blkio
[    0.057130] Initializing cgroup subsys perf_event
[    0.057226] CPU: Testing write buffer coherency: ok
[    0.058314] devtmpfs: initialized
[    0.078858] omap_hwmod: gfx: failed to hardreset
[    0.095575] omap_hwmod: pruss: failed to hardreset
[    0.096144] print_constraints: dummy: 
[    0.096445] NET: Registered protocol family 16
[    0.097660] OMAP GPIO hardware version 0.1
[    0.098902] omap_mux_init: Add partition: #1: core, flags: 0
[    0.100349]  omap_i2c.1: alias fck already exists
[    0.100756] hw-breakpoint: debug architecture 0x4 unsupported.
[    0.100940]  omap2_mcspi.1: alias fck already exists
[    0.101076]  omap2_mcspi.2: alias fck already exists
[    0.101260]  edma.0: alias fck already exists
[    0.101287]  edma.0: alias fck already exists
[    0.101312]  edma.0: alias fck already exists
[    0.111516] bio: create slab <bio-0> at 0
[    0.112817] SCSI subsystem initialized
[    0.113772] usbcore: registered new interface driver usbfs
[    0.113918] usbcore: registered new interface driver hub
[    0.114106] usbcore: registered new device driver usb
[    0.114250] musb-ti81xx musb-ti81xx: musb0, board_mode=0x13, plat_mode=0x3
[    0.114402] musb-ti81xx musb-ti81xx: musb1, board_mode=0x13, plat_mode=0x1
[    0.114950] omap_i2c omap_i2c.1: bus 1 rev2.4.0 at 100 kHz
[    0.116166] Advanced Linux Sound Architecture Driver Version 1.0.24.
[    0.116850] Switching to clocksource gp timer
[    0.129704] musb-hdrc: version 6.0, ?dma?, otg (peripheral+host)
[    0.129896] musb-hdrc musb-hdrc.0: dma type: pio
[    0.130584] musb-hdrc musb-hdrc.0: USB OTG mode controller at d081c000 using PIO, IRQ 18
[    0.130886] musb-hdrc musb-hdrc.1: dma type: pio
[    0.131181] musb-hdrc musb-hdrc.1: MUSB HDRC host driver
[    0.131264] musb-hdrc musb-hdrc.1: new USB bus registered, assigned bus number 1
[    0.131391] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002
[    0.131413] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1
[    0.131433] usb usb1: Product: MUSB HDRC host driver
[    0.131448] usb usb1: Manufacturer: Linux 3.2.16 musb-hcd
[    0.131464] usb usb1: SerialNumber: musb-hdrc.1
[    0.132190] hub 1-0:1.0: USB hub found
[    0.132223] hub 1-0:1.0: 1 port detected
[    0.132752] musb-hdrc musb-hdrc.1: USB Host mode controller at d081e800 using PIO, IRQ 19
[    0.133198] NET: Registered protocol family 2
[    0.133419] IP route cache hash table entries: 2048 (order: 1, 8192 bytes)
[    0.133891] TCP established hash table entries: 8192 (order: 4, 65536 bytes)
[    0.134115] TCP bind hash table entries: 8192 (order: 3, 32768 bytes)
[    0.134249] TCP: Hash tables configured (established 8192 bind 8192)
[    0.134266] TCP reno registered
[    0.134285] UDP hash table entries: 256 (order: 0, 4096 bytes)
[    0.134318] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
[    0.134630] NET: Registered protocol family 1
[    0.135020] RPC: Registered named UNIX socket transport module.
[    0.135038] RPC: Registered udp transport module.
[    0.135051] RPC: Registered tcp transport module.
[    0.135064] RPC: Registered tcp NFSv4.1 backchannel transport module.
[    0.137095] audit: initializing netlink socket (disabled)
[    0.137163] type=2000 audit(0.140:1): initialized
[    0.148281] VFS: Disk quotas dquot_6.5.2
[    0.148361] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
[    0.149686] msgmni has been set to 495
[    0.150805] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252)
[    0.150925] io scheduler noop registered
[    0.150941] io scheduler deadline registered
[    0.151012] io scheduler cfq registered (default)
[    0.152054] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled
[    0.153622] omap_uart.0: ttyO0 at MMIO 0x44e09000 (irq = 72) is a OMAP UART0
[    0.776094] console [ttyO0] enabled
[    0.780382] omap_uart.1: ttyO1 at MMIO 0x48022000 (irq = 73) is a OMAP UART1
[    0.788211] omap_uart.2: ttyO2 at MMIO 0x48024000 (irq = 74) is a OMAP UART2
[    0.795993] omap_uart.3: ttyO3 at MMIO 0x481a6000 (irq = 44) is a OMAP UART3
[    0.803803] omap_uart.4: ttyO4 at MMIO 0x481a8000 (irq = 45) is a OMAP UART4
[    0.811655] omap_uart.5: ttyO5 at MMIO 0x481aa000 (irq = 46) is a OMAP UART5
[    0.820736] brd: module loaded
[    0.828456] loop: module loaded
[    0.831823] at24 1-0051: 32768 byte 24c256 EEPROM, writable, 64 bytes/write
[    0.896903] No daughter card found
[    0.900505] at24 1-0050: 32768 byte 24c256 EEPROM, writable, 64 bytes/write
[    0.966906] AM335X: EVM Config read fail: -110
[    0.972216] SCSI Media Changer driver v0.25 
[    0.977099] CAN device driver interface
[    0.981105] CAN bus driver for Bosch D_CAN controller 1.0
[    0.987216] usbcore: registered new interface driver catc
[    0.992856] catc: v2.8:CATC EL1210A NetMate USB Ethernet driver
[    0.999139] usbcore: registered new interface driver kaweth
[    1.004961] pegasus: v0.6.14 (2006/09/27), Pegasus/Pegasus II USB Ethernet driver
[    1.012874] usbcore: registered new interface driver pegasus
[    1.018805] rtl8150: v0.6.2 (2004/08/27):rtl8150 based usb-ethernet driver
[    1.026054] usbcore: registered new interface driver rtl8150
[    1.032077] usbcore: registered new interface driver asix
[    1.037833] usbcore: registered new interface driver cdc_ether
[    1.043993] usbcore: registered new interface driver dm9601
[    1.049907] usbcore: registered new interface driver cdc_subset
[    1.056155] usbcore: registered new interface driver zaurus
[    1.062038] cdc_ncm: 04-Aug-2011
[    1.065486] usbcore: registered new interface driver cdc_ncm
[    1.071548] usbcore: registered new interface driver cdc_acm
[    1.077482] cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
[    1.085940] usbcore: registered new interface driver usblp
[    1.091759] usbcore: registered new interface driver cdc_wdm
[    1.097775] usbcore: registered new interface driver uas
[    1.103322] Initializing USB Mass Storage driver...
[    1.108575] usbcore: registered new interface driver usb-storage
[    1.114849] USB Mass Storage support registered.
[    1.119812] usbcore: registered new interface driver libusual
[    1.126463] mousedev: PS/2 mouse device common for all mice
[    1.133394] omap_rtc omap_rtc: rtc core: registered omap_rtc as rtc0
[    1.140257] i2c /dev entries driver
[    1.144198] Linux media interface: v0.10
[    1.148507] lirc_dev: IR Remote Control driver registered, major 249 
[    1.155236] IR NEC protocol handler initialized
[    1.159990] IR RC5(x) protocol handler initialized
[    1.164993] IR RC6 protocol handler initialized
[    1.169737] IR JVC protocol handler initialized
[    1.174466] IR Sony protocol handler initialized
[    1.179300] IR RC5 (streamzap) protocol handler initialized
[    1.185118] IR MCE Keyboard/mouse protocol handler initialized
[    1.191223] IR LIRC bridge handler initialized
[    1.195861] Linux video capture interface: v2.00
[    1.200859] usbcore: registered new interface driver uvcvideo
[    1.206860] USB Video Class driver (1.1.1)
[    1.211232] Driver for 1-wire Dallas network protocol.
[    1.217747] OMAP Watchdog Timer Rev 0x01: initial timeout 60 sec
[    1.224263] _regulator_get: deviceless supply vdd_mpu not found, using dummy regulator
[    1.232826] cpuidle: using governor ladder
[    1.237331] cpuidle: using governor menu
[    1.242122] usbcore: registered new interface driver usbhid
[    1.247972] usbhid: USB HID core driver
[    1.252864] usbcore: registered new interface driver snd-usb-audio
[    1.260256] ALSA device list:
[    1.263368]   No soundcards found.
[    1.267354] TCP cubic registered
[    1.270728] Initializing XFRM netlink socket
[    1.275222] NET: Registered protocol family 17
[    1.279949] NET: Registered protocol family 15
[    1.284590] can: controller area network core (rev 20090105 abi 8)
[    1.291169] NET: Registered protocol family 29
[    1.295813] can: raw protocol (rev 20090105)
[    1.300330] Registering the dns_resolver key type
[    1.305292] VFP support v0.3: implementor 41 architecture 3 part 30 variant c rev 3
[    1.313328] ThumbEE CPU extension supported.
[    1.317872] mux: Failed to setup hwmod io irq -22
[    1.323616] Power Management for AM33XX family
[    1.328480] Trying to load am335x-pm-firmware.bin (60 secs timeout)
[    1.335139] Copied the M3 firmware to UMEM
[    1.339463] omap_hwmod: wkup_m3: wkup_m3: hwmod data error: OMAP4 does not support st_shift
[    1.353670] registered taskstats version 1
[    1.358437] omap_rtc omap_rtc: setting system clock to 2000-01-01 00:00:00 UTC (946684800)
[    1.367902] Waiting for root device /dev/mmcblk0p2...
I've seen a few other posts that say that this can happen if the CD line for the card isn't asserted. I've checked ours, and it is asserted and compares identically with the BeagleBone.
This is booting off the MMC initially - ie, MLO and uboot are both coming off the MMC, and uboot can see the mmc just fine.
Any ideas as to what can cause this hang?
Thanks!
Morgan
morgan@mojolabs.net
  • Morgan,

    As you've read in other forums, your card is not getting detected. See whether the GPIO that you've used as the card detect line is added properly in your kernel code. Also see whether MMC driver is enabled or not. 

  • Hi,

    Are you seeing the above scenario on Evaluation board or custom board.

    If custom board with MMC driver enabled, you are right its CD pin is not getting detected. You will not see this problem with MLO and u-boot because boot loader does not look for this pin.

     

    I have seen this problem couple of times on few of our custom boards and most of the times it was soldering issue or chasi problem.

    Try checking the CD pin transition on connecting and look for whether all the pins are soldered on SDcard Chasi.

     

    Regards,

    Raja.

  • @Raja - We're seeing it on our custom board, and yep, we've verified the CD pin is correct, so I'm confused as to why the kernel wouldn't see it correctly.

    @Renjith - it turns out we're using a build of OE that runs on the beaglebone, and have verified the card running on the beaglebone. So, we're thinking that the mmc driver and pin detect should work identically - we've used the same pins. The CD line goes to the same pin as the beaglebone, ball C15.

    I'm going to double-check this again, but at this point it seems that the card detect pin is in the right state. Have you ever seen anything else cause this hang besides the CD line being incorrect?

    Thanks!

    Morgan

  • Hi Morgan,

    Have you checked the state of the Write protect pin? Check the state change when SD card is locked and unlocked. I have seen this scenario once.

    Thanks

    Raja.

  • Hi Morgan,

    I too faced the similar problem in our board i initialized setup_starterkit(); & am33xx_sr_init(); in am335x_evm_setup.

    In your board as you don't have EEPROM it gets failed to initialize your board configuration in eeprom
    As from your logs it is clear that beaglebome setup is not invoked.
    [    0.831823] at24 1-0051: 32768 byte 24c256 EEPROM, writable, 64 bytes/write
    [    0.896903] No daughter card found
    [    0.900505] at24 1-0050: 32768 byte 24c256 EEPROM, writable, 64 bytes/write
    [    0.966906] AM335X: EVM Config read fail: -110

      Make sure that in am335x_evm_setup function call

    setup_beaglebone();

    am33xx_sr_init();

            if (ret != sizeof(am335x_mac_addr)) {
            setup_beaglebone();   
            am33xx_sr_init();   

            pr_warning("AM335X:AFTER setup_starterkit & am33xx_sr_init ----------------> ");
            //pr_warning("AM335X: EVM Config read fail: %d\n", ret);
                    return;
            }
    If you get following in debug msg you are done.

    The board is a AM335x Beaglebone.


    Rajeev Battu.

  • Thank you very much for that idea Rajeev, that put us on the right track.

    Here's what we ended up with that works:

    static struct evm_dev_cfg beaglebone_dev_cfg[] = {
    //{tps65217_init, DEV_ON_BASEBOARD, PROFILE_NONE},
    //{i2c2_init, DEV_ON_BASEBOARD, PROFILE_NONE},
    //{mii1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
    {usb0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
    {mmc0_init, DEV_ON_BASEBOARD, PROFILE_NONE},
    //{usb1_init, DEV_ON_BASEBOARD, PROFILE_NONE},
    {NULL, 0, 0},
    };

    if (ret != sizeof(am335x_mac_addr)) {
    //pr_warning("AM335X: EVM Config read fail: %d\n", ret);

    pr_warning("AM335X:BEFORE setup_starterkit & am33xx_cpsw_init ----------------> ");
    setup_beaglebone();
    //am33xx_cpsw_init(gigabit_enable);
    pr_warning("AM335X:AFTER setup_starterkit & am33xx_cpsw_init ----------------> ");

    return;
    }

    Adding in the mmc0_init into the beaglebone_dev_config and taking the others out ended up being the other trick. With the others in, we saw a kernel panic, but it still hung on mounting the root fs. Putting in the mmc line got us fully booted.

    Thanks again, that was a huge help!

    Morgan