On 07/04/21 16:41, Vineeth Pillai wrote:
+#define VMCB_ALL_CLEAN_MASK (__CLEAN_MASK | (1U << 
VMCB_HV_NESTED_ENLIGHTENMENTS))
+#else
+#define VMCB_ALL_CLEAN_MASK __CLEAN_MASK
+#endif

I think this should depend on whether KVM is running on top of Hyper-V; not on whether KVM is *compiled* with Hyper-V support.

So you should turn VMCB_ALL_CLEAN_MASK into a __read_mostly variable.

Paolo

  /* TPR and CR2 are always written before VMRUN */
  #define VMCB_ALWAYS_DIRTY_MASK        ((1U << VMCB_INTR) | (1U << VMCB_CR2))
@@ -230,7 +251,7 @@ static inline void vmcb_mark_all_dirty(struct vmcb *vmcb) static inline void vmcb_mark_all_clean(struct vmcb *vmcb)
  {
-       vmcb->control.clean = ((1 << VMCB_DIRTY_MAX) - 1)
+       vmcb->control.clean = VMCB_ALL_CLEAN_MASK
                               & ~VMCB_ALWAYS_DIRTY_MASK;
  }

Reply via email to