Bring v6.17-rc1 to propagate commits from other subsystems, particularly PCI, which has some new functions needed for SR-IOV integration.
Showing the changes to include/uapi (67 of 11960 files). Show all
Unified · Split
| @@ -2,8 +2,12 @@ · 1 unmodified line | |||
| 2 | #ifndef _UAPI__ASM_GENERIC_PARAM_H | 2 | #ifndef _UAPI__ASM_GENERIC_PARAM_H |
| 3 | #define _UAPI__ASM_GENERIC_PARAM_H | 3 | #define _UAPI__ASM_GENERIC_PARAM_H |
| 4 | 4 | ||
| 5 | #ifndef __USER_HZ | ||
| 6 | #define __USER_HZ 100 | ||
| 7 | #endif | ||
| 8 | |||
| 5 | #ifndef HZ | 9 | #ifndef HZ |
| 6 | #define HZ 100 | 10 | #define HZ __USER_HZ |
| 7 | #endif | 11 | #endif |
| 8 | 12 | ||
| 9 | #ifndef EXEC_PAGESIZE | 13 | #ifndef EXEC_PAGESIZE |
| @@ -147,6 +147,9 @@ · 146 unmodified lines | |||
| 147 | 147 | ||
| 148 | #define SO_PASSRIGHTS 83 | 148 | #define SO_PASSRIGHTS 83 |
| 149 | 149 | ||
| 150 | #define SO_INQ 84 | ||
| 151 | #define SCM_INQ SO_INQ | ||
| 152 | |||
| 150 | #if !defined(__KERNEL__) | 153 | #if !defined(__KERNEL__) |
| 151 | 154 | ||
| 152 | #if __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__)) | 155 | #if __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__)) |
| @@ -852,8 +852,14 @@ __SYSCALL(__NR_removexattrat, sys_removexattrat) · 851 unmodified lines | |||
| 852 | #define __NR_open_tree_attr 467 | 852 | #define __NR_open_tree_attr 467 |
| 853 | __SYSCALL(__NR_open_tree_attr, sys_open_tree_attr) | 853 | __SYSCALL(__NR_open_tree_attr, sys_open_tree_attr) |
| 854 | 854 | ||
| 855 | /* fs/inode.c */ | ||
| 856 | #define __NR_file_getattr 468 | ||
| 857 | __SYSCALL(__NR_file_getattr, sys_file_getattr) | ||
| 858 | #define __NR_file_setattr 469 | ||
| 859 | __SYSCALL(__NR_file_setattr, sys_file_setattr) | ||
| 860 | |||
| 855 | #undef __NR_syscalls | 861 | #undef __NR_syscalls |
| 856 | #define __NR_syscalls 468 | 862 | #define __NR_syscalls 470 |
| 857 | 863 | ||
| 858 | /* | 864 | /* |
| 859 | * 32 bit systems traditionally used different | 865 | * 32 bit systems traditionally used different |
| @@ -1493,6 +1493,8 @@ struct drm_amdgpu_info_hw_ip { · 1492 unmodified lines | |||
| 1493 | __u32 available_rings; | 1493 | __u32 available_rings; |
| 1494 | /** version info: bits 23:16 major, 15:8 minor, 7:0 revision */ | 1494 | /** version info: bits 23:16 major, 15:8 minor, 7:0 revision */ |
| 1495 | __u32 ip_discovery_version; | 1495 | __u32 ip_discovery_version; |
| 1496 | /* Userq available slots */ | ||
| 1497 | __u32 userq_num_slots; | ||
| 1496 | }; | 1498 | }; |
| 1497 | 1499 | ||
| 1498 | /* GFX metadata BO sizes and alignment info (in bytes) */ | 1500 | /* GFX metadata BO sizes and alignment info (in bytes) */ |
| @@ -210,6 +210,10 @@ extern "C" { · 209 unmodified lines | |||
| 210 | #define DRM_FORMAT_RGBA1010102 fourcc_code('R', 'A', '3', '0') /* [31:0] R:G:B:A 10:10:10:2 little endian */ | 210 | #define DRM_FORMAT_RGBA1010102 fourcc_code('R', 'A', '3', '0') /* [31:0] R:G:B:A 10:10:10:2 little endian */ |
| 211 | #define DRM_FORMAT_BGRA1010102 fourcc_code('B', 'A', '3', '0') /* [31:0] B:G:R:A 10:10:10:2 little endian */ | 211 | #define DRM_FORMAT_BGRA1010102 fourcc_code('B', 'A', '3', '0') /* [31:0] B:G:R:A 10:10:10:2 little endian */ |
| 212 | 212 | ||
| 213 | /* 48 bpp RGB */ | ||
| 214 | #define DRM_FORMAT_RGB161616 fourcc_code('R', 'G', '4', '8') /* [47:0] R:G:B 16:16:16 little endian */ | ||
| 215 | #define DRM_FORMAT_BGR161616 fourcc_code('B', 'G', '4', '8') /* [47:0] B:G:R 16:16:16 little endian */ | ||
| 216 | |||
| 213 | /* 64 bpp RGB */ | 217 | /* 64 bpp RGB */ |
| 214 | #define DRM_FORMAT_XRGB16161616 fourcc_code('X', 'R', '4', '8') /* [63:0] x:R:G:B 16:16:16:16 little endian */ | 218 | #define DRM_FORMAT_XRGB16161616 fourcc_code('X', 'R', '4', '8') /* [63:0] x:R:G:B 16:16:16:16 little endian */ |
| 215 | #define DRM_FORMAT_XBGR16161616 fourcc_code('X', 'B', '4', '8') /* [63:0] x:B:G:R 16:16:16:16 little endian */ | 219 | #define DRM_FORMAT_XBGR16161616 fourcc_code('X', 'B', '4', '8') /* [63:0] x:B:G:R 16:16:16:16 little endian */ |
| @@ -218,7 +222,7 @@ extern "C" { · 2 unmodified lines | |||
| 218 | #define DRM_FORMAT_ABGR16161616 fourcc_code('A', 'B', '4', '8') /* [63:0] A:B:G:R 16:16:16:16 little endian */ | 222 | #define DRM_FORMAT_ABGR16161616 fourcc_code('A', 'B', '4', '8') /* [63:0] A:B:G:R 16:16:16:16 little endian */ |
| 219 | 223 | ||
| 220 | /* | 224 | /* |
| 221 | * Floating point 64bpp RGB | 225 | * Half-Floating point - 16b/component |
| 222 | * IEEE 754-2008 binary16 half-precision float | 226 | * IEEE 754-2008 binary16 half-precision float |
| 223 | * [15:0] sign:exponent:mantissa 1:5:10 | 227 | * [15:0] sign:exponent:mantissa 1:5:10 |
| 224 | */ | 228 | */ |
| @@ -228,6 +232,20 @@ extern "C" { · 3 unmodified lines | |||
| 228 | #define DRM_FORMAT_ARGB16161616F fourcc_code('A', 'R', '4', 'H') /* [63:0] A:R:G:B 16:16:16:16 little endian */ | 232 | #define DRM_FORMAT_ARGB16161616F fourcc_code('A', 'R', '4', 'H') /* [63:0] A:R:G:B 16:16:16:16 little endian */ |
| 229 | #define DRM_FORMAT_ABGR16161616F fourcc_code('A', 'B', '4', 'H') /* [63:0] A:B:G:R 16:16:16:16 little endian */ | 233 | #define DRM_FORMAT_ABGR16161616F fourcc_code('A', 'B', '4', 'H') /* [63:0] A:B:G:R 16:16:16:16 little endian */ |
| 230 | 234 | ||
| 235 | #define DRM_FORMAT_R16F fourcc_code('R', ' ', ' ', 'H') /* [15:0] R 16 little endian */ | ||
| 236 | #define DRM_FORMAT_GR1616F fourcc_code('G', 'R', ' ', 'H') /* [31:0] G:R 16:16 little endian */ | ||
| 237 | #define DRM_FORMAT_BGR161616F fourcc_code('B', 'G', 'R', 'H') /* [47:0] B:G:R 16:16:16 little endian */ | ||
| 238 | |||
| 239 | /* | ||
| 240 | * Floating point - 32b/component | ||
| 241 | * IEEE 754-2008 binary32 float | ||
| 242 | * [31:0] sign:exponent:mantissa 1:8:23 | ||
| 243 | */ | ||
| 244 | #define DRM_FORMAT_R32F fourcc_code('R', ' ', ' ', 'F') /* [31:0] R 32 little endian */ | ||
| 245 | #define DRM_FORMAT_GR3232F fourcc_code('G', 'R', ' ', 'F') /* [63:0] R:G 32:32 little endian */ | ||
| 246 | #define DRM_FORMAT_BGR323232F fourcc_code('B', 'G', 'R', 'F') /* [95:0] R:G:B 32:32:32 little endian */ | ||
| 247 | #define DRM_FORMAT_ABGR32323232F fourcc_code('A', 'B', '8', 'F') /* [127:0] R:G:B:A 32:32:32:32 little endian */ | ||
| 248 | |||
| 231 | /* | 249 | /* |
| 232 | * RGBA format with 10-bit components packed in 64-bit per pixel, with 6 bits | 250 | * RGBA format with 10-bit components packed in 64-bit per pixel, with 6 bits |
| 233 | * of unused padding per component: | 251 | * of unused padding per component: |
| @@ -91,6 +91,32 @@ struct drm_msm_timespec { · 90 unmodified lines | |||
| 91 | #define MSM_PARAM_UBWC_SWIZZLE 0x12 /* RO */ | 91 | #define MSM_PARAM_UBWC_SWIZZLE 0x12 /* RO */ |
| 92 | #define MSM_PARAM_MACROTILE_MODE 0x13 /* RO */ | 92 | #define MSM_PARAM_MACROTILE_MODE 0x13 /* RO */ |
| 93 | #define MSM_PARAM_UCHE_TRAP_BASE 0x14 /* RO */ | 93 | #define MSM_PARAM_UCHE_TRAP_BASE 0x14 /* RO */ |
| 94 | /* PRR (Partially Resident Region) is required for sparse residency: */ | ||
| 95 | #define MSM_PARAM_HAS_PRR 0x15 /* RO */ | ||
| 96 | /* MSM_PARAM_EN_VM_BIND is set to 1 to enable VM_BIND ops. | ||
| 97 | * | ||
| 98 | * With VM_BIND enabled, userspace is required to allocate iova and use the | ||
| 99 | * VM_BIND ops for map/unmap ioctls. MSM_INFO_SET_IOVA and MSM_INFO_GET_IOVA | ||
| 100 | * will be rejected. (The latter does not have a sensible meaning when a BO | ||
| 101 | * can have multiple and/or partial mappings.) | ||
| 102 | * | ||
| 103 | * With VM_BIND enabled, userspace does not include a submit_bo table in the | ||
| 104 | * SUBMIT ioctl (this will be rejected), the resident set is determined by | ||
| 105 | * the the VM_BIND ops. | ||
| 106 | * | ||
| 107 | * Enabling VM_BIND will fail on devices which do not have per-process pgtables. | ||
| 108 | * And it is not allowed to disable VM_BIND once it has been enabled. | ||
| 109 | * | ||
| 110 | * Enabling VM_BIND should be done (attempted) prior to allocating any BOs or | ||
| 111 | * submitqueues of type MSM_SUBMITQUEUE_VM_BIND. | ||
| 112 | * | ||
| 113 | * Relatedly, when VM_BIND mode is enabled, the kernel will not try to recover | ||
| 114 | * from GPU faults or failed async VM_BIND ops, in particular because it is | ||
| 115 | * difficult to communicate to userspace which op failed so that userspace | ||
| 116 | * could rewind and try again. When the VM is marked unusable, the SUBMIT | ||
| 117 | * ioctl will throw -EPIPE. | ||
| 118 | */ | ||
| 119 | #define MSM_PARAM_EN_VM_BIND 0x16 /* WO, once */ | ||
| 94 | 120 | ||
| 95 | /* For backwards compat. The original support for preemption was based on | 121 | /* For backwards compat. The original support for preemption was based on |
| 96 | * a single ring per priority level so # of priority levels equals the # | 122 | * a single ring per priority level so # of priority levels equals the # |
| @@ -114,6 +140,19 @@ struct drm_msm_param { · 17 unmodified lines | |||
| 114 | 140 | ||
| 115 | #define MSM_BO_SCANOUT 0x00000001 /* scanout capable */ | 141 | #define MSM_BO_SCANOUT 0x00000001 /* scanout capable */ |
| 116 | #define MSM_BO_GPU_READONLY 0x00000002 | 142 | #define MSM_BO_GPU_READONLY 0x00000002 |
| 143 | /* Private buffers do not need to be explicitly listed in the SUBMIT | ||
| 144 | * ioctl, unless referenced by a drm_msm_gem_submit_cmd. Private | ||
| 145 | * buffers may NOT be imported/exported or used for scanout (or any | ||
| 146 | * other situation where buffers can be indefinitely pinned, but | ||
| 147 | * cases other than scanout are all kernel owned BOs which are not | ||
| 148 | * visible to userspace). | ||
| 149 | * | ||
| 150 | * In exchange for those constraints, all private BOs associated with | ||
| 151 | * a single context (drm_file) share a single dma_resv, and if there | ||
| 152 | * has been no eviction since the last submit, there are no per-BO | ||
| 153 | * bookeeping to do, significantly cutting the SUBMIT overhead. | ||
| 154 | */ | ||
| 155 | #define MSM_BO_NO_SHARE 0x00000004 | ||
| 117 | #define MSM_BO_CACHE_MASK 0x000f0000 | 156 | #define MSM_BO_CACHE_MASK 0x000f0000 |
| 118 | /* cache modes */ | 157 | /* cache modes */ |
| 119 | #define MSM_BO_CACHED 0x00010000 | 158 | #define MSM_BO_CACHED 0x00010000 |
| @@ -123,6 +162,7 @@ struct drm_msm_param { · 3 unmodified lines | |||
| 123 | 162 | ||
| 124 | #define MSM_BO_FLAGS (MSM_BO_SCANOUT | \ | 163 | #define MSM_BO_FLAGS (MSM_BO_SCANOUT | \ |
| 125 | MSM_BO_GPU_READONLY | \ | 164 | MSM_BO_GPU_READONLY | \ |
| 165 | MSM_BO_NO_SHARE | \ | ||
| 126 | MSM_BO_CACHE_MASK) | 166 | MSM_BO_CACHE_MASK) |
| 127 | 167 | ||
| 128 | struct drm_msm_gem_new { | 168 | struct drm_msm_gem_new { |
| @@ -180,6 +220,17 @@ struct drm_msm_gem_cpu_fini { · 51 unmodified lines | |||
| 180 | * Cmdstream Submission: | 220 | * Cmdstream Submission: |
| 181 | */ | 221 | */ |
| 182 | 222 | ||
| 223 | #define MSM_SYNCOBJ_RESET 0x00000001 /* Reset syncobj after wait. */ | ||
| 224 | #define MSM_SYNCOBJ_FLAGS ( \ | ||
| 225 | MSM_SYNCOBJ_RESET | \ | ||
| 226 | 0) | ||
| 227 | |||
| 228 | struct drm_msm_syncobj { | ||
| 229 | __u32 handle; /* in, syncobj handle. */ | ||
| 230 | __u32 flags; /* in, from MSM_SUBMIT_SYNCOBJ_FLAGS */ | ||
| 231 | __u64 point; /* in, timepoint for timeline syncobjs. */ | ||
| 232 | }; | ||
| 233 | |||
| 183 | /* The value written into the cmdstream is logically: | 234 | /* The value written into the cmdstream is logically: |
| 184 | * | 235 | * |
| 185 | * ((relocbuf->gpuaddr + reloc_offset) << shift) | or | 236 | * ((relocbuf->gpuaddr + reloc_offset) << shift) | or |
| @@ -221,7 +272,10 @@ struct drm_msm_gem_submit_cmd { · 35 unmodified lines | |||
| 221 | __u32 size; /* in, cmdstream size */ | 272 | __u32 size; /* in, cmdstream size */ |
| 222 | __u32 pad; | 273 | __u32 pad; |
| 223 | __u32 nr_relocs; /* in, number of submit_reloc's */ | 274 | __u32 nr_relocs; /* in, number of submit_reloc's */ |
| 224 | __u64 relocs; /* in, ptr to array of submit_reloc's */ | 275 | union { |
| 276 | __u64 relocs; /* in, ptr to array of submit_reloc's */ | ||
| 277 | __u64 iova; /* cmdstream address (for VM_BIND contexts) */ | ||
| 278 | }; | ||
| 225 | }; | 279 | }; |
| 226 | 280 | ||
| 227 | /* Each buffer referenced elsewhere in the cmdstream submit (ie. the | 281 | /* Each buffer referenced elsewhere in the cmdstream submit (ie. the |
| @@ -269,17 +323,6 @@ struct drm_msm_gem_submit_bo { · 41 unmodified lines | |||
| 269 | MSM_SUBMIT_FENCE_SN_IN | \ | 323 | MSM_SUBMIT_FENCE_SN_IN | \ |
| 270 | 0) | 324 | 0) |
| 271 | 325 | ||
| 272 | #define MSM_SUBMIT_SYNCOBJ_RESET 0x00000001 /* Reset syncobj after wait. */ | ||
| 273 | #define MSM_SUBMIT_SYNCOBJ_FLAGS ( \ | ||
| 274 | MSM_SUBMIT_SYNCOBJ_RESET | \ | ||
| 275 | 0) | ||
| 276 | |||
| 277 | struct drm_msm_gem_submit_syncobj { | ||
| 278 | __u32 handle; /* in, syncobj handle. */ | ||
| 279 | __u32 flags; /* in, from MSM_SUBMIT_SYNCOBJ_FLAGS */ | ||
| 280 | __u64 point; /* in, timepoint for timeline syncobjs. */ | ||
| 281 | }; | ||
| 282 | |||
| 283 | /* Each cmdstream submit consists of a table of buffers involved, and | 326 | /* Each cmdstream submit consists of a table of buffers involved, and |
| 284 | * one or more cmdstream buffers. This allows for conditional execution | 327 | * one or more cmdstream buffers. This allows for conditional execution |
| 285 | * (context-restore), and IB buffers needed for per tile/bin draw cmds. | 328 | * (context-restore), and IB buffers needed for per tile/bin draw cmds. |
| @@ -293,13 +336,80 @@ struct drm_msm_gem_submit { · 7 unmodified lines | |||
| 293 | __u64 cmds; /* in, ptr to array of submit_cmd's */ | 336 | __u64 cmds; /* in, ptr to array of submit_cmd's */ |
| 294 | __s32 fence_fd; /* in/out fence fd (see MSM_SUBMIT_FENCE_FD_IN/OUT) */ | 337 | __s32 fence_fd; /* in/out fence fd (see MSM_SUBMIT_FENCE_FD_IN/OUT) */ |
| 295 | __u32 queueid; /* in, submitqueue id */ | 338 | __u32 queueid; /* in, submitqueue id */ |
| 296 | __u64 in_syncobjs; /* in, ptr to array of drm_msm_gem_submit_syncobj */ | 339 | __u64 in_syncobjs; /* in, ptr to array of drm_msm_syncobj */ |
| 297 | __u64 out_syncobjs; /* in, ptr to array of drm_msm_gem_submit_syncobj */ | 340 | __u64 out_syncobjs; /* in, ptr to array of drm_msm_syncobj */ |
| 298 | __u32 nr_in_syncobjs; /* in, number of entries in in_syncobj */ | 341 | __u32 nr_in_syncobjs; /* in, number of entries in in_syncobj */ |
| 299 | __u32 nr_out_syncobjs; /* in, number of entries in out_syncobj. */ | 342 | __u32 nr_out_syncobjs; /* in, number of entries in out_syncobj. */ |
| 300 | __u32 syncobj_stride; /* in, stride of syncobj arrays. */ | 343 | __u32 syncobj_stride; /* in, stride of syncobj arrays. */ |
| 301 | __u32 pad; /*in, reserved for future use, always 0. */ | 344 | __u32 pad; /*in, reserved for future use, always 0. */ |
| 345 | }; | ||
| 302 | 346 | ||
| 347 | #define MSM_VM_BIND_OP_UNMAP 0 | ||
| 348 | #define MSM_VM_BIND_OP_MAP 1 | ||
| 349 | #define MSM_VM_BIND_OP_MAP_NULL 2 | ||
| 350 | |||
| 351 | #define MSM_VM_BIND_OP_DUMP 1 | ||
| 352 | #define MSM_VM_BIND_OP_FLAGS ( \ | ||
| 353 | MSM_VM_BIND_OP_DUMP | \ | ||
| 354 | 0) | ||
| 355 | |||
| 356 | /** | ||
| 357 | * struct drm_msm_vm_bind_op - bind/unbind op to run | ||
| 358 | */ | ||
| 359 | struct drm_msm_vm_bind_op { | ||
| 360 | /** @op: one of MSM_VM_BIND_OP_x */ | ||
| 361 | __u32 op; | ||
| 362 | /** @handle: GEM object handle, MBZ for UNMAP or MAP_NULL */ | ||
| 363 | __u32 handle; | ||
| 364 | /** @obj_offset: Offset into GEM object, MBZ for UNMAP or MAP_NULL */ | ||
| 365 | __u64 obj_offset; | ||
| 366 | /** @iova: Address to operate on */ | ||
| 367 | __u64 iova; | ||
| 368 | /** @range: Number of bites to to map/unmap */ | ||
| 369 | __u64 range; | ||
| 370 | /** @flags: Bitmask of MSM_VM_BIND_OP_FLAG_x */ | ||
| 371 | __u32 flags; | ||
| 372 | /** @pad: MBZ */ | ||
| 373 | __u32 pad; | ||
| 374 | }; | ||
| 375 | |||
| 376 | #define MSM_VM_BIND_FENCE_FD_IN 0x00000001 | ||
| 377 | #define MSM_VM_BIND_FENCE_FD_OUT 0x00000002 | ||
| 378 | #define MSM_VM_BIND_FLAGS ( \ | ||
| 379 | MSM_VM_BIND_FENCE_FD_IN | \ | ||
| 380 | MSM_VM_BIND_FENCE_FD_OUT | \ | ||
| 381 | 0) | ||
| 382 | |||
| 383 | /** | ||
| 384 | * struct drm_msm_vm_bind - Input of &DRM_IOCTL_MSM_VM_BIND | ||
| 385 | */ | ||
| 386 | struct drm_msm_vm_bind { | ||
| 387 | /** @flags: in, bitmask of MSM_VM_BIND_x */ | ||
| 388 | __u32 flags; | ||
| 389 | /** @nr_ops: the number of bind ops in this ioctl */ | ||
| 390 | __u32 nr_ops; | ||
| 391 | /** @fence_fd: in/out fence fd (see MSM_VM_BIND_FENCE_FD_IN/OUT) */ | ||
| 392 | __s32 fence_fd; | ||
| 393 | /** @queue_id: in, submitqueue id */ | ||
| 394 | __u32 queue_id; | ||
| 395 | /** @in_syncobjs: in, ptr to array of drm_msm_gem_syncobj */ | ||
| 396 | __u64 in_syncobjs; | ||
| 397 | /** @out_syncobjs: in, ptr to array of drm_msm_gem_syncobj */ | ||
| 398 | __u64 out_syncobjs; | ||
| 399 | /** @nr_in_syncobjs: in, number of entries in in_syncobj */ | ||
| 400 | __u32 nr_in_syncobjs; | ||
| 401 | /** @nr_out_syncobjs: in, number of entries in out_syncobj */ | ||
| 402 | __u32 nr_out_syncobjs; | ||
| 403 | /** @syncobj_stride: in, stride of syncobj arrays */ | ||
| 404 | __u32 syncobj_stride; | ||
| 405 | /** @op_stride: sizeof each struct drm_msm_vm_bind_op in @ops */ | ||
| 406 | __u32 op_stride; | ||
| 407 | union { | ||
| 408 | /** @op: used if num_ops == 1 */ | ||
| 409 | struct drm_msm_vm_bind_op op; | ||
| 410 | /** @ops: userptr to array of drm_msm_vm_bind_op if num_ops > 1 */ | ||
| 411 | __u64 ops; | ||
| 412 | }; | ||
| 303 | }; | 413 | }; |
| 304 | 414 | ||
| 305 | #define MSM_WAIT_FENCE_BOOST 0x00000001 | 415 | #define MSM_WAIT_FENCE_BOOST 0x00000001 |
| @@ -345,12 +455,19 @@ struct drm_msm_gem_madvise { · 39 unmodified lines | |||
| 345 | /* | 455 | /* |
| 346 | * Draw queues allow the user to set specific submission parameter. Command | 456 | * Draw queues allow the user to set specific submission parameter. Command |
| 347 | * submissions specify a specific submitqueue to use. ID 0 is reserved for | 457 | * submissions specify a specific submitqueue to use. ID 0 is reserved for |
| 348 | * backwards compatibility as a "default" submitqueue | 458 | * backwards compatibility as a "default" submitqueue. |
| 459 | * | ||
| 460 | * Because VM_BIND async updates happen on the CPU, they must run on a | ||
| 461 | * virtual queue created with the flag MSM_SUBMITQUEUE_VM_BIND. If we had | ||
| 462 | * a way to do pgtable updates on the GPU, we could drop this restriction. | ||
| 349 | */ | 463 | */ |
| 350 | 464 | ||
| 351 | #define MSM_SUBMITQUEUE_ALLOW_PREEMPT 0x00000001 | 465 | #define MSM_SUBMITQUEUE_ALLOW_PREEMPT 0x00000001 |
| 466 | #define MSM_SUBMITQUEUE_VM_BIND 0x00000002 /* virtual queue for VM_BIND ops */ | ||
| 467 | |||
| 352 | #define MSM_SUBMITQUEUE_FLAGS ( \ | 468 | #define MSM_SUBMITQUEUE_FLAGS ( \ |
| 353 | MSM_SUBMITQUEUE_ALLOW_PREEMPT | \ | 469 | MSM_SUBMITQUEUE_ALLOW_PREEMPT | \ |
| 470 | MSM_SUBMITQUEUE_VM_BIND | \ | ||
| 354 | 0) | 471 | 0) |
| 355 | 472 | ||
| 356 | /* | 473 | /* |
| @@ -388,6 +505,7 @@ struct drm_msm_submitqueue_query { · 31 unmodified lines | |||
| 388 | #define DRM_MSM_SUBMITQUEUE_NEW 0x0A | 505 | #define DRM_MSM_SUBMITQUEUE_NEW 0x0A |
| 389 | #define DRM_MSM_SUBMITQUEUE_CLOSE 0x0B | 506 | #define DRM_MSM_SUBMITQUEUE_CLOSE 0x0B |
| 390 | #define DRM_MSM_SUBMITQUEUE_QUERY 0x0C | 507 | #define DRM_MSM_SUBMITQUEUE_QUERY 0x0C |
| 508 | #define DRM_MSM_VM_BIND 0x0D | ||
| 391 | 509 | ||
| 392 | #define DRM_IOCTL_MSM_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GET_PARAM, struct drm_msm_param) | 510 | #define DRM_IOCTL_MSM_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GET_PARAM, struct drm_msm_param) |
| 393 | #define DRM_IOCTL_MSM_SET_PARAM DRM_IOW (DRM_COMMAND_BASE + DRM_MSM_SET_PARAM, struct drm_msm_param) | 511 | #define DRM_IOCTL_MSM_SET_PARAM DRM_IOW (DRM_COMMAND_BASE + DRM_MSM_SET_PARAM, struct drm_msm_param) |
| @@ -401,6 +519,7 @@ struct drm_msm_submitqueue_query { · 7 unmodified lines | |||
| 401 | #define DRM_IOCTL_MSM_SUBMITQUEUE_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_SUBMITQUEUE_NEW, struct drm_msm_submitqueue) | 519 | #define DRM_IOCTL_MSM_SUBMITQUEUE_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_SUBMITQUEUE_NEW, struct drm_msm_submitqueue) |
| 402 | #define DRM_IOCTL_MSM_SUBMITQUEUE_CLOSE DRM_IOW (DRM_COMMAND_BASE + DRM_MSM_SUBMITQUEUE_CLOSE, __u32) | 520 | #define DRM_IOCTL_MSM_SUBMITQUEUE_CLOSE DRM_IOW (DRM_COMMAND_BASE + DRM_MSM_SUBMITQUEUE_CLOSE, __u32) |
| 403 | #define DRM_IOCTL_MSM_SUBMITQUEUE_QUERY DRM_IOW (DRM_COMMAND_BASE + DRM_MSM_SUBMITQUEUE_QUERY, struct drm_msm_submitqueue_query) | 521 | #define DRM_IOCTL_MSM_SUBMITQUEUE_QUERY DRM_IOW (DRM_COMMAND_BASE + DRM_MSM_SUBMITQUEUE_QUERY, struct drm_msm_submitqueue_query) |
| 522 | #define DRM_IOCTL_MSM_VM_BIND DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_VM_BIND, struct drm_msm_vm_bind) | ||
| 404 | 523 | ||
| 405 | #if defined(__cplusplus) | 524 | #if defined(__cplusplus) |
| 406 | } | 525 | } |
| @@ -450,6 +450,7 @@ union bpf_iter_link_info { · 449 unmodified lines | |||
| 450 | * * **struct bpf_map_info** | 450 | * * **struct bpf_map_info** |
| 451 | * * **struct bpf_btf_info** | 451 | * * **struct bpf_btf_info** |
| 452 | * * **struct bpf_link_info** | 452 | * * **struct bpf_link_info** |
| 453 | * * **struct bpf_token_info** | ||
| 453 | * | 454 | * |
| 454 | * Return | 455 | * Return |
| 455 | * Returns zero on success. On error, -1 is returned and *errno* | 456 | * Returns zero on success. On error, -1 is returned and *errno* |
| @@ -906,6 +907,17 @@ union bpf_iter_link_info { · 450 unmodified lines | |||
| 906 | * A new file descriptor (a nonnegative integer), or -1 if an | 907 | * A new file descriptor (a nonnegative integer), or -1 if an |
| 907 | * error occurred (in which case, *errno* is set appropriately). | 908 | * error occurred (in which case, *errno* is set appropriately). |
| 908 | * | 909 | * |
| 910 | * BPF_PROG_STREAM_READ_BY_FD | ||
| 911 | * Description | ||
| 912 | * Read data of a program's BPF stream. The program is identified | ||
| 913 | * by *prog_fd*, and the stream is identified by the *stream_id*. | ||
| 914 | * The data is copied to a buffer pointed to by *stream_buf*, and | ||
| 915 | * filled less than or equal to *stream_buf_len* bytes. | ||
| 916 | * | ||
| 917 | * Return | ||
| 918 | * Number of bytes read from the stream on success, or -1 if an | ||
| 919 | * error occurred (in which case, *errno* is set appropriately). | ||
| 920 | * | ||
| 909 | * NOTES | 921 | * NOTES |
| 910 | * eBPF objects (maps and programs) can be shared between processes. | 922 | * eBPF objects (maps and programs) can be shared between processes. |
| 911 | * | 923 | * |
| @@ -961,6 +973,7 @@ enum bpf_cmd { · 49 unmodified lines | |||
| 961 | BPF_LINK_DETACH, | 973 | BPF_LINK_DETACH, |
| 962 | BPF_PROG_BIND_MAP, | 974 | BPF_PROG_BIND_MAP, |
| 963 | BPF_TOKEN_CREATE, | 975 | BPF_TOKEN_CREATE, |
| 976 | BPF_PROG_STREAM_READ_BY_FD, | ||
| 964 | __MAX_BPF_CMD, | 977 | __MAX_BPF_CMD, |
| 965 | }; | 978 | }; |
| 966 | 979 | ||
| @@ -1463,6 +1476,11 @@ struct bpf_stack_build_id { · 496 unmodified lines | |||
| 1463 | 1476 | ||
| 1464 | #define BPF_OBJ_NAME_LEN 16U | 1477 | #define BPF_OBJ_NAME_LEN 16U |
| 1465 | 1478 | ||
| 1479 | enum { | ||
| 1480 | BPF_STREAM_STDOUT = 1, | ||
| 1481 | BPF_STREAM_STDERR = 2, | ||
| 1482 | }; | ||
| 1483 | |||
| 1466 | union bpf_attr { | 1484 | union bpf_attr { |
| 1467 | struct { /* anonymous struct used by BPF_MAP_CREATE command */ | 1485 | struct { /* anonymous struct used by BPF_MAP_CREATE command */ |
| 1468 | __u32 map_type; /* one of enum bpf_map_type */ | 1486 | __u32 map_type; /* one of enum bpf_map_type */ |
| @@ -1794,6 +1812,13 @@ union bpf_attr { · 325 unmodified lines | |||
| 1794 | }; | 1812 | }; |
| 1795 | __u64 expected_revision; | 1813 | __u64 expected_revision; |
| 1796 | } netkit; | 1814 | } netkit; |
| 1815 | struct { | ||
| 1816 | union { | ||
| 1817 | __u32 relative_fd; | ||
| 1818 | __u32 relative_id; | ||
| 1819 | }; | ||
| 1820 | __u64 expected_revision; | ||
| 1821 | } cgroup; | ||
| 1797 | }; | 1822 | }; |
| 1798 | } link_create; | 1823 | } link_create; |
| 1799 | 1824 | ||
| @@ -1842,6 +1867,13 @@ union bpf_attr { · 42 unmodified lines | |||
| 1842 | __u32 bpffs_fd; | 1867 | __u32 bpffs_fd; |
| 1843 | } token_create; | 1868 | } token_create; |
| 1844 | 1869 | ||
| 1870 | struct { | ||
| 1871 | __aligned_u64 stream_buf; | ||
| 1872 | __u32 stream_buf_len; | ||
| 1873 | __u32 stream_id; | ||
| 1874 | __u32 prog_fd; | ||
| 1875 | } prog_stream_read; | ||
| 1876 | |||
| 1845 | } __attribute__((aligned(8))); | 1877 | } __attribute__((aligned(8))); |
| 1846 | 1878 | ||
| 1847 | /* The description below is an attempt at providing documentation to eBPF | 1879 | /* The description below is an attempt at providing documentation to eBPF |
| @@ -2403,7 +2435,7 @@ union bpf_attr { · 555 unmodified lines | |||
| 2403 | * into it. An example is available in file | 2435 | * into it. An example is available in file |
| 2404 | * *samples/bpf/trace_output_user.c* in the Linux kernel source | 2436 | * *samples/bpf/trace_output_user.c* in the Linux kernel source |
| 2405 | * tree (the eBPF program counterpart is in | 2437 | * tree (the eBPF program counterpart is in |
| 2406 | * *samples/bpf/trace_output_kern.c*). | 2438 | * *samples/bpf/trace_output.bpf.c*). |
| 2407 | * | 2439 | * |
| 2408 | * **bpf_perf_event_output**\ () achieves better performance | 2440 | * **bpf_perf_event_output**\ () achieves better performance |
| 2409 | * than **bpf_trace_printk**\ () for sharing data with user | 2441 | * than **bpf_trace_printk**\ () for sharing data with user |
| @@ -6653,11 +6685,15 @@ struct bpf_link_info { · 4243 unmodified lines | |||
| 6653 | struct { | 6685 | struct { |
| 6654 | __aligned_u64 tp_name; /* in/out: tp_name buffer ptr */ | 6686 | __aligned_u64 tp_name; /* in/out: tp_name buffer ptr */ |
| 6655 | __u32 tp_name_len; /* in/out: tp_name buffer len */ | 6687 | __u32 tp_name_len; /* in/out: tp_name buffer len */ |
| 6688 | __u32 :32; | ||
| 6689 | __u64 cookie; | ||
| 6656 | } raw_tracepoint; | 6690 | } raw_tracepoint; |
| 6657 | struct { | 6691 | struct { |
| 6658 | __u32 attach_type; | 6692 | __u32 attach_type; |
| 6659 | __u32 target_obj_id; /* prog_id for PROG_EXT, otherwise btf object id */ | 6693 | __u32 target_obj_id; /* prog_id for PROG_EXT, otherwise btf object id */ |
| 6660 | __u32 target_btf_id; /* BTF type id inside the object */ | 6694 | __u32 target_btf_id; /* BTF type id inside the object */ |
| 6695 | __u32 :32; | ||
| 6696 | __u64 cookie; | ||
| 6661 | } tracing; | 6697 | } tracing; |
| 6662 | struct { | 6698 | struct { |
| 6663 | __u64 cgroup_id; | 6699 | __u64 cgroup_id; |
| @@ -6768,6 +6804,13 @@ struct bpf_link_info { · 104 unmodified lines | |||
| 6768 | }; | 6804 | }; |
| 6769 | } __attribute__((aligned(8))); | 6805 | } __attribute__((aligned(8))); |
| 6770 | 6806 | ||
| 6807 | struct bpf_token_info { | ||
| 6808 | __u64 allowed_cmds; | ||
| 6809 | __u64 allowed_maps; | ||
| 6810 | __u64 allowed_progs; | ||
| 6811 | __u64 allowed_attachs; | ||
| 6812 | } __attribute__((aligned(8))); | ||
| 6813 | |||
| 6771 | /* User bpf_sock_addr struct to access socket fields and sockaddr struct passed | 6814 | /* User bpf_sock_addr struct to access socket fields and sockaddr struct passed |
| 6772 | * by user and intended to be used by socket (e.g. to bind to, depends on | 6815 | * by user and intended to be used by socket (e.g. to bind to, depends on |
| 6773 | * attach type). | 6816 | * attach type). |
| @@ -616,8 +616,11 @@ struct btrfs_ioctl_clone_range_args { · 615 unmodified lines | |||
| 616 | #define BTRFS_DEFRAG_RANGE_COMPRESS 1 | 616 | #define BTRFS_DEFRAG_RANGE_COMPRESS 1 |
| 617 | #define BTRFS_DEFRAG_RANGE_START_IO 2 | 617 | #define BTRFS_DEFRAG_RANGE_START_IO 2 |
| 618 | #define BTRFS_DEFRAG_RANGE_COMPRESS_LEVEL 4 | 618 | #define BTRFS_DEFRAG_RANGE_COMPRESS_LEVEL 4 |
| 619 | /* Request no compression on the range (uncompress if necessary). */ | ||
| 620 | #define BTRFS_DEFRAG_RANGE_NOCOMPRESS 8 | ||
| 619 | #define BTRFS_DEFRAG_RANGE_FLAGS_SUPP (BTRFS_DEFRAG_RANGE_COMPRESS | \ | 621 | #define BTRFS_DEFRAG_RANGE_FLAGS_SUPP (BTRFS_DEFRAG_RANGE_COMPRESS | \ |
| 620 | BTRFS_DEFRAG_RANGE_COMPRESS_LEVEL | \ | 622 | BTRFS_DEFRAG_RANGE_COMPRESS_LEVEL | \ |
| 623 | BTRFS_DEFRAG_RANGE_NOCOMPRESS | \ | ||
| 621 | BTRFS_DEFRAG_RANGE_START_IO) | 624 | BTRFS_DEFRAG_RANGE_START_IO) |
| 622 | 625 | ||
| 623 | struct btrfs_ioctl_defrag_range_args { | 626 | struct btrfs_ioctl_defrag_range_args { |
| @@ -6,9 +6,10 @@ · 5 unmodified lines | |||
| 6 | * Alexander Kjeldaas <astor@guardian.no> | 6 | * Alexander Kjeldaas <astor@guardian.no> |
| 7 | * with help from Aleph1, Roland Buresund and Andrew Main. | 7 | * with help from Aleph1, Roland Buresund and Andrew Main. |
| 8 | * | 8 | * |
| 9 | * See here for the libcap library ("POSIX draft" compliance): | 9 | * See here for the libcap2 library (compliant with Section 25 of |
| 10 | * the withdrawn POSIX 1003.1e Draft 17): | ||
| 10 | * | 11 | * |
| 11 | * ftp://www.kernel.org/pub/linux/libs/security/linux-privs/kernel-2.6/ | 12 | * https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/ |
| 12 | */ | 13 | */ |
| 13 | 14 | ||
| 14 | #ifndef _UAPI_LINUX_CAPABILITY_H | 15 | #ifndef _UAPI_LINUX_CAPABILITY_H |
| @@ -0,0 +1,104 @@ | |||
| 1 | /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | ||
| 2 | |||
| 3 | #ifndef _UAPI_LINUX_COREDUMP_H | ||
| 4 | #define _UAPI_LINUX_COREDUMP_H | ||
| 5 | |||
| 6 | #include <linux/types.h> | ||
| 7 | |||
| 8 | /** | ||
| 9 | * coredump_{req,ack} flags | ||
| 10 | * @COREDUMP_KERNEL: kernel writes coredump | ||
| 11 | * @COREDUMP_USERSPACE: userspace writes coredump | ||
| 12 | * @COREDUMP_REJECT: don't generate coredump | ||
| 13 | * @COREDUMP_WAIT: wait for coredump server | ||
| 14 | */ | ||
| 15 | enum { | ||
| 16 | COREDUMP_KERNEL = (1ULL << 0), | ||
| 17 | COREDUMP_USERSPACE = (1ULL << 1), | ||
| 18 | COREDUMP_REJECT = (1ULL << 2), | ||
| 19 | COREDUMP_WAIT = (1ULL << 3), | ||
| 20 | }; | ||
| 21 | |||
| 22 | /** | ||
| 23 | * struct coredump_req - message kernel sends to userspace | ||
| 24 | * @size: size of struct coredump_req | ||
| 25 | * @size_ack: known size of struct coredump_ack on this kernel | ||
| 26 | * @mask: supported features | ||
| 27 | * | ||
| 28 | * When a coredump happens the kernel will connect to the coredump | ||
| 29 | * socket and send a coredump request to the coredump server. The @size | ||
| 30 | * member is set to the size of struct coredump_req and provides a hint | ||
| 31 | * to userspace how much data can be read. Userspace may use MSG_PEEK to | ||
| 32 | * peek the size of struct coredump_req and then choose to consume it in | ||
| 33 | * one go. Userspace may also simply read a COREDUMP_ACK_SIZE_VER0 | ||
| 34 | * request. If the size the kernel sends is larger userspace simply | ||
| 35 | * discards any remaining data. | ||
| 36 | * | ||
| 37 | * The coredump_req->mask member is set to the currently know features. | ||
| 38 | * Userspace may only set coredump_ack->mask to the bits raised by the | ||
| 39 | * kernel in coredump_req->mask. | ||
| 40 | * | ||
| 41 | * The coredump_req->size_ack member is set by the kernel to the size of | ||
| 42 | * struct coredump_ack the kernel knows. Userspace may only send up to | ||
| 43 | * coredump_req->size_ack bytes to the kernel and must set | ||
| 44 | * coredump_ack->size accordingly. | ||
| 45 | */ | ||
| 46 | struct coredump_req { | ||
| 47 | __u32 size; | ||
| 48 | __u32 size_ack; | ||
| 49 | __u64 mask; | ||
| 50 | }; | ||
| 51 | |||
| 52 | enum { | ||
| 53 | COREDUMP_REQ_SIZE_VER0 = 16U, /* size of first published struct */ | ||
| 54 | }; | ||
| 55 | |||
| 56 | /** | ||
| 57 | * struct coredump_ack - message userspace sends to kernel | ||
| 58 | * @size: size of the struct | ||
| 59 | * @spare: unused | ||
| 60 | * @mask: features kernel is supposed to use | ||
| 61 | * | ||
| 62 | * The @size member must be set to the size of struct coredump_ack. It | ||
| 63 | * may never exceed what the kernel returned in coredump_req->size_ack | ||
| 64 | * but it may of course be smaller (>= COREDUMP_ACK_SIZE_VER0 and <= | ||
| 65 | * coredump_req->size_ack). | ||
| 66 | * | ||
| 67 | * The @mask member must be set to the features the coredump server | ||
| 68 | * wants the kernel to use. Only bits the kernel returned in | ||
| 69 | * coredump_req->mask may be set. | ||
| 70 | */ | ||
| 71 | struct coredump_ack { | ||
| 72 | __u32 size; | ||
| 73 | __u32 spare; | ||
| 74 | __u64 mask; | ||
| 75 | }; | ||
| 76 | |||
| 77 | enum { | ||
| 78 | COREDUMP_ACK_SIZE_VER0 = 16U, /* size of first published struct */ | ||
| 79 | }; | ||
| 80 | |||
| 81 | /** | ||
| 82 | * enum coredump_mark - Markers for the coredump socket | ||
| 83 | * | ||
| 84 | * The kernel will place a single byte on the coredump socket. The | ||
| 85 | * markers notify userspace whether the coredump ack succeeded or | ||
| 86 | * failed. | ||
| 87 | * | ||
| 88 | * @COREDUMP_MARK_MINSIZE: the provided coredump_ack size was too small | ||
| 89 | * @COREDUMP_MARK_MAXSIZE: the provided coredump_ack size was too big | ||
| 90 | * @COREDUMP_MARK_UNSUPPORTED: the provided coredump_ack mask was invalid | ||
| 91 | * @COREDUMP_MARK_CONFLICTING: the provided coredump_ack mask has conflicting options | ||
| 92 | * @COREDUMP_MARK_REQACK: the coredump request and ack was successful | ||
| 93 | * @__COREDUMP_MARK_MAX: the maximum coredump mark value | ||
| 94 | */ | ||
| 95 | enum coredump_mark { | ||
| 96 | COREDUMP_MARK_REQACK = 0U, | ||
| 97 | COREDUMP_MARK_MINSIZE = 1U, | ||
| 98 | COREDUMP_MARK_MAXSIZE = 2U, | ||
| 99 | COREDUMP_MARK_UNSUPPORTED = 3U, | ||
| 100 | COREDUMP_MARK_CONFLICTING = 4U, | ||
| 101 | __COREDUMP_MARK_MAX = (1U << 31), | ||
| 102 | }; | ||
| 103 | |||
| 104 | #endif /* _UAPI_LINUX_COREDUMP_H */ | ||
| @@ -221,6 +221,11 @@ enum devlink_port_flavour { · 220 unmodified lines | |||
| 221 | */ | 221 | */ |
| 222 | }; | 222 | }; |
| 223 | 223 | ||
| 224 | /* IEEE 802.1Qaz standard supported values. */ | ||
| 225 | |||
| 226 | #define DEVLINK_RATE_TCS_MAX 8 | ||
| 227 | #define DEVLINK_RATE_TC_INDEX_MAX (DEVLINK_RATE_TCS_MAX - 1) | ||
| 228 | |||
| 224 | enum devlink_rate_type { | 229 | enum devlink_rate_type { |
| 225 | DEVLINK_RATE_TYPE_LEAF, | 230 | DEVLINK_RATE_TYPE_LEAF, |
| 226 | DEVLINK_RATE_TYPE_NODE, | 231 | DEVLINK_RATE_TYPE_NODE, |
| @@ -629,6 +634,8 @@ enum devlink_attr { · 402 unmodified lines | |||
| 629 | 634 | ||
| 630 | DEVLINK_ATTR_REGION_DIRECT, /* flag */ | 635 | DEVLINK_ATTR_REGION_DIRECT, /* flag */ |
| 631 | 636 | ||
| 637 | DEVLINK_ATTR_RATE_TC_BWS, /* nested */ | ||
| 638 | |||
| 632 | /* Add new attributes above here, update the spec in | 639 | /* Add new attributes above here, update the spec in |
| 633 | * Documentation/netlink/specs/devlink.yaml and re-generate | 640 | * Documentation/netlink/specs/devlink.yaml and re-generate |
| 634 | * net/devlink/netlink_gen.c. | 641 | * net/devlink/netlink_gen.c. |
| @@ -638,6 +645,15 @@ enum devlink_attr { · 3 unmodified lines | |||
| 638 | DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1 | 645 | DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1 |
| 639 | }; | 646 | }; |
| 640 | 647 | ||
| 648 | enum devlink_rate_tc_attr { | ||
| 649 | DEVLINK_RATE_TC_ATTR_UNSPEC, | ||
| 650 | DEVLINK_RATE_TC_ATTR_INDEX, /* u8 */ | ||
| 651 | DEVLINK_RATE_TC_ATTR_BW, /* u32 */ | ||
| 652 | |||
| 653 | __DEVLINK_RATE_TC_ATTR_MAX, | ||
| 654 | DEVLINK_RATE_TC_ATTR_MAX = __DEVLINK_RATE_TC_ATTR_MAX - 1 | ||
| 655 | }; | ||
| 656 | |||
| 641 | /* Mapping between internal resource described by the field and system | 657 | /* Mapping between internal resource described by the field and system |
| 642 | * structure | 658 | * structure |
| 643 | */ | 659 | */ |
| @@ -192,6 +192,17 @@ enum dpll_pin_capabilities { · 191 unmodified lines | |||
| 192 | 192 | ||
| 193 | #define DPLL_PHASE_OFFSET_DIVIDER 1000 | 193 | #define DPLL_PHASE_OFFSET_DIVIDER 1000 |
| 194 | 194 | ||
| 195 | /** | ||
| 196 | * enum dpll_feature_state - Allow control (enable/disable) and status checking | ||
| 197 | * over features. | ||
| 198 | * @DPLL_FEATURE_STATE_DISABLE: feature shall be disabled | ||
| 199 | * @DPLL_FEATURE_STATE_ENABLE: feature shall be enabled | ||
| 200 | */ | ||
| 201 | enum dpll_feature_state { | ||
| 202 | DPLL_FEATURE_STATE_DISABLE, | ||
| 203 | DPLL_FEATURE_STATE_ENABLE, | ||
| 204 | }; | ||
| 205 | |||
| 195 | enum dpll_a { | 206 | enum dpll_a { |
| 196 | DPLL_A_ID = 1, | 207 | DPLL_A_ID = 1, |
| 197 | DPLL_A_MODULE_NAME, | 208 | DPLL_A_MODULE_NAME, |
| @@ -204,6 +215,7 @@ enum dpll_a { · 6 unmodified lines | |||
| 204 | DPLL_A_TYPE, | 215 | DPLL_A_TYPE, |
| 205 | DPLL_A_LOCK_STATUS_ERROR, | 216 | DPLL_A_LOCK_STATUS_ERROR, |
| 206 | DPLL_A_CLOCK_QUALITY_LEVEL, | 217 | DPLL_A_CLOCK_QUALITY_LEVEL, |
| 218 | DPLL_A_PHASE_OFFSET_MONITOR, | ||
| 207 | 219 | ||
| 208 | __DPLL_A_MAX, | 220 | __DPLL_A_MAX, |
| 209 | DPLL_A_MAX = (__DPLL_A_MAX - 1) | 221 | DPLL_A_MAX = (__DPLL_A_MAX - 1) |
| @@ -237,6 +249,7 @@ enum dpll_a_pin { · 27 unmodified lines | |||
| 237 | DPLL_A_PIN_ESYNC_FREQUENCY, | 249 | DPLL_A_PIN_ESYNC_FREQUENCY, |
| 238 | DPLL_A_PIN_ESYNC_FREQUENCY_SUPPORTED, | 250 | DPLL_A_PIN_ESYNC_FREQUENCY_SUPPORTED, |
| 239 | DPLL_A_PIN_ESYNC_PULSE, | 251 | DPLL_A_PIN_ESYNC_PULSE, |
| 252 | DPLL_A_PIN_REFERENCE_SYNC, | ||
| 240 | 253 | ||
| 241 | __DPLL_A_PIN_MAX, | 254 | __DPLL_A_PIN_MAX, |
| 242 | DPLL_A_PIN_MAX = (__DPLL_A_PIN_MAX - 1) | 255 | DPLL_A_PIN_MAX = (__DPLL_A_PIN_MAX - 1) |
| @@ -2314,7 +2314,7 @@ enum { · 2313 unmodified lines | |||
| 2314 | IPV6_USER_FLOW = 0x0e, /* spec only (usr_ip6_spec; nfc only) */ | 2314 | IPV6_USER_FLOW = 0x0e, /* spec only (usr_ip6_spec; nfc only) */ |
| 2315 | IPV4_FLOW = 0x10, /* hash only */ | 2315 | IPV4_FLOW = 0x10, /* hash only */ |
| 2316 | IPV6_FLOW = 0x11, /* hash only */ | 2316 | IPV6_FLOW = 0x11, /* hash only */ |
| 2317 | ETHER_FLOW = 0x12, /* spec only (ether_spec) */ | 2317 | ETHER_FLOW = 0x12, /* hash or spec (ether_spec) */ |
| 2318 | 2318 | ||
| 2319 | /* Used for GTP-U IPv4 and IPv6. | 2319 | /* Used for GTP-U IPv4 and IPv6. |
| 2320 | * The format of GTP packets only includes | 2320 | * The format of GTP packets only includes |
| @@ -2371,7 +2371,7 @@ enum { · 50 unmodified lines | |||
| 2371 | /* Flag to enable RSS spreading of traffic matching rule (nfc only) */ | 2371 | /* Flag to enable RSS spreading of traffic matching rule (nfc only) */ |
| 2372 | #define FLOW_RSS 0x20000000 | 2372 | #define FLOW_RSS 0x20000000 |
| 2373 | 2373 | ||
| 2374 | /* L3-L4 network traffic flow hash options */ | 2374 | /* L2-L4 network traffic flow hash options */ |
| 2375 | #define RXH_L2DA (1 << 1) | 2375 | #define RXH_L2DA (1 << 1) |
| 2376 | #define RXH_VLAN (1 << 2) | 2376 | #define RXH_VLAN (1 << 2) |
| 2377 | #define RXH_L3_PROTO (1 << 3) | 2377 | #define RXH_L3_PROTO (1 << 3) |
| @@ -208,10 +208,4 @@ enum { · 207 unmodified lines | |||
| 208 | ETHTOOL_A_STATS_PHY_MAX = (__ETHTOOL_A_STATS_PHY_CNT - 1) | 208 | ETHTOOL_A_STATS_PHY_MAX = (__ETHTOOL_A_STATS_PHY_CNT - 1) |
| 209 | }; | 209 | }; |
| 210 | 210 | ||
| 211 | /* generic netlink info */ | ||
| 212 | #define ETHTOOL_GENL_NAME "ethtool" | ||
| 213 | #define ETHTOOL_GENL_VERSION 1 | ||
| 214 | |||
| 215 | #define ETHTOOL_MCGRP_MONITOR_NAME "monitor" | ||
| 216 | |||
| 217 | #endif /* _UAPI_LINUX_ETHTOOL_NETLINK_H_ */ | 211 | #endif /* _UAPI_LINUX_ETHTOOL_NETLINK_H_ */ |
| @@ -6,8 +6,8 @@ · 5 unmodified lines | |||
| 6 | #ifndef _UAPI_LINUX_ETHTOOL_NETLINK_GENERATED_H | 6 | #ifndef _UAPI_LINUX_ETHTOOL_NETLINK_GENERATED_H |
| 7 | #define _UAPI_LINUX_ETHTOOL_NETLINK_GENERATED_H | 7 | #define _UAPI_LINUX_ETHTOOL_NETLINK_GENERATED_H |
| 8 | 8 | ||
| 9 | #define ETHTOOL_FAMILY_NAME "ethtool" | 9 | #define ETHTOOL_GENL_NAME "ethtool" |
| 10 | #define ETHTOOL_FAMILY_VERSION 1 | 10 | #define ETHTOOL_GENL_VERSION 1 |
| 11 | 11 | ||
| 12 | enum { | 12 | enum { |
| 13 | ETHTOOL_UDP_TUNNEL_TYPE_VXLAN, | 13 | ETHTOOL_UDP_TUNNEL_TYPE_VXLAN, |
| @@ -49,6 +49,34 @@ enum hwtstamp_source { · 35 unmodified lines | |||
| 49 | HWTSTAMP_SOURCE_PHYLIB, | 49 | HWTSTAMP_SOURCE_PHYLIB, |
| 50 | }; | 50 | }; |
| 51 | 51 | ||
| 52 | /** | ||
| 53 | * enum ethtool_pse_event - PSE event list for the PSE controller | ||
| 54 | * @ETHTOOL_PSE_EVENT_OVER_CURRENT: PSE output current is too high | ||
| 55 | * @ETHTOOL_PSE_EVENT_OVER_TEMP: PSE in over temperature state | ||
| 56 | * @ETHTOOL_C33_PSE_EVENT_DETECTION: detection process occur on the PSE. IEEE | ||
| 57 | * 802.3-2022 33.2.5 and 145.2.6 PSE detection of PDs. IEEE 802.3-202 | ||
| 58 | * 30.9.1.1.5 aPSEPowerDetectionStatus | ||
| 59 | * @ETHTOOL_C33_PSE_EVENT_CLASSIFICATION: classification process occur on the | ||
| 60 | * PSE. IEEE 802.3-2022 33.2.6 and 145.2.8 classification of PDs mutual | ||
| 61 | * identification. IEEE 802.3-2022 30.9.1.1.8 aPSEPowerClassification. | ||
| 62 | * @ETHTOOL_C33_PSE_EVENT_DISCONNECTION: PD has been disconnected on the PSE. | ||
| 63 | * IEEE 802.3-2022 33.3.8 and 145.3.9 PD Maintain Power Signature. IEEE | ||
| 64 | * 802.3-2022 33.5.1.2.9 MPS Absent. IEEE 802.3-2022 30.9.1.1.20 | ||
| 65 | * aPSEMPSAbsentCounter. | ||
| 66 | * @ETHTOOL_PSE_EVENT_OVER_BUDGET: PSE turned off due to over budget situation | ||
| 67 | * @ETHTOOL_PSE_EVENT_SW_PW_CONTROL_ERROR: PSE faced an error managing the | ||
| 68 | * power control from software | ||
| 69 | */ | ||
| 70 | enum ethtool_pse_event { | ||
| 71 | ETHTOOL_PSE_EVENT_OVER_CURRENT = 1, | ||
| 72 | ETHTOOL_PSE_EVENT_OVER_TEMP = 2, | ||
| 73 | ETHTOOL_C33_PSE_EVENT_DETECTION = 4, | ||
| 74 | ETHTOOL_C33_PSE_EVENT_CLASSIFICATION = 8, | ||
| 75 | ETHTOOL_C33_PSE_EVENT_DISCONNECTION = 16, | ||
| 76 | ETHTOOL_PSE_EVENT_OVER_BUDGET = 32, | ||
| 77 | ETHTOOL_PSE_EVENT_SW_PW_CONTROL_ERROR = 64, | ||
| 78 | }; | ||
| 79 | |||
| 52 | enum { | 80 | enum { |
| 53 | ETHTOOL_A_HEADER_UNSPEC, | 81 | ETHTOOL_A_HEADER_UNSPEC, |
| 54 | ETHTOOL_A_HEADER_DEV_INDEX, | 82 | ETHTOOL_A_HEADER_DEV_INDEX, |
| @@ -642,11 +670,47 @@ enum { · 587 unmodified lines | |||
| 642 | ETHTOOL_A_C33_PSE_EXT_SUBSTATE, | 670 | ETHTOOL_A_C33_PSE_EXT_SUBSTATE, |
| 643 | ETHTOOL_A_C33_PSE_AVAIL_PW_LIMIT, | 671 | ETHTOOL_A_C33_PSE_AVAIL_PW_LIMIT, |
| 644 | ETHTOOL_A_C33_PSE_PW_LIMIT_RANGES, | 672 | ETHTOOL_A_C33_PSE_PW_LIMIT_RANGES, |
| 673 | ETHTOOL_A_PSE_PW_D_ID, | ||
| 674 | ETHTOOL_A_PSE_PRIO_MAX, | ||
| 675 | ETHTOOL_A_PSE_PRIO, | ||
| 645 | 676 | ||
| 646 | __ETHTOOL_A_PSE_CNT, | 677 | __ETHTOOL_A_PSE_CNT, |
| 647 | ETHTOOL_A_PSE_MAX = (__ETHTOOL_A_PSE_CNT - 1) | 678 | ETHTOOL_A_PSE_MAX = (__ETHTOOL_A_PSE_CNT - 1) |
| 648 | }; | 679 | }; |
| 649 | 680 | ||
| 681 | enum { | ||
| 682 | ETHTOOL_A_FLOW_ETHER = 1, | ||
| 683 | ETHTOOL_A_FLOW_IP4, | ||
| 684 | ETHTOOL_A_FLOW_IP6, | ||
| 685 | ETHTOOL_A_FLOW_TCP4, | ||
| 686 | ETHTOOL_A_FLOW_TCP6, | ||
| 687 | ETHTOOL_A_FLOW_UDP4, | ||
| 688 | ETHTOOL_A_FLOW_UDP6, | ||
| 689 | ETHTOOL_A_FLOW_SCTP4, | ||
| 690 | ETHTOOL_A_FLOW_SCTP6, | ||
| 691 | ETHTOOL_A_FLOW_AH4, | ||
| 692 | ETHTOOL_A_FLOW_AH6, | ||
| 693 | ETHTOOL_A_FLOW_ESP4, | ||
| 694 | ETHTOOL_A_FLOW_ESP6, | ||
| 695 | ETHTOOL_A_FLOW_AH_ESP4, | ||
| 696 | ETHTOOL_A_FLOW_AH_ESP6, | ||
| 697 | ETHTOOL_A_FLOW_GTPU4, | ||
| 698 | ETHTOOL_A_FLOW_GTPU6, | ||
| 699 | ETHTOOL_A_FLOW_GTPC4, | ||
| 700 | ETHTOOL_A_FLOW_GTPC6, | ||
| 701 | ETHTOOL_A_FLOW_GTPC_TEID4, | ||
| 702 | ETHTOOL_A_FLOW_GTPC_TEID6, | ||
| 703 | ETHTOOL_A_FLOW_GTPU_EH4, | ||
| 704 | ETHTOOL_A_FLOW_GTPU_EH6, | ||
| 705 | ETHTOOL_A_FLOW_GTPU_UL4, | ||
| 706 | ETHTOOL_A_FLOW_GTPU_UL6, | ||
| 707 | ETHTOOL_A_FLOW_GTPU_DL4, | ||
| 708 | ETHTOOL_A_FLOW_GTPU_DL6, | ||
| 709 | |||
| 710 | __ETHTOOL_A_FLOW_CNT, | ||
| 711 | ETHTOOL_A_FLOW_MAX = (__ETHTOOL_A_FLOW_CNT - 1) | ||
| 712 | }; | ||
| 713 | |||
| 650 | enum { | 714 | enum { |
| 651 | ETHTOOL_A_RSS_UNSPEC, | 715 | ETHTOOL_A_RSS_UNSPEC, |
| 652 | ETHTOOL_A_RSS_HEADER, | 716 | ETHTOOL_A_RSS_HEADER, |
| @@ -656,6 +720,7 @@ enum { · 3 unmodified lines | |||
| 656 | ETHTOOL_A_RSS_HKEY, | 720 | ETHTOOL_A_RSS_HKEY, |
| 657 | ETHTOOL_A_RSS_INPUT_XFRM, | 721 | ETHTOOL_A_RSS_INPUT_XFRM, |
| 658 | ETHTOOL_A_RSS_START_CONTEXT, | 722 | ETHTOOL_A_RSS_START_CONTEXT, |
| 723 | ETHTOOL_A_RSS_FLOW_HASH, | ||
| 659 | 724 | ||
| 660 | __ETHTOOL_A_RSS_CNT, | 725 | __ETHTOOL_A_RSS_CNT, |
| 661 | ETHTOOL_A_RSS_MAX = (__ETHTOOL_A_RSS_CNT - 1) | 726 | ETHTOOL_A_RSS_MAX = (__ETHTOOL_A_RSS_CNT - 1) |
| @@ -718,6 +783,14 @@ enum { · 56 unmodified lines | |||
| 718 | ETHTOOL_A_TSCONFIG_MAX = (__ETHTOOL_A_TSCONFIG_CNT - 1) | 783 | ETHTOOL_A_TSCONFIG_MAX = (__ETHTOOL_A_TSCONFIG_CNT - 1) |
| 719 | }; | 784 | }; |
| 720 | 785 | ||
| 786 | enum { | ||
| 787 | ETHTOOL_A_PSE_NTF_HEADER = 1, | ||
| 788 | ETHTOOL_A_PSE_NTF_EVENTS, | ||
| 789 | |||
| 790 | __ETHTOOL_A_PSE_NTF_CNT, | ||
| 791 | ETHTOOL_A_PSE_NTF_MAX = (__ETHTOOL_A_PSE_NTF_CNT - 1) | ||
| 792 | }; | ||
| 793 | |||
| 721 | enum { | 794 | enum { |
| 722 | ETHTOOL_MSG_USER_NONE = 0, | 795 | ETHTOOL_MSG_USER_NONE = 0, |
| 723 | ETHTOOL_MSG_STRSET_GET = 1, | 796 | ETHTOOL_MSG_STRSET_GET = 1, |
| @@ -767,6 +840,9 @@ enum { · 43 unmodified lines | |||
| 767 | ETHTOOL_MSG_PHY_GET, | 840 | ETHTOOL_MSG_PHY_GET, |
| 768 | ETHTOOL_MSG_TSCONFIG_GET, | 841 | ETHTOOL_MSG_TSCONFIG_GET, |
| 769 | ETHTOOL_MSG_TSCONFIG_SET, | 842 | ETHTOOL_MSG_TSCONFIG_SET, |
| 843 | ETHTOOL_MSG_RSS_SET, | ||
| 844 | ETHTOOL_MSG_RSS_CREATE_ACT, | ||
| 845 | ETHTOOL_MSG_RSS_DELETE_ACT, | ||
| 770 | 846 | ||
| 771 | __ETHTOOL_MSG_USER_CNT, | 847 | __ETHTOOL_MSG_USER_CNT, |
| 772 | ETHTOOL_MSG_USER_MAX = (__ETHTOOL_MSG_USER_CNT - 1) | 848 | ETHTOOL_MSG_USER_MAX = (__ETHTOOL_MSG_USER_CNT - 1) |
| @@ -822,9 +898,16 @@ enum { · 49 unmodified lines | |||
| 822 | ETHTOOL_MSG_PHY_NTF, | 898 | ETHTOOL_MSG_PHY_NTF, |
| 823 | ETHTOOL_MSG_TSCONFIG_GET_REPLY, | 899 | ETHTOOL_MSG_TSCONFIG_GET_REPLY, |
| 824 | ETHTOOL_MSG_TSCONFIG_SET_REPLY, | 900 | ETHTOOL_MSG_TSCONFIG_SET_REPLY, |
| 901 | ETHTOOL_MSG_PSE_NTF, | ||
| 902 | ETHTOOL_MSG_RSS_NTF, | ||
| 903 | ETHTOOL_MSG_RSS_CREATE_ACT_REPLY, | ||
| 904 | ETHTOOL_MSG_RSS_CREATE_NTF, | ||
| 905 | ETHTOOL_MSG_RSS_DELETE_NTF, | ||
| 825 | 906 | ||
| 826 | __ETHTOOL_MSG_KERNEL_CNT, | 907 | __ETHTOOL_MSG_KERNEL_CNT, |
| 827 | ETHTOOL_MSG_KERNEL_MAX = (__ETHTOOL_MSG_KERNEL_CNT - 1) | 908 | ETHTOOL_MSG_KERNEL_MAX = (__ETHTOOL_MSG_KERNEL_CNT - 1) |
| 828 | }; | 909 | }; |
| 829 | 910 | ||
| 911 | #define ETHTOOL_MCGRP_MONITOR_NAME "monitor" | ||
| 912 | |||
| 830 | #endif /* _UAPI_LINUX_ETHTOOL_NETLINK_GENERATED_H */ | 913 | #endif /* _UAPI_LINUX_ETHTOOL_NETLINK_GENERATED_H */ |
| @@ -78,4 +78,21 @@ · 77 unmodified lines | |||
| 78 | */ | 78 | */ |
| 79 | #define FALLOC_FL_UNSHARE_RANGE 0x40 | 79 | #define FALLOC_FL_UNSHARE_RANGE 0x40 |
| 80 | 80 | ||
| 81 | /* | ||
| 82 | * FALLOC_FL_WRITE_ZEROES zeroes a specified file range in such a way that | ||
| 83 | * subsequent writes to that range do not require further changes to the file | ||
| 84 | * mapping metadata. This flag is beneficial for subsequent pure overwriting | ||
| 85 | * within this range, as it can save on block allocation and, consequently, | ||
| 86 | * significant metadata changes. Therefore, filesystems that always require | ||
| 87 | * out-of-place writes should not support this flag. | ||
| 88 | * | ||
| 89 | * Different filesystems may implement different limitations on the | ||
| 90 | * granularity of the zeroing operation. Most will preferably be accelerated | ||
| 91 | * by submitting write zeroes command if the backing storage supports, which | ||
| 92 | * may not physically write zeros to the media. | ||
| 93 | * | ||
| 94 | * This flag cannot be specified in conjunction with the FALLOC_FL_KEEP_SIZE. | ||
| 95 | */ | ||
| 96 | #define FALLOC_FL_WRITE_ZEROES 0x80 | ||
| 97 | |||
| 81 | #endif /* _UAPI_FALLOC_H_ */ | 98 | #endif /* _UAPI_FALLOC_H_ */ |
| @@ -90,10 +90,28 @@ · 89 unmodified lines | |||
| 90 | #define DN_ATTRIB 0x00000020 /* File changed attibutes */ | 90 | #define DN_ATTRIB 0x00000020 /* File changed attibutes */ |
| 91 | #define DN_MULTISHOT 0x80000000 /* Don't remove notifier */ | 91 | #define DN_MULTISHOT 0x80000000 /* Don't remove notifier */ |
| 92 | 92 | ||
| 93 | /* Reserved kernel ranges [-100], [-10000, -40000]. */ | ||
| 93 | #define AT_FDCWD -100 /* Special value for dirfd used to | 94 | #define AT_FDCWD -100 /* Special value for dirfd used to |
| 94 | indicate openat should use the | 95 | indicate openat should use the |
| 95 | current working directory. */ | 96 | current working directory. */ |
| 96 | 97 | ||
| 98 | /* | ||
| 99 | * The concept of process and threads in userland and the kernel is a confusing | ||
| 100 | * one - within the kernel every thread is a 'task' with its own individual PID, | ||
| 101 | * however from userland's point of view threads are grouped by a single PID, | ||
| 102 | * which is that of the 'thread group leader', typically the first thread | ||
| 103 | * spawned. | ||
| 104 | * | ||
| 105 | * To cut the Gideon knot, for internal kernel usage, we refer to | ||
| 106 | * PIDFD_SELF_THREAD to refer to the current thread (or task from a kernel | ||
| 107 | * perspective), and PIDFD_SELF_THREAD_GROUP to refer to the current thread | ||
| 108 | * group leader... | ||
| 109 | */ | ||
| 110 | #define PIDFD_SELF_THREAD -10000 /* Current thread. */ | ||
| 111 | #define PIDFD_SELF_THREAD_GROUP -10001 /* Current thread group leader. */ | ||
| 112 | |||
| 113 | #define FD_PIDFS_ROOT -10002 /* Root of the pidfs filesystem */ | ||
| 114 | #define FD_INVALID -10009 /* Invalid file descriptor: -10000 - EBADF = -10009 */ | ||
| 97 | 115 | ||
| 98 | /* Generic flags for the *at(2) family of syscalls. */ | 116 | /* Generic flags for the *at(2) family of syscalls. */ |
| 99 | 117 | ||
| @@ -60,6 +60,17 @@ · 59 unmodified lines | |||
| 60 | #define RENAME_EXCHANGE (1 << 1) /* Exchange source and dest */ | 60 | #define RENAME_EXCHANGE (1 << 1) /* Exchange source and dest */ |
| 61 | #define RENAME_WHITEOUT (1 << 2) /* Whiteout source */ | 61 | #define RENAME_WHITEOUT (1 << 2) /* Whiteout source */ |
| 62 | 62 | ||
| 63 | /* | ||
| 64 | * The root inode of procfs is guaranteed to always have the same inode number. | ||
| 65 | * For programs that make heavy use of procfs, verifying that the root is a | ||
| 66 | * real procfs root and using openat2(RESOLVE_{NO_{XDEV,MAGICLINKS},BENEATH}) | ||
| 67 | * will allow you to make sure you are never tricked into operating on the | ||
| 68 | * wrong procfs file. | ||
| 69 | */ | ||
| 70 | enum procfs_ino { | ||
| 71 | PROCFS_ROOT_INO = 1, | ||
| 72 | }; | ||
| 73 | |||
| 63 | struct file_clone_range { | 74 | struct file_clone_range { |
| 64 | __s64 src_fd; | 75 | __s64 src_fd; |
| 65 | __u64 src_offset; | 76 | __u64 src_offset; |
| @@ -91,6 +102,63 @@ struct fs_sysfs_path { · 25 unmodified lines | |||
| 91 | __u8 name[128]; | 102 | __u8 name[128]; |
| 92 | }; | 103 | }; |
| 93 | 104 | ||
| 105 | /* Protection info capability flags */ | ||
| 106 | #define LBMD_PI_CAP_INTEGRITY (1 << 0) | ||
| 107 | #define LBMD_PI_CAP_REFTAG (1 << 1) | ||
| 108 | |||
| 109 | /* Checksum types for Protection Information */ | ||
| 110 | #define LBMD_PI_CSUM_NONE 0 | ||
| 111 | #define LBMD_PI_CSUM_IP 1 | ||
| 112 | #define LBMD_PI_CSUM_CRC16_T10DIF 2 | ||
| 113 | #define LBMD_PI_CSUM_CRC64_NVME 4 | ||
| 114 | |||
| 115 | /* sizeof first published struct */ | ||
| 116 | #define LBMD_SIZE_VER0 16 | ||
| 117 | |||
| 118 | /* | ||
| 119 | * Logical block metadata capability descriptor | ||
| 120 | * If the device does not support metadata, all the fields will be zero. | ||
| 121 | * Applications must check lbmd_flags to determine whether metadata is | ||
| 122 | * supported or not. | ||
| 123 | */ | ||
| 124 | struct logical_block_metadata_cap { | ||
| 125 | /* Bitmask of logical block metadata capability flags */ | ||
| 126 | __u32 lbmd_flags; | ||
| 127 | /* | ||
| 128 | * The amount of data described by each unit of logical block | ||
| 129 | * metadata | ||
| 130 | */ | ||
| 131 | __u16 lbmd_interval; | ||
| 132 | /* | ||
| 133 | * Size in bytes of the logical block metadata associated with each | ||
| 134 | * interval | ||
| 135 | */ | ||
| 136 | __u8 lbmd_size; | ||
| 137 | /* | ||
| 138 | * Size in bytes of the opaque block tag associated with each | ||
| 139 | * interval | ||
| 140 | */ | ||
| 141 | __u8 lbmd_opaque_size; | ||
| 142 | /* | ||
| 143 | * Offset in bytes of the opaque block tag within the logical block | ||
| 144 | * metadata | ||
| 145 | */ | ||
| 146 | __u8 lbmd_opaque_offset; | ||
| 147 | /* Size in bytes of the T10 PI tuple associated with each interval */ | ||
| 148 | __u8 lbmd_pi_size; | ||
| 149 | /* Offset in bytes of T10 PI tuple within the logical block metadata */ | ||
| 150 | __u8 lbmd_pi_offset; | ||
| 151 | /* T10 PI guard tag type */ | ||
| 152 | __u8 lbmd_guard_tag_type; | ||
| 153 | /* Size in bytes of the T10 PI application tag */ | ||
| 154 | __u8 lbmd_app_tag_size; | ||
| 155 | /* Size in bytes of the T10 PI reference tag */ | ||
| 156 | __u8 lbmd_ref_tag_size; | ||
| 157 | /* Size in bytes of the T10 PI storage tag */ | ||
| 158 | __u8 lbmd_storage_tag_size; | ||
| 159 | __u8 pad; | ||
| 160 | }; | ||
| 161 | |||
| 94 | /* extent-same (dedupe) ioctls; these MUST match the btrfs ioctl definitions */ | 162 | /* extent-same (dedupe) ioctls; these MUST match the btrfs ioctl definitions */ |
| 95 | #define FILE_DEDUPE_RANGE_SAME 0 | 163 | #define FILE_DEDUPE_RANGE_SAME 0 |
| 96 | #define FILE_DEDUPE_RANGE_DIFFERS 1 | 164 | #define FILE_DEDUPE_RANGE_DIFFERS 1 |
| @@ -148,6 +216,24 @@ struct fsxattr { · 51 unmodified lines | |||
| 148 | unsigned char fsx_pad[8]; | 216 | unsigned char fsx_pad[8]; |
| 149 | }; | 217 | }; |
| 150 | 218 | ||
| 219 | /* | ||
| 220 | * Variable size structure for file_[sg]et_attr(). | ||
| 221 | * | ||
| 222 | * Note. This is alternative to the structure 'struct file_kattr'/'struct fsxattr'. | ||
| 223 | * As this structure is passed to/from userspace with its size, this can | ||
| 224 | * be versioned based on the size. | ||
| 225 | */ | ||
| 226 | struct file_attr { | ||
| 227 | __u64 fa_xflags; /* xflags field value (get/set) */ | ||
| 228 | __u32 fa_extsize; /* extsize field value (get/set)*/ | ||
| 229 | __u32 fa_nextents; /* nextents field value (get) */ | ||
| 230 | __u32 fa_projid; /* project identifier (get/set) */ | ||
| 231 | __u32 fa_cowextsize; /* CoW extsize field value (get/set) */ | ||
| 232 | }; | ||
| 233 | |||
| 234 | #define FILE_ATTR_SIZE_VER0 24 | ||
| 235 | #define FILE_ATTR_SIZE_LATEST FILE_ATTR_SIZE_VER0 | ||
| 236 | |||
| 151 | /* | 237 | /* |
| 152 | * Flags for the fsx_xflags field | 238 | * Flags for the fsx_xflags field |
| 153 | */ | 239 | */ |
| @@ -247,6 +333,8 @@ struct fsxattr { · 93 unmodified lines | |||
| 247 | * also /sys/kernel/debug/ for filesystems with debugfs exports | 333 | * also /sys/kernel/debug/ for filesystems with debugfs exports |
| 248 | */ | 334 | */ |
| 249 | #define FS_IOC_GETFSSYSFSPATH _IOR(0x15, 1, struct fs_sysfs_path) | 335 | #define FS_IOC_GETFSSYSFSPATH _IOR(0x15, 1, struct fs_sysfs_path) |
| 336 | /* Get logical block metadata capability details */ | ||
| 337 | #define FS_IOC_GETLBMD_CAP _IOWR(0x15, 2, struct logical_block_metadata_cap) | ||
| 250 | 338 | ||
| 251 | /* | 339 | /* |
| 252 | * Inode flags (FS_IOC_GETFLAGS / FS_IOC_SETFLAGS) | 340 | * Inode flags (FS_IOC_GETFLAGS / FS_IOC_SETFLAGS) |
| @@ -45,6 +45,7 @@ enum { · 44 unmodified lines | |||
| 45 | HANDSHAKE_A_ACCEPT_PEER_IDENTITY, | 45 | HANDSHAKE_A_ACCEPT_PEER_IDENTITY, |
| 46 | HANDSHAKE_A_ACCEPT_CERTIFICATE, | 46 | HANDSHAKE_A_ACCEPT_CERTIFICATE, |
| 47 | HANDSHAKE_A_ACCEPT_PEERNAME, | 47 | HANDSHAKE_A_ACCEPT_PEERNAME, |
| 48 | HANDSHAKE_A_ACCEPT_KEYRING, | ||
| 48 | 49 | ||
| 49 | __HANDSHAKE_A_ACCEPT_MAX, | 50 | __HANDSHAKE_A_ACCEPT_MAX, |
| 50 | HANDSHAKE_A_ACCEPT_MAX = (__HANDSHAKE_A_ACCEPT_MAX - 1) | 51 | HANDSHAKE_A_ACCEPT_MAX = (__HANDSHAKE_A_ACCEPT_MAX - 1) |
| @@ -21,7 +21,8 @@ · 20 unmodified lines | |||
| 21 | * | 21 | * |
| 22 | * @flags: | 22 | * @flags: |
| 23 | * Supported by all adapters: | 23 | * Supported by all adapters: |
| 24 | * %I2C_M_RD: read data (from slave to master). Guaranteed to be 0x0001! | 24 | * %I2C_M_RD: read data (from slave to master). Guaranteed to be 0x0001! If |
| 25 | * not set, the transaction is interpreted as write. | ||
| 25 | * | 26 | * |
| 26 | * Optional: | 27 | * Optional: |
| 27 | * %I2C_M_DMA_SAFE: the buffer of this message is DMA safe. Makes only sense | 28 | * %I2C_M_DMA_SAFE: the buffer of this message is DMA safe. Makes only sense |
| @@ -1398,6 +1398,7 @@ enum { · 1397 unmodified lines | |||
| 1398 | IFLA_VXLAN_LOCALBYPASS, | 1398 | IFLA_VXLAN_LOCALBYPASS, |
| 1399 | IFLA_VXLAN_LABEL_POLICY, /* IPv6 flow label policy; ifla_vxlan_label_policy */ | 1399 | IFLA_VXLAN_LABEL_POLICY, /* IPv6 flow label policy; ifla_vxlan_label_policy */ |
| 1400 | IFLA_VXLAN_RESERVED_BITS, | 1400 | IFLA_VXLAN_RESERVED_BITS, |
| 1401 | IFLA_VXLAN_MC_ROUTE, | ||
| 1401 | __IFLA_VXLAN_MAX | 1402 | __IFLA_VXLAN_MAX |
| 1402 | }; | 1403 | }; |
| 1403 | #define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1) | 1404 | #define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1) |
| @@ -1534,6 +1535,7 @@ enum { · 130 unmodified lines | |||
| 1534 | IFLA_BOND_MISSED_MAX, | 1535 | IFLA_BOND_MISSED_MAX, |
| 1535 | IFLA_BOND_NS_IP6_TARGET, | 1536 | IFLA_BOND_NS_IP6_TARGET, |
| 1536 | IFLA_BOND_COUPLED_CONTROL, | 1537 | IFLA_BOND_COUPLED_CONTROL, |
| 1538 | IFLA_BOND_BROADCAST_NEIGH, | ||
| 1537 | __IFLA_BOND_MAX, | 1539 | __IFLA_BOND_MAX, |
| 1538 | }; | 1540 | }; |
| 1539 | 1541 | ||
| @@ -93,6 +93,15 @@ · 92 unmodified lines | |||
| 93 | #define TUN_F_USO4 0x20 /* I can handle USO for IPv4 packets */ | 93 | #define TUN_F_USO4 0x20 /* I can handle USO for IPv4 packets */ |
| 94 | #define TUN_F_USO6 0x40 /* I can handle USO for IPv6 packets */ | 94 | #define TUN_F_USO6 0x40 /* I can handle USO for IPv6 packets */ |
| 95 | 95 | ||
| 96 | /* I can handle TSO/USO for UDP tunneled packets */ | ||
| 97 | #define TUN_F_UDP_TUNNEL_GSO 0x080 | ||
| 98 | |||
| 99 | /* | ||
| 100 | * I can handle TSO/USO for UDP tunneled packets requiring csum offload for | ||
| 101 | * the outer header | ||
| 102 | */ | ||
| 103 | #define TUN_F_UDP_TUNNEL_GSO_CSUM 0x100 | ||
| 104 | |||
| 96 | /* Protocol info prepended to the packets (when IFF_NO_PI is not set) */ | 105 | /* Protocol info prepended to the packets (when IFF_NO_PI is not set) */ |
| 97 | #define TUN_PKT_STRIP 0x0001 | 106 | #define TUN_PKT_STRIP 0x0001 |
| 98 | struct tun_pi { | 107 | struct tun_pi { |
| @@ -79,6 +79,7 @@ struct xdp_mmap_offsets { · 78 unmodified lines | |||
| 79 | #define XDP_UMEM_COMPLETION_RING 6 | 79 | #define XDP_UMEM_COMPLETION_RING 6 |
| 80 | #define XDP_STATISTICS 7 | 80 | #define XDP_STATISTICS 7 |
| 81 | #define XDP_OPTIONS 8 | 81 | #define XDP_OPTIONS 8 |
| 82 | #define XDP_MAX_TX_SKB_BUDGET 9 | ||
| 82 | 83 | ||
| 83 | struct xdp_umem_reg { | 84 | struct xdp_umem_reg { |
| 84 | __u64 addr; /* Start of packet data area */ | 85 | __u64 addr; /* Start of packet data area */ |
| @@ -152,7 +152,6 @@ struct in6_flowlabel_req { · 151 unmodified lines | |||
| 152 | /* | 152 | /* |
| 153 | * IPV6 socket options | 153 | * IPV6 socket options |
| 154 | */ | 154 | */ |
| 155 | #if __UAPI_DEF_IPV6_OPTIONS | ||
| 156 | #define IPV6_ADDRFORM 1 | 155 | #define IPV6_ADDRFORM 1 |
| 157 | #define IPV6_2292PKTINFO 2 | 156 | #define IPV6_2292PKTINFO 2 |
| 158 | #define IPV6_2292HOPOPTS 3 | 157 | #define IPV6_2292HOPOPTS 3 |
| @@ -169,8 +168,10 @@ struct in6_flowlabel_req { · 10 unmodified lines | |||
| 169 | #define IPV6_MULTICAST_IF 17 | 168 | #define IPV6_MULTICAST_IF 17 |
| 170 | #define IPV6_MULTICAST_HOPS 18 | 169 | #define IPV6_MULTICAST_HOPS 18 |
| 171 | #define IPV6_MULTICAST_LOOP 19 | 170 | #define IPV6_MULTICAST_LOOP 19 |
| 171 | #if __UAPI_DEF_IPV6_OPTIONS | ||
| 172 | #define IPV6_ADD_MEMBERSHIP 20 | 172 | #define IPV6_ADD_MEMBERSHIP 20 |
| 173 | #define IPV6_DROP_MEMBERSHIP 21 | 173 | #define IPV6_DROP_MEMBERSHIP 21 |
| 174 | #endif | ||
| 174 | #define IPV6_ROUTER_ALERT 22 | 175 | #define IPV6_ROUTER_ALERT 22 |
| 175 | #define IPV6_MTU_DISCOVER 23 | 176 | #define IPV6_MTU_DISCOVER 23 |
| 176 | #define IPV6_MTU 24 | 177 | #define IPV6_MTU 24 |
| @@ -203,7 +204,6 @@ struct in6_flowlabel_req { · 26 unmodified lines | |||
| 203 | #define IPV6_IPSEC_POLICY 34 | 204 | #define IPV6_IPSEC_POLICY 34 |
| 204 | #define IPV6_XFRM_POLICY 35 | 205 | #define IPV6_XFRM_POLICY 35 |
| 205 | #define IPV6_HDRINCL 36 | 206 | #define IPV6_HDRINCL 36 |
| 206 | #endif | ||
| 207 | 207 | ||
| 208 | /* | 208 | /* |
| 209 | * Multicast: | 209 | * Multicast: |
| @@ -601,6 +601,11 @@ · 600 unmodified lines | |||
| 601 | #define BTN_DPAD_LEFT 0x222 | 601 | #define BTN_DPAD_LEFT 0x222 |
| 602 | #define BTN_DPAD_RIGHT 0x223 | 602 | #define BTN_DPAD_RIGHT 0x223 |
| 603 | 603 | ||
| 604 | #define BTN_GRIPL 0x224 | ||
| 605 | #define BTN_GRIPR 0x225 | ||
| 606 | #define BTN_GRIPL2 0x226 | ||
| 607 | #define BTN_GRIPR2 0x227 | ||
| 608 | |||
| 604 | #define KEY_ALS_TOGGLE 0x230 /* Ambient light sensor */ | 609 | #define KEY_ALS_TOGGLE 0x230 /* Ambient light sensor */ |
| 605 | #define KEY_ROTATE_LOCK_TOGGLE 0x231 /* Display rotation lock */ | 610 | #define KEY_ROTATE_LOCK_TOGGLE 0x231 /* Display rotation lock */ |
| 606 | #define KEY_REFRESH_RATE_TOGGLE 0x232 /* Display refresh rate toggle */ | 611 | #define KEY_REFRESH_RATE_TOGGLE 0x232 /* Display refresh rate toggle */ |
| @@ -765,6 +770,9 @@ · 158 unmodified lines | |||
| 765 | #define KEY_KBD_LCD_MENU4 0x2bb | 770 | #define KEY_KBD_LCD_MENU4 0x2bb |
| 766 | #define KEY_KBD_LCD_MENU5 0x2bc | 771 | #define KEY_KBD_LCD_MENU5 0x2bc |
| 767 | 772 | ||
| 773 | /* Performance Boost key (Alienware)/G-Mode key (Dell) */ | ||
| 774 | #define KEY_PERFORMANCE 0x2bd | ||
| 775 | |||
| 768 | #define BTN_TRIGGER_HAPPY 0x2c0 | 776 | #define BTN_TRIGGER_HAPPY 0x2c0 |
| 769 | #define BTN_TRIGGER_HAPPY1 0x2c0 | 777 | #define BTN_TRIGGER_HAPPY1 0x2c0 |
| 770 | #define BTN_TRIGGER_HAPPY2 0x2c1 | 778 | #define BTN_TRIGGER_HAPPY2 0x2c1 |
| @@ -275,6 +275,7 @@ struct input_mask { · 274 unmodified lines | |||
| 275 | #define BUS_CEC 0x1E | 275 | #define BUS_CEC 0x1E |
| 276 | #define BUS_INTEL_ISHTP 0x1F | 276 | #define BUS_INTEL_ISHTP 0x1F |
| 277 | #define BUS_AMD_SFH 0x20 | 277 | #define BUS_AMD_SFH 0x20 |
| 278 | #define BUS_SDW 0x21 | ||
| 278 | 279 | ||
| 279 | /* | 280 | /* |
| 280 | * MT_TOOL types | 281 | * MT_TOOL types |
| @@ -50,7 +50,7 @@ struct io_uring_sqe { · 49 unmodified lines | |||
| 50 | }; | 50 | }; |
| 51 | __u32 len; /* buffer size or number of iovecs */ | 51 | __u32 len; /* buffer size or number of iovecs */ |
| 52 | union { | 52 | union { |
| 53 | __kernel_rwf_t rw_flags; | 53 | __u32 rw_flags; |
| 54 | __u32 fsync_flags; | 54 | __u32 fsync_flags; |
| 55 | __u16 poll_events; /* compatibility */ | 55 | __u16 poll_events; /* compatibility */ |
| 56 | __u32 poll32_events; /* word-reversed for BE */ | 56 | __u32 poll32_events; /* word-reversed for BE */ |
| @@ -392,12 +392,16 @@ enum io_uring_op { · 335 unmodified lines | |||
| 392 | * the starting buffer ID in cqe->flags as per | 392 | * the starting buffer ID in cqe->flags as per |
| 393 | * usual for provided buffer usage. The buffers | 393 | * usual for provided buffer usage. The buffers |
| 394 | * will be contiguous from the starting buffer ID. | 394 | * will be contiguous from the starting buffer ID. |
| 395 | * | ||
| 396 | * IORING_SEND_VECTORIZED If set, SEND[_ZC] will take a pointer to a io_vec | ||
| 397 | * to allow vectorized send operations. | ||
| 395 | */ | 398 | */ |
| 396 | #define IORING_RECVSEND_POLL_FIRST (1U << 0) | 399 | #define IORING_RECVSEND_POLL_FIRST (1U << 0) |
| 397 | #define IORING_RECV_MULTISHOT (1U << 1) | 400 | #define IORING_RECV_MULTISHOT (1U << 1) |
| 398 | #define IORING_RECVSEND_FIXED_BUF (1U << 2) | 401 | #define IORING_RECVSEND_FIXED_BUF (1U << 2) |
| 399 | #define IORING_SEND_ZC_REPORT_USAGE (1U << 3) | 402 | #define IORING_SEND_ZC_REPORT_USAGE (1U << 3) |
| 400 | #define IORING_RECVSEND_BUNDLE (1U << 4) | 403 | #define IORING_RECVSEND_BUNDLE (1U << 4) |
| 404 | #define IORING_SEND_VECTORIZED (1U << 5) | ||
| 401 | 405 | ||
| 402 | /* | 406 | /* |
| 403 | * cqe.res for IORING_CQE_F_NOTIF if | 407 | * cqe.res for IORING_CQE_F_NOTIF if |
| @@ -449,6 +453,7 @@ enum io_uring_msg_ring_flags { · 45 unmodified lines | |||
| 449 | #define IORING_NOP_FILE (1U << 1) | 453 | #define IORING_NOP_FILE (1U << 1) |
| 450 | #define IORING_NOP_FIXED_FILE (1U << 2) | 454 | #define IORING_NOP_FIXED_FILE (1U << 2) |
| 451 | #define IORING_NOP_FIXED_BUFFER (1U << 3) | 455 | #define IORING_NOP_FIXED_BUFFER (1U << 3) |
| 456 | #define IORING_NOP_TW (1U << 4) | ||
| 452 | 457 | ||
| 453 | /* | 458 | /* |
| 454 | * IO completion data structure (Completion Queue Entry) | 459 | * IO completion data structure (Completion Queue Entry) |
| @@ -968,6 +973,22 @@ enum io_uring_socket_op { · 513 unmodified lines | |||
| 968 | SOCKET_URING_OP_SIOCOUTQ, | 973 | SOCKET_URING_OP_SIOCOUTQ, |
| 969 | SOCKET_URING_OP_GETSOCKOPT, | 974 | SOCKET_URING_OP_GETSOCKOPT, |
| 970 | SOCKET_URING_OP_SETSOCKOPT, | 975 | SOCKET_URING_OP_SETSOCKOPT, |
| 976 | SOCKET_URING_OP_TX_TIMESTAMP, | ||
| 977 | }; | ||
| 978 | |||
| 979 | /* | ||
| 980 | * SOCKET_URING_OP_TX_TIMESTAMP definitions | ||
| 981 | */ | ||
| 982 | |||
| 983 | #define IORING_TIMESTAMP_HW_SHIFT 16 | ||
| 984 | /* The cqe->flags bit from which the timestamp type is stored */ | ||
| 985 | #define IORING_TIMESTAMP_TYPE_SHIFT (IORING_TIMESTAMP_HW_SHIFT + 1) | ||
| 986 | /* The cqe->flags flag signifying whether it's a hardware timestamp */ | ||
| 987 | #define IORING_CQE_F_TSTAMP_HW ((__u32)1 << IORING_TIMESTAMP_HW_SHIFT) | ||
| 988 | |||
| 989 | struct io_timespec { | ||
| 990 | __u64 tv_sec; | ||
| 991 | __u64 tv_nsec; | ||
| 971 | }; | 992 | }; |
| 972 | 993 | ||
| 973 | /* Zero copy receive refill queue entry */ | 994 | /* Zero copy receive refill queue entry */ |
| @@ -0,0 +1,47 @@ | |||
| 1 | #ifndef LINUX_IO_URING_MOCK_FILE_H | ||
| 2 | #define LINUX_IO_URING_MOCK_FILE_H | ||
| 3 | |||
| 4 | #include <linux/types.h> | ||
| 5 | |||
| 6 | enum { | ||
| 7 | IORING_MOCK_FEAT_CMD_COPY, | ||
| 8 | IORING_MOCK_FEAT_RW_ZERO, | ||
| 9 | IORING_MOCK_FEAT_RW_NOWAIT, | ||
| 10 | IORING_MOCK_FEAT_RW_ASYNC, | ||
| 11 | IORING_MOCK_FEAT_POLL, | ||
| 12 | |||
| 13 | IORING_MOCK_FEAT_END, | ||
| 14 | }; | ||
| 15 | |||
| 16 | struct io_uring_mock_probe { | ||
| 17 | __u64 features; | ||
| 18 | __u64 __resv[9]; | ||
| 19 | }; | ||
| 20 | |||
| 21 | enum { | ||
| 22 | IORING_MOCK_CREATE_F_SUPPORT_NOWAIT = 1, | ||
| 23 | IORING_MOCK_CREATE_F_POLL = 2, | ||
| 24 | }; | ||
| 25 | |||
| 26 | struct io_uring_mock_create { | ||
| 27 | __u32 out_fd; | ||
| 28 | __u32 flags; | ||
| 29 | __u64 file_size; | ||
| 30 | __u64 rw_delay_ns; | ||
| 31 | __u64 __resv[13]; | ||
| 32 | }; | ||
| 33 | |||
| 34 | enum { | ||
| 35 | IORING_MOCK_MGR_CMD_PROBE, | ||
| 36 | IORING_MOCK_MGR_CMD_CREATE, | ||
| 37 | }; | ||
| 38 | |||
| 39 | enum { | ||
| 40 | IORING_MOCK_CMD_COPY_REGBUF, | ||
| 41 | }; | ||
| 42 | |||
| 43 | enum { | ||
| 44 | IORING_MOCK_COPY_FROM = 1, | ||
| 45 | }; | ||
| 46 | |||
| 47 | #endif | ||
| @@ -56,6 +56,7 @@ enum { · 55 unmodified lines | |||
| 56 | IOMMUFD_CMD_VDEVICE_ALLOC = 0x91, | 56 | IOMMUFD_CMD_VDEVICE_ALLOC = 0x91, |
| 57 | IOMMUFD_CMD_IOAS_CHANGE_PROCESS = 0x92, | 57 | IOMMUFD_CMD_IOAS_CHANGE_PROCESS = 0x92, |
| 58 | IOMMUFD_CMD_VEVENTQ_ALLOC = 0x93, | 58 | IOMMUFD_CMD_VEVENTQ_ALLOC = 0x93, |
| 59 | IOMMUFD_CMD_HW_QUEUE_ALLOC = 0x94, | ||
| 59 | }; | 60 | }; |
| 60 | 61 | ||
| 61 | /** | 62 | /** |
| @@ -590,17 +591,44 @@ struct iommu_hw_info_arm_smmuv3 { · 528 unmodified lines | |||
| 590 | __u32 aidr; | 591 | __u32 aidr; |
| 591 | }; | 592 | }; |
| 592 | 593 | ||
| 594 | /** | ||
| 595 | * struct iommu_hw_info_tegra241_cmdqv - NVIDIA Tegra241 CMDQV Hardware | ||
| 596 | * Information (IOMMU_HW_INFO_TYPE_TEGRA241_CMDQV) | ||
| 597 | * | ||
| 598 | * @flags: Must be 0 | ||
| 599 | * @version: Version number for the CMDQ-V HW for PARAM bits[03:00] | ||
| 600 | * @log2vcmdqs: Log2 of the total number of VCMDQs for PARAM bits[07:04] | ||
| 601 | * @log2vsids: Log2 of the total number of SID replacements for PARAM bits[15:12] | ||
| 602 | * @__reserved: Must be 0 | ||
| 603 | * | ||
| 604 | * VMM can use these fields directly in its emulated global PARAM register. Note | ||
| 605 | * that only one Virtual Interface (VINTF) should be exposed to a VM, i.e. PARAM | ||
| 606 | * bits[11:08] should be set to 0 for log2 of the total number of VINTFs. | ||
| 607 | */ | ||
| 608 | struct iommu_hw_info_tegra241_cmdqv { | ||
| 609 | __u32 flags; | ||
| 610 | __u8 version; | ||
| 611 | __u8 log2vcmdqs; | ||
| 612 | __u8 log2vsids; | ||
| 613 | __u8 __reserved; | ||
| 614 | }; | ||
| 615 | |||
| 593 | /** | 616 | /** |
| 594 | * enum iommu_hw_info_type - IOMMU Hardware Info Types | 617 | * enum iommu_hw_info_type - IOMMU Hardware Info Types |
| 595 | * @IOMMU_HW_INFO_TYPE_NONE: Used by the drivers that do not report hardware | 618 | * @IOMMU_HW_INFO_TYPE_NONE: Output by the drivers that do not report hardware |
| 596 | * info | 619 | * info |
| 620 | * @IOMMU_HW_INFO_TYPE_DEFAULT: Input to request for a default type | ||
| 597 | * @IOMMU_HW_INFO_TYPE_INTEL_VTD: Intel VT-d iommu info type | 621 | * @IOMMU_HW_INFO_TYPE_INTEL_VTD: Intel VT-d iommu info type |
| 598 | * @IOMMU_HW_INFO_TYPE_ARM_SMMUV3: ARM SMMUv3 iommu info type | 622 | * @IOMMU_HW_INFO_TYPE_ARM_SMMUV3: ARM SMMUv3 iommu info type |
| 623 | * @IOMMU_HW_INFO_TYPE_TEGRA241_CMDQV: NVIDIA Tegra241 CMDQV (extension for ARM | ||
| 624 | * SMMUv3) info type | ||
| 599 | */ | 625 | */ |
| 600 | enum iommu_hw_info_type { | 626 | enum iommu_hw_info_type { |
| 601 | IOMMU_HW_INFO_TYPE_NONE = 0, | 627 | IOMMU_HW_INFO_TYPE_NONE = 0, |
| 628 | IOMMU_HW_INFO_TYPE_DEFAULT = 0, | ||
| 602 | IOMMU_HW_INFO_TYPE_INTEL_VTD = 1, | 629 | IOMMU_HW_INFO_TYPE_INTEL_VTD = 1, |
| 603 | IOMMU_HW_INFO_TYPE_ARM_SMMUV3 = 2, | 630 | IOMMU_HW_INFO_TYPE_ARM_SMMUV3 = 2, |
| 631 | IOMMU_HW_INFO_TYPE_TEGRA241_CMDQV = 3, | ||
| 604 | }; | 632 | }; |
| 605 | 633 | ||
| 606 | /** | 634 | /** |
| @@ -625,6 +653,15 @@ enum iommufd_hw_capabilities { · 18 unmodified lines | |||
| 625 | IOMMU_HW_CAP_PCI_PASID_PRIV = 1 << 2, | 653 | IOMMU_HW_CAP_PCI_PASID_PRIV = 1 << 2, |
| 626 | }; | 654 | }; |
| 627 | 655 | ||
| 656 | /** | ||
| 657 | * enum iommufd_hw_info_flags - Flags for iommu_hw_info | ||
| 658 | * @IOMMU_HW_INFO_FLAG_INPUT_TYPE: If set, @in_data_type carries an input type | ||
| 659 | * for user space to request for a specific info | ||
| 660 | */ | ||
| 661 | enum iommufd_hw_info_flags { | ||
| 662 | IOMMU_HW_INFO_FLAG_INPUT_TYPE = 1 << 0, | ||
| 663 | }; | ||
| 664 | |||
| 628 | /** | 665 | /** |
| 629 | * struct iommu_hw_info - ioctl(IOMMU_GET_HW_INFO) | 666 | * struct iommu_hw_info - ioctl(IOMMU_GET_HW_INFO) |
| 630 | * @size: sizeof(struct iommu_hw_info) | 667 | * @size: sizeof(struct iommu_hw_info) |
| @@ -634,6 +671,12 @@ enum iommufd_hw_capabilities { · 3 unmodified lines | |||
| 634 | * data that kernel supports | 671 | * data that kernel supports |
| 635 | * @data_uptr: User pointer to a user-space buffer used by the kernel to fill | 672 | * @data_uptr: User pointer to a user-space buffer used by the kernel to fill |
| 636 | * the iommu type specific hardware information data | 673 | * the iommu type specific hardware information data |
| 674 | * @in_data_type: This shares the same field with @out_data_type, making it be | ||
| 675 | * a bidirectional field. When IOMMU_HW_INFO_FLAG_INPUT_TYPE is | ||
| 676 | * set, an input type carried via this @in_data_type field will | ||
| 677 | * be valid, requesting for the info data to the given type. If | ||
| 678 | * IOMMU_HW_INFO_FLAG_INPUT_TYPE is unset, any input value will | ||
| 679 | * be seen as IOMMU_HW_INFO_TYPE_DEFAULT | ||
| 637 | * @out_data_type: Output the iommu hardware info type as defined in the enum | 680 | * @out_data_type: Output the iommu hardware info type as defined in the enum |
| 638 | * iommu_hw_info_type. | 681 | * iommu_hw_info_type. |
| 639 | * @out_capabilities: Output the generic iommu capability info type as defined | 682 | * @out_capabilities: Output the generic iommu capability info type as defined |
| @@ -663,7 +706,10 @@ struct iommu_hw_info { · 23 unmodified lines | |||
| 663 | __u32 dev_id; | 706 | __u32 dev_id; |
| 664 | __u32 data_len; | 707 | __u32 data_len; |
| 665 | __aligned_u64 data_uptr; | 708 | __aligned_u64 data_uptr; |
| 666 | __u32 out_data_type; | 709 | union { |
| 710 | __u32 in_data_type; | ||
| 711 | __u32 out_data_type; | ||
| 712 | }; | ||
| 667 | __u8 out_max_pasid_log2; | 713 | __u8 out_max_pasid_log2; |
| 668 | __u8 __reserved[3]; | 714 | __u8 __reserved[3]; |
| 669 | __aligned_u64 out_capabilities; | 715 | __aligned_u64 out_capabilities; |
| @@ -951,10 +997,29 @@ struct iommu_fault_alloc { · 281 unmodified lines | |||
| 951 | * enum iommu_viommu_type - Virtual IOMMU Type | 997 | * enum iommu_viommu_type - Virtual IOMMU Type |
| 952 | * @IOMMU_VIOMMU_TYPE_DEFAULT: Reserved for future use | 998 | * @IOMMU_VIOMMU_TYPE_DEFAULT: Reserved for future use |
| 953 | * @IOMMU_VIOMMU_TYPE_ARM_SMMUV3: ARM SMMUv3 driver specific type | 999 | * @IOMMU_VIOMMU_TYPE_ARM_SMMUV3: ARM SMMUv3 driver specific type |
| 1000 | * @IOMMU_VIOMMU_TYPE_TEGRA241_CMDQV: NVIDIA Tegra241 CMDQV (extension for ARM | ||
| 1001 | * SMMUv3) enabled ARM SMMUv3 type | ||
| 954 | */ | 1002 | */ |
| 955 | enum iommu_viommu_type { | 1003 | enum iommu_viommu_type { |
| 956 | IOMMU_VIOMMU_TYPE_DEFAULT = 0, | 1004 | IOMMU_VIOMMU_TYPE_DEFAULT = 0, |
| 957 | IOMMU_VIOMMU_TYPE_ARM_SMMUV3 = 1, | 1005 | IOMMU_VIOMMU_TYPE_ARM_SMMUV3 = 1, |
| 1006 | IOMMU_VIOMMU_TYPE_TEGRA241_CMDQV = 2, | ||
| 1007 | }; | ||
| 1008 | |||
| 1009 | /** | ||
| 1010 | * struct iommu_viommu_tegra241_cmdqv - NVIDIA Tegra241 CMDQV Virtual Interface | ||
| 1011 | * (IOMMU_VIOMMU_TYPE_TEGRA241_CMDQV) | ||
| 1012 | * @out_vintf_mmap_offset: mmap offset argument for VINTF's page0 | ||
| 1013 | * @out_vintf_mmap_length: mmap length argument for VINTF's page0 | ||
| 1014 | * | ||
| 1015 | * Both @out_vintf_mmap_offset and @out_vintf_mmap_length are reported by kernel | ||
| 1016 | * for user space to mmap the VINTF page0 from the host physical address space | ||
| 1017 | * to the guest physical address space so that a guest kernel can directly R/W | ||
| 1018 | * access to the VINTF page0 in order to control its virtual command queues. | ||
| 1019 | */ | ||
| 1020 | struct iommu_viommu_tegra241_cmdqv { | ||
| 1021 | __aligned_u64 out_vintf_mmap_offset; | ||
| 1022 | __aligned_u64 out_vintf_mmap_length; | ||
| 958 | }; | 1023 | }; |
| 959 | 1024 | ||
| 960 | /** | 1025 | /** |
| @@ -965,6 +1030,9 @@ enum iommu_viommu_type { · 4 unmodified lines | |||
| 965 | * @dev_id: The device's physical IOMMU will be used to back the virtual IOMMU | 1030 | * @dev_id: The device's physical IOMMU will be used to back the virtual IOMMU |
| 966 | * @hwpt_id: ID of a nesting parent HWPT to associate to | 1031 | * @hwpt_id: ID of a nesting parent HWPT to associate to |
| 967 | * @out_viommu_id: Output virtual IOMMU ID for the allocated object | 1032 | * @out_viommu_id: Output virtual IOMMU ID for the allocated object |
| 1033 | * @data_len: Length of the type specific data | ||
| 1034 | * @__reserved: Must be 0 | ||
| 1035 | * @data_uptr: User pointer to a driver-specific virtual IOMMU data | ||
| 968 | * | 1036 | * |
| 969 | * Allocate a virtual IOMMU object, representing the underlying physical IOMMU's | 1037 | * Allocate a virtual IOMMU object, representing the underlying physical IOMMU's |
| 970 | * virtualization support that is a security-isolated slice of the real IOMMU HW | 1038 | * virtualization support that is a security-isolated slice of the real IOMMU HW |
| @@ -985,6 +1053,9 @@ struct iommu_viommu_alloc { · 14 unmodified lines | |||
| 985 | __u32 dev_id; | 1053 | __u32 dev_id; |
| 986 | __u32 hwpt_id; | 1054 | __u32 hwpt_id; |
| 987 | __u32 out_viommu_id; | 1055 | __u32 out_viommu_id; |
| 1056 | __u32 data_len; | ||
| 1057 | __u32 __reserved; | ||
| 1058 | __aligned_u64 data_uptr; | ||
| 988 | }; | 1059 | }; |
| 989 | #define IOMMU_VIOMMU_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_VIOMMU_ALLOC) | 1060 | #define IOMMU_VIOMMU_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_VIOMMU_ALLOC) |
| 990 | 1061 | ||
| @@ -995,10 +1066,15 @@ struct iommu_viommu_alloc { · 4 unmodified lines | |||
| 995 | * @dev_id: The physical device to allocate a virtual instance on the vIOMMU | 1066 | * @dev_id: The physical device to allocate a virtual instance on the vIOMMU |
| 996 | * @out_vdevice_id: Object handle for the vDevice. Pass to IOMMU_DESTORY | 1067 | * @out_vdevice_id: Object handle for the vDevice. Pass to IOMMU_DESTORY |
| 997 | * @virt_id: Virtual device ID per vIOMMU, e.g. vSID of ARM SMMUv3, vDeviceID | 1068 | * @virt_id: Virtual device ID per vIOMMU, e.g. vSID of ARM SMMUv3, vDeviceID |
| 998 | * of AMD IOMMU, and vRID of a nested Intel VT-d to a Context Table | 1069 | * of AMD IOMMU, and vRID of Intel VT-d |
| 999 | * | 1070 | * |
| 1000 | * Allocate a virtual device instance (for a physical device) against a vIOMMU. | 1071 | * Allocate a virtual device instance (for a physical device) against a vIOMMU. |
| 1001 | * This instance holds the device's information (related to its vIOMMU) in a VM. | 1072 | * This instance holds the device's information (related to its vIOMMU) in a VM. |
| 1073 | * User should use IOMMU_DESTROY to destroy the virtual device before | ||
| 1074 | * destroying the physical device (by closing vfio_cdev fd). Otherwise the | ||
| 1075 | * virtual device would be forcibly destroyed on physical device destruction, | ||
| 1076 | * its vdevice_id would be permanently leaked (unremovable & unreusable) until | ||
| 1077 | * iommu fd closed. | ||
| 1002 | */ | 1078 | */ |
| 1003 | struct iommu_vdevice_alloc { | 1079 | struct iommu_vdevice_alloc { |
| 1004 | __u32 size; | 1080 | __u32 size; |
| @@ -1075,10 +1151,12 @@ struct iommufd_vevent_header { · 70 unmodified lines | |||
| 1075 | * enum iommu_veventq_type - Virtual Event Queue Type | 1151 | * enum iommu_veventq_type - Virtual Event Queue Type |
| 1076 | * @IOMMU_VEVENTQ_TYPE_DEFAULT: Reserved for future use | 1152 | * @IOMMU_VEVENTQ_TYPE_DEFAULT: Reserved for future use |
| 1077 | * @IOMMU_VEVENTQ_TYPE_ARM_SMMUV3: ARM SMMUv3 Virtual Event Queue | 1153 | * @IOMMU_VEVENTQ_TYPE_ARM_SMMUV3: ARM SMMUv3 Virtual Event Queue |
| 1154 | * @IOMMU_VEVENTQ_TYPE_TEGRA241_CMDQV: NVIDIA Tegra241 CMDQV Extension IRQ | ||
| 1078 | */ | 1155 | */ |
| 1079 | enum iommu_veventq_type { | 1156 | enum iommu_veventq_type { |
| 1080 | IOMMU_VEVENTQ_TYPE_DEFAULT = 0, | 1157 | IOMMU_VEVENTQ_TYPE_DEFAULT = 0, |
| 1081 | IOMMU_VEVENTQ_TYPE_ARM_SMMUV3 = 1, | 1158 | IOMMU_VEVENTQ_TYPE_ARM_SMMUV3 = 1, |
| 1159 | IOMMU_VEVENTQ_TYPE_TEGRA241_CMDQV = 2, | ||
| 1082 | }; | 1160 | }; |
| 1083 | 1161 | ||
| 1084 | /** | 1162 | /** |
| @@ -1102,6 +1180,19 @@ struct iommu_vevent_arm_smmuv3 { · 17 unmodified lines | |||
| 1102 | __aligned_le64 evt[4]; | 1180 | __aligned_le64 evt[4]; |
| 1103 | }; | 1181 | }; |
| 1104 | 1182 | ||
| 1183 | /** | ||
| 1184 | * struct iommu_vevent_tegra241_cmdqv - Tegra241 CMDQV IRQ | ||
| 1185 | * (IOMMU_VEVENTQ_TYPE_TEGRA241_CMDQV) | ||
| 1186 | * @lvcmdq_err_map: 128-bit logical vcmdq error map, little-endian. | ||
| 1187 | * (Refer to register LVCMDQ_ERR_MAPs per VINTF ) | ||
| 1188 | * | ||
| 1189 | * The 128-bit register value from HW exclusively reflect the error bits for a | ||
| 1190 | * Virtual Interface represented by a vIOMMU object. Read and report directly. | ||
| 1191 | */ | ||
| 1192 | struct iommu_vevent_tegra241_cmdqv { | ||
| 1193 | __aligned_le64 lvcmdq_err_map[2]; | ||
| 1194 | }; | ||
| 1195 | |||
| 1105 | /** | 1196 | /** |
| 1106 | * struct iommu_veventq_alloc - ioctl(IOMMU_VEVENTQ_ALLOC) | 1197 | * struct iommu_veventq_alloc - ioctl(IOMMU_VEVENTQ_ALLOC) |
| 1107 | * @size: sizeof(struct iommu_veventq_alloc) | 1198 | * @size: sizeof(struct iommu_veventq_alloc) |
| @@ -1141,4 +1232,61 @@ struct iommu_veventq_alloc { · 33 unmodified lines | |||
| 1141 | __u32 __reserved; | 1232 | __u32 __reserved; |
| 1142 | }; | 1233 | }; |
| 1143 | #define IOMMU_VEVENTQ_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_VEVENTQ_ALLOC) | 1234 | #define IOMMU_VEVENTQ_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_VEVENTQ_ALLOC) |
| 1235 | |||
| 1236 | /** | ||
| 1237 | * enum iommu_hw_queue_type - HW Queue Type | ||
| 1238 | * @IOMMU_HW_QUEUE_TYPE_DEFAULT: Reserved for future use | ||
| 1239 | * @IOMMU_HW_QUEUE_TYPE_TEGRA241_CMDQV: NVIDIA Tegra241 CMDQV (extension for ARM | ||
| 1240 | * SMMUv3) Virtual Command Queue (VCMDQ) | ||
| 1241 | */ | ||
| 1242 | enum iommu_hw_queue_type { | ||
| 1243 | IOMMU_HW_QUEUE_TYPE_DEFAULT = 0, | ||
| 1244 | /* | ||
| 1245 | * TEGRA241_CMDQV requirements (otherwise, allocation will fail) | ||
| 1246 | * - alloc starts from the lowest @index=0 in ascending order | ||
| 1247 | * - destroy starts from the last allocated @index in descending order | ||
| 1248 | * - @base_addr must be aligned to @length in bytes and mapped in IOAS | ||
| 1249 | * - @length must be a power of 2, with a minimum 32 bytes and a maximum | ||
| 1250 | * 2 ^ idr[1].CMDQS * 16 bytes (use GET_HW_INFO call to read idr[1] | ||
| 1251 | * from struct iommu_hw_info_arm_smmuv3) | ||
| 1252 | * - suggest to back the queue memory with contiguous physical pages or | ||
| 1253 | * a single huge page with alignment of the queue size, and limit the | ||
| 1254 | * emulated vSMMU's IDR1.CMDQS to log2(huge page size / 16 bytes) | ||
| 1255 | */ | ||
| 1256 | IOMMU_HW_QUEUE_TYPE_TEGRA241_CMDQV = 1, | ||
| 1257 | }; | ||
| 1258 | |||
| 1259 | /** | ||
| 1260 | * struct iommu_hw_queue_alloc - ioctl(IOMMU_HW_QUEUE_ALLOC) | ||
| 1261 | * @size: sizeof(struct iommu_hw_queue_alloc) | ||
| 1262 | * @flags: Must be 0 | ||
| 1263 | * @viommu_id: Virtual IOMMU ID to associate the HW queue with | ||
| 1264 | * @type: One of enum iommu_hw_queue_type | ||
| 1265 | * @index: The logical index to the HW queue per virtual IOMMU for a multi-queue | ||
| 1266 | * model | ||
| 1267 | * @out_hw_queue_id: The ID of the new HW queue | ||
| 1268 | * @nesting_parent_iova: Base address of the queue memory in the guest physical | ||
| 1269 | * address space | ||
| 1270 | * @length: Length of the queue memory | ||
| 1271 | * | ||
| 1272 | * Allocate a HW queue object for a vIOMMU-specific HW-accelerated queue, which | ||
| 1273 | * allows HW to access a guest queue memory described using @nesting_parent_iova | ||
| 1274 | * and @length. | ||
| 1275 | * | ||
| 1276 | * A vIOMMU can allocate multiple queues, but it must use a different @index per | ||
| 1277 | * type to separate each allocation, e.g:: | ||
| 1278 | * | ||
| 1279 | * Type1 HW queue0, Type1 HW queue1, Type2 HW queue0, ... | ||
| 1280 | */ | ||
| 1281 | struct iommu_hw_queue_alloc { | ||
| 1282 | __u32 size; | ||
| 1283 | __u32 flags; | ||
| 1284 | __u32 viommu_id; | ||
| 1285 | __u32 type; | ||
| 1286 | __u32 index; | ||
| 1287 | __u32 out_hw_queue_id; | ||
| 1288 | __aligned_u64 nesting_parent_iova; | ||
| 1289 | __aligned_u64 length; | ||
| 1290 | }; | ||
| 1291 | #define IOMMU_HW_QUEUE_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_HW_QUEUE_ALLOC) | ||
| 1144 | #endif | 1292 | #endif |
| @@ -199,6 +199,7 @@ enum { · 198 unmodified lines | |||
| 199 | DEVCONF_NDISC_EVICT_NOCARRIER, | 199 | DEVCONF_NDISC_EVICT_NOCARRIER, |
| 200 | DEVCONF_ACCEPT_UNTRACKED_NA, | 200 | DEVCONF_ACCEPT_UNTRACKED_NA, |
| 201 | DEVCONF_ACCEPT_RA_MIN_LFT, | 201 | DEVCONF_ACCEPT_RA_MIN_LFT, |
| 202 | DEVCONF_FORCE_FORWARDING, | ||
| 202 | DEVCONF_MAX | 203 | DEVCONF_MAX |
| 203 | }; | 204 | }; |
| 204 | 205 | ||
| @@ -27,6 +27,7 @@ · 26 unmodified lines | |||
| 27 | #define KEXEC_FILE_ON_CRASH 0x00000002 | 27 | #define KEXEC_FILE_ON_CRASH 0x00000002 |
| 28 | #define KEXEC_FILE_NO_INITRAMFS 0x00000004 | 28 | #define KEXEC_FILE_NO_INITRAMFS 0x00000004 |
| 29 | #define KEXEC_FILE_DEBUG 0x00000008 | 29 | #define KEXEC_FILE_DEBUG 0x00000008 |
| 30 | #define KEXEC_FILE_NO_CMA 0x00000010 | ||
| 30 | 31 | ||
| 31 | /* These values match the ELF architecture values. | 32 | /* These values match the ELF architecture values. |
| 32 | * Unless there is a good reason that should continue to be the case. | 33 | * Unless there is a good reason that should continue to be the case. |
| @@ -178,6 +178,7 @@ struct kvm_xen_exit { · 177 unmodified lines | |||
| 178 | #define KVM_EXIT_NOTIFY 37 | 178 | #define KVM_EXIT_NOTIFY 37 |
| 179 | #define KVM_EXIT_LOONGARCH_IOCSR 38 | 179 | #define KVM_EXIT_LOONGARCH_IOCSR 38 |
| 180 | #define KVM_EXIT_MEMORY_FAULT 39 | 180 | #define KVM_EXIT_MEMORY_FAULT 39 |
| 181 | #define KVM_EXIT_TDX 40 | ||
| 181 | 182 | ||
| 182 | /* For KVM_EXIT_INTERNAL_ERROR */ | 183 | /* For KVM_EXIT_INTERNAL_ERROR */ |
| 183 | /* Emulate instruction failed. */ | 184 | /* Emulate instruction failed. */ |
| @@ -447,6 +448,31 @@ struct kvm_run { · 263 unmodified lines | |||
| 447 | __u64 gpa; | 448 | __u64 gpa; |
| 448 | __u64 size; | 449 | __u64 size; |
| 449 | } memory_fault; | 450 | } memory_fault; |
| 451 | /* KVM_EXIT_TDX */ | ||
| 452 | struct { | ||
| 453 | __u64 flags; | ||
| 454 | __u64 nr; | ||
| 455 | union { | ||
| 456 | struct { | ||
| 457 | __u64 ret; | ||
| 458 | __u64 data[5]; | ||
| 459 | } unknown; | ||
| 460 | struct { | ||
| 461 | __u64 ret; | ||
| 462 | __u64 gpa; | ||
| 463 | __u64 size; | ||
| 464 | } get_quote; | ||
| 465 | struct { | ||
| 466 | __u64 ret; | ||
| 467 | __u64 leaf; | ||
| 468 | __u64 r11, r12, r13, r14; | ||
| 469 | } get_tdvmcall_info; | ||
| 470 | struct { | ||
| 471 | __u64 ret; | ||
| 472 | __u64 vector; | ||
| 473 | } setup_event_notify; | ||
| 474 | }; | ||
| 475 | } tdx; | ||
| 450 | /* Fix the size of the union. */ | 476 | /* Fix the size of the union. */ |
| 451 | char padding[256]; | 477 | char padding[256]; |
| 452 | }; | 478 | }; |
| @@ -618,6 +644,7 @@ struct kvm_ioeventfd { · 165 unmodified lines | |||
| 618 | #define KVM_X86_DISABLE_EXITS_HLT (1 << 1) | 644 | #define KVM_X86_DISABLE_EXITS_HLT (1 << 1) |
| 619 | #define KVM_X86_DISABLE_EXITS_PAUSE (1 << 2) | 645 | #define KVM_X86_DISABLE_EXITS_PAUSE (1 << 2) |
| 620 | #define KVM_X86_DISABLE_EXITS_CSTATE (1 << 3) | 646 | #define KVM_X86_DISABLE_EXITS_CSTATE (1 << 3) |
| 647 | #define KVM_X86_DISABLE_EXITS_APERFMPERF (1 << 4) | ||
| 621 | 648 | ||
| 622 | /* for KVM_ENABLE_CAP */ | 649 | /* for KVM_ENABLE_CAP */ |
| 623 | struct kvm_enable_cap { | 650 | struct kvm_enable_cap { |
| @@ -934,6 +961,7 @@ struct kvm_enable_cap { · 310 unmodified lines | |||
| 934 | #define KVM_CAP_ARM_EL2 240 | 961 | #define KVM_CAP_ARM_EL2 240 |
| 935 | #define KVM_CAP_ARM_EL2_E2H0 241 | 962 | #define KVM_CAP_ARM_EL2_E2H0 241 |
| 936 | #define KVM_CAP_RISCV_MP_STATE_RESET 242 | 963 | #define KVM_CAP_RISCV_MP_STATE_RESET 242 |
| 964 | #define KVM_CAP_ARM_CACHEABLE_PFNMAP_SUPPORTED 243 | ||
| 937 | 965 | ||
| 938 | struct kvm_irq_routing_irqchip { | 966 | struct kvm_irq_routing_irqchip { |
| 939 | __u32 irqchip; | 967 | __u32 irqchip; |
| @@ -37,6 +37,14 @@ struct sockaddr_mctp_ext { · 36 unmodified lines | |||
| 37 | __u8 smctp_haddr[MAX_ADDR_LEN]; | 37 | __u8 smctp_haddr[MAX_ADDR_LEN]; |
| 38 | }; | 38 | }; |
| 39 | 39 | ||
| 40 | /* A "fully qualified" MCTP address, which includes the system-local network ID, | ||
| 41 | * required to uniquely resolve a routable EID. | ||
| 42 | */ | ||
| 43 | struct mctp_fq_addr { | ||
| 44 | unsigned int net; | ||
| 45 | mctp_eid_t eid; | ||
| 46 | }; | ||
| 47 | |||
| 40 | #define MCTP_NET_ANY 0x0 | 48 | #define MCTP_NET_ANY 0x0 |
| 41 | 49 | ||
| 42 | #define MCTP_ADDR_NULL 0x00 | 50 | #define MCTP_ADDR_NULL 0x00 |
| @@ -21,10 +21,11 @@ · 20 unmodified lines | |||
| 21 | /* preferred byte alignment for outputs */ | 21 | /* preferred byte alignment for outputs */ |
| 22 | #define PISP_BACK_END_OUTPUT_MAX_ALIGN 64u | 22 | #define PISP_BACK_END_OUTPUT_MAX_ALIGN 64u |
| 23 | 23 | ||
| 24 | /* minimum allowed tile width anywhere in the pipeline */ | 24 | /* minimum allowed tile sizes anywhere in the pipeline */ |
| 25 | #define PISP_BACK_END_MIN_TILE_WIDTH 16u | 25 | #define PISP_BACK_END_MIN_TILE_WIDTH 16u |
| 26 | /* minimum allowed tile width anywhere in the pipeline */ | 26 | #define PISP_BACK_END_MIN_TILE_HEIGHT 16u |
| 27 | #define PISP_BACK_END_MIN_TILE_HEIGHT 16u | 27 | #define PISP_BACK_END_MAX_TILE_WIDTH 65536u |
| 28 | #define PISP_BACK_END_MAX_TILE_HEIGHT 65536u | ||
| 28 | 29 | ||
| 29 | #define PISP_BACK_END_NUM_OUTPUTS 2 | 30 | #define PISP_BACK_END_NUM_OUTPUTS 2 |
| 30 | #define PISP_BACK_END_HOG_OUTPUT 1 | 31 | #define PISP_BACK_END_HOG_OUTPUT 1 |
| @@ -27,14 +27,14 @@ · 26 unmodified lines | |||
| 27 | * token, rem_id. | 27 | * token, rem_id. |
| 28 | * @MPTCP_EVENT_SUB_ESTABLISHED: A new subflow has been established. 'error' | 28 | * @MPTCP_EVENT_SUB_ESTABLISHED: A new subflow has been established. 'error' |
| 29 | * should not be set. Attributes: token, family, loc_id, rem_id, saddr4 | | 29 | * should not be set. Attributes: token, family, loc_id, rem_id, saddr4 | |
| 30 | * saddr6, daddr4 | daddr6, sport, dport, backup, if_idx [, error]. | 30 | * saddr6, daddr4 | daddr6, sport, dport, backup, if-idx [, error]. |
| 31 | * @MPTCP_EVENT_SUB_CLOSED: A subflow has been closed. An error (copy of | 31 | * @MPTCP_EVENT_SUB_CLOSED: A subflow has been closed. An error (copy of |
| 32 | * sk_err) could be set if an error has been detected for this subflow. | 32 | * sk_err) could be set if an error has been detected for this subflow. |
| 33 | * Attributes: token, family, loc_id, rem_id, saddr4 | saddr6, daddr4 | | 33 | * Attributes: token, family, loc_id, rem_id, saddr4 | saddr6, daddr4 | |
| 34 | * daddr6, sport, dport, backup, if_idx [, error]. | 34 | * daddr6, sport, dport, backup, if-idx [, error]. |
| 35 | * @MPTCP_EVENT_SUB_PRIORITY: The priority of a subflow has changed. 'error' | 35 | * @MPTCP_EVENT_SUB_PRIORITY: The priority of a subflow has changed. 'error' |
| 36 | * should not be set. Attributes: token, family, loc_id, rem_id, saddr4 | | 36 | * should not be set. Attributes: token, family, loc_id, rem_id, saddr4 | |
| 37 | * saddr6, daddr4 | daddr6, sport, dport, backup, if_idx [, error]. | 37 | * saddr6, daddr4 | daddr6, sport, dport, backup, if-idx [, error]. |
| 38 | * @MPTCP_EVENT_LISTENER_CREATED: A new PM listener is created. Attributes: | 38 | * @MPTCP_EVENT_LISTENER_CREATED: A new PM listener is created. Attributes: |
| 39 | * family, sport, saddr4 | saddr6. | 39 | * family, sport, saddr4 | saddr6. |
| 40 | * @MPTCP_EVENT_LISTENER_CLOSED: A PM listener is closed. Attributes: family, | 40 | * @MPTCP_EVENT_LISTENER_CLOSED: A PM listener is closed. Attributes: family, |
| @@ -54,6 +54,7 @@ enum { · 53 unmodified lines | |||
| 54 | /* Extended flags under NDA_FLAGS_EXT: */ | 54 | /* Extended flags under NDA_FLAGS_EXT: */ |
| 55 | #define NTF_EXT_MANAGED (1 << 0) | 55 | #define NTF_EXT_MANAGED (1 << 0) |
| 56 | #define NTF_EXT_LOCKED (1 << 1) | 56 | #define NTF_EXT_LOCKED (1 << 1) |
| 57 | #define NTF_EXT_EXT_VALIDATED (1 << 2) | ||
| 57 | 58 | ||
| 58 | /* | 59 | /* |
| 59 | * Neighbor Cache Entry States. | 60 | * Neighbor Cache Entry States. |
| @@ -92,6 +93,10 @@ enum { · 32 unmodified lines | |||
| 92 | * bridge in response to a host trying to communicate via a locked bridge port | 93 | * bridge in response to a host trying to communicate via a locked bridge port |
| 93 | * with MAB enabled. Their purpose is to notify user space that a host requires | 94 | * with MAB enabled. Their purpose is to notify user space that a host requires |
| 94 | * authentication. | 95 | * authentication. |
| 96 | * | ||
| 97 | * NTF_EXT_EXT_VALIDATED flagged neighbor entries were externally validated by | ||
| 98 | * a user space control plane. The kernel will not remove or invalidate them, | ||
| 99 | * but it can probe them and notify user space when they become reachable. | ||
| 95 | */ | 100 | */ |
| 96 | 101 | ||
| 97 | struct nda_cacheinfo { | 102 | struct nda_cacheinfo { |
| @@ -10,13 +10,6 @@ struct net_dm_drop_point { · 9 unmodified lines | |||
| 10 | __u32 count; | 10 | __u32 count; |
| 11 | }; | 11 | }; |
| 12 | 12 | ||
| 13 | #define is_drop_point_hw(x) do {\ | ||
| 14 | int ____i, ____j;\ | ||
| 15 | for (____i = 0; ____i < 8; i ____i++)\ | ||
| 16 | ____j |= x[____i];\ | ||
| 17 | ____j;\ | ||
| 18 | } while (0) | ||
| 19 | |||
| 20 | #define NET_DM_CFG_VERSION 0 | 13 | #define NET_DM_CFG_VERSION 0 |
| 21 | #define NET_DM_CFG_ALERT_COUNT 1 | 14 | #define NET_DM_CFG_ALERT_COUNT 1 |
| 22 | #define NET_DM_CFG_ALERT_DELAY 2 | 15 | #define NET_DM_CFG_ALERT_DELAY 2 |
| @@ -19,6 +19,7 @@ enum { · 18 unmodified lines | |||
| 19 | NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN, | 19 | NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN, |
| 20 | NETCONFA_INPUT, | 20 | NETCONFA_INPUT, |
| 21 | NETCONFA_BC_FORWARDING, | 21 | NETCONFA_BC_FORWARDING, |
| 22 | NETCONFA_FORCE_FORWARDING, | ||
| 22 | __NETCONFA_MAX | 23 | __NETCONFA_MAX |
| 23 | }; | 24 | }; |
| 24 | #define NETCONFA_MAX (__NETCONFA_MAX - 1) | 25 | #define NETCONFA_MAX (__NETCONFA_MAX - 1) |
| @@ -77,6 +77,11 @@ enum netdev_qstats_scope { · 76 unmodified lines | |||
| 77 | NETDEV_QSTATS_SCOPE_QUEUE = 1, | 77 | NETDEV_QSTATS_SCOPE_QUEUE = 1, |
| 78 | }; | 78 | }; |
| 79 | 79 | ||
| 80 | enum netdev_napi_threaded { | ||
| 81 | NETDEV_NAPI_THREADED_DISABLED, | ||
| 82 | NETDEV_NAPI_THREADED_ENABLED, | ||
| 83 | }; | ||
| 84 | |||
| 80 | enum { | 85 | enum { |
| 81 | NETDEV_A_DEV_IFINDEX = 1, | 86 | NETDEV_A_DEV_IFINDEX = 1, |
| 82 | NETDEV_A_DEV_PAD, | 87 | NETDEV_A_DEV_PAD, |
| @@ -134,6 +139,7 @@ enum { · 51 unmodified lines | |||
| 134 | NETDEV_A_NAPI_DEFER_HARD_IRQS, | 139 | NETDEV_A_NAPI_DEFER_HARD_IRQS, |
| 135 | NETDEV_A_NAPI_GRO_FLUSH_TIMEOUT, | 140 | NETDEV_A_NAPI_GRO_FLUSH_TIMEOUT, |
| 136 | NETDEV_A_NAPI_IRQ_SUSPEND_TIMEOUT, | 141 | NETDEV_A_NAPI_IRQ_SUSPEND_TIMEOUT, |
| 142 | NETDEV_A_NAPI_THREADED, | ||
| 137 | 143 | ||
| 138 | __NETDEV_A_NAPI_MAX, | 144 | __NETDEV_A_NAPI_MAX, |
| 139 | NETDEV_A_NAPI_MAX = (__NETDEV_A_NAPI_MAX - 1) | 145 | NETDEV_A_NAPI_MAX = (__NETDEV_A_NAPI_MAX - 1) |
| @@ -142,8 +142,6 @@ enum nf_tables_msg_types { · 141 unmodified lines | |||
| 142 | NFT_MSG_DESTROYOBJ, | 142 | NFT_MSG_DESTROYOBJ, |
| 143 | NFT_MSG_DESTROYFLOWTABLE, | 143 | NFT_MSG_DESTROYFLOWTABLE, |
| 144 | NFT_MSG_GETSETELEM_RESET, | 144 | NFT_MSG_GETSETELEM_RESET, |
| 145 | NFT_MSG_NEWDEV, | ||
| 146 | NFT_MSG_DELDEV, | ||
| 147 | NFT_MSG_MAX, | 145 | NFT_MSG_MAX, |
| 148 | }; | 146 | }; |
| 149 | 147 | ||
| @@ -1786,18 +1784,10 @@ enum nft_synproxy_attributes { · 1636 unmodified lines | |||
| 1786 | * enum nft_device_attributes - nf_tables device netlink attributes | 1784 | * enum nft_device_attributes - nf_tables device netlink attributes |
| 1787 | * | 1785 | * |
| 1788 | * @NFTA_DEVICE_NAME: name of this device (NLA_STRING) | 1786 | * @NFTA_DEVICE_NAME: name of this device (NLA_STRING) |
| 1789 | * @NFTA_DEVICE_TABLE: table containing the flowtable or chain hooking into the device (NLA_STRING) | ||
| 1790 | * @NFTA_DEVICE_FLOWTABLE: flowtable hooking into the device (NLA_STRING) | ||
| 1791 | * @NFTA_DEVICE_CHAIN: chain hooking into the device (NLA_STRING) | ||
| 1792 | * @NFTA_DEVICE_SPEC: hook spec matching the device (NLA_STRING) | ||
| 1793 | */ | 1787 | */ |
| 1794 | enum nft_devices_attributes { | 1788 | enum nft_devices_attributes { |
| 1795 | NFTA_DEVICE_UNSPEC, | 1789 | NFTA_DEVICE_UNSPEC, |
| 1796 | NFTA_DEVICE_NAME, | 1790 | NFTA_DEVICE_NAME, |
| 1797 | NFTA_DEVICE_TABLE, | ||
| 1798 | NFTA_DEVICE_FLOWTABLE, | ||
| 1799 | NFTA_DEVICE_CHAIN, | ||
| 1800 | NFTA_DEVICE_SPEC, | ||
| 1801 | __NFTA_DEVICE_MAX | 1791 | __NFTA_DEVICE_MAX |
| 1802 | }; | 1792 | }; |
| 1803 | #define NFTA_DEVICE_MAX (__NFTA_DEVICE_MAX - 1) | 1793 | #define NFTA_DEVICE_MAX (__NFTA_DEVICE_MAX - 1) |
| @@ -25,8 +25,6 @@ enum nfnetlink_groups { · 24 unmodified lines | |||
| 25 | #define NFNLGRP_ACCT_QUOTA NFNLGRP_ACCT_QUOTA | 25 | #define NFNLGRP_ACCT_QUOTA NFNLGRP_ACCT_QUOTA |
| 26 | NFNLGRP_NFTRACE, | 26 | NFNLGRP_NFTRACE, |
| 27 | #define NFNLGRP_NFTRACE NFNLGRP_NFTRACE | 27 | #define NFNLGRP_NFTRACE NFNLGRP_NFTRACE |
| 28 | NFNLGRP_NFT_DEV, | ||
| 29 | #define NFNLGRP_NFT_DEV NFNLGRP_NFT_DEV | ||
| 30 | __NFNLGRP_MAX, | 28 | __NFNLGRP_MAX, |
| 31 | }; | 29 | }; |
| 32 | #define NFNLGRP_MAX (__NFNLGRP_MAX - 1) | 30 | #define NFNLGRP_MAX (__NFNLGRP_MAX - 1) |
| @@ -61,10 +61,12 @@ enum nfnl_hook_chain_desc_attributes { · 60 unmodified lines | |||
| 61 | * | 61 | * |
| 62 | * @NFNL_HOOK_TYPE_NFTABLES: nf_tables base chain | 62 | * @NFNL_HOOK_TYPE_NFTABLES: nf_tables base chain |
| 63 | * @NFNL_HOOK_TYPE_BPF: bpf program | 63 | * @NFNL_HOOK_TYPE_BPF: bpf program |
| 64 | * @NFNL_HOOK_TYPE_NFT_FLOWTABLE: nf_tables flowtable | ||
| 64 | */ | 65 | */ |
| 65 | enum nfnl_hook_chaintype { | 66 | enum nfnl_hook_chaintype { |
| 66 | NFNL_HOOK_TYPE_NFTABLES = 0x1, | 67 | NFNL_HOOK_TYPE_NFTABLES = 0x1, |
| 67 | NFNL_HOOK_TYPE_BPF, | 68 | NFNL_HOOK_TYPE_BPF, |
| 69 | NFNL_HOOK_TYPE_NFT_FLOWTABLE, | ||
| 68 | }; | 70 | }; |
| 69 | 71 | ||
| 70 | /** | 72 | /** |
| @@ -1330,7 +1330,15 @@ · 1329 unmodified lines | |||
| 1330 | * TID to Link mapping for downlink/uplink traffic. | 1330 | * TID to Link mapping for downlink/uplink traffic. |
| 1331 | * | 1331 | * |
| 1332 | * @NL80211_CMD_ASSOC_MLO_RECONF: For a non-AP MLD station, request to | 1332 | * @NL80211_CMD_ASSOC_MLO_RECONF: For a non-AP MLD station, request to |
| 1333 | * add/remove links to/from the association. | 1333 | * add/remove links to/from the association. To indicate link |
| 1334 | * reconfiguration request results from the driver, this command is also | ||
| 1335 | * used as an event to notify userspace about the added links information. | ||
| 1336 | * For notifying the removed links information, the existing | ||
| 1337 | * %NL80211_CMD_LINKS_REMOVED command is used. This command is also used to | ||
| 1338 | * notify userspace about newly added links for the current connection in | ||
| 1339 | * case of AP-initiated link recommendation requests, received via | ||
| 1340 | * a BTM (BSS Transition Management) request or a link reconfig notify | ||
| 1341 | * frame, where the driver handles the link recommendation offload. | ||
| 1334 | * | 1342 | * |
| 1335 | * @NL80211_CMD_EPCS_CFG: EPCS configuration for a station. Used by userland to | 1343 | * @NL80211_CMD_EPCS_CFG: EPCS configuration for a station. Used by userland to |
| 1336 | * control EPCS configuration. Used to notify userland on the current state | 1344 | * control EPCS configuration. Used to notify userland on the current state |
| @@ -2899,6 +2907,27 @@ enum nl80211_commands { · 1562 unmodified lines | |||
| 2899 | * APs Support". Drivers may set additional flags that they support | 2907 | * APs Support". Drivers may set additional flags that they support |
| 2900 | * in the kernel or device. | 2908 | * in the kernel or device. |
| 2901 | * | 2909 | * |
| 2910 | * @NL80211_ATTR_WIPHY_RADIO_INDEX: (int) Integer attribute denoting the index | ||
| 2911 | * of the radio in interest. Internally a value of -1 is used to | ||
| 2912 | * indicate that the radio id is not given in user-space. This means | ||
| 2913 | * that all the attributes are applicable to all the radios. If there is | ||
| 2914 | * a radio index provided in user-space, the attributes will be | ||
| 2915 | * applicable to that specific radio only. If the radio id is greater | ||
| 2916 | * thank the number of radios, error denoting invalid value is returned. | ||
| 2917 | * | ||
| 2918 | * @NL80211_ATTR_S1G_LONG_BEACON_PERIOD: (u8) Integer attribute that represents | ||
| 2919 | * the number of beacon intervals between each long beacon transmission | ||
| 2920 | * for an S1G BSS with short beaconing enabled. This is a required | ||
| 2921 | * attribute for initialising an S1G short beaconing BSS. When updating | ||
| 2922 | * the short beacon data, this is not required. It has a minimum value of | ||
| 2923 | * 2 (i.e 2 beacon intervals). | ||
| 2924 | * | ||
| 2925 | * @NL80211_ATTR_S1G_SHORT_BEACON: Nested attribute containing the short beacon | ||
| 2926 | * head and tail used to set or update the short beacon templates. When | ||
| 2927 | * bringing up a new interface, %NL80211_ATTR_S1G_LONG_BEACON_PERIOD is | ||
| 2928 | * required alongside this attribute. Refer to | ||
| 2929 | * @enum nl80211_s1g_short_beacon_attrs for the attribute definitions. | ||
| 2930 | * | ||
| 2902 | * @NUM_NL80211_ATTR: total number of nl80211_attrs available | 2931 | * @NUM_NL80211_ATTR: total number of nl80211_attrs available |
| 2903 | * @NL80211_ATTR_MAX: highest attribute number currently defined | 2932 | * @NL80211_ATTR_MAX: highest attribute number currently defined |
| 2904 | * @__NL80211_ATTR_AFTER_LAST: internal use | 2933 | * @__NL80211_ATTR_AFTER_LAST: internal use |
| @@ -3456,6 +3485,11 @@ enum nl80211_attrs { · 551 unmodified lines | |||
| 3456 | 3485 | ||
| 3457 | NL80211_ATTR_ASSOC_MLD_EXT_CAPA_OPS, | 3486 | NL80211_ATTR_ASSOC_MLD_EXT_CAPA_OPS, |
| 3458 | 3487 | ||
| 3488 | NL80211_ATTR_WIPHY_RADIO_INDEX, | ||
| 3489 | |||
| 3490 | NL80211_ATTR_S1G_LONG_BEACON_PERIOD, | ||
| 3491 | NL80211_ATTR_S1G_SHORT_BEACON, | ||
| 3492 | |||
| 3459 | /* add attributes here, update the policy in nl80211.c */ | 3493 | /* add attributes here, update the policy in nl80211.c */ |
| 3460 | 3494 | ||
| 3461 | __NL80211_ATTR_AFTER_LAST, | 3495 | __NL80211_ATTR_AFTER_LAST, |
| @@ -8088,6 +8122,7 @@ enum nl80211_ap_settings_flags { · 4626 unmodified lines | |||
| 8088 | * and contains attributes defined in &enum nl80211_if_combination_attrs. | 8122 | * and contains attributes defined in &enum nl80211_if_combination_attrs. |
| 8089 | * @NL80211_WIPHY_RADIO_ATTR_ANTENNA_MASK: bitmask (u32) of antennas | 8123 | * @NL80211_WIPHY_RADIO_ATTR_ANTENNA_MASK: bitmask (u32) of antennas |
| 8090 | * connected to this radio. | 8124 | * connected to this radio. |
| 8125 | * @NL80211_WIPHY_RADIO_ATTR_RTS_THRESHOLD: RTS threshold (u32) of this radio. | ||
| 8091 | * | 8126 | * |
| 8092 | * @__NL80211_WIPHY_RADIO_ATTR_LAST: Internal | 8127 | * @__NL80211_WIPHY_RADIO_ATTR_LAST: Internal |
| 8093 | * @NL80211_WIPHY_RADIO_ATTR_MAX: Highest attribute | 8128 | * @NL80211_WIPHY_RADIO_ATTR_MAX: Highest attribute |
| @@ -8099,6 +8134,7 @@ enum nl80211_wiphy_radio_attrs { · 5 unmodified lines | |||
| 8099 | NL80211_WIPHY_RADIO_ATTR_FREQ_RANGE, | 8134 | NL80211_WIPHY_RADIO_ATTR_FREQ_RANGE, |
| 8100 | NL80211_WIPHY_RADIO_ATTR_INTERFACE_COMBINATION, | 8135 | NL80211_WIPHY_RADIO_ATTR_INTERFACE_COMBINATION, |
| 8101 | NL80211_WIPHY_RADIO_ATTR_ANTENNA_MASK, | 8136 | NL80211_WIPHY_RADIO_ATTR_ANTENNA_MASK, |
| 8137 | NL80211_WIPHY_RADIO_ATTR_RTS_THRESHOLD, | ||
| 8102 | 8138 | ||
| 8103 | /* keep last */ | 8139 | /* keep last */ |
| 8104 | __NL80211_WIPHY_RADIO_ATTR_LAST, | 8140 | __NL80211_WIPHY_RADIO_ATTR_LAST, |
| @@ -8128,4 +8164,27 @@ enum nl80211_wiphy_radio_freq_range { · 23 unmodified lines | |||
| 8128 | NL80211_WIPHY_RADIO_FREQ_ATTR_MAX = __NL80211_WIPHY_RADIO_FREQ_ATTR_LAST - 1, | 8164 | NL80211_WIPHY_RADIO_FREQ_ATTR_MAX = __NL80211_WIPHY_RADIO_FREQ_ATTR_LAST - 1, |
| 8129 | }; | 8165 | }; |
| 8130 | 8166 | ||
| 8167 | /** | ||
| 8168 | * enum nl80211_s1g_short_beacon_attrs - S1G short beacon data | ||
| 8169 | * | ||
| 8170 | * @__NL80211_S1G_SHORT_BEACON_ATTR_INVALID: Invalid | ||
| 8171 | * | ||
| 8172 | * @NL80211_S1G_SHORT_BEACON_ATTR_HEAD: Short beacon head (binary). | ||
| 8173 | * @NL80211_S1G_SHORT_BEACON_ATTR_TAIL: Short beacon tail (binary). | ||
| 8174 | * | ||
| 8175 | * @__NL80211_S1G_SHORT_BEACON_ATTR_LAST: Internal | ||
| 8176 | * @NL80211_S1G_SHORT_BEACON_ATTR_MAX: Highest attribute | ||
| 8177 | */ | ||
| 8178 | enum nl80211_s1g_short_beacon_attrs { | ||
| 8179 | __NL80211_S1G_SHORT_BEACON_ATTR_INVALID, | ||
| 8180 | |||
| 8181 | NL80211_S1G_SHORT_BEACON_ATTR_HEAD, | ||
| 8182 | NL80211_S1G_SHORT_BEACON_ATTR_TAIL, | ||
| 8183 | |||
| 8184 | /* keep last */ | ||
| 8185 | __NL80211_S1G_SHORT_BEACON_ATTR_LAST, | ||
| 8186 | NL80211_S1G_SHORT_BEACON_ATTR_MAX = | ||
| 8187 | __NL80211_S1G_SHORT_BEACON_ATTR_LAST - 1 | ||
| 8188 | }; | ||
| 8189 | |||
| 8131 | #endif /* __LINUX_NL80211_H */ | 8190 | #endif /* __LINUX_NL80211_H */ |
| @@ -42,4 +42,15 @@ struct mnt_ns_info { · 41 unmodified lines | |||
| 42 | /* Get previous namespace. */ | 42 | /* Get previous namespace. */ |
| 43 | #define NS_MNT_GET_PREV _IOR(NSIO, 12, struct mnt_ns_info) | 43 | #define NS_MNT_GET_PREV _IOR(NSIO, 12, struct mnt_ns_info) |
| 44 | 44 | ||
| 45 | enum init_ns_ino { | ||
| 46 | IPC_NS_INIT_INO = 0xEFFFFFFFU, | ||
| 47 | UTS_NS_INIT_INO = 0xEFFFFFFEU, | ||
| 48 | USER_NS_INIT_INO = 0xEFFFFFFDU, | ||
| 49 | PID_NS_INIT_INO = 0xEFFFFFFCU, | ||
| 50 | CGROUP_NS_INIT_INO = 0xEFFFFFFBU, | ||
| 51 | TIME_NS_INIT_INO = 0xEFFFFFFAU, | ||
| 52 | NET_NS_INIT_INO = 0xEFFFFFF9U, | ||
| 53 | MNT_NS_INIT_INO = 0xEFFFFFF8U, | ||
| 54 | }; | ||
| 55 | |||
| 45 | #endif /* __LINUX_NSFS_H */ | 56 | #endif /* __LINUX_NSFS_H */ |
| @@ -186,6 +186,11 @@ enum ovs_packet_cmd { · 185 unmodified lines | |||
| 186 | * %OVS_PACKET_ATTR_USERSPACE action specify the Maximum received fragment | 186 | * %OVS_PACKET_ATTR_USERSPACE action specify the Maximum received fragment |
| 187 | * size. | 187 | * size. |
| 188 | * @OVS_PACKET_ATTR_HASH: Packet hash info (e.g. hash, sw_hash and l4_hash in skb). | 188 | * @OVS_PACKET_ATTR_HASH: Packet hash info (e.g. hash, sw_hash and l4_hash in skb). |
| 189 | * @OVS_PACKET_ATTR_UPCALL_PID: Netlink PID to use for upcalls while | ||
| 190 | * processing %OVS_PACKET_CMD_EXECUTE. Takes precedence over all other ways | ||
| 191 | * to determine the Netlink PID including %OVS_USERSPACE_ATTR_PID, | ||
| 192 | * %OVS_DP_ATTR_UPCALL_PID, %OVS_DP_ATTR_PER_CPU_PIDS and the | ||
| 193 | * %OVS_VPORT_ATTR_UPCALL_PID. | ||
| 189 | * | 194 | * |
| 190 | * These attributes follow the &struct ovs_header within the Generic Netlink | 195 | * These attributes follow the &struct ovs_header within the Generic Netlink |
| 191 | * payload for %OVS_PACKET_* commands. | 196 | * payload for %OVS_PACKET_* commands. |
| @@ -205,6 +210,7 @@ enum ovs_packet_attr { · 13 unmodified lines | |||
| 205 | OVS_PACKET_ATTR_MRU, /* Maximum received IP fragment size. */ | 210 | OVS_PACKET_ATTR_MRU, /* Maximum received IP fragment size. */ |
| 206 | OVS_PACKET_ATTR_LEN, /* Packet size before truncation. */ | 211 | OVS_PACKET_ATTR_LEN, /* Packet size before truncation. */ |
| 207 | OVS_PACKET_ATTR_HASH, /* Packet hash. */ | 212 | OVS_PACKET_ATTR_HASH, /* Packet hash. */ |
| 213 | OVS_PACKET_ATTR_UPCALL_PID, /* u32 Netlink PID. */ | ||
| 208 | __OVS_PACKET_ATTR_MAX | 214 | __OVS_PACKET_ATTR_MAX |
| 209 | }; | 215 | }; |
| 210 | 216 | ||
| @@ -745,6 +745,7 @@ · 744 unmodified lines | |||
| 745 | #define PCI_EXT_CAP_ID_L1SS 0x1E /* L1 PM Substates */ | 745 | #define PCI_EXT_CAP_ID_L1SS 0x1E /* L1 PM Substates */ |
| 746 | #define PCI_EXT_CAP_ID_PTM 0x1F /* Precision Time Measurement */ | 746 | #define PCI_EXT_CAP_ID_PTM 0x1F /* Precision Time Measurement */ |
| 747 | #define PCI_EXT_CAP_ID_DVSEC 0x23 /* Designated Vendor-Specific */ | 747 | #define PCI_EXT_CAP_ID_DVSEC 0x23 /* Designated Vendor-Specific */ |
| 748 | #define PCI_EXT_CAP_ID_VF_REBAR 0x24 /* VF Resizable BAR */ | ||
| 748 | #define PCI_EXT_CAP_ID_DLF 0x25 /* Data Link Feature */ | 749 | #define PCI_EXT_CAP_ID_DLF 0x25 /* Data Link Feature */ |
| 749 | #define PCI_EXT_CAP_ID_PL_16GT 0x26 /* Physical Layer 16.0 GT/s */ | 750 | #define PCI_EXT_CAP_ID_PL_16GT 0x26 /* Physical Layer 16.0 GT/s */ |
| 750 | #define PCI_EXT_CAP_ID_NPEM 0x29 /* Native PCIe Enclosure Management */ | 751 | #define PCI_EXT_CAP_ID_NPEM 0x29 /* Native PCIe Enclosure Management */ |
| @@ -1141,6 +1142,14 @@ · 390 unmodified lines | |||
| 1141 | #define PCI_DVSEC_HEADER2 0x8 /* Designated Vendor-Specific Header2 */ | 1142 | #define PCI_DVSEC_HEADER2 0x8 /* Designated Vendor-Specific Header2 */ |
| 1142 | #define PCI_DVSEC_HEADER2_ID(x) ((x) & 0xffff) | 1143 | #define PCI_DVSEC_HEADER2_ID(x) ((x) & 0xffff) |
| 1143 | 1144 | ||
| 1145 | /* VF Resizable BARs, same layout as PCI_REBAR */ | ||
| 1146 | #define PCI_VF_REBAR_CAP PCI_REBAR_CAP | ||
| 1147 | #define PCI_VF_REBAR_CAP_SIZES PCI_REBAR_CAP_SIZES | ||
| 1148 | #define PCI_VF_REBAR_CTRL PCI_REBAR_CTRL | ||
| 1149 | #define PCI_VF_REBAR_CTRL_BAR_IDX PCI_REBAR_CTRL_BAR_IDX | ||
| 1150 | #define PCI_VF_REBAR_CTRL_NBAR_MASK PCI_REBAR_CTRL_NBAR_MASK | ||
| 1151 | #define PCI_VF_REBAR_CTRL_BAR_SIZE PCI_REBAR_CTRL_BAR_SIZE | ||
| 1152 | |||
| 1144 | /* Data Link Feature */ | 1153 | /* Data Link Feature */ |
| 1145 | #define PCI_DLF_CAP 0x04 /* Capabilities Register */ | 1154 | #define PCI_DLF_CAP 0x04 /* Capabilities Register */ |
| 1146 | #define PCI_DLF_EXCHANGE_ENABLE 0x80000000 /* Data Link Feature Exchange Enable */ | 1155 | #define PCI_DLF_EXCHANGE_ENABLE 0x80000000 /* Data Link Feature Exchange Enable */ |
| @@ -21,6 +21,7 @@ · 20 unmodified lines | |||
| 21 | #define PCITEST_SET_IRQTYPE _IOW('P', 0x8, int) | 21 | #define PCITEST_SET_IRQTYPE _IOW('P', 0x8, int) |
| 22 | #define PCITEST_GET_IRQTYPE _IO('P', 0x9) | 22 | #define PCITEST_GET_IRQTYPE _IO('P', 0x9) |
| 23 | #define PCITEST_BARS _IO('P', 0xa) | 23 | #define PCITEST_BARS _IO('P', 0xa) |
| 24 | #define PCITEST_DOORBELL _IO('P', 0xb) | ||
| 24 | #define PCITEST_CLEAR_IRQ _IO('P', 0x10) | 25 | #define PCITEST_CLEAR_IRQ _IO('P', 0x10) |
| 25 | 26 | ||
| 26 | #define PCITEST_IRQ_TYPE_UNDEFINED -1 | 27 | #define PCITEST_IRQ_TYPE_UNDEFINED -1 |
| @@ -42,21 +42,6 @@ · 41 unmodified lines | |||
| 42 | #define PIDFD_COREDUMP_USER (1U << 2) /* coredump was done as the user. */ | 42 | #define PIDFD_COREDUMP_USER (1U << 2) /* coredump was done as the user. */ |
| 43 | #define PIDFD_COREDUMP_ROOT (1U << 3) /* coredump was done as root. */ | 43 | #define PIDFD_COREDUMP_ROOT (1U << 3) /* coredump was done as root. */ |
| 44 | 44 | ||
| 45 | /* | ||
| 46 | * The concept of process and threads in userland and the kernel is a confusing | ||
| 47 | * one - within the kernel every thread is a 'task' with its own individual PID, | ||
| 48 | * however from userland's point of view threads are grouped by a single PID, | ||
| 49 | * which is that of the 'thread group leader', typically the first thread | ||
| 50 | * spawned. | ||
| 51 | * | ||
| 52 | * To cut the Gideon knot, for internal kernel usage, we refer to | ||
| 53 | * PIDFD_SELF_THREAD to refer to the current thread (or task from a kernel | ||
| 54 | * perspective), and PIDFD_SELF_THREAD_GROUP to refer to the current thread | ||
| 55 | * group leader... | ||
| 56 | */ | ||
| 57 | #define PIDFD_SELF_THREAD -10000 /* Current thread. */ | ||
| 58 | #define PIDFD_SELF_THREAD_GROUP -20000 /* Current thread group leader. */ | ||
| 59 | |||
| 60 | /* | 45 | /* |
| 61 | * ...and for userland we make life simpler - PIDFD_SELF refers to the current | 46 | * ...and for userland we make life simpler - PIDFD_SELF refers to the current |
| 62 | * thread, PIDFD_SELF_PROCESS refers to the process thread group leader. | 47 | * thread, PIDFD_SELF_PROCESS refers to the process thread group leader. |
| @@ -1211,4 +1211,72 @@ enum { · 1210 unmodified lines | |||
| 1211 | 1211 | ||
| 1212 | #define TCA_ETS_MAX (__TCA_ETS_MAX - 1) | 1212 | #define TCA_ETS_MAX (__TCA_ETS_MAX - 1) |
| 1213 | 1213 | ||
| 1214 | /* DUALPI2 */ | ||
| 1215 | enum tc_dualpi2_drop_overload { | ||
| 1216 | TC_DUALPI2_DROP_OVERLOAD_OVERFLOW = 0, | ||
| 1217 | TC_DUALPI2_DROP_OVERLOAD_DROP = 1, | ||
| 1218 | __TCA_DUALPI2_DROP_OVERLOAD_MAX, | ||
| 1219 | }; | ||
| 1220 | #define TCA_DUALPI2_DROP_OVERLOAD_MAX (__TCA_DUALPI2_DROP_OVERLOAD_MAX - 1) | ||
| 1221 | |||
| 1222 | enum tc_dualpi2_drop_early { | ||
| 1223 | TC_DUALPI2_DROP_EARLY_DROP_DEQUEUE = 0, | ||
| 1224 | TC_DUALPI2_DROP_EARLY_DROP_ENQUEUE = 1, | ||
| 1225 | __TCA_DUALPI2_DROP_EARLY_MAX, | ||
| 1226 | }; | ||
| 1227 | #define TCA_DUALPI2_DROP_EARLY_MAX (__TCA_DUALPI2_DROP_EARLY_MAX - 1) | ||
| 1228 | |||
| 1229 | enum tc_dualpi2_ecn_mask { | ||
| 1230 | TC_DUALPI2_ECN_MASK_L4S_ECT = 1, | ||
| 1231 | TC_DUALPI2_ECN_MASK_CLA_ECT = 2, | ||
| 1232 | TC_DUALPI2_ECN_MASK_ANY_ECT = 3, | ||
| 1233 | __TCA_DUALPI2_ECN_MASK_MAX, | ||
| 1234 | }; | ||
| 1235 | #define TCA_DUALPI2_ECN_MASK_MAX (__TCA_DUALPI2_ECN_MASK_MAX - 1) | ||
| 1236 | |||
| 1237 | enum tc_dualpi2_split_gso { | ||
| 1238 | TC_DUALPI2_SPLIT_GSO_NO_SPLIT_GSO = 0, | ||
| 1239 | TC_DUALPI2_SPLIT_GSO_SPLIT_GSO = 1, | ||
| 1240 | __TCA_DUALPI2_SPLIT_GSO_MAX, | ||
| 1241 | }; | ||
| 1242 | #define TCA_DUALPI2_SPLIT_GSO_MAX (__TCA_DUALPI2_SPLIT_GSO_MAX - 1) | ||
| 1243 | |||
| 1244 | enum { | ||
| 1245 | TCA_DUALPI2_UNSPEC, | ||
| 1246 | TCA_DUALPI2_LIMIT, /* Packets */ | ||
| 1247 | TCA_DUALPI2_MEMORY_LIMIT, /* Bytes */ | ||
| 1248 | TCA_DUALPI2_TARGET, /* us */ | ||
| 1249 | TCA_DUALPI2_TUPDATE, /* us */ | ||
| 1250 | TCA_DUALPI2_ALPHA, /* Hz scaled up by 256 */ | ||
| 1251 | TCA_DUALPI2_BETA, /* Hz scaled up by 256 */ | ||
| 1252 | TCA_DUALPI2_STEP_THRESH_PKTS, /* Step threshold in packets */ | ||
| 1253 | TCA_DUALPI2_STEP_THRESH_US, /* Step threshold in microseconds */ | ||
| 1254 | TCA_DUALPI2_MIN_QLEN_STEP, /* Minimum qlen to apply STEP_THRESH */ | ||
| 1255 | TCA_DUALPI2_COUPLING, /* Coupling factor between queues */ | ||
| 1256 | TCA_DUALPI2_DROP_OVERLOAD, /* Whether to drop on overload */ | ||
| 1257 | TCA_DUALPI2_DROP_EARLY, /* Whether to drop on enqueue */ | ||
| 1258 | TCA_DUALPI2_C_PROTECTION, /* Percentage */ | ||
| 1259 | TCA_DUALPI2_ECN_MASK, /* L4S queue classification mask */ | ||
| 1260 | TCA_DUALPI2_SPLIT_GSO, /* Split GSO packets at enqueue */ | ||
| 1261 | TCA_DUALPI2_PAD, | ||
| 1262 | __TCA_DUALPI2_MAX | ||
| 1263 | }; | ||
| 1264 | |||
| 1265 | #define TCA_DUALPI2_MAX (__TCA_DUALPI2_MAX - 1) | ||
| 1266 | |||
| 1267 | struct tc_dualpi2_xstats { | ||
| 1268 | __u32 prob; /* current probability */ | ||
| 1269 | __u32 delay_c; /* current delay in C queue */ | ||
| 1270 | __u32 delay_l; /* current delay in L queue */ | ||
| 1271 | __u32 packets_in_c; /* number of packets enqueued in C queue */ | ||
| 1272 | __u32 packets_in_l; /* number of packets enqueued in L queue */ | ||
| 1273 | __u32 maxq; /* maximum queue size */ | ||
| 1274 | __u32 ecn_mark; /* packets marked with ecn*/ | ||
| 1275 | __u32 step_marks; /* ECN marks due to the step AQM */ | ||
| 1276 | __s32 credit; /* current c_protection credit */ | ||
| 1277 | __u32 memory_used; /* Memory used by both queues */ | ||
| 1278 | __u32 max_memory_used; /* Maximum used memory */ | ||
| 1279 | __u32 memory_limit; /* Memory limit of both queues */ | ||
| 1280 | }; | ||
| 1281 | |||
| 1214 | #endif | 1282 | #endif |
| @@ -244,6 +244,8 @@ struct prctl_mm_map { · 243 unmodified lines | |||
| 244 | # define PR_MTE_TAG_MASK (0xffffUL << PR_MTE_TAG_SHIFT) | 244 | # define PR_MTE_TAG_MASK (0xffffUL << PR_MTE_TAG_SHIFT) |
| 245 | /* Unused; kept only for source compatibility */ | 245 | /* Unused; kept only for source compatibility */ |
| 246 | # define PR_MTE_TCF_SHIFT 1 | 246 | # define PR_MTE_TCF_SHIFT 1 |
| 247 | /* MTE tag check store only */ | ||
| 248 | # define PR_MTE_STORE_ONLY (1UL << 19) | ||
| 247 | /* RISC-V pointer masking tag length */ | 249 | /* RISC-V pointer masking tag length */ |
| 248 | # define PR_PMLEN_SHIFT 24 | 250 | # define PR_PMLEN_SHIFT 24 |
| 249 | # define PR_PMLEN_MASK (0x7fUL << PR_PMLEN_SHIFT) | 251 | # define PR_PMLEN_MASK (0x7fUL << PR_PMLEN_SHIFT) |
| @@ -255,7 +257,12 @@ struct prctl_mm_map { · 5 unmodified lines | |||
| 255 | /* Dispatch syscalls to a userspace handler */ | 257 | /* Dispatch syscalls to a userspace handler */ |
| 256 | #define PR_SET_SYSCALL_USER_DISPATCH 59 | 258 | #define PR_SET_SYSCALL_USER_DISPATCH 59 |
| 257 | # define PR_SYS_DISPATCH_OFF 0 | 259 | # define PR_SYS_DISPATCH_OFF 0 |
| 258 | # define PR_SYS_DISPATCH_ON 1 | 260 | /* Enable dispatch except for the specified range */ |
| 261 | # define PR_SYS_DISPATCH_EXCLUSIVE_ON 1 | ||
| 262 | /* Enable dispatch for the specified range */ | ||
| 263 | # define PR_SYS_DISPATCH_INCLUSIVE_ON 2 | ||
| 264 | /* Legacy name for backwards compatibility */ | ||
| 265 | # define PR_SYS_DISPATCH_ON PR_SYS_DISPATCH_EXCLUSIVE_ON | ||
| 259 | /* The control values for the user space selector when dispatch is enabled */ | 266 | /* The control values for the user space selector when dispatch is enabled */ |
| 260 | # define SYSCALL_DISPATCH_FILTER_ALLOW 0 | 267 | # define SYSCALL_DISPATCH_FILTER_ALLOW 0 |
| 261 | # define SYSCALL_DISPATCH_FILTER_BLOCK 1 | 268 | # define SYSCALL_DISPATCH_FILTER_BLOCK 1 |
| @@ -367,8 +374,6 @@ struct prctl_mm_map { · 105 unmodified lines | |||
| 367 | /* FUTEX hash management */ | 374 | /* FUTEX hash management */ |
| 368 | #define PR_FUTEX_HASH 78 | 375 | #define PR_FUTEX_HASH 78 |
| 369 | # define PR_FUTEX_HASH_SET_SLOTS 1 | 376 | # define PR_FUTEX_HASH_SET_SLOTS 1 |
| 370 | # define FH_FLAG_IMMUTABLE (1ULL << 0) | ||
| 371 | # define PR_FUTEX_HASH_GET_SLOTS 2 | 377 | # define PR_FUTEX_HASH_GET_SLOTS 2 |
| 372 | # define PR_FUTEX_HASH_GET_IMMUTABLE 3 | ||
| 373 | 378 | ||
| 374 | #endif /* _LINUX_PRCTL_H */ | 379 | #endif /* _LINUX_PRCTL_H */ |
| @@ -0,0 +1,53 @@ | |||
| 1 | /* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */ | ||
| 2 | |||
| 3 | #ifndef _UAPI_PWM_H_ | ||
| 4 | #define _UAPI_PWM_H_ | ||
| 5 | |||
| 6 | #include <linux/ioctl.h> | ||
| 7 | #include <linux/types.h> | ||
| 8 | |||
| 9 | /** | ||
| 10 | * struct pwmchip_waveform - Describe a PWM waveform for a pwm_chip's PWM channel | ||
| 11 | * @hwpwm: per-chip relative index of the PWM device | ||
| 12 | * @__pad: padding, must be zero | ||
| 13 | * @period_length_ns: duration of the repeating period. | ||
| 14 | * A value of 0 represents a disabled PWM. | ||
| 15 | * @duty_length_ns: duration of the active part in each period | ||
| 16 | * @duty_offset_ns: offset of the rising edge from a period's start | ||
| 17 | */ | ||
| 18 | struct pwmchip_waveform { | ||
| 19 | __u32 hwpwm; | ||
| 20 | __u32 __pad; | ||
| 21 | __u64 period_length_ns; | ||
| 22 | __u64 duty_length_ns; | ||
| 23 | __u64 duty_offset_ns; | ||
| 24 | }; | ||
| 25 | |||
| 26 | /* Reserves the passed hwpwm for exclusive control. */ | ||
| 27 | #define PWM_IOCTL_REQUEST _IO(0x75, 1) | ||
| 28 | |||
| 29 | /* counter part to PWM_IOCTL_REQUEST */ | ||
| 30 | #define PWM_IOCTL_FREE _IO(0x75, 2) | ||
| 31 | |||
| 32 | /* | ||
| 33 | * Modifies the passed wf according to hardware constraints. All parameters are | ||
| 34 | * rounded down to the next possible value, unless there is no such value, then | ||
| 35 | * values are rounded up. Note that zero isn't considered for rounding down | ||
| 36 | * period_length_ns. | ||
| 37 | */ | ||
| 38 | #define PWM_IOCTL_ROUNDWF _IOWR(0x75, 3, struct pwmchip_waveform) | ||
| 39 | |||
| 40 | /* Get the currently implemented waveform */ | ||
| 41 | #define PWM_IOCTL_GETWF _IOWR(0x75, 4, struct pwmchip_waveform) | ||
| 42 | |||
| 43 | /* Like PWM_IOCTL_ROUNDWF + PWM_IOCTL_SETEXACTWF in one go. */ | ||
| 44 | #define PWM_IOCTL_SETROUNDEDWF _IOW(0x75, 5, struct pwmchip_waveform) | ||
| 45 | |||
| 46 | /* | ||
| 47 | * Program the PWM to emit exactly the passed waveform, subject only to rounding | ||
| 48 | * down each value less than 1 ns. Returns 0 on success, -EDOM if the waveform | ||
| 49 | * cannot be implemented exactly, or other negative error codes. | ||
| 50 | */ | ||
| 51 | #define PWM_IOCTL_SETEXACTWF _IOW(0x75, 6, struct pwmchip_waveform) | ||
| 52 | |||
| 53 | #endif /* _UAPI_PWM_H_ */ | ||
| @@ -173,7 +173,7 @@ typedef struct mdp_superblock_s { · 172 unmodified lines | |||
| 173 | #else | 173 | #else |
| 174 | #error unspecified endianness | 174 | #error unspecified endianness |
| 175 | #endif | 175 | #endif |
| 176 | __u32 recovery_cp; /* 11 recovery checkpoint sector count */ | 176 | __u32 resync_offset; /* 11 resync checkpoint sector count */ |
| 177 | /* There are only valid for minor_version > 90 */ | 177 | /* There are only valid for minor_version > 90 */ |
| 178 | __u64 reshape_position; /* 12,13 next address in array-space for reshape */ | 178 | __u64 reshape_position; /* 12,13 next address in array-space for reshape */ |
| 179 | __u32 new_level; /* 14 new level we are reshaping to */ | 179 | __u32 new_level; /* 14 new level we are reshaping to */ |
| @@ -169,6 +169,13 @@ · 168 unmodified lines | |||
| 169 | */ | 169 | */ |
| 170 | #define RKISP1_CIF_ISP_COMPAND_NUM_POINTS 64 | 170 | #define RKISP1_CIF_ISP_COMPAND_NUM_POINTS 64 |
| 171 | 171 | ||
| 172 | /* | ||
| 173 | * Wide Dynamic Range | ||
| 174 | */ | ||
| 175 | #define RKISP1_CIF_ISP_WDR_CURVE_NUM_INTERV 32 | ||
| 176 | #define RKISP1_CIF_ISP_WDR_CURVE_NUM_COEFF (RKISP1_CIF_ISP_WDR_CURVE_NUM_INTERV + 1) | ||
| 177 | #define RKISP1_CIF_ISP_WDR_CURVE_NUM_DY_REGS 4 | ||
| 178 | |||
| 172 | /* | 179 | /* |
| 173 | * Measurement types | 180 | * Measurement types |
| 174 | */ | 181 | */ |
| @@ -889,6 +896,72 @@ struct rkisp1_cif_isp_compand_curve_config { · 714 unmodified lines | |||
| 889 | __u32 y[RKISP1_CIF_ISP_COMPAND_NUM_POINTS]; | 896 | __u32 y[RKISP1_CIF_ISP_COMPAND_NUM_POINTS]; |
| 890 | }; | 897 | }; |
| 891 | 898 | ||
| 899 | /** | ||
| 900 | * struct rkisp1_cif_isp_wdr_tone_curve - Tone mapping curve definition for WDR. | ||
| 901 | * | ||
| 902 | * @dY: the dYn increments for horizontal (input) axis of the tone curve. | ||
| 903 | * each 3-bit dY value represents an increment of 2**(value+3). | ||
| 904 | * dY[0] bits 0:2 is increment dY1, bit 3 unused | ||
| 905 | * dY[0] bits 4:6 is increment dY2, bit 7 unused | ||
| 906 | * ... | ||
| 907 | * dY[0] bits 28:30 is increment dY8, bit 31 unused | ||
| 908 | * ... and so on till dY[3] bits 28:30 is increment dY32, bit 31 unused. | ||
| 909 | * @ym: the Ym values for the vertical (output) axis of the tone curve. | ||
| 910 | * each value is 13 bit. | ||
| 911 | */ | ||
| 912 | struct rkisp1_cif_isp_wdr_tone_curve { | ||
| 913 | __u32 dY[RKISP1_CIF_ISP_WDR_CURVE_NUM_DY_REGS]; | ||
| 914 | __u16 ym[RKISP1_CIF_ISP_WDR_CURVE_NUM_COEFF]; | ||
| 915 | }; | ||
| 916 | |||
| 917 | /** | ||
| 918 | * struct rkisp1_cif_isp_wdr_iref_config - Illumination reference config for WDR. | ||
| 919 | * | ||
| 920 | * Use illumination reference value as described below, instead of only the | ||
| 921 | * luminance (Y) value for tone mapping and gain calculations: | ||
| 922 | * IRef = (rgb_factor * RGBMax_tr + (8 - rgb_factor) * Y)/8 | ||
| 923 | * | ||
| 924 | * @rgb_factor: defines how much influence the RGBmax approach has in | ||
| 925 | * comparison to Y (valid values are 0..8). | ||
| 926 | * @use_y9_8: use Y*9/8 for maximum value calculation along with the | ||
| 927 | * default of R, G, B for noise reduction. | ||
| 928 | * @use_rgb7_8: decrease RGBMax by 7/8 for noise reduction. | ||
| 929 | * @disable_transient: disable transient calculation between Y and RGBY_max. | ||
| 930 | */ | ||
| 931 | struct rkisp1_cif_isp_wdr_iref_config { | ||
| 932 | __u8 rgb_factor; | ||
| 933 | __u8 use_y9_8; | ||
| 934 | __u8 use_rgb7_8; | ||
| 935 | __u8 disable_transient; | ||
| 936 | }; | ||
| 937 | |||
| 938 | /** | ||
| 939 | * struct rkisp1_cif_isp_wdr_config - Configuration for wide dynamic range. | ||
| 940 | * | ||
| 941 | * @tone_curve: tone mapping curve. | ||
| 942 | * @iref_config: illumination reference configuration. (when use_iref is true) | ||
| 943 | * @rgb_offset: RGB offset value for RGB operation mode. (12 bits) | ||
| 944 | * @luma_offset: luminance offset value for RGB operation mode. (12 bits) | ||
| 945 | * @dmin_thresh: lower threshold for deltaMin value. (12 bits) | ||
| 946 | * @dmin_strength: strength factor for deltaMin. (valid range is 0x00..0x10) | ||
| 947 | * @use_rgb_colorspace: use RGB instead of luminance/chrominance colorspace. | ||
| 948 | * @bypass_chroma_mapping: disable chrominance mapping (only valid if | ||
| 949 | * use_rgb_colorspace = 0) | ||
| 950 | * @use_iref: use illumination reference instead of Y for tone mapping | ||
| 951 | * and gain calculations. | ||
| 952 | */ | ||
| 953 | struct rkisp1_cif_isp_wdr_config { | ||
| 954 | struct rkisp1_cif_isp_wdr_tone_curve tone_curve; | ||
| 955 | struct rkisp1_cif_isp_wdr_iref_config iref_config; | ||
| 956 | __u16 rgb_offset; | ||
| 957 | __u16 luma_offset; | ||
| 958 | __u16 dmin_thresh; | ||
| 959 | __u8 dmin_strength; | ||
| 960 | __u8 use_rgb_colorspace; | ||
| 961 | __u8 bypass_chroma_mapping; | ||
| 962 | __u8 use_iref; | ||
| 963 | }; | ||
| 964 | |||
| 892 | /*---------- PART2: Measurement Statistics ------------*/ | 965 | /*---------- PART2: Measurement Statistics ------------*/ |
| 893 | 966 | ||
| 894 | /** | 967 | /** |
| @@ -1059,6 +1132,7 @@ struct rkisp1_stat_buffer { · 164 unmodified lines | |||
| 1059 | * @RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_BLS: BLS in the compand block | 1132 | * @RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_BLS: BLS in the compand block |
| 1060 | * @RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_EXPAND: Companding expand curve | 1133 | * @RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_EXPAND: Companding expand curve |
| 1061 | * @RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_COMPRESS: Companding compress curve | 1134 | * @RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_COMPRESS: Companding compress curve |
| 1135 | * @RKISP1_EXT_PARAMS_BLOCK_TYPE_WDR: Wide dynamic range | ||
| 1062 | */ | 1136 | */ |
| 1063 | enum rkisp1_ext_params_block_type { | 1137 | enum rkisp1_ext_params_block_type { |
| 1064 | RKISP1_EXT_PARAMS_BLOCK_TYPE_BLS, | 1138 | RKISP1_EXT_PARAMS_BLOCK_TYPE_BLS, |
| @@ -1081,11 +1155,15 @@ enum rkisp1_ext_params_block_type { · 16 unmodified lines | |||
| 1081 | RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_BLS, | 1155 | RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_BLS, |
| 1082 | RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_EXPAND, | 1156 | RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_EXPAND, |
| 1083 | RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_COMPRESS, | 1157 | RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_COMPRESS, |
| 1158 | RKISP1_EXT_PARAMS_BLOCK_TYPE_WDR, | ||
| 1084 | }; | 1159 | }; |
| 1085 | 1160 | ||
| 1086 | #define RKISP1_EXT_PARAMS_FL_BLOCK_DISABLE (1U << 0) | 1161 | #define RKISP1_EXT_PARAMS_FL_BLOCK_DISABLE (1U << 0) |
| 1087 | #define RKISP1_EXT_PARAMS_FL_BLOCK_ENABLE (1U << 1) | 1162 | #define RKISP1_EXT_PARAMS_FL_BLOCK_ENABLE (1U << 1) |
| 1088 | 1163 | ||
| 1164 | /* A bitmask of parameters blocks supported on the current hardware. */ | ||
| 1165 | #define RKISP1_CID_SUPPORTED_PARAMS_BLOCKS (V4L2_CID_USER_RKISP1_BASE + 0x01) | ||
| 1166 | |||
| 1089 | /** | 1167 | /** |
| 1090 | * struct rkisp1_ext_params_block_header - RkISP1 extensible parameters block | 1168 | * struct rkisp1_ext_params_block_header - RkISP1 extensible parameters block |
| 1091 | * header | 1169 | * header |
| @@ -1460,6 +1538,23 @@ struct rkisp1_ext_params_compand_curve_config { · 368 unmodified lines | |||
| 1460 | struct rkisp1_cif_isp_compand_curve_config config; | 1538 | struct rkisp1_cif_isp_compand_curve_config config; |
| 1461 | } __attribute__((aligned(8))); | 1539 | } __attribute__((aligned(8))); |
| 1462 | 1540 | ||
| 1541 | /** | ||
| 1542 | * struct rkisp1_ext_params_wdr_config - RkISP1 extensible params | ||
| 1543 | * Wide dynamic range config | ||
| 1544 | * | ||
| 1545 | * RkISP1 extensible parameters WDR block. | ||
| 1546 | * Identified by :c:type:`RKISP1_EXT_PARAMS_BLOCK_TYPE_WDR` | ||
| 1547 | * | ||
| 1548 | * @header: The RkISP1 extensible parameters header, see | ||
| 1549 | * :c:type:`rkisp1_ext_params_block_header` | ||
| 1550 | * @config: WDR configuration, see | ||
| 1551 | * :c:type:`rkisp1_cif_isp_wdr_config` | ||
| 1552 | */ | ||
| 1553 | struct rkisp1_ext_params_wdr_config { | ||
| 1554 | struct rkisp1_ext_params_block_header header; | ||
| 1555 | struct rkisp1_cif_isp_wdr_config config; | ||
| 1556 | } __attribute__((aligned(8))); | ||
| 1557 | |||
| 1463 | /* | 1558 | /* |
| 1464 | * The rkisp1_ext_params_compand_curve_config structure is counted twice as it | 1559 | * The rkisp1_ext_params_compand_curve_config structure is counted twice as it |
| 1465 | * is used for both the COMPAND_EXPAND and COMPAND_COMPRESS block types. | 1560 | * is used for both the COMPAND_EXPAND and COMPAND_COMPRESS block types. |
| @@ -1484,7 +1579,8 @@ struct rkisp1_ext_params_compand_curve_config { · 18 unmodified lines | |||
| 1484 | sizeof(struct rkisp1_ext_params_afc_config) +\ | 1579 | sizeof(struct rkisp1_ext_params_afc_config) +\ |
| 1485 | sizeof(struct rkisp1_ext_params_compand_bls_config) +\ | 1580 | sizeof(struct rkisp1_ext_params_compand_bls_config) +\ |
| 1486 | sizeof(struct rkisp1_ext_params_compand_curve_config) +\ | 1581 | sizeof(struct rkisp1_ext_params_compand_curve_config) +\ |
| 1487 | sizeof(struct rkisp1_ext_params_compand_curve_config)) | 1582 | sizeof(struct rkisp1_ext_params_compand_curve_config) +\ |
| 1583 | sizeof(struct rkisp1_ext_params_wdr_config)) | ||
| 1488 | 1584 | ||
| 1489 | /** | 1585 | /** |
| 1490 | * enum rksip1_ext_param_buffer_version - RkISP1 extensible parameters version | 1586 | * enum rksip1_ext_param_buffer_version - RkISP1 extensible parameters version |
| @@ -1520,6 +1616,14 @@ enum rksip1_ext_param_buffer_version { · 29 unmodified lines | |||
| 1520 | * V4L2 control. If such control is not available, userspace should assume only | 1616 | * V4L2 control. If such control is not available, userspace should assume only |
| 1521 | * RKISP1_EXT_PARAM_BUFFER_V1 is supported by the driver. | 1617 | * RKISP1_EXT_PARAM_BUFFER_V1 is supported by the driver. |
| 1522 | * | 1618 | * |
| 1619 | * The read-only V4L2 control ``RKISP1_CID_SUPPORTED_PARAMS_BLOCKS`` can be used | ||
| 1620 | * to query the blocks supported by the device. It contains a bitmask where each | ||
| 1621 | * bit represents the availability of the corresponding entry from the | ||
| 1622 | * :c:type:`rkisp1_ext_params_block_type` enum. The current and default values | ||
| 1623 | * of the control represents the blocks supported by the device instance, while | ||
| 1624 | * the maximum value represents the blocks supported by the kernel driver, | ||
| 1625 | * independently of the device instance. | ||
| 1626 | * | ||
| 1523 | * For each ISP block that userspace wants to configure, a block-specific | 1627 | * For each ISP block that userspace wants to configure, a block-specific |
| 1524 | * structure is appended to the @data buffer, one after the other without gaps | 1628 | * structure is appended to the @data buffer, one after the other without gaps |
| 1525 | * in between nor overlaps. Userspace shall populate the @data_size field with | 1629 | * in between nor overlaps. Userspace shall populate the @data_size field with |
| @@ -186,6 +186,7 @@ enum · 185 unmodified lines | |||
| 186 | LINUX_MIB_TIMEWAITKILLED, /* TimeWaitKilled */ | 186 | LINUX_MIB_TIMEWAITKILLED, /* TimeWaitKilled */ |
| 187 | LINUX_MIB_PAWSACTIVEREJECTED, /* PAWSActiveRejected */ | 187 | LINUX_MIB_PAWSACTIVEREJECTED, /* PAWSActiveRejected */ |
| 188 | LINUX_MIB_PAWSESTABREJECTED, /* PAWSEstabRejected */ | 188 | LINUX_MIB_PAWSESTABREJECTED, /* PAWSEstabRejected */ |
| 189 | LINUX_MIB_BEYOND_WINDOW, /* BeyondWindow */ | ||
| 189 | LINUX_MIB_TSECRREJECTED, /* TSEcrRejected */ | 190 | LINUX_MIB_TSECRREJECTED, /* TSEcrRejected */ |
| 190 | LINUX_MIB_PAWS_OLD_ACK, /* PAWSOldAck */ | 191 | LINUX_MIB_PAWS_OLD_ACK, /* PAWSOldAck */ |
| 191 | LINUX_MIB_PAWS_TW_REJECTED, /* PAWSTimewait */ | 192 | LINUX_MIB_PAWS_TW_REJECTED, /* PAWSTimewait */ |
| @@ -573,6 +573,7 @@ enum { · 572 unmodified lines | |||
| 573 | NET_IPV6_ACCEPT_RA_FROM_LOCAL=26, | 573 | NET_IPV6_ACCEPT_RA_FROM_LOCAL=26, |
| 574 | NET_IPV6_ACCEPT_RA_RT_INFO_MIN_PLEN=27, | 574 | NET_IPV6_ACCEPT_RA_RT_INFO_MIN_PLEN=27, |
| 575 | NET_IPV6_RA_DEFRTR_METRIC=28, | 575 | NET_IPV6_RA_DEFRTR_METRIC=28, |
| 576 | NET_IPV6_FORCE_FORWARDING=29, | ||
| 576 | __NET_IPV6_MAX | 577 | __NET_IPV6_MAX |
| 577 | }; | 578 | }; |
| 578 | 579 | ||
| @@ -64,6 +64,17 @@ struct timezone { · 63 unmodified lines | |||
| 64 | #define CLOCK_TAI 11 | 64 | #define CLOCK_TAI 11 |
| 65 | 65 | ||
| 66 | #define MAX_CLOCKS 16 | 66 | #define MAX_CLOCKS 16 |
| 67 | |||
| 68 | /* | ||
| 69 | * AUX clock support. AUXiliary clocks are dynamically configured by | ||
| 70 | * enabling a clock ID. These clock can be steered independently of the | ||
| 71 | * core timekeeper. The kernel can support up to 8 auxiliary clocks, but | ||
| 72 | * the actual limit depends on eventual architecture constraints vs. VDSO. | ||
| 73 | */ | ||
| 74 | #define CLOCK_AUX MAX_CLOCKS | ||
| 75 | #define MAX_AUX_CLOCKS 8 | ||
| 76 | #define CLOCK_AUX_LAST (CLOCK_AUX + MAX_AUX_CLOCKS - 1) | ||
| 77 | |||
| 67 | #define CLOCKS_MASK (CLOCK_REALTIME | CLOCK_MONOTONIC) | 78 | #define CLOCKS_MASK (CLOCK_REALTIME | CLOCK_MONOTONIC) |
| 68 | #define CLOCKS_MONO CLOCK_MONOTONIC | 79 | #define CLOCKS_MONO CLOCK_MONOTONIC |
| 69 | 80 | ||
| @@ -135,8 +135,28 @@ · 134 unmodified lines | |||
| 135 | #define UBLKSRV_IO_BUF_TOTAL_SIZE (1ULL << UBLKSRV_IO_BUF_TOTAL_BITS) | 135 | #define UBLKSRV_IO_BUF_TOTAL_SIZE (1ULL << UBLKSRV_IO_BUF_TOTAL_BITS) |
| 136 | 136 | ||
| 137 | /* | 137 | /* |
| 138 | * zero copy requires 4k block size, and can remap ublk driver's io | 138 | * ublk server can register data buffers for incoming I/O requests with a sparse |
| 139 | * request into ublksrv's vm space | 139 | * io_uring buffer table. The request buffer can then be used as the data buffer |
| 140 | * for io_uring operations via the fixed buffer index. | ||
| 141 | * Note that the ublk server can never directly access the request data memory. | ||
| 142 | * | ||
| 143 | * To use this feature, the ublk server must first register a sparse buffer | ||
| 144 | * table on an io_uring instance. | ||
| 145 | * When an incoming ublk request is received, the ublk server submits a | ||
| 146 | * UBLK_U_IO_REGISTER_IO_BUF command to that io_uring instance. The | ||
| 147 | * ublksrv_io_cmd's q_id and tag specify the request whose buffer to register | ||
| 148 | * and addr is the index in the io_uring's buffer table to install the buffer. | ||
| 149 | * SQEs can now be submitted to the io_uring to read/write the request's buffer | ||
| 150 | * by enabling fixed buffers (e.g. using IORING_OP_{READ,WRITE}_FIXED or | ||
| 151 | * IORING_URING_CMD_FIXED) and passing the registered buffer index in buf_index. | ||
| 152 | * Once the last io_uring operation using the request's buffer has completed, | ||
| 153 | * the ublk server submits a UBLK_U_IO_UNREGISTER_IO_BUF command with q_id, tag, | ||
| 154 | * and addr again specifying the request buffer to unregister. | ||
| 155 | * The ublk request is completed when its buffer is unregistered from all | ||
| 156 | * io_uring instances and the ublk server issues UBLK_U_IO_COMMIT_AND_FETCH_REQ. | ||
| 157 | * | ||
| 158 | * Not available for UBLK_F_UNPRIVILEGED_DEV, as a ublk server can leak | ||
| 159 | * uninitialized kernel memory by not reading into the full request buffer. | ||
| 140 | */ | 160 | */ |
| 141 | #define UBLK_F_SUPPORT_ZERO_COPY (1ULL << 0) | 161 | #define UBLK_F_SUPPORT_ZERO_COPY (1ULL << 0) |
| 142 | 162 | ||
| @@ -281,6 +301,16 @@ · 138 unmodified lines | |||
| 281 | */ | 301 | */ |
| 282 | #define UBLK_F_PER_IO_DAEMON (1ULL << 13) | 302 | #define UBLK_F_PER_IO_DAEMON (1ULL << 13) |
| 283 | 303 | ||
| 304 | /* | ||
| 305 | * If this feature is set, UBLK_U_IO_REGISTER_IO_BUF/UBLK_U_IO_UNREGISTER_IO_BUF | ||
| 306 | * can be issued for an I/O on any task. q_id and tag are also ignored in | ||
| 307 | * UBLK_U_IO_UNREGISTER_IO_BUF's ublksrv_io_cmd. | ||
| 308 | * If it is unset, zero-copy buffers can only be registered and unregistered by | ||
| 309 | * the I/O's daemon task. The q_id and tag of the registered buffer are required | ||
| 310 | * in UBLK_U_IO_UNREGISTER_IO_BUF's ublksrv_io_cmd. | ||
| 311 | */ | ||
| 312 | #define UBLK_F_BUF_REG_OFF_DAEMON (1ULL << 14) | ||
| 313 | |||
| 284 | /* device state */ | 314 | /* device state */ |
| 285 | #define UBLK_S_DEV_DEAD 0 | 315 | #define UBLK_S_DEV_DEAD 0 |
| 286 | #define UBLK_S_DEV_LIVE 1 | 316 | #define UBLK_S_DEV_LIVE 1 |
| @@ -450,10 +480,10 @@ static inline struct ublk_auto_buf_reg ublk_sqe_addr_to_auto_buf_reg( · 163 unmodified lines | |||
| 450 | __u64 sqe_addr) | 480 | __u64 sqe_addr) |
| 451 | { | 481 | { |
| 452 | struct ublk_auto_buf_reg reg = { | 482 | struct ublk_auto_buf_reg reg = { |
| 453 | .index = sqe_addr & 0xffff, | 483 | .index = (__u16)sqe_addr, |
| 454 | .flags = (sqe_addr >> 16) & 0xff, | 484 | .flags = (__u8)(sqe_addr >> 16), |
| 455 | .reserved0 = (sqe_addr >> 24) & 0xff, | 485 | .reserved0 = (__u8)(sqe_addr >> 24), |
| 456 | .reserved1 = sqe_addr >> 32, | 486 | .reserved1 = (__u32)(sqe_addr >> 32), |
| 457 | }; | 487 | }; |
| 458 | 488 | ||
| 459 | return reg; | 489 | return reg; |
| @@ -222,6 +222,12 @@ enum v4l2_colorfx { · 221 unmodified lines | |||
| 222 | */ | 222 | */ |
| 223 | #define V4L2_CID_USER_UVC_BASE (V4L2_CID_USER_BASE + 0x11e0) | 223 | #define V4L2_CID_USER_UVC_BASE (V4L2_CID_USER_BASE + 0x11e0) |
| 224 | 224 | ||
| 225 | /* | ||
| 226 | * The base for Rockchip ISP1 driver controls. | ||
| 227 | * We reserve 16 controls for this driver. | ||
| 228 | */ | ||
| 229 | #define V4L2_CID_USER_RKISP1_BASE (V4L2_CID_USER_BASE + 0x1220) | ||
| 230 | |||
| 225 | /* MPEG-class control IDs */ | 231 | /* MPEG-class control IDs */ |
| 226 | /* The MPEG controls are applicable to all codec controls | 232 | /* The MPEG controls are applicable to all codec controls |
| 227 | * and the 'MPEG' part of the define is historical */ | 233 | * and the 'MPEG' part of the define is historical */ |
| @@ -905,10 +905,12 @@ struct vfio_device_feature { · 904 unmodified lines | |||
| 905 | * VFIO_DEVICE_BIND_IOMMUFD - _IOR(VFIO_TYPE, VFIO_BASE + 18, | 905 | * VFIO_DEVICE_BIND_IOMMUFD - _IOR(VFIO_TYPE, VFIO_BASE + 18, |
| 906 | * struct vfio_device_bind_iommufd) | 906 | * struct vfio_device_bind_iommufd) |
| 907 | * @argsz: User filled size of this data. | 907 | * @argsz: User filled size of this data. |
| 908 | * @flags: Must be 0. | 908 | * @flags: Must be 0 or a bit flags of VFIO_DEVICE_BIND_* |
| 909 | * @iommufd: iommufd to bind. | 909 | * @iommufd: iommufd to bind. |
| 910 | * @out_devid: The device id generated by this bind. devid is a handle for | 910 | * @out_devid: The device id generated by this bind. devid is a handle for |
| 911 | * this device/iommufd bond and can be used in IOMMUFD commands. | 911 | * this device/iommufd bond and can be used in IOMMUFD commands. |
| 912 | * @token_uuid_ptr: Valid if VFIO_DEVICE_BIND_FLAG_TOKEN. Points to a 16 byte | ||
| 913 | * UUID in the same format as VFIO_DEVICE_FEATURE_PCI_VF_TOKEN. | ||
| 912 | * | 914 | * |
| 913 | * Bind a vfio_device to the specified iommufd. | 915 | * Bind a vfio_device to the specified iommufd. |
| 914 | * | 916 | * |
| @@ -917,13 +919,21 @@ struct vfio_device_feature { · 2 unmodified lines | |||
| 917 | * | 919 | * |
| 918 | * Unbind is automatically conducted when device fd is closed. | 920 | * Unbind is automatically conducted when device fd is closed. |
| 919 | * | 921 | * |
| 922 | * A token is sometimes required to open the device, unless this is known to be | ||
| 923 | * needed VFIO_DEVICE_BIND_FLAG_TOKEN should not be set and token_uuid_ptr is | ||
| 924 | * ignored. The only case today is a PF/VF relationship where the VF bind must | ||
| 925 | * be provided the same token as VFIO_DEVICE_FEATURE_PCI_VF_TOKEN provided to | ||
| 926 | * the PF. | ||
| 927 | * | ||
| 920 | * Return: 0 on success, -errno on failure. | 928 | * Return: 0 on success, -errno on failure. |
| 921 | */ | 929 | */ |
| 922 | struct vfio_device_bind_iommufd { | 930 | struct vfio_device_bind_iommufd { |
| 923 | __u32 argsz; | 931 | __u32 argsz; |
| 924 | __u32 flags; | 932 | __u32 flags; |
| 933 | #define VFIO_DEVICE_BIND_FLAG_TOKEN (1 << 0) | ||
| 925 | __s32 iommufd; | 934 | __s32 iommufd; |
| 926 | __u32 out_devid; | 935 | __u32 out_devid; |
| 936 | __aligned_u64 token_uuid_ptr; | ||
| 927 | }; | 937 | }; |
| 928 | 938 | ||
| 929 | #define VFIO_DEVICE_BIND_IOMMUFD _IO(VFIO_TYPE, VFIO_BASE + 18) | 939 | #define VFIO_DEVICE_BIND_IOMMUFD _IO(VFIO_TYPE, VFIO_BASE + 18) |
| @@ -235,4 +235,39 @@ · 234 unmodified lines | |||
| 235 | */ | 235 | */ |
| 236 | #define VHOST_VDPA_GET_VRING_SIZE _IOWR(VHOST_VIRTIO, 0x82, \ | 236 | #define VHOST_VDPA_GET_VRING_SIZE _IOWR(VHOST_VIRTIO, 0x82, \ |
| 237 | struct vhost_vring_state) | 237 | struct vhost_vring_state) |
| 238 | |||
| 239 | /* Extended features manipulation */ | ||
| 240 | #define VHOST_GET_FEATURES_ARRAY _IOR(VHOST_VIRTIO, 0x83, \ | ||
| 241 | struct vhost_features_array) | ||
| 242 | #define VHOST_SET_FEATURES_ARRAY _IOW(VHOST_VIRTIO, 0x83, \ | ||
| 243 | struct vhost_features_array) | ||
| 244 | |||
| 245 | /* fork_owner values for vhost */ | ||
| 246 | #define VHOST_FORK_OWNER_KTHREAD 0 | ||
| 247 | #define VHOST_FORK_OWNER_TASK 1 | ||
| 248 | |||
| 249 | /** | ||
| 250 | * VHOST_SET_FORK_FROM_OWNER - Set the fork_owner flag for the vhost device, | ||
| 251 | * This ioctl must called before VHOST_SET_OWNER. | ||
| 252 | * Only available when CONFIG_VHOST_ENABLE_FORK_OWNER_CONTROL=y | ||
| 253 | * | ||
| 254 | * @param fork_owner: An 8-bit value that determines the vhost thread mode | ||
| 255 | * | ||
| 256 | * When fork_owner is set to VHOST_FORK_OWNER_TASK(default value): | ||
| 257 | * - Vhost will create vhost worker as tasks forked from the owner, | ||
| 258 | * inheriting all of the owner's attributes. | ||
| 259 | * | ||
| 260 | * When fork_owner is set to VHOST_FORK_OWNER_KTHREAD: | ||
| 261 | * - Vhost will create vhost workers as kernel threads. | ||
| 262 | */ | ||
| 263 | #define VHOST_SET_FORK_FROM_OWNER _IOW(VHOST_VIRTIO, 0x83, __u8) | ||
| 264 | |||
| 265 | /** | ||
| 266 | * VHOST_GET_FORK_OWNER - Get the current fork_owner flag for the vhost device. | ||
| 267 | * Only available when CONFIG_VHOST_ENABLE_FORK_OWNER_CONTROL=y | ||
| 268 | * | ||
| 269 | * @return: An 8-bit value indicating the current thread mode. | ||
| 270 | */ | ||
| 271 | #define VHOST_GET_FORK_FROM_OWNER _IOR(VHOST_VIRTIO, 0x84, __u8) | ||
| 272 | |||
| 238 | #endif | 273 | #endif |
| @@ -110,6 +110,11 @@ struct vhost_msg_v2 { · 109 unmodified lines | |||
| 110 | }; | 110 | }; |
| 111 | }; | 111 | }; |
| 112 | 112 | ||
| 113 | struct vhost_features_array { | ||
| 114 | __u64 count; /* number of entries present in features array */ | ||
| 115 | __u64 features[] __counted_by(count); | ||
| 116 | }; | ||
| 117 | |||
| 113 | struct vhost_memory_region { | 118 | struct vhost_memory_region { |
| 114 | __u64 guest_phys_addr; | 119 | __u64 guest_phys_addr; |
| 115 | __u64 memory_size; /* bytes */ | 120 | __u64 memory_size; /* bytes */ |
| @@ -726,7 +726,7 @@ struct v4l2_pix_format { · 725 unmodified lines | |||
| 726 | #define V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2') /* 12 GBGB.. RGRG.. */ | 726 | #define V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2') /* 12 GBGB.. RGRG.. */ |
| 727 | #define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2') /* 12 GRGR.. BGBG.. */ | 727 | #define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2') /* 12 GRGR.. BGBG.. */ |
| 728 | #define V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2') /* 12 RGRG.. GBGB.. */ | 728 | #define V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2') /* 12 RGRG.. GBGB.. */ |
| 729 | /* 12bit raw bayer packed, 6 bytes for every 4 pixels */ | 729 | /* 12bit raw bayer packed, 3 bytes for every 2 pixels */ |
| 730 | #define V4L2_PIX_FMT_SBGGR12P v4l2_fourcc('p', 'B', 'C', 'C') | 730 | #define V4L2_PIX_FMT_SBGGR12P v4l2_fourcc('p', 'B', 'C', 'C') |
| 731 | #define V4L2_PIX_FMT_SGBRG12P v4l2_fourcc('p', 'G', 'C', 'C') | 731 | #define V4L2_PIX_FMT_SGBRG12P v4l2_fourcc('p', 'G', 'C', 'C') |
| 732 | #define V4L2_PIX_FMT_SGRBG12P v4l2_fourcc('p', 'g', 'C', 'C') | 732 | #define V4L2_PIX_FMT_SGRBG12P v4l2_fourcc('p', 'g', 'C', 'C') |
| @@ -840,6 +840,12 @@ struct v4l2_pix_format { · 107 unmodified lines | |||
| 840 | #define V4L2_PIX_FMT_PISP_COMP2_BGGR v4l2_fourcc('P', 'C', '2', 'B') /* PiSP 8-bit mode 2 compressed BGGR bayer */ | 840 | #define V4L2_PIX_FMT_PISP_COMP2_BGGR v4l2_fourcc('P', 'C', '2', 'B') /* PiSP 8-bit mode 2 compressed BGGR bayer */ |
| 841 | #define V4L2_PIX_FMT_PISP_COMP2_MONO v4l2_fourcc('P', 'C', '2', 'M') /* PiSP 8-bit mode 2 compressed monochrome */ | 841 | #define V4L2_PIX_FMT_PISP_COMP2_MONO v4l2_fourcc('P', 'C', '2', 'M') /* PiSP 8-bit mode 2 compressed monochrome */ |
| 842 | 842 | ||
| 843 | /* Renesas RZ/V2H CRU packed formats. 64-bit units with contiguous pixels */ | ||
| 844 | #define V4L2_PIX_FMT_RAW_CRU10 v4l2_fourcc('C', 'R', '1', '0') | ||
| 845 | #define V4L2_PIX_FMT_RAW_CRU12 v4l2_fourcc('C', 'R', '1', '2') | ||
| 846 | #define V4L2_PIX_FMT_RAW_CRU14 v4l2_fourcc('C', 'R', '1', '4') | ||
| 847 | #define V4L2_PIX_FMT_RAW_CRU20 v4l2_fourcc('C', 'R', '2', '0') | ||
| 848 | |||
| 843 | /* SDR formats - used only for Software Defined Radio devices */ | 849 | /* SDR formats - used only for Software Defined Radio devices */ |
| 844 | #define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */ | 850 | #define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */ |
| 845 | #define V4L2_SDR_FMT_CU16LE v4l2_fourcc('C', 'U', '1', '6') /* IQ u16le */ | 851 | #define V4L2_SDR_FMT_CU16LE v4l2_fourcc('C', 'U', '1', '6') /* IQ u16le */ |
| @@ -861,6 +867,7 @@ struct v4l2_pix_format { · 15 unmodified lines | |||
| 861 | #define V4L2_META_FMT_VSP1_HGT v4l2_fourcc('V', 'S', 'P', 'T') /* R-Car VSP1 2-D Histogram */ | 867 | #define V4L2_META_FMT_VSP1_HGT v4l2_fourcc('V', 'S', 'P', 'T') /* R-Car VSP1 2-D Histogram */ |
| 862 | #define V4L2_META_FMT_UVC v4l2_fourcc('U', 'V', 'C', 'H') /* UVC Payload Header metadata */ | 868 | #define V4L2_META_FMT_UVC v4l2_fourcc('U', 'V', 'C', 'H') /* UVC Payload Header metadata */ |
| 863 | #define V4L2_META_FMT_D4XX v4l2_fourcc('D', '4', 'X', 'X') /* D4XX Payload Header metadata */ | 869 | #define V4L2_META_FMT_D4XX v4l2_fourcc('D', '4', 'X', 'X') /* D4XX Payload Header metadata */ |
| 870 | #define V4L2_META_FMT_UVC_MSXU_1_5 v4l2_fourcc('U', 'V', 'C', 'M') /* UVC MSXU metadata */ | ||
| 864 | #define V4L2_META_FMT_VIVID v4l2_fourcc('V', 'I', 'V', 'D') /* Vivid Metadata */ | 871 | #define V4L2_META_FMT_VIVID v4l2_fourcc('V', 'I', 'V', 'D') /* Vivid Metadata */ |
| 865 | 872 | ||
| 866 | /* Vendor specific - used for RK_ISP1 camera sub-system */ | 873 | /* Vendor specific - used for RK_ISP1 camera sub-system */ |
| @@ -70,6 +70,28 @@ · 69 unmodified lines | |||
| 70 | * with the same MAC. | 70 | * with the same MAC. |
| 71 | */ | 71 | */ |
| 72 | #define VIRTIO_NET_F_SPEED_DUPLEX 63 /* Device set linkspeed and duplex */ | 72 | #define VIRTIO_NET_F_SPEED_DUPLEX 63 /* Device set linkspeed and duplex */ |
| 73 | #define VIRTIO_NET_F_GUEST_UDP_TUNNEL_GSO 65 /* Driver can receive | ||
| 74 | * GSO-over-UDP-tunnel packets | ||
| 75 | */ | ||
| 76 | #define VIRTIO_NET_F_GUEST_UDP_TUNNEL_GSO_CSUM 66 /* Driver handles | ||
| 77 | * GSO-over-UDP-tunnel | ||
| 78 | * packets with partial csum | ||
| 79 | * for the outer header | ||
| 80 | */ | ||
| 81 | #define VIRTIO_NET_F_HOST_UDP_TUNNEL_GSO 67 /* Device can receive | ||
| 82 | * GSO-over-UDP-tunnel packets | ||
| 83 | */ | ||
| 84 | #define VIRTIO_NET_F_HOST_UDP_TUNNEL_GSO_CSUM 68 /* Device handles | ||
| 85 | * GSO-over-UDP-tunnel | ||
| 86 | * packets with partial csum | ||
| 87 | * for the outer header | ||
| 88 | */ | ||
| 89 | |||
| 90 | /* Offloads bits corresponding to VIRTIO_NET_F_HOST_UDP_TUNNEL_GSO{,_CSUM} | ||
| 91 | * features | ||
| 92 | */ | ||
| 93 | #define VIRTIO_NET_F_GUEST_UDP_TUNNEL_GSO_MAPPED 46 | ||
| 94 | #define VIRTIO_NET_F_GUEST_UDP_TUNNEL_GSO_CSUM_MAPPED 47 | ||
| 73 | 95 | ||
| 74 | #ifndef VIRTIO_NET_NO_LEGACY | 96 | #ifndef VIRTIO_NET_NO_LEGACY |
| 75 | #define VIRTIO_NET_F_GSO 6 /* Host handles pkts w/ any GSO type */ | 97 | #define VIRTIO_NET_F_GSO 6 /* Host handles pkts w/ any GSO type */ |
| @@ -131,12 +153,17 @@ struct virtio_net_hdr_v1 { · 55 unmodified lines | |||
| 131 | #define VIRTIO_NET_HDR_F_NEEDS_CSUM 1 /* Use csum_start, csum_offset */ | 153 | #define VIRTIO_NET_HDR_F_NEEDS_CSUM 1 /* Use csum_start, csum_offset */ |
| 132 | #define VIRTIO_NET_HDR_F_DATA_VALID 2 /* Csum is valid */ | 154 | #define VIRTIO_NET_HDR_F_DATA_VALID 2 /* Csum is valid */ |
| 133 | #define VIRTIO_NET_HDR_F_RSC_INFO 4 /* rsc info in csum_ fields */ | 155 | #define VIRTIO_NET_HDR_F_RSC_INFO 4 /* rsc info in csum_ fields */ |
| 156 | #define VIRTIO_NET_HDR_F_UDP_TUNNEL_CSUM 8 /* UDP tunnel csum offload */ | ||
| 134 | __u8 flags; | 157 | __u8 flags; |
| 135 | #define VIRTIO_NET_HDR_GSO_NONE 0 /* Not a GSO frame */ | 158 | #define VIRTIO_NET_HDR_GSO_NONE 0 /* Not a GSO frame */ |
| 136 | #define VIRTIO_NET_HDR_GSO_TCPV4 1 /* GSO frame, IPv4 TCP (TSO) */ | 159 | #define VIRTIO_NET_HDR_GSO_TCPV4 1 /* GSO frame, IPv4 TCP (TSO) */ |
| 137 | #define VIRTIO_NET_HDR_GSO_UDP 3 /* GSO frame, IPv4 UDP (UFO) */ | 160 | #define VIRTIO_NET_HDR_GSO_UDP 3 /* GSO frame, IPv4 UDP (UFO) */ |
| 138 | #define VIRTIO_NET_HDR_GSO_TCPV6 4 /* GSO frame, IPv6 TCP */ | 161 | #define VIRTIO_NET_HDR_GSO_TCPV6 4 /* GSO frame, IPv6 TCP */ |
| 139 | #define VIRTIO_NET_HDR_GSO_UDP_L4 5 /* GSO frame, IPv4& IPv6 UDP (USO) */ | 162 | #define VIRTIO_NET_HDR_GSO_UDP_L4 5 /* GSO frame, IPv4& IPv6 UDP (USO) */ |
| 163 | #define VIRTIO_NET_HDR_GSO_UDP_TUNNEL_IPV4 0x20 /* UDPv4 tunnel present */ | ||
| 164 | #define VIRTIO_NET_HDR_GSO_UDP_TUNNEL_IPV6 0x40 /* UDPv6 tunnel present */ | ||
| 165 | #define VIRTIO_NET_HDR_GSO_UDP_TUNNEL (VIRTIO_NET_HDR_GSO_UDP_TUNNEL_IPV4 | \ | ||
| 166 | VIRTIO_NET_HDR_GSO_UDP_TUNNEL_IPV6) | ||
| 140 | #define VIRTIO_NET_HDR_GSO_ECN 0x80 /* TCP has ECN set */ | 167 | #define VIRTIO_NET_HDR_GSO_ECN 0x80 /* TCP has ECN set */ |
| 141 | __u8 gso_type; | 168 | __u8 gso_type; |
| 142 | __virtio16 hdr_len; /* Ethernet + IP + tcp/udp hdrs */ | 169 | __virtio16 hdr_len; /* Ethernet + IP + tcp/udp hdrs */ |
| @@ -181,6 +208,12 @@ struct virtio_net_hdr_v1_hash { · 38 unmodified lines | |||
| 181 | __le16 padding; | 208 | __le16 padding; |
| 182 | }; | 209 | }; |
| 183 | 210 | ||
| 211 | struct virtio_net_hdr_v1_hash_tunnel { | ||
| 212 | struct virtio_net_hdr_v1_hash hash_hdr; | ||
| 213 | __le16 outer_th_offset; | ||
| 214 | __le16 inner_nh_offset; | ||
| 215 | }; | ||
| 216 | |||
| 184 | #ifndef VIRTIO_NET_NO_LEGACY | 217 | #ifndef VIRTIO_NET_NO_LEGACY |
| 185 | /* This header comes first in the scatter-gather list. | 218 | /* This header comes first in the scatter-gather list. |
| 186 | * For legacy virtio, if VIRTIO_F_ANY_LAYOUT is not negotiated, it must | 219 | * For legacy virtio, if VIRTIO_F_ANY_LAYOUT is not negotiated, it must |
| @@ -17,6 +17,10 @@ · 16 unmodified lines | |||
| 17 | #ifndef _UAPI_VM_SOCKETS_H | 17 | #ifndef _UAPI_VM_SOCKETS_H |
| 18 | #define _UAPI_VM_SOCKETS_H | 18 | #define _UAPI_VM_SOCKETS_H |
| 19 | 19 | ||
| 20 | #ifndef __KERNEL__ | ||
| 21 | #include <sys/socket.h> /* for struct sockaddr and sa_family_t */ | ||
| 22 | #endif | ||
| 23 | |||
| 20 | #include <linux/socket.h> | 24 | #include <linux/socket.h> |
| 21 | #include <linux/types.h> | 25 | #include <linux/types.h> |
| 22 | 26 | ||
| @@ -19,11 +19,11 @@ · 18 unmodified lines | |||
| 19 | #define VT_OPENQRY 0x5600 /* find available vt */ | 19 | #define VT_OPENQRY 0x5600 /* find available vt */ |
| 20 | 20 | ||
| 21 | struct vt_mode { | 21 | struct vt_mode { |
| 22 | char mode; /* vt mode */ | 22 | __u8 mode; /* vt mode */ |
| 23 | char waitv; /* if set, hang on writes if not active */ | 23 | __u8 waitv; /* if set, hang on writes if not active */ |
| 24 | short relsig; /* signal to raise on release req */ | 24 | __s16 relsig; /* signal to raise on release req */ |
| 25 | short acqsig; /* signal to raise on acquisition */ | 25 | __s16 acqsig; /* signal to raise on acquisition */ |
| 26 | short frsig; /* unused (set to 0) */ | 26 | __s16 frsig; /* unused (set to 0) */ |
| 27 | }; | 27 | }; |
| 28 | #define VT_GETMODE 0x5601 /* get mode of active vt */ | 28 | #define VT_GETMODE 0x5601 /* get mode of active vt */ |
| 29 | #define VT_SETMODE 0x5602 /* set mode of active vt */ | 29 | #define VT_SETMODE 0x5602 /* set mode of active vt */ |
| @@ -32,9 +32,9 @@ struct vt_mode { · 2 unmodified lines | |||
| 32 | #define VT_ACKACQ 0x02 /* acknowledge switch */ | 32 | #define VT_ACKACQ 0x02 /* acknowledge switch */ |
| 33 | 33 | ||
| 34 | struct vt_stat { | 34 | struct vt_stat { |
| 35 | unsigned short v_active; /* active vt */ | 35 | __u16 v_active; /* active vt */ |
| 36 | unsigned short v_signal; /* signal to send */ | 36 | __u16 v_signal; /* signal to send */ |
| 37 | unsigned short v_state; /* vt bitmask */ | 37 | __u16 v_state; /* vt bitmask */ |
| 38 | }; | 38 | }; |
| 39 | #define VT_GETSTATE 0x5603 /* get global vt state info */ | 39 | #define VT_GETSTATE 0x5603 /* get global vt state info */ |
| 40 | #define VT_SENDSIG 0x5604 /* signal to send to bitmask of vts */ | 40 | #define VT_SENDSIG 0x5604 /* signal to send to bitmask of vts */ |
| @@ -46,19 +46,19 @@ struct vt_stat { · 5 unmodified lines | |||
| 46 | #define VT_DISALLOCATE 0x5608 /* free memory associated to vt */ | 46 | #define VT_DISALLOCATE 0x5608 /* free memory associated to vt */ |
| 47 | 47 | ||
| 48 | struct vt_sizes { | 48 | struct vt_sizes { |
| 49 | unsigned short v_rows; /* number of rows */ | 49 | __u16 v_rows; /* number of rows */ |
| 50 | unsigned short v_cols; /* number of columns */ | 50 | __u16 v_cols; /* number of columns */ |
| 51 | unsigned short v_scrollsize; /* number of lines of scrollback */ | 51 | __u16 v_scrollsize; /* number of lines of scrollback */ |
| 52 | }; | 52 | }; |
| 53 | #define VT_RESIZE 0x5609 /* set kernel's idea of screensize */ | 53 | #define VT_RESIZE 0x5609 /* set kernel's idea of screensize */ |
| 54 | 54 | ||
| 55 | struct vt_consize { | 55 | struct vt_consize { |
| 56 | unsigned short v_rows; /* number of rows */ | 56 | __u16 v_rows; /* number of rows */ |
| 57 | unsigned short v_cols; /* number of columns */ | 57 | __u16 v_cols; /* number of columns */ |
| 58 | unsigned short v_vlin; /* number of pixel rows on screen */ | 58 | __u16 v_vlin; /* number of pixel rows on screen */ |
| 59 | unsigned short v_clin; /* number of pixel rows per character */ | 59 | __u16 v_clin; /* number of pixel rows per character */ |
| 60 | unsigned short v_vcol; /* number of pixel columns on screen */ | 60 | __u16 v_vcol; /* number of pixel columns on screen */ |
| 61 | unsigned short v_ccol; /* number of pixel columns per character */ | 61 | __u16 v_ccol; /* number of pixel columns per character */ |
| 62 | }; | 62 | }; |
| 63 | #define VT_RESIZEX 0x560A /* set kernel's idea of screensize + more */ | 63 | #define VT_RESIZEX 0x560A /* set kernel's idea of screensize + more */ |
| 64 | #define VT_LOCKSWITCH 0x560B /* disallow vt switching */ | 64 | #define VT_LOCKSWITCH 0x560B /* disallow vt switching */ |
| @@ -66,21 +66,21 @@ struct vt_consize { · 1 unmodified line | |||
| 66 | #define VT_GETHIFONTMASK 0x560D /* return hi font mask */ | 66 | #define VT_GETHIFONTMASK 0x560D /* return hi font mask */ |
| 67 | 67 | ||
| 68 | struct vt_event { | 68 | struct vt_event { |
| 69 | unsigned int event; | 69 | __u32 event; |
| 70 | #define VT_EVENT_SWITCH 0x0001 /* Console switch */ | 70 | #define VT_EVENT_SWITCH 0x0001 /* Console switch */ |
| 71 | #define VT_EVENT_BLANK 0x0002 /* Screen blank */ | 71 | #define VT_EVENT_BLANK 0x0002 /* Screen blank */ |
| 72 | #define VT_EVENT_UNBLANK 0x0004 /* Screen unblank */ | 72 | #define VT_EVENT_UNBLANK 0x0004 /* Screen unblank */ |
| 73 | #define VT_EVENT_RESIZE 0x0008 /* Resize display */ | 73 | #define VT_EVENT_RESIZE 0x0008 /* Resize display */ |
| 74 | #define VT_MAX_EVENT 0x000F | 74 | #define VT_MAX_EVENT 0x000F |
| 75 | unsigned int oldev; /* Old console */ | 75 | __u32 oldev; /* Old console */ |
| 76 | unsigned int newev; /* New console (if changing) */ | 76 | __u32 newev; /* New console (if changing) */ |
| 77 | unsigned int pad[4]; /* Padding for expansion */ | 77 | __u32 pad[4]; /* Padding for expansion */ |
| 78 | }; | 78 | }; |
| 79 | 79 | ||
| 80 | #define VT_WAITEVENT 0x560E /* Wait for an event */ | 80 | #define VT_WAITEVENT 0x560E /* Wait for an event */ |
| 81 | 81 | ||
| 82 | struct vt_setactivate { | 82 | struct vt_setactivate { |
| 83 | unsigned int console; | 83 | __u32 console; |
| 84 | struct vt_mode mode; | 84 | struct vt_mode mode; |
| 85 | }; | 85 | }; |
| 86 | 86 | ||
| @@ -1,6 +1,6 @@ | |||
| 1 | /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */ | 1 | /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */ |
| 2 | /* | 2 | /* |
| 3 | * Copyright 2018-2024 Amazon.com, Inc. or its affiliates. All rights reserved. | 3 | * Copyright 2018-2025 Amazon.com, Inc. or its affiliates. All rights reserved. |
| 4 | */ | 4 | */ |
| 5 | 5 | ||
| 6 | #ifndef EFA_ABI_USER_H | 6 | #ifndef EFA_ABI_USER_H |
| @@ -131,6 +131,7 @@ enum { · 124 unmodified lines | |||
| 131 | EFA_QUERY_DEVICE_CAPS_DATA_POLLING_128 = 1 << 4, | 131 | EFA_QUERY_DEVICE_CAPS_DATA_POLLING_128 = 1 << 4, |
| 132 | EFA_QUERY_DEVICE_CAPS_RDMA_WRITE = 1 << 5, | 132 | EFA_QUERY_DEVICE_CAPS_RDMA_WRITE = 1 << 5, |
| 133 | EFA_QUERY_DEVICE_CAPS_UNSOLICITED_WRITE_RECV = 1 << 6, | 133 | EFA_QUERY_DEVICE_CAPS_UNSOLICITED_WRITE_RECV = 1 << 6, |
| 134 | EFA_QUERY_DEVICE_CAPS_CQ_WITH_EXT_MEM = 1 << 7, | ||
| 134 | }; | 135 | }; |
| 135 | 136 | ||
| 136 | struct efa_ibv_ex_query_device_resp { | 137 | struct efa_ibv_ex_query_device_resp { |
| @@ -55,6 +55,7 @@ enum uverbs_default_objects { · 54 unmodified lines | |||
| 55 | UVERBS_OBJECT_DM, | 55 | UVERBS_OBJECT_DM, |
| 56 | UVERBS_OBJECT_COUNTERS, | 56 | UVERBS_OBJECT_COUNTERS, |
| 57 | UVERBS_OBJECT_ASYNC_EVENT, | 57 | UVERBS_OBJECT_ASYNC_EVENT, |
| 58 | UVERBS_OBJECT_DMAH, | ||
| 58 | }; | 59 | }; |
| 59 | 60 | ||
| 60 | enum { | 61 | enum { |
| @@ -105,6 +106,10 @@ enum uverbs_attrs_create_cq_cmd_attr_ids { · 44 unmodified lines | |||
| 105 | UVERBS_ATTR_CREATE_CQ_FLAGS, | 106 | UVERBS_ATTR_CREATE_CQ_FLAGS, |
| 106 | UVERBS_ATTR_CREATE_CQ_RESP_CQE, | 107 | UVERBS_ATTR_CREATE_CQ_RESP_CQE, |
| 107 | UVERBS_ATTR_CREATE_CQ_EVENT_FD, | 108 | UVERBS_ATTR_CREATE_CQ_EVENT_FD, |
| 109 | UVERBS_ATTR_CREATE_CQ_BUFFER_VA, | ||
| 110 | UVERBS_ATTR_CREATE_CQ_BUFFER_LENGTH, | ||
| 111 | UVERBS_ATTR_CREATE_CQ_BUFFER_FD, | ||
| 112 | UVERBS_ATTR_CREATE_CQ_BUFFER_OFFSET, | ||
| 108 | }; | 113 | }; |
| 109 | 114 | ||
| 110 | enum uverbs_attrs_destroy_cq_cmd_attr_ids { | 115 | enum uverbs_attrs_destroy_cq_cmd_attr_ids { |
| @@ -236,6 +241,22 @@ enum uverbs_methods_dm { · 125 unmodified lines | |||
| 236 | UVERBS_METHOD_DM_FREE, | 241 | UVERBS_METHOD_DM_FREE, |
| 237 | }; | 242 | }; |
| 238 | 243 | ||
| 244 | enum uverbs_attrs_alloc_dmah_cmd_attr_ids { | ||
| 245 | UVERBS_ATTR_ALLOC_DMAH_HANDLE, | ||
| 246 | UVERBS_ATTR_ALLOC_DMAH_CPU_ID, | ||
| 247 | UVERBS_ATTR_ALLOC_DMAH_TPH_MEM_TYPE, | ||
| 248 | UVERBS_ATTR_ALLOC_DMAH_PH, | ||
| 249 | }; | ||
| 250 | |||
| 251 | enum uverbs_attrs_free_dmah_cmd_attr_ids { | ||
| 252 | UVERBS_ATTR_FREE_DMA_HANDLE, | ||
| 253 | }; | ||
| 254 | |||
| 255 | enum uverbs_methods_dmah { | ||
| 256 | UVERBS_METHOD_DMAH_ALLOC, | ||
| 257 | UVERBS_METHOD_DMAH_FREE, | ||
| 258 | }; | ||
| 259 | |||
| 239 | enum uverbs_attrs_reg_dm_mr_cmd_attr_ids { | 260 | enum uverbs_attrs_reg_dm_mr_cmd_attr_ids { |
| 240 | UVERBS_ATTR_REG_DM_MR_HANDLE, | 261 | UVERBS_ATTR_REG_DM_MR_HANDLE, |
| 241 | UVERBS_ATTR_REG_DM_MR_OFFSET, | 262 | UVERBS_ATTR_REG_DM_MR_OFFSET, |
| @@ -253,6 +274,7 @@ enum uverbs_methods_mr { · 11 unmodified lines | |||
| 253 | UVERBS_METHOD_ADVISE_MR, | 274 | UVERBS_METHOD_ADVISE_MR, |
| 254 | UVERBS_METHOD_QUERY_MR, | 275 | UVERBS_METHOD_QUERY_MR, |
| 255 | UVERBS_METHOD_REG_DMABUF_MR, | 276 | UVERBS_METHOD_REG_DMABUF_MR, |
| 277 | UVERBS_METHOD_REG_MR, | ||
| 256 | }; | 278 | }; |
| 257 | 279 | ||
| 258 | enum uverbs_attrs_mr_destroy_ids { | 280 | enum uverbs_attrs_mr_destroy_ids { |
| @@ -286,6 +308,20 @@ enum uverbs_attrs_reg_dmabuf_mr_cmd_attr_ids { · 27 unmodified lines | |||
| 286 | UVERBS_ATTR_REG_DMABUF_MR_RESP_RKEY, | 308 | UVERBS_ATTR_REG_DMABUF_MR_RESP_RKEY, |
| 287 | }; | 309 | }; |
| 288 | 310 | ||
| 311 | enum uverbs_attrs_reg_mr_cmd_attr_ids { | ||
| 312 | UVERBS_ATTR_REG_MR_HANDLE, | ||
| 313 | UVERBS_ATTR_REG_MR_PD_HANDLE, | ||
| 314 | UVERBS_ATTR_REG_MR_DMA_HANDLE, | ||
| 315 | UVERBS_ATTR_REG_MR_IOVA, | ||
| 316 | UVERBS_ATTR_REG_MR_ADDR, | ||
| 317 | UVERBS_ATTR_REG_MR_LENGTH, | ||
| 318 | UVERBS_ATTR_REG_MR_ACCESS_FLAGS, | ||
| 319 | UVERBS_ATTR_REG_MR_FD, | ||
| 320 | UVERBS_ATTR_REG_MR_FD_OFFSET, | ||
| 321 | UVERBS_ATTR_REG_MR_RESP_LKEY, | ||
| 322 | UVERBS_ATTR_REG_MR_RESP_RKEY, | ||
| 323 | }; | ||
| 324 | |||
| 289 | enum uverbs_attrs_create_counters_cmd_attr_ids { | 325 | enum uverbs_attrs_create_counters_cmd_attr_ids { |
| 290 | UVERBS_ATTR_CREATE_COUNTERS_HANDLE, | 326 | UVERBS_ATTR_CREATE_COUNTERS_HANDLE, |
| 291 | }; | 327 | }; |