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.

Add syndrome taxonomy for lower EL exception attribution

+22 -1
+3
core/log.c
··· 2 2 #include "hv/config.h" 3 3 #include "hv/log.h" 4 4 #include "hv/string.h" 5 + #include "hv/sysreg.h" 5 6 #include "hv/timer.h" 6 7 #include "hv/uart.h" 7 8 ··· 108 109 uart_puts(kind_name(ev->kind)); 109 110 uart_puts(" ec="); 110 111 uart_put_hex64(ev->ec); 112 + uart_puts(" ecname="); 113 + uart_puts(esr_ec_name(ev->ec)); 111 114 uart_puts(" iss="); 112 115 uart_put_hex64(ev->iss); 113 116 uart_puts(" elr=");
+18 -1
core/sysreg.c
··· 1 1 #include "hv/sysreg.h" 2 + #include "hv/string.h" 2 3 3 4 uint64_t sysreg_key_make(uint32_t op0, uint32_t op1, uint32_t crn, uint32_t crm, uint32_t op2) 4 5 { ··· 78 79 return "unknown"; 79 80 } 80 81 82 + const char *esr_ec_name(uint32_t ec) 83 + { 84 + switch (ec) { 85 + case ESR_EC_UNKNOWN: return "unknown"; 86 + case ESR_EC_WFI_WFE: return "wfi-wfe"; 87 + case ESR_EC_HVC64: return "hvc64"; 88 + case ESR_EC_SMC64: return "smc64"; 89 + case ESR_EC_SYSREG: return "sysreg"; 90 + case ESR_EC_IABT_LOWER: return "iabt-lower"; 91 + case ESR_EC_DABT_LOWER: return "dabt-lower"; 92 + case ESR_EC_BRK64: return "brk64"; 93 + default: return "reserved"; 94 + } 95 + } 96 + 81 97 bool sysreg_selftest(void) 82 98 { 83 99 struct sysreg_access a; ··· 86 102 if (!sysreg_decode_from_esr_iss(iss, &a)) { 87 103 return false; 88 104 } 89 - return a.is_read && a.rt == 0u && a.key == KEY(3, 0, 0, 0, 0); 105 + return a.is_read && a.rt == 0u && a.key == KEY(3, 0, 0, 0, 0) && 106 + hv_strcmp(esr_ec_name(ESR_EC_SYSREG), "sysreg") == 0; 90 107 }
+1
include/hv/sysreg.h
··· 43 43 uint64_t sysreg_key_make(uint32_t op0, uint32_t op1, uint32_t crn, uint32_t crm, uint32_t op2); 44 44 bool sysreg_decode_from_esr_iss(uint64_t iss, struct sysreg_access *out); 45 45 const char *sysreg_key_name(uint64_t key); 46 + const char *esr_ec_name(uint32_t ec); 46 47 bool sysreg_selftest(void); 47 48 48 49 #endif