Commit a625df39 authored by Namhyung Kim's avatar Namhyung Kim
Browse files

tools/include: Sync uapi/linux/kvm.h with the kernel sources

And other arch-specific UAPI headers to pick up changes from:

  4b23e0c1 KVM: Ensure new code that references immediate_exit gets extra scrutiny
  85542adb KVM: x86: Add KVM_RUN_X86_GUEST_MODE kvm_run flag
  6fef5185 KVM: x86: Add a capability to configure bus frequency for APIC timer
  34ff6590 x86/sev: Use kernel provided SVSM Calling Areas
  5dcc1e76 Merge tag 'kvm-x86-misc-6.11' of https://github.com/kvm-x86/linux

 into HEAD
  9a0d2f49 KVM: PPC: Book3S HV: Add one-reg interface for HASHPKEYR register
  e9eb790b KVM: PPC: Book3S HV: Add one-reg interface for HASHKEYR register
  1a1e6865 KVM: PPC: Book3S HV: Add one-reg interface for DEXCR register

This should be used to beautify KVM syscall arguments and it addresses
these tools/perf build warnings:

  Warning: Kernel ABI header differences:
  diff -u tools/include/uapi/linux/kvm.h include/uapi/linux/kvm.h
  diff -u tools/arch/x86/include/uapi/asm/kvm.h arch/x86/include/uapi/asm/kvm.h
  diff -u tools/arch/x86/include/uapi/asm/svm.h arch/x86/include/uapi/asm/svm.h
  diff -u tools/arch/powerpc/include/uapi/asm/kvm.h arch/powerpc/include/uapi/asm/kvm.h

