int main(void)
 {
-        printf("skip: Skipping userfaultfd test (missing __NR_userfaultfd)\n");
-        return KSFT_SKIP;
+       print_skip("__NR_userfaultfd must be present for userfaultfd test");
+       return KSFT_SKIP;
 }
 
 #endif /* __NR_userfaultfd */
 
        dirty_log_manual_caps =
                kvm_check_cap(KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2);
        if (!dirty_log_manual_caps) {
-               fprintf(stderr, "KVM_CLEAR_DIRTY_LOG not available, "
-                               "skipping tests\n");
+               print_skip("KVM_CLEAR_DIRTY_LOG not available");
                exit(KSFT_SKIP);
        }
        dirty_log_manual_caps &= (KVM_DIRTY_LOG_MANUAL_PROTECT_ENABLE |
 
 #define pr_info(...) _no_printf(__VA_ARGS__)
 #endif
 
+void print_skip(const char *fmt, ...) __attribute__((format(printf, 1, 2)));
+
 ssize_t test_write(int fd, const void *buf, size_t count);
 ssize_t test_read(int fd, void *buf, size_t count);
 int test_seq_read(const char *path, char **bufp, size_t *sizep);
 
                }
                va_end(ap);
 
-               if (errno == EACCES)
-                       ksft_exit_skip("Access denied - Exiting.\n");
+               if (errno == EACCES) {
+                       print_skip("Access denied - Exiting");
+                       exit(KSFT_SKIP);
+               }
                exit(254);
        }
 
 
                exit(KSFT_SKIP);
 
        if (!kvm_check_cap(KVM_CAP_IMMEDIATE_EXIT)) {
-               fprintf(stderr, "immediate_exit not available, skipping test\n");
+               print_skip("immediate_exit not available");
                exit(KSFT_SKIP);
        }
 
 
 #include <stdlib.h>
 #include <ctype.h>
 #include <limits.h>
+#include <assert.h>
 #include "test_util.h"
 
 /*
 
        return temp;
 }
+
+void print_skip(const char *fmt, ...)
+{
+       va_list ap;
+
+       assert(fmt);
+       va_start(ap, fmt);
+       vprintf(fmt, ap);
+       va_end(ap);
+       puts(", skipping test");
+}
 
                kvm_get_supported_cpuid_entry(0x80000001);
 
        if (!(entry->ecx & CPUID_SVM)) {
-               fprintf(stderr, "nested SVM not enabled, skipping test\n");
+               print_skip("nested SVM not enabled");
                exit(KSFT_SKIP);
        }
 }
 
        struct kvm_cpuid_entry2 *entry = kvm_get_supported_cpuid_entry(1);
 
        if (!(entry->ecx & CPUID_VMX)) {
-               fprintf(stderr, "nested VMX not enabled, skipping test\n");
+               print_skip("nested VMX not enabled");
                exit(KSFT_SKIP);
        }
 }
 
 
        maxsize = kvm_check_cap(KVM_CAP_S390_MEM_OP);
        if (!maxsize) {
-               fprintf(stderr, "CAP_S390_MEM_OP not supported -> skip test\n");
+               print_skip("CAP_S390_MEM_OP not supported");
                exit(KSFT_SKIP);
        }
        if (maxsize > sizeof(mem1))
 
 
        cap = kvm_check_cap(KVM_CAP_SYNC_REGS);
        if (!cap) {
-               fprintf(stderr, "CAP_SYNC_REGS not supported, skipping test\n");
+               print_skip("CAP_SYNC_REGS not supported");
                exit(KSFT_SKIP);
        }
 
 
 
        entry = kvm_get_supported_cpuid_entry(1);
        if (!(entry->ecx & X86_FEATURE_XSAVE)) {
-               printf("XSAVE feature not supported, skipping test\n");
+               print_skip("XSAVE feature not supported");
                return 0;
        }
 
 
 
        if (!kvm_check_cap(KVM_CAP_NESTED_STATE) ||
            !kvm_check_cap(KVM_CAP_HYPERV_ENLIGHTENED_VMCS)) {
-               printf("capabilities not available, skipping test\n");
+               print_skip("capabilities not available");
                exit(KSFT_SKIP);
        }
 
 
 
        rv = kvm_check_cap(KVM_CAP_HYPERV_CPUID);
        if (!rv) {
-               fprintf(stderr,
-                       "KVM_CAP_HYPERV_CPUID not supported, skip test\n");
+               print_skip("KVM_CAP_HYPERV_CPUID not supported");
                exit(KSFT_SKIP);
        }
 
        free(hv_cpuid_entries);
 
        if (!kvm_check_cap(KVM_CAP_HYPERV_ENLIGHTENED_VMCS)) {
-               fprintf(stderr,
-                       "Enlightened VMCS is unsupported, skip related test\n");
+               print_skip("Enlightened VMCS is unsupported");
                goto vm_free;
        }
 
 
        int warnings_before, warnings_after;
 
        if (!is_intel_cpu()) {
-               printf("Must be run on an Intel CPU, skipping test\n");
+               print_skip("Must be run on an Intel CPU");
                exit(KSFT_SKIP);
        }
 
        if (vm_is_unrestricted_guest(NULL)) {
-               printf("Unrestricted guest must be disabled, skipping test\n");
+               print_skip("Unrestricted guest must be disabled");
                exit(KSFT_SKIP);
        }
 
 
 
        rv = kvm_check_cap(KVM_CAP_MSR_PLATFORM_INFO);
        if (!rv) {
-               fprintf(stderr,
-                       "KVM_CAP_MSR_PLATFORM_INFO not supported, skip test\n");
+               print_skip("KVM_CAP_MSR_PLATFORM_INFO not supported");
                exit(KSFT_SKIP);
        }
 
 
 
        cap = kvm_check_cap(KVM_CAP_SYNC_REGS);
        if ((cap & TEST_SYNC_FIELDS) != TEST_SYNC_FIELDS) {
-               fprintf(stderr, "KVM_CAP_SYNC_REGS not supported, skipping test\n");
+               print_skip("KVM_CAP_SYNC_REGS not supported");
                exit(KSFT_SKIP);
        }
        if ((cap & INVALID_SYNC_FIELD) != 0) {
-               fprintf(stderr, "The \"invalid\" field is not invalid, skipping test\n");
+               print_skip("The \"invalid\" field is not invalid");
                exit(KSFT_SKIP);
        }
 
 
        have_evmcs = kvm_check_cap(KVM_CAP_HYPERV_ENLIGHTENED_VMCS);
 
        if (!kvm_check_cap(KVM_CAP_NESTED_STATE)) {
-               printf("KVM_CAP_NESTED_STATE not available, skipping test\n");
+               print_skip("KVM_CAP_NESTED_STATE not available");
                exit(KSFT_SKIP);
        }
 
 
                xss_supported = entry && !!(entry->eax & X86_FEATURE_XSAVES);
        }
        if (!xss_supported) {
-               printf("IA32_XSS is not supported by the vCPU, skipping test\n");
+               print_skip("IA32_XSS is not supported by the vCPU");
                exit(KSFT_SKIP);
        }