AArch64 EL2 hypervisor for QEMU virt that boots at EL2
1

Configure Feed

Select the types of activity you want to include in your feed.

Use QEMU virt platform assumptions as explicit invariants

+15
+12
core/main.c
··· 26 26 return &g_platform_info; 27 27 } 28 28 29 + bool platform_selftest(void) 30 + { 31 + return CONFIG_PLATFORM_QEMU_VIRT == 1 && 32 + CONFIG_UART_BASE == 0x09000000ull && 33 + CONFIG_GICD_BASE == 0x08000000ull && 34 + CONFIG_GICR_BASE == 0x080A0000ull && 35 + CONFIG_GUEST_IPA_BASE == 0x40000000ull && 36 + CONFIG_GUEST_RAM_BASE == 0x42000000ull && 37 + CONFIG_GUEST_RAM_SIZE == 0x30000000ull && 38 + CONFIG_LINUX_DTB_PA == 0x71e00000ull; 39 + } 40 + 29 41 static void print_banner(void) 30 42 { 31 43 uart_puts("\n");
+2
core/selftest.c
··· 5 5 #include "hv/log.h" 6 6 #include "hv/panic.h" 7 7 #include "hv/policy.h" 8 + #include "hv/platform.h" 8 9 #include "hv/selftest.h" 9 10 #include "hv/stage2.h" 10 11 #include "hv/sysreg.h" ··· 25 26 require(el2_mmu_selftest(), "selftest el2 mmu plan"); 26 27 require(CONFIG_GUEST_RAM_SIZE != 0u && hv_is_aligned_u64(CONFIG_GUEST_RAM_BASE, CONFIG_PAGE_SIZE), 27 28 "selftest guest memory bounds"); 29 + require(platform_selftest(), "selftest qemu virt invariants"); 28 30 require(policy_selftest(), "selftest policy table"); 29 31 require(sysreg_selftest(), "selftest sysreg decoder"); 30 32 require(vcpu_frame_selftest(), "selftest vcpu frame serialisation");
+1
include/hv/platform.h
··· 4 4 #include "hv/fdt.h" 5 5 6 6 const struct fdt_platform_info *platform_info(void); 7 + bool platform_selftest(void); 7 8 8 9 #endif