arm/arm64: KVM: add opaque private pointer to MMIO data
For a GICv2 there is always only one (v)CPU involved: the one that does the access. On a GICv3 the access to a CPU redistributor is memory-mapped, but not banked, so the (v)CPU affected is determined by looking at the MMIO address region being accessed. To allow passing the affected CPU into the accessors later, extend struct kvm_exit_mmio to add an opaque private pointer parameter. The current GICv2 emulation just does not use it. Signed-off-by: Andre Przywara <andre.przywara@arm.com> Acked-by: Christoffer Dall <christoffer.dall@linaro.org> Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
This commit is contained in:
parent
1d916229e3
commit
9fedf14677
|
@ -37,6 +37,7 @@ struct kvm_exit_mmio {
|
||||||
u8 data[8];
|
u8 data[8];
|
||||||
u32 len;
|
u32 len;
|
||||||
bool is_write;
|
bool is_write;
|
||||||
|
void *private;
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline void kvm_prepare_mmio(struct kvm_run *run,
|
static inline void kvm_prepare_mmio(struct kvm_run *run,
|
||||||
|
|
|
@ -40,6 +40,7 @@ struct kvm_exit_mmio {
|
||||||
u8 data[8];
|
u8 data[8];
|
||||||
u32 len;
|
u32 len;
|
||||||
bool is_write;
|
bool is_write;
|
||||||
|
void *private;
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline void kvm_prepare_mmio(struct kvm_run *run,
|
static inline void kvm_prepare_mmio(struct kvm_run *run,
|
||||||
|
|
|
@ -709,6 +709,7 @@ static bool call_range_handler(struct kvm_vcpu *vcpu,
|
||||||
|
|
||||||
mmio32.len = 4;
|
mmio32.len = 4;
|
||||||
mmio32.is_write = mmio->is_write;
|
mmio32.is_write = mmio->is_write;
|
||||||
|
mmio32.private = mmio->private;
|
||||||
|
|
||||||
mmio32.phys_addr = mmio->phys_addr + 4;
|
mmio32.phys_addr = mmio->phys_addr + 4;
|
||||||
if (mmio->is_write)
|
if (mmio->is_write)
|
||||||
|
|
Loading…
Reference in a new issue