Hello,
I am trying to get Xen working on a Jetson Nano board (which is based on NVIDIA’s Tegra210 SoC). After some searching through the Xen-devel archives, I learnt that there was a set of patches developed in 2017 to port Xen to Tegra (https://lists.xenproject.org/archives/html/xen-devel/2017-04/msg00991.html). However these patches don’t appear in the main source repository. Therefore, I applied these manually to Xen-4.8.5. With these changes, Xen now boots up successfully on the Jetson Nano, but there is no Dom0 output on the console. I can switch between Xen and Dom0 with CTRL-a-a-a.
I am using Linux kernel version 5.7 for Dom0. I also tried using the native Linux kernel that comes with the Nano board, but that doesn’t help.
Here’s the console screen capture:
## Flattened Device Tree blob at e3000000
Booting using the fdt blob at 0xe3000000
reserving fdt memory region: addr=80000000 size=20000
reserving fdt memory region: addr=e3000000 size=35000
Loading Device Tree to 00000000fc7f8000, end 00000000fc82ffff ... OK
Starting kernel ...
- UART enabled -
- CPU 00000000 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) linux,initrd limits invalid: 0000000084100000 >= 0000000084100000
(XEN) RAM: 0000000080000000 - 00000000fedfffff
(XEN) RAM: 0000000100000000 - 000000017f1fffff
(XEN)
(XEN) MODULE[0]: 00000000fc7f8000 - 00000000fc82d000 Device Tree
(XEN) MODULE[1]: 00000000e1000000 - 00000000e2cbe200 Kernel console=hvc0 earlyprintk=uart8250-32bit,0x70006000 rootfstype=ext4 rw rootwait root=/dev/mmcblk0p1
(XEN) RESVD[0]: 0000000080000000 - 0000000080020000
(XEN) RESVD[1]: 00000000e3000000 - 00000000e3035000
(XEN) RESVD[2]: 00000000fc7f8000 - 00000000fc82d000
(XEN)
(XEN) Command line: console=dtuart earlyprintk=xen earlycon=xenboot dom0_mem=512M loglevel=all
(XEN) Placing Xen at 0x00000000fec00000-0x00000000fee00000
(XEN) Update BOOTMOD_XEN from 0000000080080000-0000000080188e01 => 00000000fec00000-00000000fed08e01
(XEN) Domain heap initialised
(XEN) Taking dtuart configuration from /chosen/stdout-path
(XEN) Looking for dtuart at "/serial@70 Xen 4.8.5
(XEN) Xen version 4.8.5 (srinivas@) (aarch64-linux-gnu-gcc (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) 7.5.0) debug=n Sun Jul 19 07:44:00 PDT 2020
(XEN) Latest ChangeSet:
(XEN) Processor: 411fd071: "ARM Limited", variant: 0x1, part 0xd07, rev 0x1
(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: 10101105 40000000 01260000 02102211
(XEN) ISA Features: 02101110 13112111 21232042 01112131 00011142 00011121
(XEN) Generic Timer IRQ: phys=30 hyp=26 virt=27 Freq: 19200 KHz
(XEN) GICv2 initialization:
(XEN) gic_dist_addr=0000000050041000
(XEN) gic_cpu_addr=0000000050042000
(XEN) gic_hyp_addr=0000000050044000
(XEN) gic_vcpu_addr=0000000050046000
(XEN) gic_maintenance_irq=25
(XEN) GICv2: 224 lines, 4 cpus, secure (IID 0200143b).
(XEN) Using scheduler: SMP Credit Scheduler (credit)
(XEN) Allocated console ring of 16 KiB.
(XEN) Bringing up CPU1
- CPU 00000001 booting -
- Current EL 00000008 -
- Xen starting at EL2 -
- Setting up control registers -
- Turning on paging -
- Ready -
(XEN) Bringing up CPU2
- CPU 00000002 booting -
- Current EL 00000008 -
- Xen starting at EL2 -
- Setting up control registers -
- Turning on paging -
- Ready -
(XEN) Bringing up CPU3
- CPU 00000003 booting -
- Current EL 00000008 -
- Xen starting at EL2 -
- Setting up control registers -
- Turning on paging -
- Ready -
(XEN) Brought up 4 CPUs
(XEN) P2M: 44-bit IPA with 44-bit PA
(XEN) P2M: 4 levels with order-0 root, VTCR 0x80043594
(XEN) I/O virtualisation disabled
(XEN) *** LOADING DOMAIN 0 ***
(XEN) Loading kernel from boot module @ 00000000e1000000
(XEN) Allocating 1:1 mappings totalling 512MB for dom0:
(XEN) BANK[0] 0x000000a0000000-0x000000c0000000 (512MB)
(XEN) Grant table range: 0x000000fec00000-0x000000fec60000
(XEN) Loading zImage from 00000000e1000000 to 00000000a0080000-00000000a1d3e200
(XEN) Allocating PPI 16 for event channel interrupt
(XEN) Loading dom0 DTB to 0x00000000a8000000-0x00000000a8034354
(XEN) Scrubbing Free RAM on 1 nodes using 4 CPUs
(XEN) ........done.
(XEN) Initial low memory virq threshold set at 0x4000 pages.
(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 300kB init memory.
Any suggestions/pointers to move forward would be much appreciated.
Thanks,
Srini