return __test_and_clear_bit(VEC_POS(vec), (bitmap) + REG_POS(vec));
 }
 
-struct static_key_deferred apic_hw_disabled __read_mostly;
-struct static_key_deferred apic_sw_disabled __read_mostly;
+__read_mostly DEFINE_STATIC_KEY_DEFERRED_FALSE(apic_hw_disabled, HZ);
+__read_mostly DEFINE_STATIC_KEY_DEFERRED_FALSE(apic_sw_disabled, HZ);
 
 static inline int apic_enabled(struct kvm_lapic *apic)
 {
        if (enabled != apic->sw_enabled) {
                apic->sw_enabled = enabled;
                if (enabled)
-                       static_key_slow_dec_deferred(&apic_sw_disabled);
+                       static_branch_slow_dec_deferred(&apic_sw_disabled);
                else
-                       static_key_slow_inc(&apic_sw_disabled.key);
+                       static_branch_inc(&apic_sw_disabled.key);
 
                atomic_set_release(&apic->vcpu->kvm->arch.apic_map_dirty, DIRTY);
        }
        hrtimer_cancel(&apic->lapic_timer.timer);
 
        if (!(vcpu->arch.apic_base & MSR_IA32_APICBASE_ENABLE))
-               static_key_slow_dec_deferred(&apic_hw_disabled);
+               static_branch_slow_dec_deferred(&apic_hw_disabled);
 
        if (!apic->sw_enabled)
-               static_key_slow_dec_deferred(&apic_sw_disabled);
+               static_branch_slow_dec_deferred(&apic_sw_disabled);
 
        if (apic->regs)
                free_page((unsigned long)apic->regs);
        if ((old_value ^ value) & MSR_IA32_APICBASE_ENABLE) {
                if (value & MSR_IA32_APICBASE_ENABLE) {
                        kvm_apic_set_xapic_id(apic, vcpu->vcpu_id);
-                       static_key_slow_dec_deferred(&apic_hw_disabled);
+                       static_branch_slow_dec_deferred(&apic_hw_disabled);
                } else {
-                       static_key_slow_inc(&apic_hw_disabled.key);
+                       static_branch_inc(&apic_hw_disabled.key);
                        atomic_set_release(&apic->vcpu->kvm->arch.apic_map_dirty, DIRTY);
                }
        }
         * thinking that APIC state has changed.
         */
        vcpu->arch.apic_base = MSR_IA32_APICBASE_ENABLE;
-       static_key_slow_inc(&apic_sw_disabled.key); /* sw disabled at reset */
+       static_branch_inc(&apic_sw_disabled.key); /* sw disabled at reset */
        kvm_iodevice_init(&apic->dev, &apic_mmio_ops);
 
        return 0;
        }
 }
 
-void kvm_lapic_init(void)
-{
-       /* do not patch jump label more than once per second */
-       jump_label_rate_limit(&apic_hw_disabled, HZ);
-       jump_label_rate_limit(&apic_sw_disabled, HZ);
-}
-
 void kvm_lapic_exit(void)
 {
        static_key_deferred_flush(&apic_hw_disabled);
 
 }
 
 int kvm_lapic_enable_pv_eoi(struct kvm_vcpu *vcpu, u64 data, unsigned long len);
-void kvm_lapic_init(void);
 void kvm_lapic_exit(void);
 
 #define VEC_POS(v) ((v) & (32 - 1))
        __kvm_lapic_set_reg(apic->regs, reg_off, val);
 }
 
-extern struct static_key kvm_no_apic_vcpu;
+DECLARE_STATIC_KEY_FALSE(kvm_has_noapic_vcpu);
 
 static inline bool lapic_in_kernel(struct kvm_vcpu *vcpu)
 {
-       if (static_key_false(&kvm_no_apic_vcpu))
+       if (static_branch_unlikely(&kvm_has_noapic_vcpu))
                return vcpu->arch.apic;
        return true;
 }
 
-extern struct static_key_deferred apic_hw_disabled;
+extern struct static_key_false_deferred apic_hw_disabled;
 
 static inline int kvm_apic_hw_enabled(struct kvm_lapic *apic)
 {
-       if (static_key_false(&apic_hw_disabled.key))
+       if (static_branch_unlikely(&apic_hw_disabled.key))
                return apic->vcpu->arch.apic_base & MSR_IA32_APICBASE_ENABLE;
        return MSR_IA32_APICBASE_ENABLE;
 }
 
-extern struct static_key_deferred apic_sw_disabled;
+extern struct static_key_false_deferred apic_sw_disabled;
 
 static inline bool kvm_apic_sw_enabled(struct kvm_lapic *apic)
 {
-       if (static_key_false(&apic_sw_disabled.key))
+       if (static_branch_unlikely(&apic_sw_disabled.key))
                return apic->sw_enabled;
        return true;
 }
 
 }
 
 static bool mmu_audit;
-static struct static_key mmu_audit_key;
+static DEFINE_STATIC_KEY_FALSE(mmu_audit_key);
 
 static void __kvm_mmu_audit(struct kvm_vcpu *vcpu, int point)
 {
 
 static inline void kvm_mmu_audit(struct kvm_vcpu *vcpu, int point)
 {
-       if (static_key_false((&mmu_audit_key)))
+       if (static_branch_unlikely((&mmu_audit_key)))
                __kvm_mmu_audit(vcpu, point);
 }
 
        if (mmu_audit)
                return;
 
-       static_key_slow_inc(&mmu_audit_key);
+       static_branch_inc(&mmu_audit_key);
        mmu_audit = true;
 }
 
        if (!mmu_audit)
                return;
 
-       static_key_slow_dec(&mmu_audit_key);
+       static_branch_dec(&mmu_audit_key);
        mmu_audit = false;
 }
 
 
                supported_xcr0 = host_xcr0 & KVM_SUPPORTED_XCR0;
        }
 
-       kvm_lapic_init();
        if (pi_inject_timer == -1)
                pi_inject_timer = housekeeping_enabled(HK_FLAG_TIMER);
 #ifdef CONFIG_X86_64
                if (kvm_apicv_activated(vcpu->kvm))
                        vcpu->arch.apicv_active = true;
        } else
-               static_key_slow_inc(&kvm_no_apic_vcpu);
+               static_branch_inc(&kvm_has_noapic_vcpu);
 
        r = -ENOMEM;
 
        free_page((unsigned long)vcpu->arch.pio_data);
        kvfree(vcpu->arch.cpuid_entries);
        if (!lapic_in_kernel(vcpu))
-               static_key_slow_dec(&kvm_no_apic_vcpu);
+               static_branch_dec(&kvm_has_noapic_vcpu);
 }
 
 void kvm_vcpu_reset(struct kvm_vcpu *vcpu, bool init_event)
        return (vcpu->arch.apic_base & MSR_IA32_APICBASE_BSP) != 0;
 }
 
-struct static_key kvm_no_apic_vcpu __read_mostly;
-EXPORT_SYMBOL_GPL(kvm_no_apic_vcpu);
+__read_mostly DEFINE_STATIC_KEY_FALSE(kvm_has_noapic_vcpu);
+EXPORT_SYMBOL_GPL(kvm_has_noapic_vcpu);
 
 void kvm_arch_sched_in(struct kvm_vcpu *vcpu, int cpu)
 {