From: Babu Moger <Babu.Moger@xxxxxxx> The test ./x86/access fails with a timeout. This is due to the number test combination. The test cases increase exponentially as the features get enabled. The new machine adds the feature AC_CPU_CR4_PKE. The default timeout is 180 seconds. Seen this problem both on AMD and Intel machines. Test fails with following messages. #./tests/access qemu-system-x86_64: terminating on signal 15 from pid 20050 (timeout) FAIL access (timeout; duration=180) This test can take about 7 minutes without timeout. time ./tests/access 58982405 tests, 0 failures PASS access real 7m10.063s user 7m9.063s sys 0m0.309s Fix the problem by adding a new check to limit to the number of tests. The new a check limits the combinations with more than one reserved bits. With this limit, the runtime goes down from 7 minutes to approximately 2 minutes. Signed-off-by: Babu Moger <Babu.Moger@xxxxxxx> --- x86/access.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/x86/access.c b/x86/access.c index 47807cc..c71f39d 100644 --- a/x86/access.c +++ b/x86/access.c @@ -315,11 +315,14 @@ static _Bool ac_test_legal(ac_test_t *at) return false; /* - * Shorten the test by avoiding testing too many reserved bit combinations + * Shorten the test by avoiding testing too many reserved bit combinations. + * Skip testing multiple reserved bits to shorten the test. Reserved bit + * page faults are terminal and multiple reserved bits do not affect the + * error code; the odds of a KVM bug are super low, and the odds of actually + * being able to detect a bug are even lower. */ - if ((F(AC_PDE_BIT51) + F(AC_PDE_BIT36) + F(AC_PDE_BIT13)) > 1) - return false; - if ((F(AC_PTE_BIT51) + F(AC_PTE_BIT36)) > 1) + if ((F(AC_PDE_BIT51) + F(AC_PDE_BIT36) + F(AC_PDE_BIT13) + + F(AC_PTE_BIT51) + F(AC_PTE_BIT36)) > 1) return false; return true;