}
# endif /* HAVE_STRUCT_KVM_SREGS */
+# include "xlat/kvm_cap.h"
+static int
+kvm_ioctl_decode_check_extension(struct tcb *const tcp, const unsigned int code,
+ const kernel_ulong_t arg)
+{
+ tprints(", ");
+ printxval_index(kvm_cap, arg, "KVM_CAP_???");
+ return RVAL_IOCTL_DECODED;
+}
+
# include "xlat/kvm_exit_reason.h"
static void
kvm_ioctl_run_attach_auxstr(struct tcb *const tcp,
return kvm_ioctl_decode_cpuid2(tcp, code, arg);
# endif
+ case KVM_CHECK_EXTENSION:
+ return kvm_ioctl_decode_check_extension(tcp, code, arg);
+
case KVM_CREATE_VM:
return RVAL_DECODED | RVAL_FD;
printf("ioctl(%d<%s>, KVM_GET_API_VERSION, 0) = %d\n",
kvm, dev, ret);
+ ret = KVM_IOCTL(kvm, KVM_CHECK_EXTENSION,
+ (void *) (uintptr_t) KVM_CAP_USER_MEMORY);
+ printf("ioctl(%d<%s>, KVM_CHECK_EXTENSION, KVM_CAP_USER_MEMORY) = %d\n",
+ kvm, dev, ret);
+
int vm_fd = KVM_IOCTL(kvm, KVM_CREATE_VM, 0);
printf("ioctl(%d<%s>, KVM_CREATE_VM, 0) = %d<%s>\n",
kvm, dev, vm_fd, vm_dev);
--- /dev/null
+#value_indexed
+KVM_CAP_IRQCHIP 0
+KVM_CAP_HLT 1
+KVM_CAP_MMU_SHADOW_CACHE_CONTROL 2
+KVM_CAP_USER_MEMORY 3
+KVM_CAP_SET_TSS_ADDR 4
+KVM_CAP_VAPIC 6
+KVM_CAP_EXT_CPUID 7
+KVM_CAP_CLOCKSOURCE 8
+KVM_CAP_NR_VCPUS 9
+KVM_CAP_NR_MEMSLOTS 10
+KVM_CAP_PIT 11
+KVM_CAP_NOP_IO_DELAY 12
+KVM_CAP_PV_MMU 13
+KVM_CAP_MP_STATE 14
+KVM_CAP_COALESCED_MMIO 15
+KVM_CAP_SYNC_MMU 16
+KVM_CAP_IOMMU 18
+KVM_CAP_DESTROY_MEMORY_REGION_WORKS 21
+KVM_CAP_USER_NMI 22
+KVM_CAP_SET_GUEST_DEBUG 23
+KVM_CAP_REINJECT_CONTROL 24
+KVM_CAP_IRQ_ROUTING 25
+KVM_CAP_IRQ_INJECT_STATUS 26
+KVM_CAP_ASSIGN_DEV_IRQ 29
+KVM_CAP_JOIN_MEMORY_REGIONS_WORKS 30
+KVM_CAP_MCE 31
+KVM_CAP_IRQFD 32
+KVM_CAP_PIT2 33
+KVM_CAP_SET_BOOT_CPU_ID 34
+KVM_CAP_PIT_STATE2 35
+KVM_CAP_IOEVENTFD 36
+KVM_CAP_SET_IDENTITY_MAP_ADDR 37
+KVM_CAP_XEN_HVM 38
+KVM_CAP_ADJUST_CLOCK 39
+KVM_CAP_INTERNAL_ERROR_DATA 40
+KVM_CAP_VCPU_EVENTS 41
+KVM_CAP_S390_PSW 42
+KVM_CAP_PPC_SEGSTATE 43
+KVM_CAP_HYPERV 44
+KVM_CAP_HYPERV_VAPIC 45
+KVM_CAP_HYPERV_SPIN 46
+KVM_CAP_PCI_SEGMENT 47
+KVM_CAP_PPC_PAIRED_SINGLES 48
+KVM_CAP_INTR_SHADOW 49
+KVM_CAP_DEBUGREGS 50
+KVM_CAP_X86_ROBUST_SINGLESTEP 51
+KVM_CAP_PPC_OSI 52
+KVM_CAP_PPC_UNSET_IRQ 53
+KVM_CAP_ENABLE_CAP 54
+KVM_CAP_XSAVE 55
+KVM_CAP_XCRS 56
+KVM_CAP_PPC_GET_PVINFO 57
+KVM_CAP_PPC_IRQ_LEVEL 58
+KVM_CAP_ASYNC_PF 59
+KVM_CAP_TSC_CONTROL 60
+KVM_CAP_GET_TSC_KHZ 61
+KVM_CAP_PPC_BOOKE_SREGS 62
+KVM_CAP_SPAPR_TCE 63
+KVM_CAP_PPC_SMT 64
+KVM_CAP_PPC_RMA 65
+KVM_CAP_MAX_VCPUS 66
+KVM_CAP_PPC_HIOR 67
+KVM_CAP_PPC_PAPR 68
+KVM_CAP_SW_TLB 69
+KVM_CAP_ONE_REG 70
+KVM_CAP_S390_GMAP 71
+KVM_CAP_TSC_DEADLINE_TIMER 72
+KVM_CAP_S390_UCONTROL 73
+KVM_CAP_SYNC_REGS 74
+KVM_CAP_PCI_2_3 75
+KVM_CAP_KVMCLOCK_CTRL 76
+KVM_CAP_SIGNAL_MSI 77
+KVM_CAP_PPC_GET_SMMU_INFO 78
+KVM_CAP_S390_COW 79
+KVM_CAP_PPC_ALLOC_HTAB 80
+KVM_CAP_READONLY_MEM 81
+KVM_CAP_IRQFD_RESAMPLE 82
+KVM_CAP_PPC_BOOKE_WATCHDOG 83
+KVM_CAP_PPC_HTAB_FD 84
+KVM_CAP_S390_CSS_SUPPORT 85
+KVM_CAP_PPC_EPR 86
+KVM_CAP_ARM_PSCI 87
+KVM_CAP_ARM_SET_DEVICE_ADDR 88
+KVM_CAP_DEVICE_CTRL 89
+KVM_CAP_IRQ_MPIC 90
+KVM_CAP_PPC_RTAS 91
+KVM_CAP_IRQ_XICS 92
+KVM_CAP_ARM_EL1_32BIT 93
+KVM_CAP_SPAPR_MULTITCE 94
+KVM_CAP_EXT_EMUL_CPUID 95
+KVM_CAP_HYPERV_TIME 96
+KVM_CAP_IOAPIC_POLARITY_IGNORED 97
+KVM_CAP_ENABLE_CAP_VM 98
+KVM_CAP_S390_IRQCHIP 99
+KVM_CAP_IOEVENTFD_NO_LENGTH 100
+KVM_CAP_VM_ATTRIBUTES 101
+KVM_CAP_ARM_PSCI_0_2 102
+KVM_CAP_PPC_FIXUP_HCALL 103
+KVM_CAP_PPC_ENABLE_HCALL 104
+KVM_CAP_CHECK_EXTENSION_VM 105
+KVM_CAP_S390_USER_SIGP 106
+KVM_CAP_S390_VECTOR_REGISTERS 107
+KVM_CAP_S390_MEM_OP 108
+KVM_CAP_S390_USER_STSI 109
+KVM_CAP_S390_SKEYS 110
+KVM_CAP_MIPS_FPU 111
+KVM_CAP_MIPS_MSA 112
+KVM_CAP_S390_INJECT_IRQ 113
+KVM_CAP_S390_IRQ_STATE 114
+KVM_CAP_PPC_HWRNG 115
+KVM_CAP_DISABLE_QUIRKS 116
+KVM_CAP_X86_SMM 117
+KVM_CAP_MULTI_ADDRESS_SPACE 118
+KVM_CAP_GUEST_DEBUG_HW_BPS 119
+KVM_CAP_GUEST_DEBUG_HW_WPS 120
+KVM_CAP_SPLIT_IRQCHIP 121
+KVM_CAP_IOEVENTFD_ANY_LENGTH 122
+KVM_CAP_HYPERV_SYNIC 123
+KVM_CAP_S390_RI 124
+KVM_CAP_SPAPR_TCE_64 125
+KVM_CAP_ARM_PMU_V3 126
+KVM_CAP_VCPU_ATTRIBUTES 127
+KVM_CAP_MAX_VCPU_ID 128
+KVM_CAP_X2APIC_API 129
+KVM_CAP_S390_USER_INSTR0 130
+KVM_CAP_MSI_DEVID 131
+KVM_CAP_PPC_HTM 132
+KVM_CAP_SPAPR_RESIZE_HPT 133
+KVM_CAP_PPC_MMU_RADIX 134
+KVM_CAP_PPC_MMU_HASH_V3 135
+KVM_CAP_IMMEDIATE_EXIT 136
+KVM_CAP_MIPS_VZ 137
+KVM_CAP_MIPS_TE 138
+KVM_CAP_MIPS_64BIT 139
+KVM_CAP_S390_GS 140
+KVM_CAP_S390_AIS 141
+KVM_CAP_SPAPR_TCE_VFIO 142
+KVM_CAP_X86_DISABLE_EXITS 143
+KVM_CAP_ARM_USER_IRQ 144
+KVM_CAP_S390_CMMA_MIGRATION 145
+KVM_CAP_PPC_FWNMI 146
+KVM_CAP_PPC_SMT_POSSIBLE 147
+KVM_CAP_HYPERV_SYNIC2 148
+KVM_CAP_HYPERV_VP_INDEX 149
+KVM_CAP_S390_AIS_MIGRATION 150
+KVM_CAP_PPC_GET_CPU_CHAR 151
+KVM_CAP_S390_BPB 152
+KVM_CAP_GET_MSR_FEATURES 153
+KVM_CAP_HYPERV_EVENTFD 154
+KVM_CAP_HYPERV_TLBFLUSH 155
+KVM_CAP_S390_HPAGE_1M 156