From: wanghaibin <wanghaibin.wang@huawei.com> Abstract the calls to kvm_vgic_vcpu_load/put() via the irqchip_flow structure. No functional change. Signed-off-by: Marc Zyngier <maz@kernel.org> Signed-off-by: wanghaibin <wanghaibin.wang@huawei.com> --- arch/arm64/include/asm/kvm_irq.h | 8 ++++++++ arch/arm64/kvm/arm.c | 4 ++-- arch/arm64/kvm/vgic/vgic-init.c | 2 ++ arch/arm64/kvm/vgic/vgic.h | 3 +++ arch/arm64/kvm/virtcca_cvm.c | 2 +- include/kvm/arm_vgic.h | 3 --- 6 files changed, 16 insertions(+), 6 deletions(-) diff --git a/arch/arm64/include/asm/kvm_irq.h b/arch/arm64/include/asm/kvm_irq.h index efb12693db13..08c93bab3036 100644 --- a/arch/arm64/include/asm/kvm_irq.h +++ b/arch/arm64/include/asm/kvm_irq.h @@ -23,6 +23,8 @@ struct kvm_irqchip_flow { int (*irqchip_vcpu_init)(struct kvm_vcpu *); void (*irqchip_vcpu_blocking)(struct kvm_vcpu *); void (*irqchip_vcpu_unblocking)(struct kvm_vcpu *); + void (*irqchip_vcpu_load)(struct kvm_vcpu *); + void (*irqchip_vcpu_put)(struct kvm_vcpu *); }; /* @@ -67,4 +69,10 @@ struct kvm_irqchip_flow { #define kvm_irqchip_vcpu_unblocking(v) \ __vcpu_irqchip_action((v), vcpu_unblocking, (v)) +#define kvm_irqchip_vcpu_load(v) \ + __vcpu_irqchip_action((v), vcpu_load, (v)) + +#define kvm_irqchip_vcpu_put(v) \ + __vcpu_irqchip_action((v), vcpu_put, (v)) + #endif diff --git a/arch/arm64/kvm/arm.c b/arch/arm64/kvm/arm.c index 11a1bbc4a3b7..8e8526bf8b3a 100644 --- a/arch/arm64/kvm/arm.c +++ b/arch/arm64/kvm/arm.c @@ -731,7 +731,7 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu) vcpu->cpu = cpu; - kvm_vgic_load(vcpu); + kvm_irqchip_vcpu_load(vcpu); kvm_timer_vcpu_load(vcpu); if (kvm_arm_is_pvtime_enabled(&vcpu->arch)) kvm_make_request(KVM_REQ_RECORD_STEAL, vcpu); @@ -769,7 +769,7 @@ void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu) void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu) { kvm_timer_vcpu_put(vcpu); - kvm_vgic_put(vcpu); + kvm_irqchip_vcpu_put(vcpu); vcpu->cpu = -1; diff --git a/arch/arm64/kvm/vgic/vgic-init.c b/arch/arm64/kvm/vgic/vgic-init.c index 7367bb5bff1e..62e352e5aeed 100644 --- a/arch/arm64/kvm/vgic/vgic-init.c +++ b/arch/arm64/kvm/vgic/vgic-init.c @@ -28,6 +28,8 @@ static struct kvm_irqchip_flow vgic_irqchip_flow = { .irqchip_vcpu_init = kvm_vgic_vcpu_init, .irqchip_vcpu_blocking = kvm_vgic_vcpu_blocking, .irqchip_vcpu_unblocking = kvm_vgic_vcpu_unblocking, + .irqchip_vcpu_load = kvm_vgic_load, + .irqchip_vcpu_put = kvm_vgic_put, }; /* diff --git a/arch/arm64/kvm/vgic/vgic.h b/arch/arm64/kvm/vgic/vgic.h index 3cf986eeec93..c18604139cd5 100644 --- a/arch/arm64/kvm/vgic/vgic.h +++ b/arch/arm64/kvm/vgic/vgic.h @@ -369,4 +369,7 @@ static inline bool kvm_has_gicv3(struct kvm *kvm) irqchip_is_gic_v3(kvm)); } +void kvm_vgic_load(struct kvm_vcpu *vcpu); +void kvm_vgic_put(struct kvm_vcpu *vcpu); + #endif diff --git a/arch/arm64/kvm/virtcca_cvm.c b/arch/arm64/kvm/virtcca_cvm.c index c270f33ce933..4558afa969bd 100644 --- a/arch/arm64/kvm/virtcca_cvm.c +++ b/arch/arm64/kvm/virtcca_cvm.c @@ -964,7 +964,7 @@ int kvm_load_user_data(struct kvm *kvm, unsigned long arg) void kvm_cvm_vcpu_put(struct kvm_vcpu *vcpu) { kvm_timer_vcpu_put(vcpu); - kvm_vgic_put(vcpu); + kvm_irqchip_vcpu_put(vcpu); vcpu->cpu = -1; } diff --git a/include/kvm/arm_vgic.h b/include/kvm/arm_vgic.h index 54e222fb0aa8..598fde9c578b 100644 --- a/include/kvm/arm_vgic.h +++ b/include/kvm/arm_vgic.h @@ -457,9 +457,6 @@ bool kvm_vgic_map_is_active(struct kvm_vcpu *vcpu, unsigned int vintid); int kvm_vgic_vcpu_pending_irq(struct kvm_vcpu *vcpu); -void kvm_vgic_load(struct kvm_vcpu *vcpu); -void kvm_vgic_put(struct kvm_vcpu *vcpu); - #define vgic_initialized(k) ((k)->arch.vgic.initialized) #define vgic_ready(k) ((k)->arch.vgic.ready) #define vgic_valid_spi(k, i) (((i) >= VGIC_NR_PRIVATE_IRQS) && \ -- 2.33.0