};
 
        kvm_fd = open_kvm_dev_path_or_exit();
-       vm_fd = ioctl(kvm_fd, KVM_CREATE_VM, ipa);
-       TEST_ASSERT(vm_fd >= 0, "Can't create VM");
+       vm_fd = __kvm_ioctl(kvm_fd, KVM_CREATE_VM, ipa);
+       TEST_ASSERT(vm_fd >= 0, KVM_IOCTL_ERROR(KVM_CREATE_VM, vm_fd));
 
        vcpu_fd = ioctl(vm_fd, KVM_CREATE_VCPU, 0);
        TEST_ASSERT(vcpu_fd >= 0, "Can't create vcpu");
 
                struct kvm_s390_vm_cpu_processor info;
 
                kvm_fd = open_kvm_dev_path_or_exit();
-               vm_fd = ioctl(kvm_fd, KVM_CREATE_VM, 0);
+               vm_fd = __kvm_ioctl(kvm_fd, KVM_CREATE_VM, 0);
                kvm_device_access(vm_fd, KVM_S390_VM_CPU_MODEL,
                                  KVM_S390_VM_CPU_PROCESSOR, &info, false);
                close(vm_fd);
 
        int kvm_fd;
 
        kvm_fd = open_kvm_dev_path_or_exit();
-       ret = ioctl(kvm_fd, KVM_CHECK_EXTENSION, cap);
-       TEST_ASSERT(ret >= 0, "KVM_CHECK_EXTENSION IOCTL failed,\n"
-               "  rc: %i errno: %i", ret, errno);
+       ret = __kvm_ioctl(kvm_fd, KVM_CHECK_EXTENSION, cap);
+       TEST_ASSERT(ret >= 0, KVM_IOCTL_ERROR(KVM_CHECK_EXTENSION, ret));
 
        close(kvm_fd);
 
                exit(KSFT_SKIP);
        }
 
-       vm->fd = ioctl(vm->kvm_fd, KVM_CREATE_VM, vm->type);
-       TEST_ASSERT(vm->fd >= 0, "KVM_CREATE_VM ioctl failed, "
-               "rc: %i errno: %i", vm->fd, errno);
+       vm->fd = __kvm_ioctl(vm->kvm_fd, KVM_CREATE_VM, vm->type);
+       TEST_ASSERT(vm->fd >= 0, KVM_IOCTL_ERROR(KVM_CREATE_VM, vm->fd));
 }
 
 const char *vm_guest_mode_string(uint32_t i)
 
        ret = ioctl(dev_fd, KVM_GET_VCPU_MMAP_SIZE, NULL);
        TEST_ASSERT(ret >= sizeof(struct kvm_run),
-               "%s KVM_GET_VCPU_MMAP_SIZE ioctl failed, rc: %i errno: %i",
-               __func__, ret, errno);
+                   KVM_IOCTL_ERROR(KVM_GET_VCPU_MMAP_SIZE, ret));
 
        close(dev_fd);
 
 
        };
 
        kvm_fd = open_kvm_dev_path_or_exit();
-       rc = ioctl(kvm_fd, KVM_GET_DEVICE_ATTR, &attr);
+       rc = __kvm_ioctl(kvm_fd, KVM_GET_DEVICE_ATTR, &attr);
        close(kvm_fd);
        if (rc == -1 && (errno == ENXIO || errno == EINVAL))
                exit(KSFT_SKIP);
 struct kvm_cpuid2 *kvm_get_supported_cpuid(void)
 {
        static struct kvm_cpuid2 *cpuid;
-       int ret;
        int kvm_fd;
 
        if (cpuid)
        cpuid = allocate_kvm_cpuid2();
        kvm_fd = open_kvm_dev_path_or_exit();
 
-       ret = ioctl(kvm_fd, KVM_GET_SUPPORTED_CPUID, cpuid);
-       TEST_ASSERT(ret == 0, "KVM_GET_SUPPORTED_CPUID failed %d %d\n",
-                   ret, errno);
+       kvm_ioctl(kvm_fd, KVM_GET_SUPPORTED_CPUID, cpuid);
 
        close(kvm_fd);
        return cpuid;
        buffer.entry.index = msr_index;
        kvm_fd = open_kvm_dev_path_or_exit();
 
-       r = ioctl(kvm_fd, KVM_GET_MSRS, &buffer.header);
-       TEST_ASSERT(r == 1, "KVM_GET_MSRS IOCTL failed,\n"
-               "  rc: %i errno: %i", r, errno);
+       r = __kvm_ioctl(kvm_fd, KVM_GET_MSRS, &buffer.header);
+       TEST_ASSERT(r == 1, KVM_IOCTL_ERROR(KVM_GET_MSRS, r));
 
        close(kvm_fd);
        return buffer.entry.data;
        int r;
 
        nmsrs.nmsrs = 0;
-       r = ioctl(kvm_fd, KVM_GET_MSR_INDEX_LIST, &nmsrs);
-       TEST_ASSERT(r == -1 && errno == E2BIG, "Unexpected result from KVM_GET_MSR_INDEX_LIST probe, r: %i",
-               r);
+       r = __kvm_ioctl(kvm_fd, KVM_GET_MSR_INDEX_LIST, &nmsrs);
+       TEST_ASSERT(r == -1 && errno == E2BIG,
+                   "Unexpected result from KVM_GET_MSR_INDEX_LIST probe, r: %i", r);
 
        return nmsrs.nmsrs;
 }
 struct kvm_msr_list *kvm_get_msr_index_list(void)
 {
        struct kvm_msr_list *list;
-       int nmsrs, r, kvm_fd;
+       int nmsrs, kvm_fd;
 
        kvm_fd = open_kvm_dev_path_or_exit();
 
        nmsrs = kvm_get_num_msrs_fd(kvm_fd);
        list = malloc(sizeof(*list) + nmsrs * sizeof(list->indices[0]));
        list->nmsrs = nmsrs;
-       r = ioctl(kvm_fd, KVM_GET_MSR_INDEX_LIST, list);
+       kvm_ioctl(kvm_fd, KVM_GET_MSR_INDEX_LIST, list);
        close(kvm_fd);
 
-       TEST_ASSERT(r == 0, "Unexpected result from KVM_GET_MSR_INDEX_LIST, r: %i",
-               r);
-
        return list;
 }
 
        nmsrs = kvm_get_num_msrs(vm);
        list = malloc(sizeof(*list) + nmsrs * sizeof(list->indices[0]));
        list->nmsrs = nmsrs;
