On 2018-06-26 11:24, Luc Michel wrote: > > > On 06/25/2018 06:55 AM, Jan Kiszka wrote: >> On 2018-06-19 11:31, luc.mic...@greensocs.com wrote: >>> From: Luc MICHEL <luc.mic...@greensocs.com> >>> >>> This patch series add support for the virtualization extensions in the >>> ARM GICv2 interrupt controller. >>> >>> The first two commits do some refactoring to prepare for the >>> implementation. Commits 3 and 4 are the actual implementation. The last >>> commit updates the ZynqMP implementation to support virtualization. >> >> Is it enabled for the virt machine as well? Seems we are missing some >> mapping of GICV and GICH there. >> >> And what is the recommended way to get the ZynqMP model running? I've a >> kernel that works on a ZCU102, but just passing it via -kernel to the >> QEMU model seems insufficient. > Hum, I think it should be enough. This is the way I run my tests with Xen: > qemu-system-aarch64 -M xlnx-zcu102,secure=on,virtualization=on \ > -m 1024 \ > -kernel xen-kernel -nographic -smp 1 >
Just debugged this further a bit, and it seems my kernel is not getting any device tree from qemu: (gdb) bt #0 cpu_relax () at ../arch/arm64/include/asm/processor.h:203 #1 setup_machine_fdt (dt_phys=256) at ../arch/arm64/kernel/setup.c:194 #2 setup_arch (cmdline_p=<optimized out>) at ../arch/arm64/kernel/setup.c:258 #3 0xffffff8008e30bc4 in start_kernel () at ../init/main.c:552 #4 0x0000000000000000 in ?? () Backtrace stopped: previous frame identical to this frame (corrupt stack?) (gdb) lx-dmesg [ 0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034] [ 0.000000] Linux version 4.17.0-00033-g67c2a9a37d59 (jan@md1f2u6c) (gcc version 7.2.1 20171011 (Linaro GCC 7.2-2017.11)) #17 SMP Tue Jun 26 12:16:56 CEST 2018 (gdb) l setup_machine_fdt 178 pr_warn("Large number of MPIDR hash buckets detected\n"); 179 } 180 181 static void __init setup_machine_fdt(phys_addr_t dt_phys) 182 { 183 void *dt_virt = fixmap_remap_fdt(dt_phys); 184 const char *name; 185 186 if (!dt_virt || !early_init_dt_scan(dt_virt)) { 187 pr_crit("\n" 188 "Error: invalid device tree blob at physical address %pa (virtual address 0x%p)\n" 189 "The dtb must be 8-byte aligned and must not exceed 2 MB in size\n" 190 "\nPlease check your bootloader.", 191 &dt_phys, dt_virt); 192 193 while (true) 194 cpu_relax(); [...] (gdb) p dt_virt $1 = (void *) 0x0 Jan