On 12/12/23 2:55 AM, Jim Mattson wrote:
I reported recently that commit 26844fee6ade ("KVM: x86: never write to
memory from kvm_vcpu_check_block()") broke delivery of a virtualized posted
interrupt from an L1 vCPU to a halted L2 vCPU (see
https://lore.kernel.org/all/20231207010302.2240506-1-jmattson@xxxxxxxxxx/).
The test that exposed the regression is the final patch of this series. The
others are prerequisites.
It would make sense to add "vmx_posted_interrupts_test" to the set of tests
to be run under the unit test name, "vmx_apicv_test," but that is
non-trivial. The vmx_posted_interrupts_test requires "smp = 2," but I find
that adding that to the vmx_apicv_tests causes virt_x2apic_mode_test to
fail with:
FAIL: x2apic - reading 0x310: x86/vmx_tests.c:2151: Assertion failed: (expected) == (actual)
LHS: 0x0000000000000012 - 0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0001'0010 - 18
RHS: 0x0000000000000001 - 0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0001 - 1
Expected VMX_VMCALL, got VMX_EXTINT.
STACK: 406ef8 40725a 41299f 402036 403f59 4001bd
I haven't investigated.
This vmx_apicv_test test still fails when 'ept=N' (SPR + v6.12-rc2):
--- Virtualize APIC accesses + Use TPR shadow test ---
FAIL: xapic - reading 0x080: read 0x0, expected 0x70.
FAIL: xapic - writing 0x12345678 to 0x080: exitless write; val is 0x0,
want 0x70
--- APIC-register virtualization test ---
FAIL: xapic - reading 0x020: read 0x0, expected 0x12345678.
FAIL: xapic - writing 0x12345678 to 0x020: x86/vmx_tests.c:2164:
Assertion failed: (expected) == (actual)
LHS: 0x0000000000000038 -
0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0011'1000
- 56
RHS: 0x0000000000000012 -
0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0000'0001'0010
- 18
Expected VMX_APIC_WRITE, got VMX_VMCALL.
STACK: 406f7f 40d178 40202f 403f54 4001bd
Jim Mattson (1):
nVMX: Enable x2APIC mode for virtual-interrupt delivery tests
Marc Orr (Google) (3):
nVMX: test nested "virtual-interrupt delivery"
nVMX: test nested EOI virtualization
nVMX: add self-IPI tests to vmx_basic_vid_test
Oliver Upton (1):
nVMX: add test for posted interrupts
lib/x86/apic.h | 5 +
lib/x86/asm/bitops.h | 8 +
x86/unittests.cfg | 10 +-
x86/vmx_tests.c | 423 +++++++++++++++++++++++++++++++++++++++++++
4 files changed, 445 insertions(+), 1 deletion(-)