-       r = ioctl(vm->kvm_fd, KVM_GET_MSR_INDEX_LIST, list);
-       TEST_ASSERT(r == 0, "Unexpected result from KVM_GET_MSR_INDEX_LIST, r: %i",
-                   r);
+       kvm_ioctl(vm->kvm_fd, KVM_GET_MSR_INDEX_LIST, list);
 
        state = malloc(sizeof(*state) + nmsrs * sizeof(state->msrs.entries[0]));
        r = ioctl(vcpu->fd, KVM_GET_VCPU_EVENTS, &state->events);
 struct kvm_cpuid2 *kvm_get_supported_hv_cpuid(void)
 {
        static struct kvm_cpuid2 *cpuid;
-       int ret;
        int kvm_fd;
 
        if (cpuid)
        cpuid = allocate_kvm_cpuid2();
        kvm_fd = open_kvm_dev_path_or_exit();
 
-       ret = ioctl(kvm_fd, KVM_GET_SUPPORTED_HV_CPUID, cpuid);
-       TEST_ASSERT(ret == 0, "KVM_GET_SUPPORTED_HV_CPUID failed %d %d\n",
-                   ret, errno);
+       kvm_ioctl(kvm_fd, KVM_GET_SUPPORTED_HV_CPUID, cpuid);
 
        close(kvm_fd);
        return cpuid;
 
 
 static void test_get_msr_index(void)
 {
-       int old_res, res, kvm_fd, r;
+       int old_res, res, kvm_fd;
        struct kvm_msr_list *list;
 
        kvm_fd = open_kvm_dev_path_or_exit();
 
        list = malloc(sizeof(*list) + old_res * sizeof(list->indices[0]));
        list->nmsrs = old_res;
-       r = ioctl(kvm_fd, KVM_GET_MSR_INDEX_LIST, list);
+       kvm_ioctl(kvm_fd, KVM_GET_MSR_INDEX_LIST, list);
 
-       TEST_ASSERT(r == 0,
-                   "Unexpected result from KVM_GET_MSR_FEATURE_INDEX_LIST, r: %i",
-                   r);
        TEST_ASSERT(list->nmsrs == old_res, "Expecting nmsrs to be identical");
        free(list);
 
 
        list = malloc(sizeof(*list) + nmsrs * sizeof(list->indices[0]));
        list->nmsrs = nmsrs;
-       r = ioctl(kvm_fd, KVM_GET_MSR_FEATURE_INDEX_LIST, list);
+       r = __kvm_ioctl(kvm_fd, KVM_GET_MSR_FEATURE_INDEX_LIST, list);
        TEST_ASSERT(r == -1 && errno == E2BIG,
                "Unexpected result from KVM_GET_MSR_FEATURE_INDEX_LIST probe, r: %i",
                                r);
 struct kvm_msr_list *kvm_get_msr_feature_list(int kvm_fd, int nmsrs)
 {
        struct kvm_msr_list *list;
-       int r;
 
        list = malloc(sizeof(*list) + nmsrs * sizeof(list->indices[0]));
        list->nmsrs = nmsrs;
-       r = ioctl(kvm_fd, KVM_GET_MSR_FEATURE_INDEX_LIST, list);
-
-       TEST_ASSERT(r == 0,
-               "Unexpected result from KVM_GET_MSR_FEATURE_INDEX_LIST, r: %i",
-               r);
+       kvm_ioctl(kvm_fd, KVM_GET_MSR_FEATURE_INDEX_LIST, list);
 
        return list;
 }
 
 
        kvm = open("/dev/kvm", O_RDWR);
        TEST_ASSERT(kvm != -1, "failed to open /dev/kvm");
-       kvmvm = ioctl(kvm, KVM_CREATE_VM, 0);
-       TEST_ASSERT(kvmvm != -1, "KVM_CREATE_VM failed");
+       kvmvm = __kvm_ioctl(kvm, KVM_CREATE_VM, 0);
+       TEST_ASSERT(kvmvm > 0, KVM_IOCTL_ERROR(KVM_CREATE_VM, kvmvm));
        kvmcpu = ioctl(kvmvm, KVM_CREATE_VCPU, 0);
-       TEST_ASSERT(kvmcpu != -1, "KVM_CREATE_VCPU failed");
+       TEST_ASSERT(kvmcpu != -1, KVM_IOCTL_ERROR(KVM_CREATE_VCPU, kvmcpu));
        run = (struct kvm_run *)mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_SHARED,
                                    kvmcpu, 0);
        tc.kvmcpu = kvmcpu;