Re: [kvm-unit-tests PATCH 00/32] VMX framework enhancements and new tests

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 21/04/2017 02:49, David Matlack wrote:
> 
> 4 of the EPT access tests reveal KVM bugs (4.11-rc6, on a Haswell CPU):
> 	vmx_ept_access_test_execute_only
> 	vmx_ept_access_test_paddr_not_present_ad_disabled
> 	vmx_ept_access_test_paddr_read_only_ad_disabled
> 	vmx_ept_access_test_paddr_read_execute_ad_disabled

These are the failure I get:

FAIL vmx_ept_access_test_execute_only (164 tests, 6 unexpected failures)
FAIL vmx_ept_access_test_paddr_not_present_ad_enabled (65 tests, 3 unexpected failures)
FAIL vmx_ept_access_test_paddr_read_only_ad_disabled (timeout; duration=90s)
FAIL vmx_ept_access_test_paddr_read_only_ad_enabled (175 tests, 9 unexpected failures)
FAIL vmx_ept_access_test_paddr_read_execute_ad_disabled (timeout; duration=90s)
FAIL vmx_ept_access_test_paddr_read_execute_ad_enabled (175 tests, 9 unexpected failures)

The problem is that there is the tests have no comment explaining what is being tested.
For example in ept_access_test_paddr_read_only_ad_enabled they are all like this:

EPT_VLT_RD unexpected
FAIL: x86/vmx_tests.c:2124: Expectation failed: (expected_qual) == (qual)
	LHS: 0x000000000000008a - 0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'1000'1010 - 138
	RHS: 0x000000000000008b - 0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'1000'1011 - 139
	STACK: 4072ad 407a00 407acc 407be6 401a9c 403653 4002d2

and it's not obvious what is the difference between them without looking at
the source.  The problem is that, when only one of them is broken, it's not
clear which one it is.  Please make sure that prefix push/pop is used
consistently around each subtest; it's okay to do it on top of these patches,
so I've placed them in the next branch of kvm-unit-tests.git.

In this case, in addition, the exit qualification comes straight from the
processor, so I think the failures are a testcase bug: "If such an access
causes an EPT violation, the processor sets both bit 0 and bit 1 of the
exit qualification", footnote 1 of table 27-7 "Exit Qualification for EPT
Violations".

Paolo



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux