When running asyncpf test, it gets skipped without a clear reason: ./asyncpf enabling apic smp: waiting for 0 APs paging enabled cr0 = 80010011 cr3 = 107f000 cr4 = 20 install handler enable async pf alloc memory start loop end loop start loop end loop SUMMARY: 0 tests SKIP asyncpf (0 tests) The reason is that KVM changed to use interrupt-based 'page-ready' notification and abandoned #PF-based 'page-ready' notification mechanism. Interrupt-based 'page-ready' notification requires KVM_ASYNC_PF_DELIVERY_AS_INT to be set as well in MSR_KVM_ASYNC_PF_EN to enable asyncpf. This series tries to fix the problem by separating two testcases for different mechanisms. - For old #PF-based notification, changes current asyncpf.c to add CPUID check at the beginning. It checks (KVM_FEATURE_ASYNC_PF && !KVM_FEATURE_ASYNC_PF_INT), otherwise it gets skipped. - For new interrupt-based notification, add a new test, asyncpf-int.c, to check (KVM_FEATURE_ASYNC_PF && KVM_FEATURE_ASYNC_PF_INT) and implement interrupt-based 'page-ready' handler. Dan Wu (3): x86: Add a common header asyncpf.h x86: Add async page fault int test x86/asyncpf: Add CPUID feature bits check to ensure feature is available ci/cirrus-ci-fedora.yml | 1 + lib/x86/processor.h | 6 ++ x86/Makefile.common | 3 +- x86/asyncpf.c | 31 ++++++---- x86/asyncpf.h | 23 ++++++++ x86/asyncpf_int.c | 127 ++++++++++++++++++++++++++++++++++++++++ x86/unittests.cfg | 6 +- 7 files changed, 185 insertions(+), 12 deletions(-) create mode 100644 x86/asyncpf.h create mode 100644 x86/asyncpf_int.c -- 2.39.3