#include "test_util.h"
 #include "memstress.h"
 #include "guest_modes.h"
+#include "processor.h"
 
 /* Global variable used to synchronize all of the vCPU threads. */
 static int iteration;
         * access tracking but low enough as to not make the test too brittle
         * over time and across architectures.
         *
-        * Note that when run in nested virtualization, this check will trigger
-        * much more frequently because TLB size is unlimited and since no flush
-        * happens, much more pages are cached there and guest won't see the
-        * "idle" bit cleared.
+        * When running the guest as a nested VM, "warn" instead of asserting
+        * as the TLB size is effectively unlimited and the KVM doesn't
+        * explicitly flush the TLB when aging SPTEs.  As a result, more pages
+        * are cached and the guest won't see the "idle" bit cleared.
         */
-       if (still_idle >= pages / 10)
+       if (still_idle >= pages / 10) {
+#ifdef __x86_64__
+               TEST_ASSERT(this_cpu_has(X86_FEATURE_HYPERVISOR),
+                           "vCPU%d: Too many pages still idle (%lu out of %lu)",
+                           vcpu_idx, still_idle, pages);
+#endif
                printf("WARNING: vCPU%d: Too many pages still idle (%lu out of %lu), "
                       "this will affect performance results.\n",
                       vcpu_idx, still_idle, pages);
+       }
 
        close(page_idle_fd);
        close(pagemap_fd);
 
 #define        X86_FEATURE_XSAVE               KVM_X86_CPU_FEATURE(0x1, 0, ECX, 26)
 #define        X86_FEATURE_OSXSAVE             KVM_X86_CPU_FEATURE(0x1, 0, ECX, 27)
 #define        X86_FEATURE_RDRAND              KVM_X86_CPU_FEATURE(0x1, 0, ECX, 30)
+#define        X86_FEATURE_HYPERVISOR          KVM_X86_CPU_FEATURE(0x1, 0, ECX, 31)
 #define X86_FEATURE_PAE                        KVM_X86_CPU_FEATURE(0x1, 0, EDX, 6)
 #define        X86_FEATURE_MCE                 KVM_X86_CPU_FEATURE(0x1, 0, EDX, 7)
 #define        X86_FEATURE_APIC                KVM_X86_CPU_FEATURE(0x1, 0, EDX, 9)