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.

Normalise readonly device emulation semantics across probe paths

+10 -3
+10 -3
core/mmio_policy.c
··· 66 66 return (uint64_t)mmio_read32((uintptr_t)ipa); 67 67 } 68 68 69 + static bool emulate_readonly_probe(struct vcpu *vcpu, ipa_t ipa, bool is_write, uint32_t rt) 70 + { 71 + if (is_write) { 72 + return true; 73 + } 74 + vcpu_write_gpr(vcpu, rt, readonly_device_read32(ipa)); 75 + return true; 76 + } 77 + 69 78 bool mmio_policy_emulate(struct vcpu *vcpu, ipa_t ipa, uint64_t esr_el2) 70 79 { 71 80 const struct mmio_policy_region *region = mmio_policy_lookup(ipa); ··· 91 100 value = virtio_read(off); 92 101 } 93 102 } else if (region->action == MMIO_POLICY_EMULATE_READONLY_DEVICE) { 94 - if (!is_write) { 95 - value = readonly_device_read32(ipa); 96 - } 103 + return emulate_readonly_probe(vcpu, ipa, is_write, rt); 97 104 } else if (region->action != MMIO_POLICY_EMULATE_ZERO) { 98 105 return false; 99 106 }