I am trying to boot Xen on TX2. But I got a problem with loading domain0 kernel. Hope somebody could help me.
I compiled the Xen 4.9.1 on Jetson TX2. The domain0 kernel version is 4.4.38. I made some modifications to the device tree provided by the TX2. Then I can boot xen hypervisor, but when it comes to boot domain0 kernel.
It hangs there. No more output. I enabled Xen related configurations in domain0 kernel and pass the console=hvc0 command to the kernel. It doesn't work. What is the problem ?? Any suggestion is appreciated. Thanks!
U-Boot 2016.07-g0ce7ca2 (Jul 20 2017 - 00:45:25 -0700)
TEGRA186
Model: NVIDIA P2771-0000-500
DRAM: 7.8 GiB
MC: Tegra SD/MMC: 0, Tegra SD/MMC: 1
In: serial
Out: serial
Err: serial
Net: eth0: ethernet@2490000
Hit any key to stop autoboot: 2 ^H^H^H 0
Tegra186 (P2771-0000-500) # ext4load $dev $kernel_addr_r $kernel_path
20418088 bytes read in 538 ms (36.2 MiB/s)
Tegra186 (P2771-0000-500) # setenv kernel_size 0x$filesize
Tegra186 (P2771-0000-500) # <INTERRUPT>
Tegra186 (P2771-0000-500) # ext4load $dev $xen_addr_r $xen_path
819536 bytes read in 100 ms (7.8 MiB/s)
Tegra186 (P2771-0000-500) # ext4load $dev $dtb_addr_r $dtb_path
267196 bytes read in 92 ms (2.8 MiB/s)
Tegra186 (P2771-0000-500) # fdt addr $dtb_addr_r
Tegra186 (P2771-0000-500) # fdt resize
Tegra186 (P2771-0000-500) # fdt set /chosen xen,xen-bootargs \"$xen_bootargs\"
Tegra186 (P2771-0000-500) # fdt set /chosen xen,dom0-bootargs \"$dom0_bootargs\"
Tegra186 (P2771-0000-500) # fdt set /chosen xen,dom0-bootargs \"$dom0_bootargs\"
Tegra186 (P2771-0000-500) # fdt mknode /chosen modules
Tegra186 (P2771-0000-500) # fdt set /chosen/modules '#address-cells' <1>
Tegra186 (P2771-0000-500) # fdt set /chosen/modules '#size-cells' <1>
Tegra186 (P2771-0000-500) # fdt mknode /chosen/modules module@0
Tegra186 (P2771-0000-500) # fdt set /chosen/modules/module@0 compatible xen,linux-zimage xen,multiboot-module
Tegra186 (P2771-0000-500) # fdt set /chosen/modules/module@0 reg <$kernel_addr_r $kernel_size>
Tegra186 (P2771-0000-500) # fdt print /chosen
chosen {
xen,dom0-bootargs = "vmalloc=256M console=hvc0 psci=enable earlyprintk=xen debug clk_ignore_unused root=/dev/mmcblk0p1 rootwait rw";
xen,xen-bootargs = "sync_console console=dtuart dtuart=/serial@3100000 earlyprintk=xen dom0_mem=800M";
modules {
#size-cells = <0x00000001>;
#address-cells = <0x00000001>;
module@0 {
reg = <0x82000000 0x01378e28>;
compatible = "xen,linux-zimage", "xen,multiboot-module";
};
};
};
Tegra186 (P2771-0000-500) # booti $xen_addr_r - $dtb_addr_r
Image lacks image_size field, assuming 16MiB
## Flattened Device Tree blob at 92000000
Booting using the fdt blob at 0x92000000
reserving fdt memory region: addr=80000000 size=10000
reserving fdt memory region: addr=92000000 size=42000
Using Device Tree in place at 0000000092000000, end 0000000092044fff
Starting kernel ...
- UART enabled -
- CPU 00000100 booting -
- Current EL 00000008 -
- Xen starting at EL2 -
- Zero BSS -
- Setting up control registers -
- Turning on paging -
- Ready -
(XEN) Checking for initrd in /chosen
(XEN) RAM: 0000000080000000 - 00000000efffffff
(XEN) RAM: 00000000f0110000 - 0000000275f0ffff
(XEN)
(XEN) MODULE[0]: 0000000092000000 - 0000000092042000 Device Tree
(XEN) MODULE[1]: 0000000082000000 - 0000000083378e28 Kernel
(XEN) RESVD[0]: 0000000080000000 - 0000000080010000
(XEN) RESVD[1]: 0000000092000000 - 0000000092042000
(XEN)
(XEN) Command line: sync_console console=dtuart dtuart=/serial@3100000 earlyprintk=xen dom0_mem=800M
(XEN) Placing Xen at 0x0000000275c00000-0x0000000275e00000
(XEN) Update BOOTMOD_XEN from 0000000080000000-0000000080112d81 => 0000000275c00000-0000000275d12d81
(XEN) Domain heap initialised
(XEN) Booting using Device Tree
(XEN) Platform: Generic System
(XEN) Looking for dtuart at "/serial@3 Xen 4.9.0
(XEN) Xen version 4.9.0 (root@) (gcc (Ubuntu/Linaro 5.3.1-14ubuntu2.1) 5.3.1 20160413) debug=y Mon Dec 18 21:49:04 UTC 2017
(XEN) Latest ChangeSet:
(XEN) Console output is synchronous.
(XEN) Processor: 411fd073: "ARM Limited", variant: 0x1, part 0xd07, rev 0x3
(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: 0000000000001124 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) Using PSCI-1.0 for SMP bringup
(XEN) SMP: Allowing 6 CPUs
(XEN) Generic Timer IRQ: phys=46 hyp=42 virt=43 Freq: 31250 KHz
(XEN) GICv2 initialization:
(XEN) gic_dist_addr=0000000003881000
(XEN) gic_cpu_addr=0000000003882000
(XEN) gic_hyp_addr=0000000003884000
(XEN) gic_vcpu_addr=0000000003886000
(XEN) gic_maintenance_irq=25
(XEN) GICv2: 384 lines, 8 cpus, secure (IID 0200043b).
(XEN) Using scheduler: SMP Credit Scheduler (credit)
(XEN) Allocated console ring of 64 KiB.
(XEN) Bringing up CPU1
- CPU 00000000 booting -
- Current EL 00000008 -
- Xen starting at EL2 -
- Setting up control registers -
- Turning on paging -
- Ready -
(XEN) CPU 1 booted.
(XEN) Bringing up CPU2
- CPU 00000001 booting -
- Current EL 00000008 -
- Xen starting at EL2 -
- Setting up control registers -
- Turning on paging -
- Ready -
(XEN) CPU 2 booted.
(XEN) Bringing up CPU3
- CPU 00000101 booting -
- Current EL 00000008 -
- Xen starting at EL2 -
- Setting up control registers -
- Turning on paging -
- Ready -
(XEN) CPU 3 booted.
(XEN) Bringing up CPU4
- CPU 00000102 booting -
- Current EL 00000008 -
- Xen starting at EL2 -
- Setting up control registers -
- Turning on paging -
- Ready -
(XEN) CPU 4 booted.
(XEN) Bringing up CPU5
- CPU 00000103 booting -
- Current EL 00000008 -
- Xen starting at EL2 -
- Setting up control registers -
- Turning on paging -
- Ready -
(XEN) CPU 5 booted.
(XEN) Brought up 6 CPUs
(XEN) P2M: 40-bit IPA with 40-bit PA and 8-bit VMID
(XEN) P2M: 3 levels with order-1 root, VTCR 0x80023558
(XEN) smmu: /iommu@12000000: found 2 interrupts but expected at least 3
(XEN) I/O virtualisation disabled
(XEN) build-id: c1ab29064b82d810923afbe25e0061da738af14a
(XEN) alternatives: Patching with alt table 00000000400b4ca0 -> 00000000400b5078
(XEN) *** LOADING DOMAIN 0 ***
(XEN) Loading kernel from boot module @ 0000000082000000
(XEN) Allocating 1:1 mappings totalling 800MB for dom0:
(XEN) BANK[0] 0x000000a0000000-0x000000c0000000 (512MB)
(XEN) BANK[1] 0x000000e0000000-0x000000f0000000 (256MB)
(XEN) BANK[2] 0x000000f2000000-0x000000f4000000 (32MB)
(XEN) Grant table range: 0x00000275c00000-0x00000275c62000
(XEN) Loading zImage from 0000000082000000 to 00000000a0080000-00000000a13f8e28
(XEN) Allocating PPI 16 for event channel interrupt
(XEN) Loading dom0 DTB to 0x00000000a8000000-0x00000000a803f510
(XEN) Scrubbing Free RAM on 1 nodes using 6 CPUs
(XEN) ...........done.
(XEN) Initial low memory virq threshold set at 0x4000 pages.
(XEN) Std. Loglevel: All
(XEN) Guest Loglevel: All
(XEN) ***************************************************
(XEN) WARNING: CONSOLE OUTPUT IS SYNCHRONOUS
(XEN) This option is intended to aid debugging of Xen by ensuring
(XEN) that all output is synchronously delivered on the serial line.
(XEN) However it can introduce SIGNIFICANT latencies and affect
(XEN) timekeeping. It is NOT recommended for production use!
(XEN) ***************************************************
(XEN) 3... 2... 1...
(XEN) *** Serial input -> DOM0 (type 'CTRL-a' three times to switch input to Xen)
(XEN) Freed 288kB init memory.