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 deterministic telemetry sequencing for trap replay analysis

+15 -1
+13 -1
core/log.c
··· 154 154 arch_irq_restore(irq_flags); 155 155 } 156 156 157 + uint64_t log_next_sequence(void) 158 + { 159 + return g_log.next_seq; 160 + } 161 + 162 + uint32_t log_event_count(void) 163 + { 164 + return g_log.wrapped ? CONFIG_LOG_CAPACITY : g_log.write_index; 165 + } 166 + 157 167 bool log_selftest(void) 158 168 { 159 169 g_log_selftest_backup = g_log; ··· 161 171 for (uint32_t i = 0; i < CONFIG_LOG_CAPACITY + 3u; i++) { 162 172 log_simple(LOG_SELFTEST, i, i, i + 1u); 163 173 } 164 - bool ok = g_log.wrapped && g_log.next_seq == (uint64_t)CONFIG_LOG_CAPACITY + 3u; 174 + bool ok = g_log.wrapped && 175 + log_next_sequence() == (uint64_t)CONFIG_LOG_CAPACITY + 3u && 176 + log_event_count() == CONFIG_LOG_CAPACITY; 165 177 g_log = g_log_selftest_backup; 166 178 return ok; 167 179 }
+2
include/hv/log.h
··· 52 52 void log_simple(enum log_kind kind, uint32_t reason, uint64_t a, uint64_t b); 53 53 void log_dump(unsigned limit); 54 54 void log_clear(void); 55 + uint64_t log_next_sequence(void); 56 + uint32_t log_event_count(void); 55 57 bool log_selftest(void); 56 58 57 59 #endif