{
        int ret;
 
-       BUG_ON(!vgic_initialized(vcpu->kvm));
-
        timer_ctx->active_cleared_last = false;
        timer_ctx->irq.level = new_level;
        trace_kvm_timer_update_irq(vcpu->vcpu_id, timer_ctx->irq.irq,
  * Check if there was a change in the timer state (should we raise or lower
  * the line level to the GIC).
  */
-static int kvm_timer_update_state(struct kvm_vcpu *vcpu)
+static void kvm_timer_update_state(struct kvm_vcpu *vcpu)
 {
        struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu;
        struct arch_timer_context *vtimer = vcpu_vtimer(vcpu);
         * because the guest would never see the interrupt.  Instead wait
         * until we call this function from kvm_timer_flush_hwstate.
         */
-       if (!vgic_initialized(vcpu->kvm) || !timer->enabled)
-               return -ENODEV;
+       if (!timer->enabled)
+               return;
 
        if (kvm_timer_should_fire(vtimer) != vtimer->irq.level)
                kvm_timer_update_irq(vcpu, !vtimer->irq.level, vtimer);
 
        if (kvm_timer_should_fire(ptimer) != ptimer->irq.level)
                kvm_timer_update_irq(vcpu, !ptimer->irq.level, ptimer);
-
-       return 0;
 }
 
 /* Schedule the background timer for the emulated timer. */
  */
 void kvm_timer_flush_hwstate(struct kvm_vcpu *vcpu)
 {
+       struct arch_timer_cpu *timer = &vcpu->arch.timer_cpu;
        struct arch_timer_context *vtimer = vcpu_vtimer(vcpu);
        bool phys_active;
        int ret;
 
-       if (kvm_timer_update_state(vcpu))
+       if (unlikely(!timer->enabled))
                return;
 
+       kvm_timer_update_state(vcpu);
+
        /* Set the background timer for the physical timer emulation. */
        kvm_timer_emulate(vcpu, vcpu_ptimer(vcpu));