Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'perf-tools-fixes-for-v6.9-2024-04-19' of git://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools

Pull perf tools fixes from Namhyung Kim:
"A random set of small bug fixes:

- Fix perf annotate TUI when used with data type profiling

- Work around BPF verifier about sighand lock checking

And a set of kernel header synchronization"

* tag 'perf-tools-fixes-for-v6.9-2024-04-19' of git://git.kernel.org/pub/scm/linux/kernel/git/perf/perf-tools:
tools/include: Sync arm64 asm/cputype.h with the kernel sources
tools/include: Sync asm-generic/bitops/fls.h with the kernel sources
tools/include: Sync x86 asm/msr-index.h with the kernel sources
tools/include: Sync x86 asm/irq_vectors.h with the kernel sources
tools/include: Sync x86 CPU feature headers with the kernel sources
tools/include: Sync uapi/sound/asound.h with the kernel sources
tools/include: Sync uapi/linux/kvm.h and asm/kvm.h with the kernel sources
tools/include: Sync uapi/linux/fs.h with the kernel sources
tools/include: Sync uapi/drm/i915_drm.h with the kernel sources
perf lock contention: Add a missing NULL check
perf annotate: Make sure to call symbol__annotate2() in TUI

+817 -742
+4
tools/arch/arm64/include/asm/cputype.h
··· 61 61 #define ARM_CPU_IMP_HISI 0x48 62 62 #define ARM_CPU_IMP_APPLE 0x61 63 63 #define ARM_CPU_IMP_AMPERE 0xC0 64 + #define ARM_CPU_IMP_MICROSOFT 0x6D 64 65 65 66 #define ARM_CPU_PART_AEM_V8 0xD0F 66 67 #define ARM_CPU_PART_FOUNDATION 0xD00 ··· 136 135 137 136 #define AMPERE_CPU_PART_AMPERE1 0xAC3 138 137 138 + #define MICROSOFT_CPU_PART_AZURE_COBALT_100 0xD49 /* Based on r0p0 of ARM Neoverse N2 */ 139 + 139 140 #define MIDR_CORTEX_A53 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A53) 140 141 #define MIDR_CORTEX_A57 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A57) 141 142 #define MIDR_CORTEX_A72 MIDR_CPU_MODEL(ARM_CPU_IMP_ARM, ARM_CPU_PART_CORTEX_A72) ··· 196 193 #define MIDR_APPLE_M2_BLIZZARD_MAX MIDR_CPU_MODEL(ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M2_BLIZZARD_MAX) 197 194 #define MIDR_APPLE_M2_AVALANCHE_MAX MIDR_CPU_MODEL(ARM_CPU_IMP_APPLE, APPLE_CPU_PART_M2_AVALANCHE_MAX) 198 195 #define MIDR_AMPERE1 MIDR_CPU_MODEL(ARM_CPU_IMP_AMPERE, AMPERE_CPU_PART_AMPERE1) 196 + #define MIDR_MICROSOFT_AZURE_COBALT_100 MIDR_CPU_MODEL(ARM_CPU_IMP_MICROSOFT, MICROSOFT_CPU_PART_AZURE_COBALT_100) 199 197 200 198 /* Fujitsu Erratum 010001 affects A64FX 1.0 and 1.1, (v0r0 and v1r0) */ 201 199 #define MIDR_FUJITSU_ERRATUM_010001 MIDR_FUJITSU_A64FX
+9 -6
tools/arch/arm64/include/uapi/asm/kvm.h
··· 37 37 #include <asm/ptrace.h> 38 38 #include <asm/sve_context.h> 39 39 40 - #define __KVM_HAVE_GUEST_DEBUG 41 40 #define __KVM_HAVE_IRQ_LINE 42 - #define __KVM_HAVE_READONLY_MEM 43 41 #define __KVM_HAVE_VCPU_EVENTS 44 42 45 43 #define KVM_COALESCED_MMIO_PAGE_OFFSET 1 ··· 74 76 75 77 /* KVM_ARM_SET_DEVICE_ADDR ioctl id encoding */ 76 78 #define KVM_ARM_DEVICE_TYPE_SHIFT 0 77 - #define KVM_ARM_DEVICE_TYPE_MASK GENMASK(KVM_ARM_DEVICE_TYPE_SHIFT + 15, \ 78 - KVM_ARM_DEVICE_TYPE_SHIFT) 79 + #define KVM_ARM_DEVICE_TYPE_MASK __GENMASK(KVM_ARM_DEVICE_TYPE_SHIFT + 15, \ 80 + KVM_ARM_DEVICE_TYPE_SHIFT) 79 81 #define KVM_ARM_DEVICE_ID_SHIFT 16 80 - #define KVM_ARM_DEVICE_ID_MASK GENMASK(KVM_ARM_DEVICE_ID_SHIFT + 15, \ 81 - KVM_ARM_DEVICE_ID_SHIFT) 82 + #define KVM_ARM_DEVICE_ID_MASK __GENMASK(KVM_ARM_DEVICE_ID_SHIFT + 15, \ 83 + KVM_ARM_DEVICE_ID_SHIFT) 82 84 83 85 /* Supported device IDs */ 84 86 #define KVM_ARM_DEVICE_VGIC_V2 0 ··· 159 161 /* Used with KVM_CAP_ARM_USER_IRQ */ 160 162 __u64 device_irq_level; 161 163 }; 164 + 165 + /* Bits for run->s.regs.device_irq_level */ 166 + #define KVM_ARM_DEV_EL1_VTIMER (1 << 0) 167 + #define KVM_ARM_DEV_EL1_PTIMER (1 << 1) 168 + #define KVM_ARM_DEV_PMU (1 << 2) 162 169 163 170 /* 164 171 * PMU filter structure. Describe a range of events with a particular
+44 -1
tools/arch/powerpc/include/uapi/asm/kvm.h
··· 28 28 #define __KVM_HAVE_PPC_SMT 29 29 #define __KVM_HAVE_IRQCHIP 30 30 #define __KVM_HAVE_IRQ_LINE 31 - #define __KVM_HAVE_GUEST_DEBUG 32 31 33 32 /* Not always available, but if it is, this is the correct offset. */ 34 33 #define KVM_COALESCED_MMIO_PAGE_OFFSET 1 ··· 731 732 732 733 #define KVM_XIVE_TIMA_PAGE_OFFSET 0 733 734 #define KVM_XIVE_ESB_PAGE_OFFSET 4 735 + 736 + /* for KVM_PPC_GET_PVINFO */ 737 + 738 + #define KVM_PPC_PVINFO_FLAGS_EV_IDLE (1<<0) 739 + 740 + struct kvm_ppc_pvinfo { 741 + /* out */ 742 + __u32 flags; 743 + __u32 hcall[4]; 744 + __u8 pad[108]; 745 + }; 746 + 747 + /* for KVM_PPC_GET_SMMU_INFO */ 748 + #define KVM_PPC_PAGE_SIZES_MAX_SZ 8 749 + 750 + struct kvm_ppc_one_page_size { 751 + __u32 page_shift; /* Page shift (or 0) */ 752 + __u32 pte_enc; /* Encoding in the HPTE (>>12) */ 753 + }; 754 + 755 + struct kvm_ppc_one_seg_page_size { 756 + __u32 page_shift; /* Base page shift of segment (or 0) */ 757 + __u32 slb_enc; /* SLB encoding for BookS */ 758 + struct kvm_ppc_one_page_size enc[KVM_PPC_PAGE_SIZES_MAX_SZ]; 759 + }; 760 + 761 + #define KVM_PPC_PAGE_SIZES_REAL 0x00000001 762 + #define KVM_PPC_1T_SEGMENTS 0x00000002 763 + #define KVM_PPC_NO_HASH 0x00000004 764 + 765 + struct kvm_ppc_smmu_info { 766 + __u64 flags; 767 + __u32 slb_size; 768 + __u16 data_keys; /* # storage keys supported for data */ 769 + __u16 instr_keys; /* # storage keys supported for instructions */ 770 + struct kvm_ppc_one_seg_page_size sps[KVM_PPC_PAGE_SIZES_MAX_SZ]; 771 + }; 772 + 773 + /* for KVM_PPC_RESIZE_HPT_{PREPARE,COMMIT} */ 774 + struct kvm_ppc_resize_hpt { 775 + __u64 flags; 776 + __u32 shift; 777 + __u32 pad; 778 + }; 734 779 735 780 #endif /* __LINUX_KVM_POWERPC_H */
+314 -1
tools/arch/s390/include/uapi/asm/kvm.h
··· 12 12 #include <linux/types.h> 13 13 14 14 #define __KVM_S390 15 - #define __KVM_HAVE_GUEST_DEBUG 15 + 16 + struct kvm_s390_skeys { 17 + __u64 start_gfn; 18 + __u64 count; 19 + __u64 skeydata_addr; 20 + __u32 flags; 21 + __u32 reserved[9]; 22 + }; 23 + 24 + #define KVM_S390_CMMA_PEEK (1 << 0) 25 + 26 + /** 27 + * kvm_s390_cmma_log - Used for CMMA migration. 28 + * 29 + * Used both for input and output. 30 + * 31 + * @start_gfn: Guest page number to start from. 32 + * @count: Size of the result buffer. 33 + * @flags: Control operation mode via KVM_S390_CMMA_* flags 34 + * @remaining: Used with KVM_S390_GET_CMMA_BITS. Indicates how many dirty 35 + * pages are still remaining. 36 + * @mask: Used with KVM_S390_SET_CMMA_BITS. Bitmap of bits to actually set 37 + * in the PGSTE. 38 + * @values: Pointer to the values buffer. 39 + * 40 + * Used in KVM_S390_{G,S}ET_CMMA_BITS ioctls. 41 + */ 42 + struct kvm_s390_cmma_log { 43 + __u64 start_gfn; 44 + __u32 count; 45 + __u32 flags; 46 + union { 47 + __u64 remaining; 48 + __u64 mask; 49 + }; 50 + __u64 values; 51 + }; 52 + 53 + #define KVM_S390_RESET_POR 1 54 + #define KVM_S390_RESET_CLEAR 2 55 + #define KVM_S390_RESET_SUBSYSTEM 4 56 + #define KVM_S390_RESET_CPU_INIT 8 57 + #define KVM_S390_RESET_IPL 16 58 + 59 + /* for KVM_S390_MEM_OP */ 60 + struct kvm_s390_mem_op { 61 + /* in */ 62 + __u64 gaddr; /* the guest address */ 63 + __u64 flags; /* flags */ 64 + __u32 size; /* amount of bytes */ 65 + __u32 op; /* type of operation */ 66 + __u64 buf; /* buffer in userspace */ 67 + union { 68 + struct { 69 + __u8 ar; /* the access register number */ 70 + __u8 key; /* access key, ignored if flag unset */ 71 + __u8 pad1[6]; /* ignored */ 72 + __u64 old_addr; /* ignored if cmpxchg flag unset */ 73 + }; 74 + __u32 sida_offset; /* offset into the sida */ 75 + __u8 reserved[32]; /* ignored */ 76 + }; 77 + }; 78 + /* types for kvm_s390_mem_op->op */ 79 + #define KVM_S390_MEMOP_LOGICAL_READ 0 80 + #define KVM_S390_MEMOP_LOGICAL_WRITE 1 81 + #define KVM_S390_MEMOP_SIDA_READ 2 82 + #define KVM_S390_MEMOP_SIDA_WRITE 3 83 + #define KVM_S390_MEMOP_ABSOLUTE_READ 4 84 + #define KVM_S390_MEMOP_ABSOLUTE_WRITE 5 85 + #define KVM_S390_MEMOP_ABSOLUTE_CMPXCHG 6 86 + 87 + /* flags for kvm_s390_mem_op->flags */ 88 + #define KVM_S390_MEMOP_F_CHECK_ONLY (1ULL << 0) 89 + #define KVM_S390_MEMOP_F_INJECT_EXCEPTION (1ULL << 1) 90 + #define KVM_S390_MEMOP_F_SKEY_PROTECTION (1ULL << 2) 91 + 92 + /* flags specifying extension support via KVM_CAP_S390_MEM_OP_EXTENSION */ 93 + #define KVM_S390_MEMOP_EXTENSION_CAP_BASE (1 << 0) 94 + #define KVM_S390_MEMOP_EXTENSION_CAP_CMPXCHG (1 << 1) 95 + 96 + struct kvm_s390_psw { 97 + __u64 mask; 98 + __u64 addr; 99 + }; 100 + 101 + /* valid values for type in kvm_s390_interrupt */ 102 + #define KVM_S390_SIGP_STOP 0xfffe0000u 103 + #define KVM_S390_PROGRAM_INT 0xfffe0001u 104 + #define KVM_S390_SIGP_SET_PREFIX 0xfffe0002u 105 + #define KVM_S390_RESTART 0xfffe0003u 106 + #define KVM_S390_INT_PFAULT_INIT 0xfffe0004u 107 + #define KVM_S390_INT_PFAULT_DONE 0xfffe0005u 108 + #define KVM_S390_MCHK 0xfffe1000u 109 + #define KVM_S390_INT_CLOCK_COMP 0xffff1004u 110 + #define KVM_S390_INT_CPU_TIMER 0xffff1005u 111 + #define KVM_S390_INT_VIRTIO 0xffff2603u 112 + #define KVM_S390_INT_SERVICE 0xffff2401u 113 + #define KVM_S390_INT_EMERGENCY 0xffff1201u 114 + #define KVM_S390_INT_EXTERNAL_CALL 0xffff1202u 115 + /* Anything below 0xfffe0000u is taken by INT_IO */ 116 + #define KVM_S390_INT_IO(ai,cssid,ssid,schid) \ 117 + (((schid)) | \ 118 + ((ssid) << 16) | \ 119 + ((cssid) << 18) | \ 120 + ((ai) << 26)) 121 + #define KVM_S390_INT_IO_MIN 0x00000000u 122 + #define KVM_S390_INT_IO_MAX 0xfffdffffu 123 + #define KVM_S390_INT_IO_AI_MASK 0x04000000u 124 + 125 + 126 + struct kvm_s390_interrupt { 127 + __u32 type; 128 + __u32 parm; 129 + __u64 parm64; 130 + }; 131 + 132 + struct kvm_s390_io_info { 133 + __u16 subchannel_id; 134 + __u16 subchannel_nr; 135 + __u32 io_int_parm; 136 + __u32 io_int_word; 137 + }; 138 + 139 + struct kvm_s390_ext_info { 140 + __u32 ext_params; 141 + __u32 pad; 142 + __u64 ext_params2; 143 + }; 144 + 145 + struct kvm_s390_pgm_info { 146 + __u64 trans_exc_code; 147 + __u64 mon_code; 148 + __u64 per_address; 149 + __u32 data_exc_code; 150 + __u16 code; 151 + __u16 mon_class_nr; 152 + __u8 per_code; 153 + __u8 per_atmid; 154 + __u8 exc_access_id; 155 + __u8 per_access_id; 156 + __u8 op_access_id; 157 + #define KVM_S390_PGM_FLAGS_ILC_VALID 0x01 158 + #define KVM_S390_PGM_FLAGS_ILC_0 0x02 159 + #define KVM_S390_PGM_FLAGS_ILC_1 0x04 160 + #define KVM_S390_PGM_FLAGS_ILC_MASK 0x06 161 + #define KVM_S390_PGM_FLAGS_NO_REWIND 0x08 162 + __u8 flags; 163 + __u8 pad[2]; 164 + }; 165 + 166 + struct kvm_s390_prefix_info { 167 + __u32 address; 168 + }; 169 + 170 + struct kvm_s390_extcall_info { 171 + __u16 code; 172 + }; 173 + 174 + struct kvm_s390_emerg_info { 175 + __u16 code; 176 + }; 177 + 178 + #define KVM_S390_STOP_FLAG_STORE_STATUS 0x01 179 + struct kvm_s390_stop_info { 180 + __u32 flags; 181 + }; 182 + 183 + struct kvm_s390_mchk_info { 184 + __u64 cr14; 185 + __u64 mcic; 186 + __u64 failing_storage_address; 187 + __u32 ext_damage_code; 188 + __u32 pad; 189 + __u8 fixed_logout[16]; 190 + }; 191 + 192 + struct kvm_s390_irq { 193 + __u64 type; 194 + union { 195 + struct kvm_s390_io_info io; 196 + struct kvm_s390_ext_info ext; 197 + struct kvm_s390_pgm_info pgm; 198 + struct kvm_s390_emerg_info emerg; 199 + struct kvm_s390_extcall_info extcall; 200 + struct kvm_s390_prefix_info prefix; 201 + struct kvm_s390_stop_info stop; 202 + struct kvm_s390_mchk_info mchk; 203 + char reserved[64]; 204 + } u; 205 + }; 206 + 207 + struct kvm_s390_irq_state { 208 + __u64 buf; 209 + __u32 flags; /* will stay unused for compatibility reasons */ 210 + __u32 len; 211 + __u32 reserved[4]; /* will stay unused for compatibility reasons */ 212 + }; 213 + 214 + struct kvm_s390_ucas_mapping { 215 + __u64 user_addr; 216 + __u64 vcpu_addr; 217 + __u64 length; 218 + }; 219 + 220 + struct kvm_s390_pv_sec_parm { 221 + __u64 origin; 222 + __u64 length; 223 + }; 224 + 225 + struct kvm_s390_pv_unp { 226 + __u64 addr; 227 + __u64 size; 228 + __u64 tweak; 229 + }; 230 + 231 + enum pv_cmd_dmp_id { 232 + KVM_PV_DUMP_INIT, 233 + KVM_PV_DUMP_CONFIG_STOR_STATE, 234 + KVM_PV_DUMP_COMPLETE, 235 + KVM_PV_DUMP_CPU, 236 + }; 237 + 238 + struct kvm_s390_pv_dmp { 239 + __u64 subcmd; 240 + __u64 buff_addr; 241 + __u64 buff_len; 242 + __u64 gaddr; /* For dump storage state */ 243 + __u64 reserved[4]; 244 + }; 245 + 246 + enum pv_cmd_info_id { 247 + KVM_PV_INFO_VM, 248 + KVM_PV_INFO_DUMP, 249 + }; 250 + 251 + struct kvm_s390_pv_info_dump { 252 + __u64 dump_cpu_buffer_len; 253 + __u64 dump_config_mem_buffer_per_1m; 254 + __u64 dump_config_finalize_len; 255 + }; 256 + 257 + struct kvm_s390_pv_info_vm { 258 + __u64 inst_calls_list[4]; 259 + __u64 max_cpus; 260 + __u64 max_guests; 261 + __u64 max_guest_addr; 262 + __u64 feature_indication; 263 + }; 264 + 265 + struct kvm_s390_pv_info_header { 266 + __u32 id; 267 + __u32 len_max; 268 + __u32 len_written; 269 + __u32 reserved; 270 + }; 271 + 272 + struct kvm_s390_pv_info { 273 + struct kvm_s390_pv_info_header header; 274 + union { 275 + struct kvm_s390_pv_info_dump dump; 276 + struct kvm_s390_pv_info_vm vm; 277 + }; 278 + }; 279 + 280 + enum pv_cmd_id { 281 + KVM_PV_ENABLE, 282 + KVM_PV_DISABLE, 283 + KVM_PV_SET_SEC_PARMS, 284 + KVM_PV_UNPACK, 285 + KVM_PV_VERIFY, 286 + KVM_PV_PREP_RESET, 287 + KVM_PV_UNSHARE_ALL, 288 + KVM_PV_INFO, 289 + KVM_PV_DUMP, 290 + KVM_PV_ASYNC_CLEANUP_PREPARE, 291 + KVM_PV_ASYNC_CLEANUP_PERFORM, 292 + }; 293 + 294 + struct kvm_pv_cmd { 295 + __u32 cmd; /* Command to be executed */ 296 + __u16 rc; /* Ultravisor return code */ 297 + __u16 rrc; /* Ultravisor return reason code */ 298 + __u64 data; /* Data or address */ 299 + __u32 flags; /* flags for future extensions. Must be 0 for now */ 300 + __u32 reserved[3]; 301 + }; 302 + 303 + struct kvm_s390_zpci_op { 304 + /* in */ 305 + __u32 fh; /* target device */ 306 + __u8 op; /* operation to perform */ 307 + __u8 pad[3]; 308 + union { 309 + /* for KVM_S390_ZPCIOP_REG_AEN */ 310 + struct { 311 + __u64 ibv; /* Guest addr of interrupt bit vector */ 312 + __u64 sb; /* Guest addr of summary bit */ 313 + __u32 flags; 314 + __u32 noi; /* Number of interrupts */ 315 + __u8 isc; /* Guest interrupt subclass */ 316 + __u8 sbo; /* Offset of guest summary bit vector */ 317 + __u16 pad; 318 + } reg_aen; 319 + __u64 reserved[8]; 320 + } u; 321 + }; 322 + 323 + /* types for kvm_s390_zpci_op->op */ 324 + #define KVM_S390_ZPCIOP_REG_AEN 0 325 + #define KVM_S390_ZPCIOP_DEREG_AEN 1 326 + 327 + /* flags for kvm_s390_zpci_op->u.reg_aen.flags */ 328 + #define KVM_S390_ZPCIOP_REGAEN_HOST (1 << 0) 16 329 17 330 /* Device control API: s390-specific devices */ 18 331 #define KVM_DEV_FLIC_GET_ALL_IRQS 1
+12 -5
tools/arch/x86/include/asm/cpufeatures.h
··· 13 13 /* 14 14 * Defines x86 CPU feature bits 15 15 */ 16 - #define NCAPINTS 21 /* N 32-bit words worth of info */ 16 + #define NCAPINTS 22 /* N 32-bit words worth of info */ 17 17 #define NBUGINTS 2 /* N 32-bit bug flags */ 18 18 19 19 /* ··· 81 81 #define X86_FEATURE_K6_MTRR ( 3*32+ 1) /* AMD K6 nonstandard MTRRs */ 82 82 #define X86_FEATURE_CYRIX_ARR ( 3*32+ 2) /* Cyrix ARRs (= MTRRs) */ 83 83 #define X86_FEATURE_CENTAUR_MCR ( 3*32+ 3) /* Centaur MCRs (= MTRRs) */ 84 - 85 - /* CPU types for specific tunings: */ 86 84 #define X86_FEATURE_K8 ( 3*32+ 4) /* "" Opteron, Athlon64 */ 87 - /* FREE, was #define X86_FEATURE_K7 ( 3*32+ 5) "" Athlon */ 85 + #define X86_FEATURE_ZEN5 ( 3*32+ 5) /* "" CPU based on Zen5 microarchitecture */ 88 86 #define X86_FEATURE_P3 ( 3*32+ 6) /* "" P3 */ 89 87 #define X86_FEATURE_P4 ( 3*32+ 7) /* "" P4 */ 90 88 #define X86_FEATURE_CONSTANT_TSC ( 3*32+ 8) /* TSC ticks at a constant rate */ ··· 95 97 #define X86_FEATURE_SYSENTER32 ( 3*32+15) /* "" sysenter in IA32 userspace */ 96 98 #define X86_FEATURE_REP_GOOD ( 3*32+16) /* REP microcode works well */ 97 99 #define X86_FEATURE_AMD_LBR_V2 ( 3*32+17) /* AMD Last Branch Record Extension Version 2 */ 98 - /* FREE, was #define X86_FEATURE_LFENCE_RDTSC ( 3*32+18) "" LFENCE synchronizes RDTSC */ 100 + #define X86_FEATURE_CLEAR_CPU_BUF ( 3*32+18) /* "" Clear CPU buffers using VERW */ 99 101 #define X86_FEATURE_ACC_POWER ( 3*32+19) /* AMD Accumulated Power Mechanism */ 100 102 #define X86_FEATURE_NOPL ( 3*32+20) /* The NOPL (0F 1F) instructions */ 101 103 #define X86_FEATURE_ALWAYS ( 3*32+21) /* "" Always-present feature */ ··· 460 462 #define X86_FEATURE_SRSO_NO (20*32+29) /* "" CPU is not affected by SRSO */ 461 463 462 464 /* 465 + * Extended auxiliary flags: Linux defined - for features scattered in various 466 + * CPUID levels like 0x80000022, etc. 467 + * 468 + * Reuse free bits when adding new feature flags! 469 + */ 470 + #define X86_FEATURE_AMD_LBR_PMC_FREEZE (21*32+ 0) /* AMD LBR and PMC Freeze */ 471 + 472 + /* 463 473 * BUG word(s) 464 474 */ 465 475 #define X86_BUG(x) (NCAPINTS*32 + (x)) ··· 514 508 /* BUG word 2 */ 515 509 #define X86_BUG_SRSO X86_BUG(1*32 + 0) /* AMD SRSO bug */ 516 510 #define X86_BUG_DIV0 X86_BUG(1*32 + 1) /* AMD DIV0 speculation bug */ 511 + #define X86_BUG_RFDS X86_BUG(1*32 + 2) /* CPU is vulnerable to Register File Data Sampling */ 517 512 #endif /* _ASM_X86_CPUFEATURES_H */
+9 -2
tools/arch/x86/include/asm/disabled-features.h
··· 123 123 # define DISABLE_FRED (1 << (X86_FEATURE_FRED & 31)) 124 124 #endif 125 125 126 + #ifdef CONFIG_KVM_AMD_SEV 127 + #define DISABLE_SEV_SNP 0 128 + #else 129 + #define DISABLE_SEV_SNP (1 << (X86_FEATURE_SEV_SNP & 31)) 130 + #endif 131 + 126 132 /* 127 133 * Make sure to add features to the correct mask 128 134 */ ··· 153 147 DISABLE_ENQCMD) 154 148 #define DISABLED_MASK17 0 155 149 #define DISABLED_MASK18 (DISABLE_IBT) 156 - #define DISABLED_MASK19 0 150 + #define DISABLED_MASK19 (DISABLE_SEV_SNP) 157 151 #define DISABLED_MASK20 0 158 - #define DISABLED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 21) 152 + #define DISABLED_MASK21 0 153 + #define DISABLED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 22) 159 154 160 155 #endif /* _ASM_X86_DISABLED_FEATURES_H */
-2
tools/arch/x86/include/asm/irq_vectors.h
··· 84 84 #define HYPERVISOR_CALLBACK_VECTOR 0xf3 85 85 86 86 /* Vector for KVM to deliver posted interrupt IPI */ 87 - #if IS_ENABLED(CONFIG_KVM) 88 87 #define POSTED_INTR_VECTOR 0xf2 89 88 #define POSTED_INTR_WAKEUP_VECTOR 0xf1 90 89 #define POSTED_INTR_NESTED_VECTOR 0xf0 91 - #endif 92 90 93 91 #define MANAGED_IRQ_SHUTDOWN_VECTOR 0xef 94 92
+51 -23
tools/arch/x86/include/asm/msr-index.h
··· 176 176 * CPU is not vulnerable to Gather 177 177 * Data Sampling (GDS). 178 178 */ 179 + #define ARCH_CAP_RFDS_NO BIT(27) /* 180 + * Not susceptible to Register 181 + * File Data Sampling. 182 + */ 183 + #define ARCH_CAP_RFDS_CLEAR BIT(28) /* 184 + * VERW clears CPU Register 185 + * File. 186 + */ 179 187 180 188 #define ARCH_CAP_XAPIC_DISABLE BIT(21) /* 181 189 * IA32_XAPIC_DISABLE_STATUS MSR ··· 613 605 #define MSR_AMD64_SEV_ES_GHCB 0xc0010130 614 606 #define MSR_AMD64_SEV 0xc0010131 615 607 #define MSR_AMD64_SEV_ENABLED_BIT 0 616 - #define MSR_AMD64_SEV_ES_ENABLED_BIT 1 617 - #define MSR_AMD64_SEV_SNP_ENABLED_BIT 2 618 608 #define MSR_AMD64_SEV_ENABLED BIT_ULL(MSR_AMD64_SEV_ENABLED_BIT) 609 + #define MSR_AMD64_SEV_ES_ENABLED_BIT 1 619 610 #define MSR_AMD64_SEV_ES_ENABLED BIT_ULL(MSR_AMD64_SEV_ES_ENABLED_BIT) 611 + #define MSR_AMD64_SEV_SNP_ENABLED_BIT 2 620 612 #define MSR_AMD64_SEV_SNP_ENABLED BIT_ULL(MSR_AMD64_SEV_SNP_ENABLED_BIT) 621 - 622 - /* SNP feature bits enabled by the hypervisor */ 623 - #define MSR_AMD64_SNP_VTOM BIT_ULL(3) 624 - #define MSR_AMD64_SNP_REFLECT_VC BIT_ULL(4) 625 - #define MSR_AMD64_SNP_RESTRICTED_INJ BIT_ULL(5) 626 - #define MSR_AMD64_SNP_ALT_INJ BIT_ULL(6) 627 - #define MSR_AMD64_SNP_DEBUG_SWAP BIT_ULL(7) 628 - #define MSR_AMD64_SNP_PREVENT_HOST_IBS BIT_ULL(8) 629 - #define MSR_AMD64_SNP_BTB_ISOLATION BIT_ULL(9) 630 - #define MSR_AMD64_SNP_VMPL_SSS BIT_ULL(10) 631 - #define MSR_AMD64_SNP_SECURE_TSC BIT_ULL(11) 632 - #define MSR_AMD64_SNP_VMGEXIT_PARAM BIT_ULL(12) 633 - #define MSR_AMD64_SNP_IBS_VIRT BIT_ULL(14) 634 - #define MSR_AMD64_SNP_VMSA_REG_PROTECTION BIT_ULL(16) 635 - #define MSR_AMD64_SNP_SMT_PROTECTION BIT_ULL(17) 636 - 637 - /* SNP feature bits reserved for future use. */ 638 - #define MSR_AMD64_SNP_RESERVED_BIT13 BIT_ULL(13) 639 - #define MSR_AMD64_SNP_RESERVED_BIT15 BIT_ULL(15) 640 - #define MSR_AMD64_SNP_RESERVED_MASK GENMASK_ULL(63, 18) 613 + #define MSR_AMD64_SNP_VTOM_BIT 3 614 + #define MSR_AMD64_SNP_VTOM BIT_ULL(MSR_AMD64_SNP_VTOM_BIT) 615 + #define MSR_AMD64_SNP_REFLECT_VC_BIT 4 616 + #define MSR_AMD64_SNP_REFLECT_VC BIT_ULL(MSR_AMD64_SNP_REFLECT_VC_BIT) 617 + #define MSR_AMD64_SNP_RESTRICTED_INJ_BIT 5 618 + #define MSR_AMD64_SNP_RESTRICTED_INJ BIT_ULL(MSR_AMD64_SNP_RESTRICTED_INJ_BIT) 619 + #define MSR_AMD64_SNP_ALT_INJ_BIT 6 620 + #define MSR_AMD64_SNP_ALT_INJ BIT_ULL(MSR_AMD64_SNP_ALT_INJ_BIT) 621 + #define MSR_AMD64_SNP_DEBUG_SWAP_BIT 7 622 + #define MSR_AMD64_SNP_DEBUG_SWAP BIT_ULL(MSR_AMD64_SNP_DEBUG_SWAP_BIT) 623 + #define MSR_AMD64_SNP_PREVENT_HOST_IBS_BIT 8 624 + #define MSR_AMD64_SNP_PREVENT_HOST_IBS BIT_ULL(MSR_AMD64_SNP_PREVENT_HOST_IBS_BIT) 625 + #define MSR_AMD64_SNP_BTB_ISOLATION_BIT 9 626 + #define MSR_AMD64_SNP_BTB_ISOLATION BIT_ULL(MSR_AMD64_SNP_BTB_ISOLATION_BIT) 627 + #define MSR_AMD64_SNP_VMPL_SSS_BIT 10 628 + #define MSR_AMD64_SNP_VMPL_SSS BIT_ULL(MSR_AMD64_SNP_VMPL_SSS_BIT) 629 + #define MSR_AMD64_SNP_SECURE_TSC_BIT 11 630 + #define MSR_AMD64_SNP_SECURE_TSC BIT_ULL(MSR_AMD64_SNP_SECURE_TSC_BIT) 631 + #define MSR_AMD64_SNP_VMGEXIT_PARAM_BIT 12 632 + #define MSR_AMD64_SNP_VMGEXIT_PARAM BIT_ULL(MSR_AMD64_SNP_VMGEXIT_PARAM_BIT) 633 + #define MSR_AMD64_SNP_RESERVED_BIT13 BIT_ULL(13) 634 + #define MSR_AMD64_SNP_IBS_VIRT_BIT 14 635 + #define MSR_AMD64_SNP_IBS_VIRT BIT_ULL(MSR_AMD64_SNP_IBS_VIRT_BIT) 636 + #define MSR_AMD64_SNP_RESERVED_BIT15 BIT_ULL(15) 637 + #define MSR_AMD64_SNP_VMSA_REG_PROT_BIT 16 638 + #define MSR_AMD64_SNP_VMSA_REG_PROT BIT_ULL(MSR_AMD64_SNP_VMSA_REG_PROT_BIT) 639 + #define MSR_AMD64_SNP_SMT_PROT_BIT 17 640 + #define MSR_AMD64_SNP_SMT_PROT BIT_ULL(MSR_AMD64_SNP_SMT_PROT_BIT) 641 + #define MSR_AMD64_SNP_RESV_BIT 18 642 + #define MSR_AMD64_SNP_RESERVED_MASK GENMASK_ULL(63, MSR_AMD64_SNP_RESV_BIT) 641 643 642 644 #define MSR_AMD64_VIRT_SPEC_CTRL 0xc001011f 645 + 646 + #define MSR_AMD64_RMP_BASE 0xc0010132 647 + #define MSR_AMD64_RMP_END 0xc0010133 643 648 644 649 /* AMD Collaborative Processor Performance Control MSRs */ 645 650 #define MSR_AMD_CPPC_CAP1 0xc00102b0 ··· 740 719 #define MSR_K8_TOP_MEM1 0xc001001a 741 720 #define MSR_K8_TOP_MEM2 0xc001001d 742 721 #define MSR_AMD64_SYSCFG 0xc0010010 743 - #define MSR_AMD64_SYSCFG_MEM_ENCRYPT_BIT 23 722 + #define MSR_AMD64_SYSCFG_MEM_ENCRYPT_BIT 23 744 723 #define MSR_AMD64_SYSCFG_MEM_ENCRYPT BIT_ULL(MSR_AMD64_SYSCFG_MEM_ENCRYPT_BIT) 724 + #define MSR_AMD64_SYSCFG_SNP_EN_BIT 24 725 + #define MSR_AMD64_SYSCFG_SNP_EN BIT_ULL(MSR_AMD64_SYSCFG_SNP_EN_BIT) 726 + #define MSR_AMD64_SYSCFG_SNP_VMPL_EN_BIT 25 727 + #define MSR_AMD64_SYSCFG_SNP_VMPL_EN BIT_ULL(MSR_AMD64_SYSCFG_SNP_VMPL_EN_BIT) 728 + #define MSR_AMD64_SYSCFG_MFDM_BIT 19 729 + #define MSR_AMD64_SYSCFG_MFDM BIT_ULL(MSR_AMD64_SYSCFG_MFDM_BIT) 730 + 745 731 #define MSR_K8_INT_PENDING_MSG 0xc0010055 746 732 /* C1E active bits in int pending message */ 747 733 #define K8_INTP_C1E_ACTIVE_MASK 0x18000000
+2 -1
tools/arch/x86/include/asm/required-features.h
··· 99 99 #define REQUIRED_MASK18 0 100 100 #define REQUIRED_MASK19 0 101 101 #define REQUIRED_MASK20 0 102 - #define REQUIRED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 21) 102 + #define REQUIRED_MASK21 0 103 + #define REQUIRED_MASK_CHECK BUILD_BUG_ON_ZERO(NCAPINTS != 22) 103 104 104 105 #endif /* _ASM_X86_REQUIRED_FEATURES_H */
+300 -8
tools/arch/x86/include/uapi/asm/kvm.h
··· 7 7 * 8 8 */ 9 9 10 + #include <linux/const.h> 11 + #include <linux/bits.h> 10 12 #include <linux/types.h> 11 13 #include <linux/ioctl.h> 12 14 #include <linux/stddef.h> ··· 42 40 #define __KVM_HAVE_IRQ_LINE 43 41 #define __KVM_HAVE_MSI 44 42 #define __KVM_HAVE_USER_NMI 45 - #define __KVM_HAVE_GUEST_DEBUG 46 43 #define __KVM_HAVE_MSIX 47 44 #define __KVM_HAVE_MCE 48 45 #define __KVM_HAVE_PIT_STATE2 ··· 50 49 #define __KVM_HAVE_DEBUGREGS 51 50 #define __KVM_HAVE_XSAVE 52 51 #define __KVM_HAVE_XCRS 53 - #define __KVM_HAVE_READONLY_MEM 54 52 55 53 /* Architectural interrupt line count. */ 56 54 #define KVM_NR_INTERRUPTS 256 ··· 526 526 #define KVM_PMU_EVENT_ALLOW 0 527 527 #define KVM_PMU_EVENT_DENY 1 528 528 529 - #define KVM_PMU_EVENT_FLAG_MASKED_EVENTS BIT(0) 529 + #define KVM_PMU_EVENT_FLAG_MASKED_EVENTS _BITUL(0) 530 530 #define KVM_PMU_EVENT_FLAGS_VALID_MASK (KVM_PMU_EVENT_FLAG_MASKED_EVENTS) 531 + 532 + /* for KVM_CAP_MCE */ 533 + struct kvm_x86_mce { 534 + __u64 status; 535 + __u64 addr; 536 + __u64 misc; 537 + __u64 mcg_status; 538 + __u8 bank; 539 + __u8 pad1[7]; 540 + __u64 pad2[3]; 541 + }; 542 + 543 + /* for KVM_CAP_XEN_HVM */ 544 + #define KVM_XEN_HVM_CONFIG_HYPERCALL_MSR (1 << 0) 545 + #define KVM_XEN_HVM_CONFIG_INTERCEPT_HCALL (1 << 1) 546 + #define KVM_XEN_HVM_CONFIG_SHARED_INFO (1 << 2) 547 + #define KVM_XEN_HVM_CONFIG_RUNSTATE (1 << 3) 548 + #define KVM_XEN_HVM_CONFIG_EVTCHN_2LEVEL (1 << 4) 549 + #define KVM_XEN_HVM_CONFIG_EVTCHN_SEND (1 << 5) 550 + #define KVM_XEN_HVM_CONFIG_RUNSTATE_UPDATE_FLAG (1 << 6) 551 + #define KVM_XEN_HVM_CONFIG_PVCLOCK_TSC_UNSTABLE (1 << 7) 552 + #define KVM_XEN_HVM_CONFIG_SHARED_INFO_HVA (1 << 8) 553 + 554 + struct kvm_xen_hvm_config { 555 + __u32 flags; 556 + __u32 msr; 557 + __u64 blob_addr_32; 558 + __u64 blob_addr_64; 559 + __u8 blob_size_32; 560 + __u8 blob_size_64; 561 + __u8 pad2[30]; 562 + }; 563 + 564 + struct kvm_xen_hvm_attr { 565 + __u16 type; 566 + __u16 pad[3]; 567 + union { 568 + __u8 long_mode; 569 + __u8 vector; 570 + __u8 runstate_update_flag; 571 + union { 572 + __u64 gfn; 573 + #define KVM_XEN_INVALID_GFN ((__u64)-1) 574 + __u64 hva; 575 + } shared_info; 576 + struct { 577 + __u32 send_port; 578 + __u32 type; /* EVTCHNSTAT_ipi / EVTCHNSTAT_interdomain */ 579 + __u32 flags; 580 + #define KVM_XEN_EVTCHN_DEASSIGN (1 << 0) 581 + #define KVM_XEN_EVTCHN_UPDATE (1 << 1) 582 + #define KVM_XEN_EVTCHN_RESET (1 << 2) 583 + /* 584 + * Events sent by the guest are either looped back to 585 + * the guest itself (potentially on a different port#) 586 + * or signalled via an eventfd. 587 + */ 588 + union { 589 + struct { 590 + __u32 port; 591 + __u32 vcpu; 592 + __u32 priority; 593 + } port; 594 + struct { 595 + __u32 port; /* Zero for eventfd */ 596 + __s32 fd; 597 + } eventfd; 598 + __u32 padding[4]; 599 + } deliver; 600 + } evtchn; 601 + __u32 xen_version; 602 + __u64 pad[8]; 603 + } u; 604 + }; 605 + 606 + 607 + /* Available with KVM_CAP_XEN_HVM / KVM_XEN_HVM_CONFIG_SHARED_INFO */ 608 + #define KVM_XEN_ATTR_TYPE_LONG_MODE 0x0 609 + #define KVM_XEN_ATTR_TYPE_SHARED_INFO 0x1 610 + #define KVM_XEN_ATTR_TYPE_UPCALL_VECTOR 0x2 611 + /* Available with KVM_CAP_XEN_HVM / KVM_XEN_HVM_CONFIG_EVTCHN_SEND */ 612 + #define KVM_XEN_ATTR_TYPE_EVTCHN 0x3 613 + #define KVM_XEN_ATTR_TYPE_XEN_VERSION 0x4 614 + /* Available with KVM_CAP_XEN_HVM / KVM_XEN_HVM_CONFIG_RUNSTATE_UPDATE_FLAG */ 615 + #define KVM_XEN_ATTR_TYPE_RUNSTATE_UPDATE_FLAG 0x5 616 + /* Available with KVM_CAP_XEN_HVM / KVM_XEN_HVM_CONFIG_SHARED_INFO_HVA */ 617 + #define KVM_XEN_ATTR_TYPE_SHARED_INFO_HVA 0x6 618 + 619 + struct kvm_xen_vcpu_attr { 620 + __u16 type; 621 + __u16 pad[3]; 622 + union { 623 + __u64 gpa; 624 + #define KVM_XEN_INVALID_GPA ((__u64)-1) 625 + __u64 hva; 626 + __u64 pad[8]; 627 + struct { 628 + __u64 state; 629 + __u64 state_entry_time; 630 + __u64 time_running; 631 + __u64 time_runnable; 632 + __u64 time_blocked; 633 + __u64 time_offline; 634 + } runstate; 635 + __u32 vcpu_id; 636 + struct { 637 + __u32 port; 638 + __u32 priority; 639 + __u64 expires_ns; 640 + } timer; 641 + __u8 vector; 642 + } u; 643 + }; 644 + 645 + /* Available with KVM_CAP_XEN_HVM / KVM_XEN_HVM_CONFIG_SHARED_INFO */ 646 + #define KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO 0x0 647 + #define KVM_XEN_VCPU_ATTR_TYPE_VCPU_TIME_INFO 0x1 648 + #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADDR 0x2 649 + #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_CURRENT 0x3 650 + #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_DATA 0x4 651 + #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADJUST 0x5 652 + /* Available with KVM_CAP_XEN_HVM / KVM_XEN_HVM_CONFIG_EVTCHN_SEND */ 653 + #define KVM_XEN_VCPU_ATTR_TYPE_VCPU_ID 0x6 654 + #define KVM_XEN_VCPU_ATTR_TYPE_TIMER 0x7 655 + #define KVM_XEN_VCPU_ATTR_TYPE_UPCALL_VECTOR 0x8 656 + /* Available with KVM_CAP_XEN_HVM / KVM_XEN_HVM_CONFIG_SHARED_INFO_HVA */ 657 + #define KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO_HVA 0x9 658 + 659 + /* Secure Encrypted Virtualization command */ 660 + enum sev_cmd_id { 661 + /* Guest initialization commands */ 662 + KVM_SEV_INIT = 0, 663 + KVM_SEV_ES_INIT, 664 + /* Guest launch commands */ 665 + KVM_SEV_LAUNCH_START, 666 + KVM_SEV_LAUNCH_UPDATE_DATA, 667 + KVM_SEV_LAUNCH_UPDATE_VMSA, 668 + KVM_SEV_LAUNCH_SECRET, 669 + KVM_SEV_LAUNCH_MEASURE, 670 + KVM_SEV_LAUNCH_FINISH, 671 + /* Guest migration commands (outgoing) */ 672 + KVM_SEV_SEND_START, 673 + KVM_SEV_SEND_UPDATE_DATA, 674 + KVM_SEV_SEND_UPDATE_VMSA, 675 + KVM_SEV_SEND_FINISH, 676 + /* Guest migration commands (incoming) */ 677 + KVM_SEV_RECEIVE_START, 678 + KVM_SEV_RECEIVE_UPDATE_DATA, 679 + KVM_SEV_RECEIVE_UPDATE_VMSA, 680 + KVM_SEV_RECEIVE_FINISH, 681 + /* Guest status and debug commands */ 682 + KVM_SEV_GUEST_STATUS, 683 + KVM_SEV_DBG_DECRYPT, 684 + KVM_SEV_DBG_ENCRYPT, 685 + /* Guest certificates commands */ 686 + KVM_SEV_CERT_EXPORT, 687 + /* Attestation report */ 688 + KVM_SEV_GET_ATTESTATION_REPORT, 689 + /* Guest Migration Extension */ 690 + KVM_SEV_SEND_CANCEL, 691 + 692 + KVM_SEV_NR_MAX, 693 + }; 694 + 695 + struct kvm_sev_cmd { 696 + __u32 id; 697 + __u32 pad0; 698 + __u64 data; 699 + __u32 error; 700 + __u32 sev_fd; 701 + }; 702 + 703 + struct kvm_sev_launch_start { 704 + __u32 handle; 705 + __u32 policy; 706 + __u64 dh_uaddr; 707 + __u32 dh_len; 708 + __u32 pad0; 709 + __u64 session_uaddr; 710 + __u32 session_len; 711 + __u32 pad1; 712 + }; 713 + 714 + struct kvm_sev_launch_update_data { 715 + __u64 uaddr; 716 + __u32 len; 717 + __u32 pad0; 718 + }; 719 + 720 + 721 + struct kvm_sev_launch_secret { 722 + __u64 hdr_uaddr; 723 + __u32 hdr_len; 724 + __u32 pad0; 725 + __u64 guest_uaddr; 726 + __u32 guest_len; 727 + __u32 pad1; 728 + __u64 trans_uaddr; 729 + __u32 trans_len; 730 + __u32 pad2; 731 + }; 732 + 733 + struct kvm_sev_launch_measure { 734 + __u64 uaddr; 735 + __u32 len; 736 + __u32 pad0; 737 + }; 738 + 739 + struct kvm_sev_guest_status { 740 + __u32 handle; 741 + __u32 policy; 742 + __u32 state; 743 + }; 744 + 745 + struct kvm_sev_dbg { 746 + __u64 src_uaddr; 747 + __u64 dst_uaddr; 748 + __u32 len; 749 + __u32 pad0; 750 + }; 751 + 752 + struct kvm_sev_attestation_report { 753 + __u8 mnonce[16]; 754 + __u64 uaddr; 755 + __u32 len; 756 + __u32 pad0; 757 + }; 758 + 759 + struct kvm_sev_send_start { 760 + __u32 policy; 761 + __u32 pad0; 762 + __u64 pdh_cert_uaddr; 763 + __u32 pdh_cert_len; 764 + __u32 pad1; 765 + __u64 plat_certs_uaddr; 766 + __u32 plat_certs_len; 767 + __u32 pad2; 768 + __u64 amd_certs_uaddr; 769 + __u32 amd_certs_len; 770 + __u32 pad3; 771 + __u64 session_uaddr; 772 + __u32 session_len; 773 + __u32 pad4; 774 + }; 775 + 776 + struct kvm_sev_send_update_data { 777 + __u64 hdr_uaddr; 778 + __u32 hdr_len; 779 + __u32 pad0; 780 + __u64 guest_uaddr; 781 + __u32 guest_len; 782 + __u32 pad1; 783 + __u64 trans_uaddr; 784 + __u32 trans_len; 785 + __u32 pad2; 786 + }; 787 + 788 + struct kvm_sev_receive_start { 789 + __u32 handle; 790 + __u32 policy; 791 + __u64 pdh_uaddr; 792 + __u32 pdh_len; 793 + __u32 pad0; 794 + __u64 session_uaddr; 795 + __u32 session_len; 796 + __u32 pad1; 797 + }; 798 + 799 + struct kvm_sev_receive_update_data { 800 + __u64 hdr_uaddr; 801 + __u32 hdr_len; 802 + __u32 pad0; 803 + __u64 guest_uaddr; 804 + __u32 guest_len; 805 + __u32 pad1; 806 + __u64 trans_uaddr; 807 + __u32 trans_len; 808 + __u32 pad2; 809 + }; 810 + 811 + #define KVM_X2APIC_API_USE_32BIT_IDS (1ULL << 0) 812 + #define KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK (1ULL << 1) 813 + 814 + struct kvm_hyperv_eventfd { 815 + __u32 conn_id; 816 + __s32 fd; 817 + __u32 flags; 818 + __u32 padding[3]; 819 + }; 820 + 821 + #define KVM_HYPERV_CONN_ID_MASK 0x00ffffff 822 + #define KVM_HYPERV_EVENTFD_DEASSIGN (1 << 0) 531 823 532 824 /* 533 825 * Masked event layout. ··· 841 549 ((__u64)(!!(exclude)) << 55)) 842 550 843 551 #define KVM_PMU_MASKED_ENTRY_EVENT_SELECT \ 844 - (GENMASK_ULL(7, 0) | GENMASK_ULL(35, 32)) 845 - #define KVM_PMU_MASKED_ENTRY_UMASK_MASK (GENMASK_ULL(63, 56)) 846 - #define KVM_PMU_MASKED_ENTRY_UMASK_MATCH (GENMASK_ULL(15, 8)) 847 - #define KVM_PMU_MASKED_ENTRY_EXCLUDE (BIT_ULL(55)) 552 + (__GENMASK_ULL(7, 0) | __GENMASK_ULL(35, 32)) 553 + #define KVM_PMU_MASKED_ENTRY_UMASK_MASK (__GENMASK_ULL(63, 56)) 554 + #define KVM_PMU_MASKED_ENTRY_UMASK_MATCH (__GENMASK_ULL(15, 8)) 555 + #define KVM_PMU_MASKED_ENTRY_EXCLUDE (_BITULL(55)) 848 556 #define KVM_PMU_MASKED_ENTRY_UMASK_MASK_SHIFT (56) 849 557 850 558 /* for KVM_{GET,SET,HAS}_DEVICE_ATTR */ ··· 852 560 #define KVM_VCPU_TSC_OFFSET 0 /* attribute for the TSC offset */ 853 561 854 562 /* x86-specific KVM_EXIT_HYPERCALL flags. */ 855 - #define KVM_EXIT_HYPERCALL_LONG_MODE BIT(0) 563 + #define KVM_EXIT_HYPERCALL_LONG_MODE _BITULL(0) 856 564 857 565 #define KVM_X86_DEFAULT_VM 0 858 566 #define KVM_X86_SW_PROTECTED_VM 1
+6 -2
tools/include/asm-generic/bitops/__fls.h
··· 5 5 #include <asm/types.h> 6 6 7 7 /** 8 - * __fls - find last (most-significant) set bit in a long word 8 + * generic___fls - find last (most-significant) set bit in a long word 9 9 * @word: the word to search 10 10 * 11 11 * Undefined if no set bit exists, so code should check against 0 first. 12 12 */ 13 - static __always_inline unsigned long __fls(unsigned long word) 13 + static __always_inline unsigned long generic___fls(unsigned long word) 14 14 { 15 15 int num = BITS_PER_LONG - 1; 16 16 ··· 40 40 num -= 1; 41 41 return num; 42 42 } 43 + 44 + #ifndef __HAVE_ARCH___FLS 45 + #define __fls(word) generic___fls(word) 46 + #endif 43 47 44 48 #endif /* _ASM_GENERIC_BITOPS___FLS_H_ */
+6 -2
tools/include/asm-generic/bitops/fls.h
··· 3 3 #define _ASM_GENERIC_BITOPS_FLS_H_ 4 4 5 5 /** 6 - * fls - find last (most-significant) bit set 6 + * generic_fls - find last (most-significant) bit set 7 7 * @x: the word to search 8 8 * 9 9 * This is defined the same way as ffs. 10 10 * Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32. 11 11 */ 12 12 13 - static __always_inline int fls(unsigned int x) 13 + static __always_inline int generic_fls(unsigned int x) 14 14 { 15 15 int r = 32; 16 16 ··· 38 38 } 39 39 return r; 40 40 } 41 + 42 + #ifndef __HAVE_ARCH_FLS 43 + #define fls(x) generic_fls(x) 44 + #endif 41 45 42 46 #endif /* _ASM_GENERIC_BITOPS_FLS_H_ */
+16
tools/include/uapi/drm/i915_drm.h
··· 3013 3013 * - %DRM_I915_QUERY_MEMORY_REGIONS (see struct drm_i915_query_memory_regions) 3014 3014 * - %DRM_I915_QUERY_HWCONFIG_BLOB (see `GuC HWCONFIG blob uAPI`) 3015 3015 * - %DRM_I915_QUERY_GEOMETRY_SUBSLICES (see struct drm_i915_query_topology_info) 3016 + * - %DRM_I915_QUERY_GUC_SUBMISSION_VERSION (see struct drm_i915_query_guc_submission_version) 3016 3017 */ 3017 3018 __u64 query_id; 3018 3019 #define DRM_I915_QUERY_TOPOLOGY_INFO 1 ··· 3022 3021 #define DRM_I915_QUERY_MEMORY_REGIONS 4 3023 3022 #define DRM_I915_QUERY_HWCONFIG_BLOB 5 3024 3023 #define DRM_I915_QUERY_GEOMETRY_SUBSLICES 6 3024 + #define DRM_I915_QUERY_GUC_SUBMISSION_VERSION 7 3025 3025 /* Must be kept compact -- no holes and well documented */ 3026 3026 3027 3027 /** ··· 3566 3564 3567 3565 /** @regions: Info about each supported region */ 3568 3566 struct drm_i915_memory_region_info regions[]; 3567 + }; 3568 + 3569 + /** 3570 + * struct drm_i915_query_guc_submission_version - query GuC submission interface version 3571 + */ 3572 + struct drm_i915_query_guc_submission_version { 3573 + /** @branch: Firmware branch version. */ 3574 + __u32 branch; 3575 + /** @major: Firmware major version. */ 3576 + __u32 major; 3577 + /** @minor: Firmware minor version. */ 3578 + __u32 minor; 3579 + /** @patch: Firmware patch version. */ 3580 + __u32 patch; 3569 3581 }; 3570 3582 3571 3583 /**
+29 -1
tools/include/uapi/linux/fs.h
··· 64 64 __u64 minlen; 65 65 }; 66 66 67 + /* 68 + * We include a length field because some filesystems (vfat) have an identifier 69 + * that we do want to expose as a UUID, but doesn't have the standard length. 70 + * 71 + * We use a fixed size buffer beacuse this interface will, by fiat, never 72 + * support "UUIDs" longer than 16 bytes; we don't want to force all downstream 73 + * users to have to deal with that. 74 + */ 75 + struct fsuuid2 { 76 + __u8 len; 77 + __u8 uuid[16]; 78 + }; 79 + 80 + struct fs_sysfs_path { 81 + __u8 len; 82 + __u8 name[128]; 83 + }; 84 + 67 85 /* extent-same (dedupe) ioctls; these MUST match the btrfs ioctl definitions */ 68 86 #define FILE_DEDUPE_RANGE_SAME 0 69 87 #define FILE_DEDUPE_RANGE_DIFFERS 1 ··· 233 215 #define FS_IOC_FSSETXATTR _IOW('X', 32, struct fsxattr) 234 216 #define FS_IOC_GETFSLABEL _IOR(0x94, 49, char[FSLABEL_MAX]) 235 217 #define FS_IOC_SETFSLABEL _IOW(0x94, 50, char[FSLABEL_MAX]) 218 + /* Returns the external filesystem UUID, the same one blkid returns */ 219 + #define FS_IOC_GETFSUUID _IOR(0x15, 0, struct fsuuid2) 220 + /* 221 + * Returns the path component under /sys/fs/ that refers to this filesystem; 222 + * also /sys/kernel/debug/ for filesystems with debugfs exports 223 + */ 224 + #define FS_IOC_GETFSSYSFSPATH _IOR(0x15, 1, struct fs_sysfs_path) 236 225 237 226 /* 238 227 * Inode flags (FS_IOC_GETFLAGS / FS_IOC_SETFLAGS) ··· 326 301 /* per-IO O_APPEND */ 327 302 #define RWF_APPEND ((__force __kernel_rwf_t)0x00000010) 328 303 304 + /* per-IO negation of O_APPEND */ 305 + #define RWF_NOAPPEND ((__force __kernel_rwf_t)0x00000020) 306 + 329 307 /* mask of flags supported by the kernel */ 330 308 #define RWF_SUPPORTED (RWF_HIPRI | RWF_DSYNC | RWF_SYNC | RWF_NOWAIT |\ 331 - RWF_APPEND) 309 + RWF_APPEND | RWF_NOAPPEND) 332 310 333 311 /* Pagemap ioctl */ 334 312 #define PAGEMAP_SCAN _IOWR('f', 16, struct pm_scan_arg)
+5 -684
tools/include/uapi/linux/kvm.h
··· 16 16 17 17 #define KVM_API_VERSION 12 18 18 19 + /* 20 + * Backwards-compatible definitions. 21 + */ 22 + #define __KVM_HAVE_GUEST_DEBUG 23 + 19 24 /* for KVM_SET_USER_MEMORY_REGION */ 20 25 struct kvm_userspace_memory_region { 21 26 __u32 slot; ··· 89 84 }; 90 85 91 86 #define KVM_PIT_SPEAKER_DUMMY 1 92 - 93 - struct kvm_s390_skeys { 94 - __u64 start_gfn; 95 - __u64 count; 96 - __u64 skeydata_addr; 97 - __u32 flags; 98 - __u32 reserved[9]; 99 - }; 100 - 101 - #define KVM_S390_CMMA_PEEK (1 << 0) 102 - 103 - /** 104 - * kvm_s390_cmma_log - Used for CMMA migration. 105 - * 106 - * Used both for input and output. 107 - * 108 - * @start_gfn: Guest page number to start from. 109 - * @count: Size of the result buffer. 110 - * @flags: Control operation mode via KVM_S390_CMMA_* flags 111 - * @remaining: Used with KVM_S390_GET_CMMA_BITS. Indicates how many dirty 112 - * pages are still remaining. 113 - * @mask: Used with KVM_S390_SET_CMMA_BITS. Bitmap of bits to actually set 114 - * in the PGSTE. 115 - * @values: Pointer to the values buffer. 116 - * 117 - * Used in KVM_S390_{G,S}ET_CMMA_BITS ioctls. 118 - */ 119 - struct kvm_s390_cmma_log { 120 - __u64 start_gfn; 121 - __u32 count; 122 - __u32 flags; 123 - union { 124 - __u64 remaining; 125 - __u64 mask; 126 - }; 127 - __u64 values; 128 - }; 129 87 130 88 struct kvm_hyperv_exit { 131 89 #define KVM_EXIT_HYPERV_SYNIC 1 ··· 283 315 __u32 ipb; 284 316 } s390_sieic; 285 317 /* KVM_EXIT_S390_RESET */ 286 - #define KVM_S390_RESET_POR 1 287 - #define KVM_S390_RESET_CLEAR 2 288 - #define KVM_S390_RESET_SUBSYSTEM 4 289 - #define KVM_S390_RESET_CPU_INIT 8 290 - #define KVM_S390_RESET_IPL 16 291 318 __u64 s390_reset_flags; 292 319 /* KVM_EXIT_S390_UCONTROL */ 293 320 struct { ··· 499 536 __u8 pad[5]; 500 537 }; 501 538 502 - /* for KVM_S390_MEM_OP */ 503 - struct kvm_s390_mem_op { 504 - /* in */ 505 - __u64 gaddr; /* the guest address */ 506 - __u64 flags; /* flags */ 507 - __u32 size; /* amount of bytes */ 508 - __u32 op; /* type of operation */ 509 - __u64 buf; /* buffer in userspace */ 510 - union { 511 - struct { 512 - __u8 ar; /* the access register number */ 513 - __u8 key; /* access key, ignored if flag unset */ 514 - __u8 pad1[6]; /* ignored */ 515 - __u64 old_addr; /* ignored if cmpxchg flag unset */ 516 - }; 517 - __u32 sida_offset; /* offset into the sida */ 518 - __u8 reserved[32]; /* ignored */ 519 - }; 520 - }; 521 - /* types for kvm_s390_mem_op->op */ 522 - #define KVM_S390_MEMOP_LOGICAL_READ 0 523 - #define KVM_S390_MEMOP_LOGICAL_WRITE 1 524 - #define KVM_S390_MEMOP_SIDA_READ 2 525 - #define KVM_S390_MEMOP_SIDA_WRITE 3 526 - #define KVM_S390_MEMOP_ABSOLUTE_READ 4 527 - #define KVM_S390_MEMOP_ABSOLUTE_WRITE 5 528 - #define KVM_S390_MEMOP_ABSOLUTE_CMPXCHG 6 529 - 530 - /* flags for kvm_s390_mem_op->flags */ 531 - #define KVM_S390_MEMOP_F_CHECK_ONLY (1ULL << 0) 532 - #define KVM_S390_MEMOP_F_INJECT_EXCEPTION (1ULL << 1) 533 - #define KVM_S390_MEMOP_F_SKEY_PROTECTION (1ULL << 2) 534 - 535 - /* flags specifying extension support via KVM_CAP_S390_MEM_OP_EXTENSION */ 536 - #define KVM_S390_MEMOP_EXTENSION_CAP_BASE (1 << 0) 537 - #define KVM_S390_MEMOP_EXTENSION_CAP_CMPXCHG (1 << 1) 538 - 539 539 /* for KVM_INTERRUPT */ 540 540 struct kvm_interrupt { 541 541 /* in */ ··· 563 637 __u32 mp_state; 564 638 }; 565 639 566 - struct kvm_s390_psw { 567 - __u64 mask; 568 - __u64 addr; 569 - }; 570 - 571 - /* valid values for type in kvm_s390_interrupt */ 572 - #define KVM_S390_SIGP_STOP 0xfffe0000u 573 - #define KVM_S390_PROGRAM_INT 0xfffe0001u 574 - #define KVM_S390_SIGP_SET_PREFIX 0xfffe0002u 575 - #define KVM_S390_RESTART 0xfffe0003u 576 - #define KVM_S390_INT_PFAULT_INIT 0xfffe0004u 577 - #define KVM_S390_INT_PFAULT_DONE 0xfffe0005u 578 - #define KVM_S390_MCHK 0xfffe1000u 579 - #define KVM_S390_INT_CLOCK_COMP 0xffff1004u 580 - #define KVM_S390_INT_CPU_TIMER 0xffff1005u 581 - #define KVM_S390_INT_VIRTIO 0xffff2603u 582 - #define KVM_S390_INT_SERVICE 0xffff2401u 583 - #define KVM_S390_INT_EMERGENCY 0xffff1201u 584 - #define KVM_S390_INT_EXTERNAL_CALL 0xffff1202u 585 - /* Anything below 0xfffe0000u is taken by INT_IO */ 586 - #define KVM_S390_INT_IO(ai,cssid,ssid,schid) \ 587 - (((schid)) | \ 588 - ((ssid) << 16) | \ 589 - ((cssid) << 18) | \ 590 - ((ai) << 26)) 591 - #define KVM_S390_INT_IO_MIN 0x00000000u 592 - #define KVM_S390_INT_IO_MAX 0xfffdffffu 593 - #define KVM_S390_INT_IO_AI_MASK 0x04000000u 594 - 595 - 596 - struct kvm_s390_interrupt { 597 - __u32 type; 598 - __u32 parm; 599 - __u64 parm64; 600 - }; 601 - 602 - struct kvm_s390_io_info { 603 - __u16 subchannel_id; 604 - __u16 subchannel_nr; 605 - __u32 io_int_parm; 606 - __u32 io_int_word; 607 - }; 608 - 609 - struct kvm_s390_ext_info { 610 - __u32 ext_params; 611 - __u32 pad; 612 - __u64 ext_params2; 613 - }; 614 - 615 - struct kvm_s390_pgm_info { 616 - __u64 trans_exc_code; 617 - __u64 mon_code; 618 - __u64 per_address; 619 - __u32 data_exc_code; 620 - __u16 code; 621 - __u16 mon_class_nr; 622 - __u8 per_code; 623 - __u8 per_atmid; 624 - __u8 exc_access_id; 625 - __u8 per_access_id; 626 - __u8 op_access_id; 627 - #define KVM_S390_PGM_FLAGS_ILC_VALID 0x01 628 - #define KVM_S390_PGM_FLAGS_ILC_0 0x02 629 - #define KVM_S390_PGM_FLAGS_ILC_1 0x04 630 - #define KVM_S390_PGM_FLAGS_ILC_MASK 0x06 631 - #define KVM_S390_PGM_FLAGS_NO_REWIND 0x08 632 - __u8 flags; 633 - __u8 pad[2]; 634 - }; 635 - 636 - struct kvm_s390_prefix_info { 637 - __u32 address; 638 - }; 639 - 640 - struct kvm_s390_extcall_info { 641 - __u16 code; 642 - }; 643 - 644 - struct kvm_s390_emerg_info { 645 - __u16 code; 646 - }; 647 - 648 - #define KVM_S390_STOP_FLAG_STORE_STATUS 0x01 649 - struct kvm_s390_stop_info { 650 - __u32 flags; 651 - }; 652 - 653 - struct kvm_s390_mchk_info { 654 - __u64 cr14; 655 - __u64 mcic; 656 - __u64 failing_storage_address; 657 - __u32 ext_damage_code; 658 - __u32 pad; 659 - __u8 fixed_logout[16]; 660 - }; 661 - 662 - struct kvm_s390_irq { 663 - __u64 type; 664 - union { 665 - struct kvm_s390_io_info io; 666 - struct kvm_s390_ext_info ext; 667 - struct kvm_s390_pgm_info pgm; 668 - struct kvm_s390_emerg_info emerg; 669 - struct kvm_s390_extcall_info extcall; 670 - struct kvm_s390_prefix_info prefix; 671 - struct kvm_s390_stop_info stop; 672 - struct kvm_s390_mchk_info mchk; 673 - char reserved[64]; 674 - } u; 675 - }; 676 - 677 - struct kvm_s390_irq_state { 678 - __u64 buf; 679 - __u32 flags; /* will stay unused for compatibility reasons */ 680 - __u32 len; 681 - __u32 reserved[4]; /* will stay unused for compatibility reasons */ 682 - }; 683 - 684 640 /* for KVM_SET_GUEST_DEBUG */ 685 641 686 642 #define KVM_GUESTDBG_ENABLE 0x00000001 ··· 616 808 __u32 flags; 617 809 __u64 args[4]; 618 810 __u8 pad[64]; 619 - }; 620 - 621 - /* for KVM_PPC_GET_PVINFO */ 622 - 623 - #define KVM_PPC_PVINFO_FLAGS_EV_IDLE (1<<0) 624 - 625 - struct kvm_ppc_pvinfo { 626 - /* out */ 627 - __u32 flags; 628 - __u32 hcall[4]; 629 - __u8 pad[108]; 630 - }; 631 - 632 - /* for KVM_PPC_GET_SMMU_INFO */ 633 - #define KVM_PPC_PAGE_SIZES_MAX_SZ 8 634 - 635 - struct kvm_ppc_one_page_size { 636 - __u32 page_shift; /* Page shift (or 0) */ 637 - __u32 pte_enc; /* Encoding in the HPTE (>>12) */ 638 - }; 639 - 640 - struct kvm_ppc_one_seg_page_size { 641 - __u32 page_shift; /* Base page shift of segment (or 0) */ 642 - __u32 slb_enc; /* SLB encoding for BookS */ 643 - struct kvm_ppc_one_page_size enc[KVM_PPC_PAGE_SIZES_MAX_SZ]; 644 - }; 645 - 646 - #define KVM_PPC_PAGE_SIZES_REAL 0x00000001 647 - #define KVM_PPC_1T_SEGMENTS 0x00000002 648 - #define KVM_PPC_NO_HASH 0x00000004 649 - 650 - struct kvm_ppc_smmu_info { 651 - __u64 flags; 652 - __u32 slb_size; 653 - __u16 data_keys; /* # storage keys supported for data */ 654 - __u16 instr_keys; /* # storage keys supported for instructions */ 655 - struct kvm_ppc_one_seg_page_size sps[KVM_PPC_PAGE_SIZES_MAX_SZ]; 656 - }; 657 - 658 - /* for KVM_PPC_RESIZE_HPT_{PREPARE,COMMIT} */ 659 - struct kvm_ppc_resize_hpt { 660 - __u64 flags; 661 - __u32 shift; 662 - __u32 pad; 663 811 }; 664 812 665 813 #define KVMIO 0xAE ··· 687 923 /* Bug in KVM_SET_USER_MEMORY_REGION fixed: */ 688 924 #define KVM_CAP_DESTROY_MEMORY_REGION_WORKS 21 689 925 #define KVM_CAP_USER_NMI 22 690 - #ifdef __KVM_HAVE_GUEST_DEBUG 691 926 #define KVM_CAP_SET_GUEST_DEBUG 23 692 - #endif 693 927 #ifdef __KVM_HAVE_PIT 694 928 #define KVM_CAP_REINJECT_CONTROL 24 695 929 #endif ··· 918 1156 #define KVM_CAP_GUEST_MEMFD 234 919 1157 #define KVM_CAP_VM_TYPES 235 920 1158 921 - #ifdef KVM_CAP_IRQ_ROUTING 922 - 923 1159 struct kvm_irq_routing_irqchip { 924 1160 __u32 irqchip; 925 1161 __u32 pin; ··· 981 1221 __u32 flags; 982 1222 struct kvm_irq_routing_entry entries[]; 983 1223 }; 984 - 985 - #endif 986 - 987 - #ifdef KVM_CAP_MCE 988 - /* x86 MCE */ 989 - struct kvm_x86_mce { 990 - __u64 status; 991 - __u64 addr; 992 - __u64 misc; 993 - __u64 mcg_status; 994 - __u8 bank; 995 - __u8 pad1[7]; 996 - __u64 pad2[3]; 997 - }; 998 - #endif 999 - 1000 - #ifdef KVM_CAP_XEN_HVM 1001 - #define KVM_XEN_HVM_CONFIG_HYPERCALL_MSR (1 << 0) 1002 - #define KVM_XEN_HVM_CONFIG_INTERCEPT_HCALL (1 << 1) 1003 - #define KVM_XEN_HVM_CONFIG_SHARED_INFO (1 << 2) 1004 - #define KVM_XEN_HVM_CONFIG_RUNSTATE (1 << 3) 1005 - #define KVM_XEN_HVM_CONFIG_EVTCHN_2LEVEL (1 << 4) 1006 - #define KVM_XEN_HVM_CONFIG_EVTCHN_SEND (1 << 5) 1007 - #define KVM_XEN_HVM_CONFIG_RUNSTATE_UPDATE_FLAG (1 << 6) 1008 - #define KVM_XEN_HVM_CONFIG_PVCLOCK_TSC_UNSTABLE (1 << 7) 1009 - 1010 - struct kvm_xen_hvm_config { 1011 - __u32 flags; 1012 - __u32 msr; 1013 - __u64 blob_addr_32; 1014 - __u64 blob_addr_64; 1015 - __u8 blob_size_32; 1016 - __u8 blob_size_64; 1017 - __u8 pad2[30]; 1018 - }; 1019 - #endif 1020 1224 1021 1225 #define KVM_IRQFD_FLAG_DEASSIGN (1 << 0) 1022 1226 /* ··· 1166 1442 struct kvm_userspace_memory_region2) 1167 1443 1168 1444 /* enable ucontrol for s390 */ 1169 - struct kvm_s390_ucas_mapping { 1170 - __u64 user_addr; 1171 - __u64 vcpu_addr; 1172 - __u64 length; 1173 - }; 1174 1445 #define KVM_S390_UCAS_MAP _IOW(KVMIO, 0x50, struct kvm_s390_ucas_mapping) 1175 1446 #define KVM_S390_UCAS_UNMAP _IOW(KVMIO, 0x51, struct kvm_s390_ucas_mapping) 1176 1447 #define KVM_S390_VCPU_FAULT _IOW(KVMIO, 0x52, unsigned long) ··· 1360 1641 #define KVM_S390_NORMAL_RESET _IO(KVMIO, 0xc3) 1361 1642 #define KVM_S390_CLEAR_RESET _IO(KVMIO, 0xc4) 1362 1643 1363 - struct kvm_s390_pv_sec_parm { 1364 - __u64 origin; 1365 - __u64 length; 1366 - }; 1367 - 1368 - struct kvm_s390_pv_unp { 1369 - __u64 addr; 1370 - __u64 size; 1371 - __u64 tweak; 1372 - }; 1373 - 1374 - enum pv_cmd_dmp_id { 1375 - KVM_PV_DUMP_INIT, 1376 - KVM_PV_DUMP_CONFIG_STOR_STATE, 1377 - KVM_PV_DUMP_COMPLETE, 1378 - KVM_PV_DUMP_CPU, 1379 - }; 1380 - 1381 - struct kvm_s390_pv_dmp { 1382 - __u64 subcmd; 1383 - __u64 buff_addr; 1384 - __u64 buff_len; 1385 - __u64 gaddr; /* For dump storage state */ 1386 - __u64 reserved[4]; 1387 - }; 1388 - 1389 - enum pv_cmd_info_id { 1390 - KVM_PV_INFO_VM, 1391 - KVM_PV_INFO_DUMP, 1392 - }; 1393 - 1394 - struct kvm_s390_pv_info_dump { 1395 - __u64 dump_cpu_buffer_len; 1396 - __u64 dump_config_mem_buffer_per_1m; 1397 - __u64 dump_config_finalize_len; 1398 - }; 1399 - 1400 - struct kvm_s390_pv_info_vm { 1401 - __u64 inst_calls_list[4]; 1402 - __u64 max_cpus; 1403 - __u64 max_guests; 1404 - __u64 max_guest_addr; 1405 - __u64 feature_indication; 1406 - }; 1407 - 1408 - struct kvm_s390_pv_info_header { 1409 - __u32 id; 1410 - __u32 len_max; 1411 - __u32 len_written; 1412 - __u32 reserved; 1413 - }; 1414 - 1415 - struct kvm_s390_pv_info { 1416 - struct kvm_s390_pv_info_header header; 1417 - union { 1418 - struct kvm_s390_pv_info_dump dump; 1419 - struct kvm_s390_pv_info_vm vm; 1420 - }; 1421 - }; 1422 - 1423 - enum pv_cmd_id { 1424 - KVM_PV_ENABLE, 1425 - KVM_PV_DISABLE, 1426 - KVM_PV_SET_SEC_PARMS, 1427 - KVM_PV_UNPACK, 1428 - KVM_PV_VERIFY, 1429 - KVM_PV_PREP_RESET, 1430 - KVM_PV_UNSHARE_ALL, 1431 - KVM_PV_INFO, 1432 - KVM_PV_DUMP, 1433 - KVM_PV_ASYNC_CLEANUP_PREPARE, 1434 - KVM_PV_ASYNC_CLEANUP_PERFORM, 1435 - }; 1436 - 1437 - struct kvm_pv_cmd { 1438 - __u32 cmd; /* Command to be executed */ 1439 - __u16 rc; /* Ultravisor return code */ 1440 - __u16 rrc; /* Ultravisor return reason code */ 1441 - __u64 data; /* Data or address */ 1442 - __u32 flags; /* flags for future extensions. Must be 0 for now */ 1443 - __u32 reserved[3]; 1444 - }; 1445 - 1446 1644 /* Available with KVM_CAP_S390_PROTECTED */ 1447 1645 #define KVM_S390_PV_COMMAND _IOWR(KVMIO, 0xc5, struct kvm_pv_cmd) 1448 1646 ··· 1373 1737 #define KVM_XEN_HVM_GET_ATTR _IOWR(KVMIO, 0xc8, struct kvm_xen_hvm_attr) 1374 1738 #define KVM_XEN_HVM_SET_ATTR _IOW(KVMIO, 0xc9, struct kvm_xen_hvm_attr) 1375 1739 1376 - struct kvm_xen_hvm_attr { 1377 - __u16 type; 1378 - __u16 pad[3]; 1379 - union { 1380 - __u8 long_mode; 1381 - __u8 vector; 1382 - __u8 runstate_update_flag; 1383 - struct { 1384 - __u64 gfn; 1385 - #define KVM_XEN_INVALID_GFN ((__u64)-1) 1386 - } shared_info; 1387 - struct { 1388 - __u32 send_port; 1389 - __u32 type; /* EVTCHNSTAT_ipi / EVTCHNSTAT_interdomain */ 1390 - __u32 flags; 1391 - #define KVM_XEN_EVTCHN_DEASSIGN (1 << 0) 1392 - #define KVM_XEN_EVTCHN_UPDATE (1 << 1) 1393 - #define KVM_XEN_EVTCHN_RESET (1 << 2) 1394 - /* 1395 - * Events sent by the guest are either looped back to 1396 - * the guest itself (potentially on a different port#) 1397 - * or signalled via an eventfd. 1398 - */ 1399 - union { 1400 - struct { 1401 - __u32 port; 1402 - __u32 vcpu; 1403 - __u32 priority; 1404 - } port; 1405 - struct { 1406 - __u32 port; /* Zero for eventfd */ 1407 - __s32 fd; 1408 - } eventfd; 1409 - __u32 padding[4]; 1410 - } deliver; 1411 - } evtchn; 1412 - __u32 xen_version; 1413 - __u64 pad[8]; 1414 - } u; 1415 - }; 1416 - 1417 - 1418 - /* Available with KVM_CAP_XEN_HVM / KVM_XEN_HVM_CONFIG_SHARED_INFO */ 1419 - #define KVM_XEN_ATTR_TYPE_LONG_MODE 0x0 1420 - #define KVM_XEN_ATTR_TYPE_SHARED_INFO 0x1 1421 - #define KVM_XEN_ATTR_TYPE_UPCALL_VECTOR 0x2 1422 - /* Available with KVM_CAP_XEN_HVM / KVM_XEN_HVM_CONFIG_EVTCHN_SEND */ 1423 - #define KVM_XEN_ATTR_TYPE_EVTCHN 0x3 1424 - #define KVM_XEN_ATTR_TYPE_XEN_VERSION 0x4 1425 - /* Available with KVM_CAP_XEN_HVM / KVM_XEN_HVM_CONFIG_RUNSTATE_UPDATE_FLAG */ 1426 - #define KVM_XEN_ATTR_TYPE_RUNSTATE_UPDATE_FLAG 0x5 1427 - 1428 1740 /* Per-vCPU Xen attributes */ 1429 1741 #define KVM_XEN_VCPU_GET_ATTR _IOWR(KVMIO, 0xca, struct kvm_xen_vcpu_attr) 1430 1742 #define KVM_XEN_VCPU_SET_ATTR _IOW(KVMIO, 0xcb, struct kvm_xen_vcpu_attr) ··· 1382 1798 1383 1799 #define KVM_GET_SREGS2 _IOR(KVMIO, 0xcc, struct kvm_sregs2) 1384 1800 #define KVM_SET_SREGS2 _IOW(KVMIO, 0xcd, struct kvm_sregs2) 1385 - 1386 - struct kvm_xen_vcpu_attr { 1387 - __u16 type; 1388 - __u16 pad[3]; 1389 - union { 1390 - __u64 gpa; 1391 - #define KVM_XEN_INVALID_GPA ((__u64)-1) 1392 - __u64 pad[8]; 1393 - struct { 1394 - __u64 state; 1395 - __u64 state_entry_time; 1396 - __u64 time_running; 1397 - __u64 time_runnable; 1398 - __u64 time_blocked; 1399 - __u64 time_offline; 1400 - } runstate; 1401 - __u32 vcpu_id; 1402 - struct { 1403 - __u32 port; 1404 - __u32 priority; 1405 - __u64 expires_ns; 1406 - } timer; 1407 - __u8 vector; 1408 - } u; 1409 - }; 1410 - 1411 - /* Available with KVM_CAP_XEN_HVM / KVM_XEN_HVM_CONFIG_SHARED_INFO */ 1412 - #define KVM_XEN_VCPU_ATTR_TYPE_VCPU_INFO 0x0 1413 - #define KVM_XEN_VCPU_ATTR_TYPE_VCPU_TIME_INFO 0x1 1414 - #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADDR 0x2 1415 - #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_CURRENT 0x3 1416 - #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_DATA 0x4 1417 - #define KVM_XEN_VCPU_ATTR_TYPE_RUNSTATE_ADJUST 0x5 1418 - /* Available with KVM_CAP_XEN_HVM / KVM_XEN_HVM_CONFIG_EVTCHN_SEND */ 1419 - #define KVM_XEN_VCPU_ATTR_TYPE_VCPU_ID 0x6 1420 - #define KVM_XEN_VCPU_ATTR_TYPE_TIMER 0x7 1421 - #define KVM_XEN_VCPU_ATTR_TYPE_UPCALL_VECTOR 0x8 1422 - 1423 - /* Secure Encrypted Virtualization command */ 1424 - enum sev_cmd_id { 1425 - /* Guest initialization commands */ 1426 - KVM_SEV_INIT = 0, 1427 - KVM_SEV_ES_INIT, 1428 - /* Guest launch commands */ 1429 - KVM_SEV_LAUNCH_START, 1430 - KVM_SEV_LAUNCH_UPDATE_DATA, 1431 - KVM_SEV_LAUNCH_UPDATE_VMSA, 1432 - KVM_SEV_LAUNCH_SECRET, 1433 - KVM_SEV_LAUNCH_MEASURE, 1434 - KVM_SEV_LAUNCH_FINISH, 1435 - /* Guest migration commands (outgoing) */ 1436 - KVM_SEV_SEND_START, 1437 - KVM_SEV_SEND_UPDATE_DATA, 1438 - KVM_SEV_SEND_UPDATE_VMSA, 1439 - KVM_SEV_SEND_FINISH, 1440 - /* Guest migration commands (incoming) */ 1441 - KVM_SEV_RECEIVE_START, 1442 - KVM_SEV_RECEIVE_UPDATE_DATA, 1443 - KVM_SEV_RECEIVE_UPDATE_VMSA, 1444 - KVM_SEV_RECEIVE_FINISH, 1445 - /* Guest status and debug commands */ 1446 - KVM_SEV_GUEST_STATUS, 1447 - KVM_SEV_DBG_DECRYPT, 1448 - KVM_SEV_DBG_ENCRYPT, 1449 - /* Guest certificates commands */ 1450 - KVM_SEV_CERT_EXPORT, 1451 - /* Attestation report */ 1452 - KVM_SEV_GET_ATTESTATION_REPORT, 1453 - /* Guest Migration Extension */ 1454 - KVM_SEV_SEND_CANCEL, 1455 - 1456 - KVM_SEV_NR_MAX, 1457 - }; 1458 - 1459 - struct kvm_sev_cmd { 1460 - __u32 id; 1461 - __u64 data; 1462 - __u32 error; 1463 - __u32 sev_fd; 1464 - }; 1465 - 1466 - struct kvm_sev_launch_start { 1467 - __u32 handle; 1468 - __u32 policy; 1469 - __u64 dh_uaddr; 1470 - __u32 dh_len; 1471 - __u64 session_uaddr; 1472 - __u32 session_len; 1473 - }; 1474 - 1475 - struct kvm_sev_launch_update_data { 1476 - __u64 uaddr; 1477 - __u32 len; 1478 - }; 1479 - 1480 - 1481 - struct kvm_sev_launch_secret { 1482 - __u64 hdr_uaddr; 1483 - __u32 hdr_len; 1484 - __u64 guest_uaddr; 1485 - __u32 guest_len; 1486 - __u64 trans_uaddr; 1487 - __u32 trans_len; 1488 - }; 1489 - 1490 - struct kvm_sev_launch_measure { 1491 - __u64 uaddr; 1492 - __u32 len; 1493 - }; 1494 - 1495 - struct kvm_sev_guest_status { 1496 - __u32 handle; 1497 - __u32 policy; 1498 - __u32 state; 1499 - }; 1500 - 1501 - struct kvm_sev_dbg { 1502 - __u64 src_uaddr; 1503 - __u64 dst_uaddr; 1504 - __u32 len; 1505 - }; 1506 - 1507 - struct kvm_sev_attestation_report { 1508 - __u8 mnonce[16]; 1509 - __u64 uaddr; 1510 - __u32 len; 1511 - }; 1512 - 1513 - struct kvm_sev_send_start { 1514 - __u32 policy; 1515 - __u64 pdh_cert_uaddr; 1516 - __u32 pdh_cert_len; 1517 - __u64 plat_certs_uaddr; 1518 - __u32 plat_certs_len; 1519 - __u64 amd_certs_uaddr; 1520 - __u32 amd_certs_len; 1521 - __u64 session_uaddr; 1522 - __u32 session_len; 1523 - }; 1524 - 1525 - struct kvm_sev_send_update_data { 1526 - __u64 hdr_uaddr; 1527 - __u32 hdr_len; 1528 - __u64 guest_uaddr; 1529 - __u32 guest_len; 1530 - __u64 trans_uaddr; 1531 - __u32 trans_len; 1532 - }; 1533 - 1534 - struct kvm_sev_receive_start { 1535 - __u32 handle; 1536 - __u32 policy; 1537 - __u64 pdh_uaddr; 1538 - __u32 pdh_len; 1539 - __u64 session_uaddr; 1540 - __u32 session_len; 1541 - }; 1542 - 1543 - struct kvm_sev_receive_update_data { 1544 - __u64 hdr_uaddr; 1545 - __u32 hdr_len; 1546 - __u64 guest_uaddr; 1547 - __u32 guest_len; 1548 - __u64 trans_uaddr; 1549 - __u32 trans_len; 1550 - }; 1551 - 1552 - #define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0) 1553 - #define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1) 1554 - #define KVM_DEV_ASSIGN_MASK_INTX (1 << 2) 1555 - 1556 - struct kvm_assigned_pci_dev { 1557 - __u32 assigned_dev_id; 1558 - __u32 busnr; 1559 - __u32 devfn; 1560 - __u32 flags; 1561 - __u32 segnr; 1562 - union { 1563 - __u32 reserved[11]; 1564 - }; 1565 - }; 1566 - 1567 - #define KVM_DEV_IRQ_HOST_INTX (1 << 0) 1568 - #define KVM_DEV_IRQ_HOST_MSI (1 << 1) 1569 - #define KVM_DEV_IRQ_HOST_MSIX (1 << 2) 1570 - 1571 - #define KVM_DEV_IRQ_GUEST_INTX (1 << 8) 1572 - #define KVM_DEV_IRQ_GUEST_MSI (1 << 9) 1573 - #define KVM_DEV_IRQ_GUEST_MSIX (1 << 10) 1574 - 1575 - #define KVM_DEV_IRQ_HOST_MASK 0x00ff 1576 - #define KVM_DEV_IRQ_GUEST_MASK 0xff00 1577 - 1578 - struct kvm_assigned_irq { 1579 - __u32 assigned_dev_id; 1580 - __u32 host_irq; /* ignored (legacy field) */ 1581 - __u32 guest_irq; 1582 - __u32 flags; 1583 - union { 1584 - __u32 reserved[12]; 1585 - }; 1586 - }; 1587 - 1588 - struct kvm_assigned_msix_nr { 1589 - __u32 assigned_dev_id; 1590 - __u16 entry_nr; 1591 - __u16 padding; 1592 - }; 1593 - 1594 - #define KVM_MAX_MSIX_PER_DEV 256 1595 - struct kvm_assigned_msix_entry { 1596 - __u32 assigned_dev_id; 1597 - __u32 gsi; 1598 - __u16 entry; /* The index of entry in the MSI-X table */ 1599 - __u16 padding[3]; 1600 - }; 1601 - 1602 - #define KVM_X2APIC_API_USE_32BIT_IDS (1ULL << 0) 1603 - #define KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK (1ULL << 1) 1604 - 1605 - /* Available with KVM_CAP_ARM_USER_IRQ */ 1606 - 1607 - /* Bits for run->s.regs.device_irq_level */ 1608 - #define KVM_ARM_DEV_EL1_VTIMER (1 << 0) 1609 - #define KVM_ARM_DEV_EL1_PTIMER (1 << 1) 1610 - #define KVM_ARM_DEV_PMU (1 << 2) 1611 - 1612 - struct kvm_hyperv_eventfd { 1613 - __u32 conn_id; 1614 - __s32 fd; 1615 - __u32 flags; 1616 - __u32 padding[3]; 1617 - }; 1618 - 1619 - #define KVM_HYPERV_CONN_ID_MASK 0x00ffffff 1620 - #define KVM_HYPERV_EVENTFD_DEASSIGN (1 << 0) 1621 1801 1622 1802 #define KVM_DIRTY_LOG_MANUAL_PROTECT_ENABLE (1 << 0) 1623 1803 #define KVM_DIRTY_LOG_INITIALLY_SET (1 << 1) ··· 1527 2179 1528 2180 /* Available with KVM_CAP_S390_ZPCI_OP */ 1529 2181 #define KVM_S390_ZPCI_OP _IOW(KVMIO, 0xd1, struct kvm_s390_zpci_op) 1530 - 1531 - struct kvm_s390_zpci_op { 1532 - /* in */ 1533 - __u32 fh; /* target device */ 1534 - __u8 op; /* operation to perform */ 1535 - __u8 pad[3]; 1536 - union { 1537 - /* for KVM_S390_ZPCIOP_REG_AEN */ 1538 - struct { 1539 - __u64 ibv; /* Guest addr of interrupt bit vector */ 1540 - __u64 sb; /* Guest addr of summary bit */ 1541 - __u32 flags; 1542 - __u32 noi; /* Number of interrupts */ 1543 - __u8 isc; /* Guest interrupt subclass */ 1544 - __u8 sbo; /* Offset of guest summary bit vector */ 1545 - __u16 pad; 1546 - } reg_aen; 1547 - __u64 reserved[8]; 1548 - } u; 1549 - }; 1550 - 1551 - /* types for kvm_s390_zpci_op->op */ 1552 - #define KVM_S390_ZPCIOP_REG_AEN 0 1553 - #define KVM_S390_ZPCIOP_DEREG_AEN 1 1554 - 1555 - /* flags for kvm_s390_zpci_op->u.reg_aen.flags */ 1556 - #define KVM_S390_ZPCIOP_REGAEN_HOST (1 << 0) 1557 2182 1558 2183 /* Available with KVM_CAP_MEMORY_ATTRIBUTES */ 1559 2184 #define KVM_SET_MEMORY_ATTRIBUTES _IOW(KVMIO, 0xd2, struct kvm_memory_attributes)
+2 -2
tools/include/uapi/sound/asound.h
··· 142 142 * * 143 143 *****************************************************************************/ 144 144 145 - #define SNDRV_PCM_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 16) 145 + #define SNDRV_PCM_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 17) 146 146 147 147 typedef unsigned long snd_pcm_uframes_t; 148 148 typedef signed long snd_pcm_sframes_t; ··· 416 416 unsigned int rmask; /* W: requested masks */ 417 417 unsigned int cmask; /* R: changed masks */ 418 418 unsigned int info; /* R: Info flags for returned setup */ 419 - unsigned int msbits; /* R: used most significant bits */ 419 + unsigned int msbits; /* R: used most significant bits (in sample bit-width) */ 420 420 unsigned int rate_num; /* R: rate numerator */ 421 421 unsigned int rate_den; /* R: rate denominator */ 422 422 snd_pcm_uframes_t fifo_size; /* R: chip FIFO size in frames */
+1 -1
tools/perf/ui/browsers/annotate.c
··· 970 970 if (dso->annotate_warned) 971 971 return -1; 972 972 973 - if (not_annotated) { 973 + if (not_annotated || !sym->annotate2) { 974 974 err = symbol__annotate2(ms, evsel, &browser.arch); 975 975 if (err) { 976 976 char msg[BUFSIZ];
+3
tools/perf/util/annotate.c
··· 2461 2461 if (parch) 2462 2462 *parch = arch; 2463 2463 2464 + if (!list_empty(&notes->src->source)) 2465 + return 0; 2466 + 2464 2467 args.arch = arch; 2465 2468 args.ms = *ms; 2466 2469 if (annotate_opts.full_addr)
+4 -1
tools/perf/util/bpf_skel/lock_contention.bpf.c
··· 284 284 struct task_struct *curr; 285 285 struct mm_struct___old *mm_old; 286 286 struct mm_struct___new *mm_new; 287 + struct sighand_struct *sighand; 287 288 288 289 switch (flags) { 289 290 case LCB_F_READ: /* rwsem */ ··· 306 305 break; 307 306 case LCB_F_SPIN: /* spinlock */ 308 307 curr = bpf_get_current_task_btf(); 309 - if (&curr->sighand->siglock == (void *)lock) 308 + sighand = curr->sighand; 309 + 310 + if (sighand && &sighand->siglock == (void *)lock) 310 311 return LCD_F_SIGHAND_LOCK; 311 312 break; 312 313 default: