uint64_t kvm_hypercall(uint64_t nr, uint64_t a0, uint64_t a1, uint64_t a2,
                       uint64_t a3);
 
-void vm_xsave_req_perm(int bit);
+void __vm_xsave_require_permission(int bit, const char *name);
+
+#define vm_xsave_require_permission(perm)      \
+       __vm_xsave_require_permission(perm, #perm)
 
 enum pg_level {
        PG_LEVEL_NONE,
 
        vcpu_sregs_set(vcpu, &sregs);
 }
 
-void vm_xsave_req_perm(int bit)
+void __vm_xsave_require_permission(int bit, const char *name)
 {
        int kvm_fd;
        u64 bitmask;
        close(kvm_fd);
 
        if (rc == -1 && (errno == ENXIO || errno == EINVAL))
-               exit(KSFT_SKIP);
+               __TEST_REQUIRE(0, "KVM_X86_XCOMP_GUEST_SUPP not supported");
+
        TEST_ASSERT(rc == 0, "KVM_GET_DEVICE_ATTR(0, KVM_X86_XCOMP_GUEST_SUPP) error: %ld", rc);
 
-       TEST_REQUIRE(bitmask & (1ULL << bit));
+       __TEST_REQUIRE(bitmask & (1ULL << bit),
+                      "Required XSAVE feature '%s' not supported", name);
 
        TEST_REQUIRE(!syscall(SYS_arch_prctl, ARCH_REQ_XCOMP_GUEST_PERM, bit));