Displaying 1 result from an estimated 1 matches for "uc_wbinvd_and_timer_adjust".
2013 Nov 25
14
[PATCH] VMX: wbinvd when vmentry under UC
...r ... then vmentry and wbinvd again;
+ *
+ * This loop will run again and again, until lucky enough wbinvd
+ * happens not to expire timer and then loop break, usually it would
+ * occur 10K~60K times, blocking guest 10s~60s.
+ *
+ * reprogram timer to avoid dead_like_loop.
+ */
+static inline void uc_wbinvd_and_timer_adjust(void)
+{
+ reprogram_timer(0);
+ wbinvd();
+ reprogram_timer(NOW() + MILLISECS(1));
+}
+
void vmx_vmenter_helper(const struct cpu_user_regs *regs)
{
struct vcpu *curr = current;
@@ -2974,6 +2991,13 @@ void vmx_vmenter_helper(const struct cpu_user_regs *regs)
struct hvm_vcpu_asi...