VFS: Unable to mount root fs on unknown-block(179,2)
From ElphelWiki
Contents
Description
- Kernel panic caused by mounting a read only file system as rootfs:
... VFS: Unable to mount root fs on unknown-block(179,2) ...
- In this case it used to happen when the camera was booting from NAND flash and tried to mount rootfs from uSD card detected as ro for some reason.
- Also happens anytime the kernel fails to mount rootfs: corrupted card, bad/wrong partitioning, something else - inspect the bootlog.
- Some cards worked, some - didn't.
- All cards work fine if camera was booting from the that card only.
Explanation
- WP is read from 0xf8000830[5:0] - which is a MIO pin - it pointed to MIO_0, a CD for NAND flash. During the boot from NAND flash the value of the pin was probably changing and some slower cards were detected as read only.
Solution
- In u-boot 0xf8000830[5:0] was set to 0x31 - MIO_63 - it does not exist and the register value is always 0.
Bootlog
[ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 4.0.0-xilinx (oleg@dzhiminen) (gcc version 5.3.0 (GCC) ) #9 SMP PREEMPT Tue Jun 14 21:04:55 MDT 2016 [ 0.000000] CPU: ARMv7 Processor [413fc090] revision 0 (ARMv7), cr=18c5387d [ 0.000000] CPU: PIPT / VIPT nonaliasing data cache, VIPT aliasing instruction cache [ 0.000000] Machine model: Elphel 10393 [ 0.000000] cma: Reserved 336 MiB at 0x0ac00000 [ 0.000000] Memory policy: Data cache writealloc [ 0.000000] PERCPU: Embedded 11 pages/cpu @eef2c000 s12672 r8192 d24192 u45056 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 260624 [ 0.000000] Kernel command line: cma=336M console=ttyPS0,115200 root=/dev/mmcblk0p2 rw ip=192.168.0.8 earlyprintk rootwait rootfstype=ext4 [ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Memory: 684344K/1048576K available (5734K kernel code, 302K rwdata, 1892K rodata, 244K init, 2126K bss, 20168K reserved, 344064K cma-reserved, 270336K highmem) [ 0.000000] Virtual kernel memory layout: [ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB) [ 0.000000] fixmap : 0xffc00000 - 0xfff00000 (3072 kB) [ 0.000000] vmalloc : 0xf0000000 - 0xff000000 ( 240 MB) [ 0.000000] lowmem : 0xc0000000 - 0xef800000 ( 760 MB) [ 0.000000] pkmap : 0xbfe00000 - 0xc0000000 ( 2 MB) [ 0.000000] modules : 0xbf000000 - 0xbfe00000 ( 14 MB) [ 0.000000] .text : 0xc0008000 - 0xc077ac7c (7628 kB) [ 0.000000] .init : 0xc077b000 - 0xc07b8000 ( 244 kB) [ 0.000000] .data : 0xc07b8000 - 0xc0803890 ( 303 kB) [ 0.000000] .bss : 0xc0803890 - 0xc0a170cc (2127 kB) [ 0.000000] Preemptible hierarchical RCU implementation. [ 0.000000] Additional per-CPU info printed with stalls. [ 0.000000] RCU restricting CPUs from NR_CPUS=4 to nr_cpu_ids=2. [ 0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2 [ 0.000000] NR_IRQS:16 nr_irqs:16 16 [ 0.000000] L2C: platform modifies aux control register: 0x02060000 -> 0x32460000 [ 0.000000] L2C: DT/platform modifies aux control register: 0x02060000 -> 0x32460000 [ 0.000000] L2C-310 erratum 769419 enabled [ 0.000000] L2C-310 enabling early BRESP for Cortex-A9 [ 0.000000] L2C-310 full line of zeros enabled for Cortex-A9 [ 0.000000] L2C-310 ID prefetch enabled, offset 1 lines [ 0.000000] L2C-310 dynamic clock gating enabled, standby mode enabled [ 0.000000] L2C-310 cache controller enabled, 8 ways, 512 kB [ 0.000000] L2C-310: CACHE_ID 0x410000c8, AUX_CTRL 0x76460001 [ 0.000000] ps7-slcr mapped to f0004000 [ 0.000000] zynq_clock_init: clkc starts at f0004100 [ 0.000000] Zynq clock init [ 0.000009] sched_clock: 64 bits at 333MHz, resolution 3ns, wraps every 3298534883328ns [ 0.000224] ps7-ttc #0 at f0008000, irq=18 [ 0.000526] Console: colour dummy device 80x30 [ 0.000550] Calibrating delay loop... 1332.01 BogoMIPS (lpj=6660096) [ 0.090159] pid_max: default: 32768 minimum: 301 [ 0.090297] Mount-cache hash table entries: 2048 (order: 1, 8192 bytes) [ 0.090312] Mountpoint-cache hash table entries: 2048 (order: 1, 8192 bytes) [ 0.090913] CPU: Testing write buffer coherency: ok [ 0.091109] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 [ 0.091191] Setting up static identity map for 0x579938 - 0x579990 [ 0.132434] elphel393-init: Set up the mio pin 49 and reset USB [ 0.240145] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001 [ 0.240225] Brought up 2 CPUs [ 0.240243] SMP: Total of 2 processors activated (2664.03 BogoMIPS). [ 0.240252] CPU: All CPU(s) started in SVC mode. [ 0.240814] devtmpfs: initialized [ 0.241559] VFP support v0.3: implementor 41 architecture 3 part 30 variant 9 rev 4 [ 0.258089] pinctrl core: initialized pinctrl subsystem [ 0.261902] NET: Registered protocol family 16 [ 0.263927] DMA: preallocated 256 KiB pool for atomic coherent allocations [ 0.291018] cpuidle: using governor ladder [ 0.320983] cpuidle: using governor menu [ 0.329377] hw-breakpoint: found 5 (+1 reserved) breakpoint and 1 watchpoint registers. [ 0.329392] hw-breakpoint: maximum watchpoint size is 4 bytes. [ 0.343648] SCSI subsystem initialized [ 0.344094] usbcore: registered new interface driver usbfs [ 0.344187] usbcore: registered new interface driver hub [ 0.344261] usbcore: registered new device driver usb [ 0.344615] pps_core: LinuxPPS API ver. 1 registered [ 0.344627] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it> [ 0.344672] PTP clock support registered [ 0.344793] EDAC MC: Ver: 3.0.0 [ 0.346643] cfg80211: Calling CRDA to update world regulatory domain [ 0.346928] Switched to clocksource arm_global_timer [ 0.359494] NET: Registered protocol family 2 [ 0.360211] TCP established hash table entries: 8192 (order: 3, 32768 bytes) [ 0.360307] TCP bind hash table entries: 8192 (order: 4, 65536 bytes) [ 0.360454] TCP: Hash tables configured (established 8192 bind 8192) [ 0.360513] TCP: reno registered [ 0.360531] UDP hash table entries: 512 (order: 2, 16384 bytes) [ 0.360579] UDP-Lite hash table entries: 512 (order: 2, 16384 bytes) [ 0.360812] NET: Registered protocol family 1 [ 0.361152] RPC: Registered named UNIX socket transport module. [ 0.361164] RPC: Registered udp transport module. [ 0.361173] RPC: Registered tcp transport module. [ 0.361182] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 0.361665] hw perfevents: enabled with armv7_cortex_a9 PMU driver, 7 counters available [ 0.363073] futex hash table entries: 512 (order: 3, 32768 bytes) [ 0.363166] audit: initializing netlink subsys (disabled) [ 0.363220] audit: type=2000 audit(0.340:1): initialized [ 0.365036] jffs2: version 2.2. (NAND) (SUMMARY) © 2001-2006 Red Hat, Inc. [ 0.366487] bounce: pool size: 64 pages [ 0.366572] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 249) [ 0.366591] io scheduler noop registered [ 0.366606] io scheduler deadline registered [ 0.366661] io scheduler cfq registered (default) [ 0.367025] zynq-pinctrl 700.pinctrl: zynq pinctrl initialized [ 0.368656] dma-pl330 f8003000.ps7-dma: Loaded driver for PL330 DMAC-41330 [ 0.368676] dma-pl330 f8003000.ps7-dma: DBUFF-128x8bytes Num_Chans-8 Num_Peri-4 Num_Events-16 [ 0.369370] Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled [ 0.371125] e0000000.serial: ttyPS0 at MMIO 0xe0000000 (irq = 160, base_baud = 1562500) is a xuartps [ 0.973487] console [ttyPS0] enabled [ 0.977636] xdevcfg f8007000.ps7-dev-cfg: ioremap 0xf8007000 to f006a000 [ 0.987497] brd: module loaded [ 0.996160] loop: module loaded [ 1.001441] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 1.008042] usbcore: registered new interface driver usb-storage [ 1.014430] e0002000.ps7-usb supply vbus not found, using dummy regulator [ 1.021502] ULPI transceiver vendor/product ID 0x0451/0x1508 [ 1.027112] ULPI integrity check: passed. [ 1.031091] ci_hdrc ci_hdrc.0: EHCI Host Controller [ 1.035963] ci_hdrc ci_hdrc.0: new USB bus registered, assigned bus number 1 [ 1.056969] ci_hdrc ci_hdrc.0: USB 2.0 started, EHCI 1.00 [ 1.063175] hub 1-0:1.0: USB hub found [ 1.066876] hub 1-0:1.0: 1 port detected [ 1.072385] mousedev: PS/2 mouse device common for all mice [ 1.078349] i2c /dev entries driver [ 1.083777] rtc-m41t80 0-0068: rtc core: registered m41t62 as rtc0 [ 1.091120] vsc330x 0-0001: vsc330x_i2c_probe:841 error writing [ 1.097028] vsc330x: probe of 0-0001 failed with error -5 [ 1.103103] ltc3589 0-0034: Chip ltc3589 is found, driver version 1.0 [ 1.111319] pca953x 0-0020: interrupt support not compiled in [ 1.118514] pca953x 0-0021: interrupt support not compiled in [ 1.124692] at24 0-0031: 256 byte 24c02 EEPROM, writable, 1 bytes/write [ 1.131404] cdns-i2c e0004000.ps7-i2c: 100 kHz mmio e0004000 irq 32 [ 1.139601] Xilinx Zynq CpuIdle Driver started [ 1.144220] Driver 'mmcblk' needs updating - please use bus_type methods [ 1.150930] sdhci: Secure Digital Host Controller Interface driver [ 1.157049] sdhci: Copyright(c) Pierre Ossman [ 1.161372] sdhci-pltfm: SDHCI platform and OF driver helper [ 1.175809] sdhci-arasan e0100000.ps7-sdio: No vmmc regulator found [ 1.182025] sdhci-arasan e0100000.ps7-sdio: No vqmmc regulator found [ 1.226975] mmc0: SDHCI controller on e0100000.ps7-sdio [e0100000.ps7-sdio] using ADMA [ 1.239253] usbcore: registered new interface driver usbhid [ 1.244754] usbhid: USB HID core driver [ 1.253320] si5338 0-0070: Chip si5338 is found, driver version 1.0 [ 1.438794] si5338 0-0070: SI5338 initialized [ 1.444057] nand: device found, Manufacturer ID: 0x2c, Chip ID: 0xa3 [ 1.450355] nand: Micron MT29F8G08ADBDAH4 [ 1.454338] nand: 1024 MiB, SLC, erase size: 128 KiB, page size: 2048, OOB size: 64 [ 1.461989] nand: WARNING: pl35x-nand: the ECC used on your system is too weak compared to the one required by the NAND chip [ 1.473444] Bad block table found at page 524224, version 0x01 [ 1.479687] Bad block table found at page 524160, version 0x01 [ 1.485882] 5 ofpart partitions found on MTD device pl35x-nand [ 1.491664] Creating 5 MTD partitions on "pl35x-nand": [ 1.496778] 0x000000000000-0x000000100000 : "u-boot-spl" [ 1.503228] 0x000000100000-0x000000500000 : "u-boot" [ 1.509147] 0x000000500000-0x000000600000 : "device-tree" [ 1.515483] 0x000000600000-0x000001600000 : "kernel" [ 1.520487] mmc0: new high speed SDHC card at address 0007 [ 1.527157] 0x000001600000-0x000011600000 : "rootfs" [ 1.530584] elphel393-pwr elphel393-pwr@0: Probing elphel393-pwr [ 1.536474] elphel393-pwr elphel393-pwr@0: elphel393_pwr configuration done [ 1.556642] mmcblk0: mmc0:0007 SD16G 14.4 GiB (ro) [ 1.563392] mmcblk0: p1 p2 [ 2.284253] elphel393-mem: Allocated 76800 pages for DMA at address 0xad00000 [ 2.297794] elphel393-mem: Coherent buffer vaddr: 0xCAD00000 [ 2.304497] elphel393-mem: Coherent buffer paddr: 0x0AD00000 [ 2.311287] elphel393-mem: Coherent buffer length: 0x12C00000 [ 2.318334] elphel393-mem: Probing elphel393-mem [ 2.345785] H2D stream buffer vaddr: 0xEDC00000 [ 2.351199] H2D stream buffer paddr: 0x2DC00000 [ 2.356654] H2D stream buffer length: 0x00400000 [ 2.362135] D2H stream buffer vaddr: 0xED800000 [ 2.367613] D2H stream buffer paddr: 0x2D800000 [ 2.373059] D2H stream buffer length: 0x00400000 [ 2.378541] Bidirectional stream buffer vaddr: 0xED400000 [ 2.383996] Bidirectional stream buffer paddr: 0x2D400000 [ 2.389477] Bidirectional stream buffer length: 0x00400000 [ 2.427822] elphel393_sensor_i2c: registered 5 i2c device classes [ 2.433941] Error: Driver 'elphel393-sensor-i2c' is already registered, aborting... [ 2.441549] Elphel (R) model 353 Exif device driver - 125 [ 2.447066] circbuf driver elphel393-circbuf: registered MAJOR: 135 [ 2.453689] /home/oleg/GIT/elphel393/poky/build/tmp/work-shared/elphel393/kernel-source/drivers/elphel/framepars.c:295:initGlobalPars GLOBALPARS(0,G_DEBUG)=0 [ 2.467703] /home/oleg/GIT/elphel393/poky/build/tmp/work-shared/elphel393/kernel-source/drivers/elphel/framepars.c:331:initMultiPars GLOBALPARS(G_MULTI_NUM)=0 [ 2.481832] /home/oleg/GIT/elphel393/poky/build/tmp/work-shared/elphel393/kernel-source/drivers/elphel/framepars.c:295:initGlobalPars GLOBALPARS(0,G_DEBUG)=0 [ 2.495896] /home/oleg/GIT/elphel393/poky/build/tmp/work-shared/elphel393/kernel-source/drivers/elphel/framepars.c:331:initMultiPars GLOBALPARS(G_MULTI_NUM)=0 [ 2.510043] /home/oleg/GIT/elphel393/poky/build/tmp/work-shared/elphel393/kernel-source/drivers/elphel/framepars.c:295:initGlobalPars GLOBALPARS(0,G_DEBUG)=0 [ 2.524106] /home/oleg/GIT/elphel393/poky/build/tmp/work-shared/elphel393/kernel-source/drivers/elphel/framepars.c:331:initMultiPars GLOBALPARS(G_MULTI_NUM)=0 [ 2.538266] /home/oleg/GIT/elphel393/poky/build/tmp/work-shared/elphel393/kernel-source/drivers/elphel/framepars.c:295:initGlobalPars GLOBALPARS(0,G_DEBUG)=0 [ 2.552316] /home/oleg/GIT/elphel393/poky/build/tmp/work-shared/elphel393/kernel-source/drivers/elphel/framepars.c:331:initMultiPars GLOBALPARS(G_MULTI_NUM)=0 [ 2.566472] circbuf driver elphel393-circbuf: registered MAJOR: 130 [ 2.572730] circbuf driver elphel393-circbuf: using 314572800 bytes of DMA memory from pElphel_buf at address 0x0ad00000 [ 2.584546] CAN device driver interface [ 2.589944] libphy: XEMACPS mii bus: probed [ 2.595961] xemacps e000b000.ps7-ethernet: pdev->id -1, baseaddr 0xe000b000, irq 31 [ 2.604154] usbcore: registered new interface driver rtl8192cu [ 2.610319] TCP: cubic registered [ 2.613559] NET: Registered protocol family 17 [ 2.618060] can: controller area network core (rev 20120528 abi 9) [ 2.624212] NET: Registered protocol family 29 [ 2.628613] can: raw protocol (rev 20120528) [ 2.632844] can: broadcast manager protocol (rev 20120528 t) [ 2.638515] can: netlink gateway (rev 20130117) max_hops=1 [ 2.644209] zynq_pm_remap_ocm: no compatible node found for 'xlnx,zynq-ocmc-1.0' [ 2.651541] zynq_pm_suspend_init: Unable to map OCM. [ 2.656482] Registering SWP/SWPB emulation handler [ 6.747927] xemacps e000b000.ps7-ethernet: Set clk to 124999999 Hz [ 6.754028] xemacps e000b000.ps7-ethernet: link up (1000/FULL) [ 6.786954] IP-Config: Guessing netmask 255.255.255.0 [ 6.792046] IP-Config: Complete: [ 6.795197] device=eth0, hwaddr=00:0e:64:10:bc:9f, ipaddr=192.168.0.8, mask=255.255.255.0, gw=255.255.255.255 [ 6.805553] host=192.168.0.8, domain=, nis-domain=(none) [ 6.811268] bootserver=255.255.255.255, rootserver=255.255.255.255, rootpath= [ 6.819427] VFS: Cannot open root device "mmcblk0p2" or unknown-block(179,2): error -30 [ 6.827426] Please append a correct "root=" boot option; here are the available partitions: [ 6.835714] 0100 32768 ram0 (driver?) [ 6.840292] 0101 32768 ram1 (driver?) [ 6.844891] 0102 32768 ram2 (driver?) [ 6.849492] 0103 32768 ram3 (driver?) [ 6.854097] 1f00 1024 mtdblock0 (driver?) [ 6.859128] 1f01 4096 mtdblock1 (driver?) [ 6.864160] 1f02 1024 mtdblock2 (driver?) [ 6.869197] 1f03 16384 mtdblock3 (driver?) [ 6.874229] 1f04 262144 mtdblock4 (driver?) [ 6.879265] b300 15159296 mmcblk0 driver: mmcblk [ 6.884560] b301 4918272 mmcblk0p1 997389f5-01 [ 6.889855] b302 10240000 mmcblk0p2 997389f5-02 [ 6.895148] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(179,2) [ 6.903569] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.0.0-xilinx #9 [ 6.909987] Hardware name: Xilinx Zynq Platform [ 6.914530] [<c0015ae0>] (unwind_backtrace) from [<c0012524>] (show_stack+0x10/0x14) [ 6.922237] [<c0012524>] (show_stack) from [<c057406c>] (dump_stack+0x88/0xc8) [ 6.929447] [<c057406c>] (dump_stack) from [<c0571fcc>] (panic+0xa0/0x1f8) [ 6.936299] [<c0571fcc>] (panic) from [<c077c228>] (mount_block_root+0x194/0x230) [ 6.943760] [<c077c228>] (mount_block_root) from [<c077c4b8>] (mount_root+0x108/0x110) [ 6.951658] [<c077c4b8>] (mount_root) from [<c077c650>] (prepare_namespace+0x190/0x1d8) [ 6.959644] [<c077c650>] (prepare_namespace) from [<c077be64>] (kernel_init_freeable+0x1d4/0x1e4) [ 6.968499] [<c077be64>] (kernel_init_freeable) from [<c05707e4>] (kernel_init+0x8/0xe8) [ 6.976573] [<c05707e4>] (kernel_init) from [<c000f300>] (ret_from_fork+0x14/0x34) [ 6.984124] CPU1: stopping [ 6.986810] CPU: 1 PID: 0 Comm: swapper/1 Not tainted 4.0.0-xilinx #9 [ 6.993227] Hardware name: Xilinx Zynq Platform [ 6.997759] [<c0015ae0>] (unwind_backtrace) from [<c0012524>] (show_stack+0x10/0x14) [ 7.005476] [<c0012524>] (show_stack) from [<c057406c>] (dump_stack+0x88/0xc8) [ 7.012678] [<c057406c>] (dump_stack) from [<c0014118>] (ipi_cpu_stop+0x58/0x68) [ 7.020056] [<c0014118>] (ipi_cpu_stop) from [<c00147b8>] (handle_IPI+0x88/0xe0) [ 7.027434] [<c00147b8>] (handle_IPI) from [<c0008678>] (gic_handle_irq+0x58/0x5c) [ 7.034988] [<c0008678>] (gic_handle_irq) from [<c0013000>] (__irq_svc+0x40/0x74) [ 7.042445] Exception stack(0xee88bf50 to 0xee88bf98) [ 7.047482] bf40: ee88bf98 fffffff8 9fdfa7bc 00000001 [ 7.055643] bf60: 9da88abe 00000001 eef38e08 00000000 c07e3ad0 c07bae2c c057cb68 c07b5740 [ 7.063800] bf80: 00000018 ee88bf98 03000001 c03beb74 90000113 ffffffff [ 7.070408] [<c0013000>] (__irq_svc) from [<c03beb74>] (cpuidle_enter_state+0x58/0x124) [ 7.078392] [<c03beb74>] (cpuidle_enter_state) from [<c0052f68>] (cpu_startup_entry+0x2e8/0x37c) [ 7.087153] [<c0052f68>] (cpu_startup_entry) from [<00008704>] (0x8704) [ 7.093749] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(179,2)