AR# 70141

2017.1-2017.4 Zynq UltraScale+ MPSoC: Xen kernel panic when booting large rootfs.cpio.gz.u-boot file

Description

On Zynq UltraScale+ devices, a Xen kernel panic occurs when booting large rootfs.cpio.gz.u-boot files with a size greater than 70Mb.

Example error logs:

Starting kernel ...

 Xen 4.8.1-pre
(XEN) Xen version 4.8.1-pre (sandeepg@) (aarch64-xilinx-linux-gcc (Linaro GCC 6.2-2016.11) 6.2.1 20161016) debug=n  Mon Nov  6 15:38:38 MST 2017
(XEN) Latest ChangeSet: Sun Mar 26 23:37:13 2017 +0200 git:ba8ea4d-dirty
(XEN) Processor: 410fd034: "ARM Limited", variant: 0x0, part 0xd03, rev 0x4
(XEN) 64-bit Execution:
(XEN)   Processor Features: 0000000000002222 0000000000000000
(XEN)     Exception Levels: EL3:64+32 EL2:64+32 EL1:64+32 EL0:64+32
(XEN)     Extensions: FloatingPoint AdvancedSIMD
(XEN)   Debug Features: 0000000010305106 0000000000000000
(XEN)   Auxiliary Features: 0000000000000000 0000000000000000
(XEN)   Memory Model Features: 0000000000001122 0000000000000000
(XEN)   ISA Features:  0000000000011120 0000000000000000
(XEN) 32-bit Execution:
(XEN)   Processor Features: 00000131:00011011
(XEN)     Instruction Sets: AArch32 A32 Thumb Thumb-2 Jazelle
(XEN)     Extensions: GenericTimer Security
(XEN)   Debug Features: 03010066
(XEN)   Auxiliary Features: 00000000
(XEN)   Memory Model Features: 10201105 40000000 01260000 02102211
(XEN)  ISA Features: 02101110 13112111 21232042 01112131 00011142 00011121
(XEN) Generic Timer IRQ: phys=30 hyp=26 virt=27 Freq: 100000 KHz
(XEN) GICv2 initialization:
(XEN)         gic_dist_addr=00000000f9010000
(XEN)         gic_cpu_addr=00000000f9020000
(XEN)         gic_hyp_addr=00000000f9040000
(XEN)         gic_vcpu_addr=00000000f9060000
(XEN)         gic_maintenance_irq=25
(XEN) GICv2: Adjusting CPU interface base to 0xf902f000
(XEN) GICv2: 192 lines, 4 cpus, secure (IID 0200143b).
(XEN) Using scheduler: SMP Credit Scheduler (credit)
(XEN) Allocated console ring of 16 KiB.
(XEN) Bringing up CPU1
(XEN) Bringing up CPU2
(XEN) Bringing up CPU3
(XEN) Brought up 4 CPUs
(XEN) P2M: 40-bit IPA with 40-bit PA
(XEN) P2M: 3 levels with order-1 root, VTCR 0x80023558
(XEN) I/O virtualisation enabled
(XEN)  - Dom0 mode: Relaxed
(XEN) Interrupt remapping enabled
(XEN) *** LOADING DOMAIN 0 ***
(XEN) Loading kernel from boot module @ 0000000000080000
(XEN) Loading ramdisk from boot module @ 0000000077ab8000
(XEN) Allocating 1:1 mappings totalling 768MB for dom0:
(XEN) BANK[0] 0x00000020000000-0x00000040000000 (512MB)
(XEN) BANK[1] 0x00000840000000-0x00000850000000 (256MB)
(XEN) Grant table range: 0x0000007fe00000-0x0000007fe56000
(XEN) Loading zImage from 0000000000080000 to 0000000020080000-0000000023180000
(XEN) Loading dom0 initrd from 0000000077ab8000 to 0x0000000028200000-0x000000002e62ba1b
(XEN) Allocating PPI 16 for event channel interrupt
(XEN) Loading dom0 DTB to 0x0000000028000000-0x0000000028008ca6
(XEN) Std. Loglevel: Errors and warnings
(XEN) Guest Loglevel: Nothing (Rate-limited: Errors and warnings)
(XEN) *** Serial input -> DOM0 (type 'CTRL-a' three times to switch input to Xen)
(XEN) Freed 272kB init memory.
[    0.000000] Booting Linux on physical CPU 0x0
[    0.000000] Linux version 4.9.0-xilinx-v2017.1 (sandeepg@xcoapps62) (gcc version 6.2.1 20161016 (Linaro GCC 6.2-2016.11) ) #1 SMP Mon Nov 6 15:38:52 MST 2017
[    0.000000] Boot CPU: AArch64 Processor [410fd034]
[    0.000000] earlycon: xen0 at I/O port 0x0 (options '')
[    0.000000] bootconsole [xen0] enabled
[    0.000000] Xen 4.8 support found
[    0.000000] efi: Getting EFI parameters from FDT:
.........
.........
[    6.130944] RAMDISK: Couldn't find valid RAM disk image starting at 0.
[    6.137443] VFS: Cannot open root device "(null)" or unknown-block(0,0): error -6
[    6.144893] Please append a correct "root=" boot option; here are the available partitions:
[    6.153276] 0100           65536 ram0 [    6.156817]  (driver?)
[    6.159242] 0101           65536 ram1 [    6.162786]  (driver?)
[    6.165208] 0102           65536 ram2 [    6.168753]  (driver?)
[    6.171179] 0103           65536 ram3 [    6.174723]  (driver?)
[    6.177141] 0104           65536 ram4 [    6.180690]  (driver?)
[    6.183116] 0105           65536 ram5 [    6.186663]  (driver?)
[    6.189081] 0106           65536 ram6 [    6.192629]  (driver?)
[    6.195052] 0107           65536 ram7 [    6.198597]  (driver?)
[    6.201015] 0108           65536 ram8 [    6.204564]  (driver?)
[    6.206989] 0109           65536 ram9 [    6.210527]  (driver?)
[    6.212958] 010a           65536 ram10 [    6.216587]  (driver?)
[    6.219016] 010b           65536 ram11 [    6.222646]  (driver?)
[    6.225062] 010c           65536 ram12 [    6.228697]  (driver?)
[    6.231123] 010d           65536 ram13 [    6.234754]  (driver?)
[    6.237172] 010e           65536 ram14 [    6.240811]  (driver?)
[    6.243233] 010f           65536 ram15 [    6.246863]  (driver?)
[    6.249287] 1f00            1024 mtdblock0 [    6.253266]  (driver?)
[    6.255689] 1f01            5120 mtdblock1 [    6.259666]  (driver?)
[    6.262089] 1f02             128 mtdblock2 [    6.266066]  (driver?)
[    6.268491] 1f03            6016 mtdblock3 [    6.272470]  (driver?)
[    6.274892] 1f04           30720 mtdblock4 [    6.278869]  (driver?)
[    6.281290] 1f05             256 mtdblock5 [    6.285269]  (driver?)
[    6.287694] 1f06           36864 mtdblock6 [    6.291671]  (driver?)
[    6.294090] 1f07           63232 mtdblock7 [    6.298071]  (driver?)
[    6.300496] b300        15558144 mmcblk0 [    6.304299]  driver: mmcblk
[    6.307157]   b301        15554048 mmcblk0p1 00000000-01[    6.312257]
[    6.313811] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
[    6.322116] CPU: 0 PID: 1 Comm: swapper/0 Not tainted 4.9.0-xilinx-v2017.1 #1
[    6.329292] Hardware name: ZynqMP ZCU102 RevB (DT)
[    6.334136] Call trace:
[    6.336653] [<ffffff80080880f0>] dump_backtrace+0x0/0x198
[    6.342100] [<ffffff800808829c>] show_stack+0x14/0x20
[    6.347202] [<ffffff80083da114>] dump_stack+0x94/0xb8
[    6.352305] [<ffffff800812a350>] panic+0x114/0x25c
[    6.357150] [<ffffff8008be10e8>] mount_block_root+0x198/0x270
[    6.362943] [<ffffff8008be13f8>] mount_root+0x11c/0x134
[    6.368220] [<ffffff8008be157c>] prepare_namespace+0x16c/0x1b4
[    6.374102] [<ffffff8008be0d14>] kernel_init_freeable+0x1c0/0x1e0
[    6.380244] [<ffffff800890b0c8>] kernel_init+0x10/0x100
[    6.385519] [<ffffff8008082e80>] ret_from_fork+0x10/0x50
[    6.390881] Kernel Offset: disabled
[    6.394426] Memory Limit: none
[    6.397544] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

Solution

To fix this issue, you will need to increase the reserved memory of dom0 in xen-overlay.dtsi from 768M (the default size) to 1200M or above depending on the size of the image.

$ sed '/dom0_mem/ s/768M/1200M/' <plnx-proj-root>/project-spec/meta-user/recipes-bsp/device-tree/files/xen-overlay.dtsi
AR# 70141
Date 12/20/2017
Status Active
Type General Article
Devices
Tools More Less
Boards & Kits