Please see tools/include/uapi/README for details (it's in the first patch
of this series).

Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: kvm@vger.kernel.org
Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
parent aef21f6b
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -645,6 +645,9 @@ struct kvm_ppc_cpu_char {
#define KVM_REG_PPC_SIER3	(KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc3)
#define KVM_REG_PPC_DAWR1	(KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc4)
#define KVM_REG_PPC_DAWRX1	(KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc5)
#define KVM_REG_PPC_DEXCR	(KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc6)
#define KVM_REG_PPC_HASHKEYR	(KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc7)
#define KVM_REG_PPC_HASHPKEYR	(KVM_REG_PPC | KVM_REG_SIZE_U64 | 0xc8)

/* Transactional Memory checkpointed state:
 * This is all GPRs, all VSX regs and a subset of SPRs
+49 −0
Original line number Diff line number Diff line
@@ -106,6 +106,7 @@ struct kvm_ioapic_state {

#define KVM_RUN_X86_SMM		 (1 << 0)
#define KVM_RUN_X86_BUS_LOCK     (1 << 1)
#define KVM_RUN_X86_GUEST_MODE   (1 << 2)

/* for KVM_GET_REGS and KVM_SET_REGS */
struct kvm_regs {
@@ -697,6 +698,11 @@ enum sev_cmd_id {
	/* Second time is the charm; improved versions of the above ioctls.  */
	KVM_SEV_INIT2,

	/* SNP-specific commands */
	KVM_SEV_SNP_LAUNCH_START = 100,
	KVM_SEV_SNP_LAUNCH_UPDATE,
	KVM_SEV_SNP_LAUNCH_FINISH,

	KVM_SEV_NR_MAX,
};

@@ -824,6 +830,48 @@ struct kvm_sev_receive_update_data {
	__u32 pad2;
};

struct kvm_sev_snp_launch_start {
	__u64 policy;
	__u8 gosvw[16];
	__u16 flags;
	__u8 pad0[6];
	__u64 pad1[4];
};

/* Kept in sync with firmware values for simplicity. */
#define KVM_SEV_SNP_PAGE_TYPE_NORMAL		0x1
#define KVM_SEV_SNP_PAGE_TYPE_ZERO		0x3
#define KVM_SEV_SNP_PAGE_TYPE_UNMEASURED	0x4
#define KVM_SEV_SNP_PAGE_TYPE_SECRETS		0x5
#define KVM_SEV_SNP_PAGE_TYPE_CPUID		0x6

struct kvm_sev_snp_launch_update {
	__u64 gfn_start;
	__u64 uaddr;
	__u64 len;
	__u8 type;
	__u8 pad0;
	__u16 flags;
	__u32 pad1;
	__u64 pad2[4];
};

#define KVM_SEV_SNP_ID_BLOCK_SIZE	96
#define KVM_SEV_SNP_ID_AUTH_SIZE	4096
#define KVM_SEV_SNP_FINISH_DATA_SIZE	32

struct kvm_sev_snp_launch_finish {
	__u64 id_block_uaddr;
	__u64 id_auth_uaddr;
	__u8 id_block_en;
	__u8 auth_key_en;
	__u8 vcek_disabled;
	__u8 host_data[KVM_SEV_SNP_FINISH_DATA_SIZE];
	__u8 pad0[3];
	__u16 flags;
	__u64 pad1[4];
};

#define KVM_X2APIC_API_USE_32BIT_IDS            (1ULL << 0)
#define KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK  (1ULL << 1)

@@ -874,5 +922,6 @@ struct kvm_hyperv_eventfd {
#define KVM_X86_SW_PROTECTED_VM	1
#define KVM_X86_SEV_VM		2
#define KVM_X86_SEV_ES_VM	3
#define KVM_X86_SNP_VM		4

#endif /* _ASM_X86_KVM_H */
+1 −0
Original line number Diff line number Diff line
@@ -115,6 +115,7 @@
#define SVM_VMGEXIT_AP_CREATE_ON_INIT		0
#define SVM_VMGEXIT_AP_CREATE			1
#define SVM_VMGEXIT_AP_DESTROY			2
#define SVM_VMGEXIT_SNP_RUN_VMPL		0x80000018
#define SVM_VMGEXIT_HV_FEATURES			0x8000fffd
#define SVM_VMGEXIT_TERM_REQUEST		0x8000fffe
#define SVM_VMGEXIT_TERM_REASON(reason_set, reason_code)	\
+16 −1
Original line number Diff line number Diff line
@@ -192,11 +192,24 @@ struct kvm_xen_exit {
/* Flags that describe what fields in emulation_failure hold valid data. */
#define KVM_INTERNAL_ERROR_EMULATION_FLAG_INSTRUCTION_BYTES (1ULL << 0)

/*
 * struct kvm_run can be modified by userspace at any time, so KVM must be
 * careful to avoid TOCTOU bugs. In order to protect KVM, HINT_UNSAFE_IN_KVM()
 * renames fields in struct kvm_run from <symbol> to <symbol>__unsafe when
 * compiled into the kernel, ensuring that any use within KVM is obvious and
 * gets extra scrutiny.
 */
#ifdef __KERNEL__
#define HINT_UNSAFE_IN_KVM(_symbol) _symbol##__unsafe
#else
#define HINT_UNSAFE_IN_KVM(_symbol) _symbol
#endif

/* for KVM_RUN, returned by mmap(vcpu_fd, offset=0) */
struct kvm_run {
	/* in */
	__u8 request_interrupt_window;
	__u8 immediate_exit;
	__u8 HINT_UNSAFE_IN_KVM(immediate_exit);
	__u8 padding1[6];

	/* out */
@@ -918,6 +931,8 @@ struct kvm_enable_cap {
#define KVM_CAP_GUEST_MEMFD 234
#define KVM_CAP_VM_TYPES 235
#define KVM_CAP_PRE_FAULT_MEMORY 236
#define KVM_CAP_X86_APIC_BUS_CYCLES_NS 237
#define KVM_CAP_X86_GUEST_MODE 238

struct kvm_irq_routing_irqchip {
	__u32 irqchip;