AArch64 EL2 hypervisor for QEMU virt that boots at EL2
1#ifndef HV_MMIO_POLICY_H
2#define HV_MMIO_POLICY_H
3
4#include "hv/types.h"
5
6struct vcpu;
7
8enum mmio_policy_action {
9 MMIO_POLICY_DENY = 0,
10 MMIO_POLICY_EMULATE_ZERO,
11 MMIO_POLICY_EMULATE_PL011,
12 MMIO_POLICY_EMULATE_VIRTIO_MMIO,
13 MMIO_POLICY_EMULATE_READONLY_DEVICE,
14 MMIO_POLICY_ALLOW_STAGE2,
15};
16
17struct mmio_policy_region {
18 ipa_t base;
19 uint64_t size;
20 const char *name;
21 enum mmio_policy_action action;
22 uint32_t provenance;
23};
24
25const struct mmio_policy_region *mmio_policy_lookup(ipa_t ipa);
26bool mmio_policy_emulate(struct vcpu *vcpu, ipa_t ipa, uint64_t esr_el2);
27void mmio_policy_dump(void);
28
29#endif