KVM: x86: make hwapic_isr_update and hwapic_irr_update look the same
authorPaolo Bonzini <pbonzini@redhat.com>
Tue, 10 May 2016 15:01:23 +0000 (17:01 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Wed, 18 May 2016 16:04:32 +0000 (18:04 +0200)
Neither APICv nor AVIC actually need the first argument of
hwapic_isr_update, but the vCPU makes more sense than passing the
pointer to the whole virtual machine!  In fact in the APICv case it's
just happening that the vCPU is used implicitly, through the loaded VMCS.

The second argument instead is named differently, make it consistent.

Reviewed-by: Radim Krčmář <rkrcmar@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
arch/x86/include/asm/kvm_host.h
arch/x86/kvm/lapic.c
arch/x86/kvm/svm.c
arch/x86/kvm/vmx.c

index 43e74384c60662dc1b0d8e152c457a8a3d9711b2..e0fbe7e70dc19396ddebf638f6b126b3863b4442 100644 (file)
@@ -922,7 +922,7 @@ struct kvm_x86_ops {
        bool (*get_enable_apicv)(void);
        void (*refresh_apicv_exec_ctrl)(struct kvm_vcpu *vcpu);
        void (*hwapic_irr_update)(struct kvm_vcpu *vcpu, int max_irr);
-       void (*hwapic_isr_update)(struct kvm *kvm, int isr);
+       void (*hwapic_isr_update)(struct kvm_vcpu *vcpu, int isr);
        void (*load_eoi_exitmap)(struct kvm_vcpu *vcpu, u64 *eoi_exit_bitmap);
        void (*set_virtual_x2apic_mode)(struct kvm_vcpu *vcpu, bool set);
        void (*set_apic_access_page_addr)(struct kvm_vcpu *vcpu, hpa_t hpa);
index 539675c6daa2c939588d54b7ec9810c361b1e334..bbb5b283ff63a9285ddcedc113a91dbf22859bbb 100644 (file)
@@ -392,7 +392,7 @@ static inline void apic_set_isr(int vec, struct kvm_lapic *apic)
         * just set SVI.
         */
        if (unlikely(vcpu->arch.apicv_active))
-               kvm_x86_ops->hwapic_isr_update(vcpu->kvm, vec);
+               kvm_x86_ops->hwapic_isr_update(vcpu, vec);
        else {
                ++apic->isr_count;
                BUG_ON(apic->isr_count > MAX_APIC_VECTOR);
@@ -440,7 +440,7 @@ static inline void apic_clear_isr(int vec, struct kvm_lapic *apic)
         * and must be left alone.
         */
        if (unlikely(vcpu->arch.apicv_active))
-               kvm_x86_ops->hwapic_isr_update(vcpu->kvm,
+               kvm_x86_ops->hwapic_isr_update(vcpu,
                                               apic_find_highest_isr(apic));
        else {
                --apic->isr_count;
@@ -1965,7 +1965,7 @@ void kvm_apic_post_state_restore(struct kvm_vcpu *vcpu,
                        kvm_x86_ops->apicv_post_state_restore(vcpu);
                kvm_x86_ops->hwapic_irr_update(vcpu,
                                apic_find_highest_irr(apic));
-               kvm_x86_ops->hwapic_isr_update(vcpu->kvm,
+               kvm_x86_ops->hwapic_isr_update(vcpu,
                                apic_find_highest_isr(apic));
        }
        kvm_make_request(KVM_REQ_EVENT, vcpu);
index 7aeef57a093a76558bea54d06c4189eb7a3cf1c9..b0dd90338de77532c6dfc67fd148ac418e23b5fd 100644 (file)
@@ -4202,7 +4202,7 @@ static void svm_hwapic_irr_update(struct kvm_vcpu *vcpu, int max_irr)
 {
 }
 
-static void svm_hwapic_isr_update(struct kvm *kvm, int isr)
+static void svm_hwapic_isr_update(struct kvm_vcpu *vcpu, int max_isr)
 {
 }
 
index ab4a387b98b16a7d4d4d938f6187ed11b8e25271..7ebf27bafe5cd217d3cdb403f5f283dd56fcaefe 100644 (file)
@@ -8314,19 +8314,19 @@ static void vmx_set_apic_access_page_addr(struct kvm_vcpu *vcpu, hpa_t hpa)
                vmcs_write64(APIC_ACCESS_ADDR, hpa);
 }
 
-static void vmx_hwapic_isr_update(struct kvm *kvm, int isr)
+static void vmx_hwapic_isr_update(struct kvm_vcpu *vcpu, int max_isr)
 {
        u16 status;
        u8 old;
 
-       if (isr == -1)
-               isr = 0;
+       if (max_isr == -1)
+               max_isr = 0;
 
        status = vmcs_read16(GUEST_INTR_STATUS);
        old = status >> 8;
-       if (isr != old) {
+       if (max_isr != old) {
                status &= 0xff;
-               status |= isr << 8;
+               status |= max_isr << 8;
                vmcs_write16(GUEST_INTR_STATUS, status);
        }
 }