arm: KVM: Add Virtual Abort injection helper
Now that we're able to context switch the HCR.VA bit, let's introduce a helper that injects an Abort into a vcpu. Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> Signed-off-by: Christoffer Dall <christoffer.dall@linaro.org>
This commit is contained in:
parent
1f7e378d12
commit
bfb78b5c98
@ -43,6 +43,7 @@ static inline void vcpu_set_reg(struct kvm_vcpu *vcpu, u8 reg_num,
|
|||||||
bool kvm_condition_valid32(const struct kvm_vcpu *vcpu);
|
bool kvm_condition_valid32(const struct kvm_vcpu *vcpu);
|
||||||
void kvm_skip_instr32(struct kvm_vcpu *vcpu, bool is_wide_instr);
|
void kvm_skip_instr32(struct kvm_vcpu *vcpu, bool is_wide_instr);
|
||||||
void kvm_inject_undefined(struct kvm_vcpu *vcpu);
|
void kvm_inject_undefined(struct kvm_vcpu *vcpu);
|
||||||
|
void kvm_inject_vabt(struct kvm_vcpu *vcpu);
|
||||||
void kvm_inject_dabt(struct kvm_vcpu *vcpu, unsigned long addr);
|
void kvm_inject_dabt(struct kvm_vcpu *vcpu, unsigned long addr);
|
||||||
void kvm_inject_pabt(struct kvm_vcpu *vcpu, unsigned long addr);
|
void kvm_inject_pabt(struct kvm_vcpu *vcpu, unsigned long addr);
|
||||||
|
|
||||||
|
@ -303,3 +303,15 @@ void kvm_inject_pabt(struct kvm_vcpu *vcpu, unsigned long addr)
|
|||||||
{
|
{
|
||||||
inject_abt(vcpu, true, addr);
|
inject_abt(vcpu, true, addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* kvm_inject_vabt - inject an async abort / SError into the guest
|
||||||
|
* @vcpu: The VCPU to receive the exception
|
||||||
|
*
|
||||||
|
* It is assumed that this code is called from the VCPU thread and that the
|
||||||
|
* VCPU therefore is not currently executing guest code.
|
||||||
|
*/
|
||||||
|
void kvm_inject_vabt(struct kvm_vcpu *vcpu)
|
||||||
|
{
|
||||||
|
vcpu_set_hcr(vcpu, vcpu_get_hcr(vcpu) | HCR_VA);
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user