mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 03:15:31 +09:00
ANDROID: KVM: arm64: Introduce vcpu_is_protected() helper
Instead of poking into the internals of the host KVM structure, stick to the shadow structures when trying to work out whether a vcpu is part of a protected VM or not. Take this opportunity to sprinkle a couple of unlikely(), just because. Signed-off-by: Marc Zyngier <maz@kernel.org> Bug: 209580772 Change-Id: I22a096e1e3cfe34cd2658684b02d8bac486416c4 Signed-off-by: Will Deacon <willdeacon@google.com>
This commit is contained in:
committed by
Will Deacon
parent
c496a48855
commit
c0dc717dca
@@ -52,6 +52,14 @@ struct kvm_shadow_vm {
|
||||
struct shadow_vcpu_state shadow_vcpus[0];
|
||||
};
|
||||
|
||||
static inline bool vcpu_is_protected(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
if (!is_protected_kvm_enabled())
|
||||
return false;
|
||||
|
||||
return vcpu->arch.pkvm.shadow_vm->arch.pkvm.enabled;
|
||||
}
|
||||
|
||||
extern struct kvm_shadow_vm **shadow_table;
|
||||
|
||||
extern phys_addr_t pvmfw_base;
|
||||
|
||||
@@ -216,7 +216,7 @@ static const exit_handler_fn pvm_exit_handlers[] = {
|
||||
|
||||
static const exit_handler_fn *kvm_get_exit_handler_array(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
if (unlikely(kvm_vm_is_protected(kern_hyp_va(vcpu->kvm))))
|
||||
if (unlikely(vcpu_is_protected(vcpu)))
|
||||
return pvm_exit_handlers;
|
||||
|
||||
return hyp_exit_handlers;
|
||||
@@ -235,9 +235,7 @@ static const exit_handler_fn *kvm_get_exit_handler_array(struct kvm_vcpu *vcpu)
|
||||
*/
|
||||
static void early_exit_filter(struct kvm_vcpu *vcpu, u64 *exit_code)
|
||||
{
|
||||
struct kvm *kvm = kern_hyp_va(vcpu->kvm);
|
||||
|
||||
if (kvm_vm_is_protected(kvm) && vcpu_mode_is_32bit(vcpu)) {
|
||||
if (unlikely(vcpu_is_protected(vcpu) && vcpu_mode_is_32bit(vcpu))) {
|
||||
/*
|
||||
* As we have caught the guest red-handed, decide that it isn't
|
||||
* fit for purpose anymore by making the vcpu invalid. The VMM
|
||||
|
||||
Reference in New Issue
Block a user