TASK_SWITCH_GATE = 3,
 };
 
-#define HF_GIF_MASK            (1 << 0)
 #define HF_NMI_MASK            (1 << 3)
 #define HF_IRET_MASK           (1 << 4)
 #define HF_GUEST_MASK          (1 << 5) /* VCPU is in guest-mode */
 
        bool guest_state_loaded;
 
        bool x2avic_msrs_intercepted;
+
+       /* Guest GIF value, used when vGIF is not enabled */
+       bool guest_gif;
 };
 
 struct svm_cpu_data {
        if (vmcb)
                vmcb->control.int_ctl |= V_GIF_MASK;
        else
-               svm->vcpu.arch.hflags |= HF_GIF_MASK;
+               svm->guest_gif = true;
 }
 
 static inline void disable_gif(struct vcpu_svm *svm)
        if (vmcb)
                vmcb->control.int_ctl &= ~V_GIF_MASK;
        else
-               svm->vcpu.arch.hflags &= ~HF_GIF_MASK;
+               svm->guest_gif = false;
 }
 
 static inline bool gif_set(struct vcpu_svm *svm)
        if (vmcb)
                return !!(vmcb->control.int_ctl & V_GIF_MASK);
        else
-               return !!(svm->vcpu.arch.hflags & HF_GIF_MASK);
+               return svm->guest_gif;
 }
 
 static inline bool nested_npt_enabled(struct vcpu_svm *svm)