7.0-rc1 was just released, let's merge it to kick the new release cycle.
Showing the changes to include/uapi (73 of 17345 files). Show all
Unified · Split
| @@ -55,6 +55,7 @@ · 54 unmodified lines | ||
| 55 | 55 | #define EMULTIHOP 72 /* Multihop attempted */ |
| 56 | 56 | #define EDOTDOT 73 /* RFS specific error */ |
| 57 | 57 | #define EBADMSG 74 /* Not a data message */ |
| 58 | +#define EFSBADCRC EBADMSG /* Bad CRC detected */ | |
| 58 | 59 | #define EOVERFLOW 75 /* Value too large for defined data type */ |
| 59 | 60 | #define ENOTUNIQ 76 /* Name not unique on network */ |
| 60 | 61 | #define EBADFD 77 /* File descriptor in bad state */ |
| @@ -98,6 +99,7 @@ · 37 unmodified lines | ||
| 98 | 99 | #define EINPROGRESS 115 /* Operation now in progress */ |
| 99 | 100 | #define ESTALE 116 /* Stale file handle */ |
| 100 | 101 | #define EUCLEAN 117 /* Structure needs cleaning */ |
| 102 | +#define EFSCORRUPTED EUCLEAN /* Filesystem is corrupted */ | |
| 101 | 103 | #define ENOTNAM 118 /* Not a XENIX named type file */ |
| 102 | 104 | #define ENAVAIL 119 /* No XENIX semaphores available */ |
| 103 | 105 | #define EISNAM 120 /* Is a named type file */ |
| @@ -860,8 +860,11 @@ __SYSCALL(__NR_file_setattr, sys_file_setattr) · 859 unmodified lines | ||
| 860 | 860 | #define __NR_listns 470 |
| 861 | 861 | __SYSCALL(__NR_listns, sys_listns) |
| 862 | 862 | |
| 863 | +#define __NR_rseq_slice_yield 471 | |
| 864 | +__SYSCALL(__NR_rseq_slice_yield, sys_rseq_slice_yield) | |
| 865 | + | |
| 863 | 866 | #undef __NR_syscalls |
| 864 | −#define __NR_syscalls 471 | |
| 867 | +#define __NR_syscalls 472 | |
| 865 | 868 | |
| 866 | 869 | /* |
| 867 | 870 | * 32 bit systems traditionally used different |
| @@ -105,8 +105,6 @@ extern "C" { · 104 unmodified lines | ||
| 105 | 105 | * |
| 106 | 106 | * %AMDGPU_GEM_DOMAIN_DOORBELL Doorbell. It is an MMIO region for |
| 107 | 107 | * signalling user mode queues. |
| 108 | − * | |
| 109 | − * %AMDGPU_GEM_DOMAIN_MMIO_REMAP MMIO remap page (special mapping for HDP flushing). | |
| 110 | 108 | */ |
| 111 | 109 | #define AMDGPU_GEM_DOMAIN_CPU 0x1 |
| 112 | 110 | #define AMDGPU_GEM_DOMAIN_GTT 0x2 |
| @@ -115,15 +113,13 @@ extern "C" { · 2 unmodified lines | ||
| 115 | 113 | #define AMDGPU_GEM_DOMAIN_GWS 0x10 |
| 116 | 114 | #define AMDGPU_GEM_DOMAIN_OA 0x20 |
| 117 | 115 | #define AMDGPU_GEM_DOMAIN_DOORBELL 0x40 |
| 118 | −#define AMDGPU_GEM_DOMAIN_MMIO_REMAP 0x80 | |
| 119 | 116 | #define AMDGPU_GEM_DOMAIN_MASK (AMDGPU_GEM_DOMAIN_CPU | \ |
| 120 | 117 | AMDGPU_GEM_DOMAIN_GTT | \ |
| 121 | 118 | AMDGPU_GEM_DOMAIN_VRAM | \ |
| 122 | 119 | AMDGPU_GEM_DOMAIN_GDS | \ |
| 123 | 120 | AMDGPU_GEM_DOMAIN_GWS | \ |
| 124 | 121 | AMDGPU_GEM_DOMAIN_OA | \ |
| 125 | − AMDGPU_GEM_DOMAIN_DOORBELL | \ | |
| 126 | − AMDGPU_GEM_DOMAIN_MMIO_REMAP) | |
| 122 | + AMDGPU_GEM_DOMAIN_DOORBELL) | |
| 127 | 123 | |
| 128 | 124 | /* Flag that CPU access will be required for the case of VRAM domain */ |
| 129 | 125 | #define AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED (1 << 0) |
| @@ -883,7 +879,7 @@ struct drm_amdgpu_gem_list_handles_entry { · 753 unmodified lines | ||
| 883 | 879 | #define AMDGPU_VM_PAGE_WRITEABLE (1 << 2) |
| 884 | 880 | /* executable mapping, new for VI */ |
| 885 | 881 | #define AMDGPU_VM_PAGE_EXECUTABLE (1 << 3) |
| 886 | −/* partially resident texture */ | |
| 882 | +/* unmapped page of partially resident textures */ | |
| 887 | 883 | #define AMDGPU_VM_PAGE_PRT (1 << 4) |
| 888 | 884 | /* MTYPE flags use bit 5 to 8 */ |
| 889 | 885 | #define AMDGPU_VM_MTYPE_MASK (0xf << 5) |
| @@ -1427,6 +1423,7 @@ struct drm_amdgpu_info_vbios { · 537 unmodified lines | ||
| 1427 | 1423 | #define AMDGPU_VRAM_TYPE_LPDDR4 11 |
| 1428 | 1424 | #define AMDGPU_VRAM_TYPE_LPDDR5 12 |
| 1429 | 1425 | #define AMDGPU_VRAM_TYPE_HBM3E 13 |
| 1426 | +#define AMDGPU_VRAM_TYPE_HBM4 14 | |
| 1430 | 1427 | |
| 1431 | 1428 | struct drm_amdgpu_info_device { |
| 1432 | 1429 | /** PCI Device ID */ |
| @@ -1629,9 +1626,25 @@ struct drm_amdgpu_info_uq_metadata_gfx { · 196 unmodified lines | ||
| 1629 | 1626 | __u32 csa_alignment; |
| 1630 | 1627 | }; |
| 1631 | 1628 | |
| 1629 | +struct drm_amdgpu_info_uq_metadata_compute { | |
| 1630 | + /* EOP size for gfx11 */ | |
| 1631 | + __u32 eop_size; | |
| 1632 | + /* EOP base virtual alignment for gfx11 */ | |
| 1633 | + __u32 eop_alignment; | |
| 1634 | +}; | |
| 1635 | + | |
| 1636 | +struct drm_amdgpu_info_uq_metadata_sdma { | |
| 1637 | + /* context save area size for sdma6 */ | |
| 1638 | + __u32 csa_size; | |
| 1639 | + /* context save area base virtual alignment for sdma6 */ | |
| 1640 | + __u32 csa_alignment; | |
| 1641 | +}; | |
| 1642 | + | |
| 1632 | 1643 | struct drm_amdgpu_info_uq_metadata { |
| 1633 | 1644 | union { |
| 1634 | 1645 | struct drm_amdgpu_info_uq_metadata_gfx gfx; |
| 1646 | + struct drm_amdgpu_info_uq_metadata_compute compute; | |
| 1647 | + struct drm_amdgpu_info_uq_metadata_sdma sdma; | |
| 1635 | 1648 | }; |
| 1636 | 1649 | }; |
| 1637 | 1650 | |
| @@ -1654,6 +1667,7 @@ struct drm_amdgpu_info_uq_metadata { · 16 unmodified lines | ||
| 1654 | 1667 | #define AMDGPU_FAMILY_GC_10_3_6 149 /* GC 10.3.6 */ |
| 1655 | 1668 | #define AMDGPU_FAMILY_GC_10_3_7 151 /* GC 10.3.7 */ |
| 1656 | 1669 | #define AMDGPU_FAMILY_GC_11_5_0 150 /* GC 11.5.0 */ |
| 1670 | +#define AMDGPU_FAMILY_GC_11_5_4 154 /* GC 11.5.4 */ | |
| 1657 | 1671 | #define AMDGPU_FAMILY_GC_12_0_0 152 /* GC 12.0.0 */ |
| 1658 | 1672 | |
| 1659 | 1673 | #if defined(__cplusplus) |
| @@ -19,6 +19,14 @@ extern "C" { · 18 unmodified lines | ||
| 19 | 19 | #define AMDXDNA_INVALID_BO_HANDLE 0 |
| 20 | 20 | #define AMDXDNA_INVALID_FENCE_HANDLE 0 |
| 21 | 21 | |
| 22 | +/* | |
| 23 | + * Define hardware context priority | |
| 24 | + */ | |
| 25 | +#define AMDXDNA_QOS_REALTIME_PRIORITY 0x100 | |
| 26 | +#define AMDXDNA_QOS_HIGH_PRIORITY 0x180 | |
| 27 | +#define AMDXDNA_QOS_NORMAL_PRIORITY 0x200 | |
| 28 | +#define AMDXDNA_QOS_LOW_PRIORITY 0x280 | |
| 29 | + | |
| 22 | 30 | enum amdxdna_device_type { |
| 23 | 31 | AMDXDNA_DEV_TYPE_UNKNOWN = -1, |
| 24 | 32 | AMDXDNA_DEV_TYPE_KMQ, |
| @@ -24,6 +24,8 @@ extern "C" { · 23 unmodified lines | ||
| 24 | 24 | #define DRM_PANFROST_SET_LABEL_BO 0x09 |
| 25 | 25 | #define DRM_PANFROST_JM_CTX_CREATE 0x0a |
| 26 | 26 | #define DRM_PANFROST_JM_CTX_DESTROY 0x0b |
| 27 | +#define DRM_PANFROST_SYNC_BO 0x0c | |
| 28 | +#define DRM_PANFROST_QUERY_BO_INFO 0x0d | |
| 27 | 29 | |
| 28 | 30 | #define DRM_IOCTL_PANFROST_SUBMIT DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_SUBMIT, struct drm_panfrost_submit) |
| 29 | 31 | #define DRM_IOCTL_PANFROST_WAIT_BO DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_WAIT_BO, struct drm_panfrost_wait_bo) |
| @@ -35,6 +37,8 @@ extern "C" { · 5 unmodified lines | ||
| 35 | 37 | #define DRM_IOCTL_PANFROST_SET_LABEL_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_SET_LABEL_BO, struct drm_panfrost_set_label_bo) |
| 36 | 38 | #define DRM_IOCTL_PANFROST_JM_CTX_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_JM_CTX_CREATE, struct drm_panfrost_jm_ctx_create) |
| 37 | 39 | #define DRM_IOCTL_PANFROST_JM_CTX_DESTROY DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_JM_CTX_DESTROY, struct drm_panfrost_jm_ctx_destroy) |
| 40 | +#define DRM_IOCTL_PANFROST_SYNC_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_SYNC_BO, struct drm_panfrost_sync_bo) | |
| 41 | +#define DRM_IOCTL_PANFROST_QUERY_BO_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_QUERY_BO_INFO, struct drm_panfrost_query_bo_info) | |
| 38 | 42 | |
| 39 | 43 | /* |
| 40 | 44 | * Unstable ioctl(s): only exposed when the unsafe unstable_ioctls module |
| @@ -120,9 +124,12 @@ struct drm_panfrost_wait_bo { · 79 unmodified lines | ||
| 120 | 124 | __s64 timeout_ns; |
| 121 | 125 | }; |
| 122 | 126 | |
| 123 | −/* Valid flags to pass to drm_panfrost_create_bo */ | |
| 127 | +/* Valid flags to pass to drm_panfrost_create_bo. | |
| 128 | + * PANFROST_BO_WB_MMAP can't be set if PANFROST_BO_HEAP is. | |
| 129 | + */ | |
| 124 | 130 | #define PANFROST_BO_NOEXEC 1 |
| 125 | 131 | #define PANFROST_BO_HEAP 2 |
| 132 | +#define PANFROST_BO_WB_MMAP 4 | |
| 126 | 133 | |
| 127 | 134 | /** |
| 128 | 135 | * struct drm_panfrost_create_bo - ioctl argument for creating Panfrost BOs. |
| @@ -228,6 +235,13 @@ enum drm_panfrost_param { · 99 unmodified lines | ||
| 228 | 235 | DRM_PANFROST_PARAM_SYSTEM_TIMESTAMP, |
| 229 | 236 | DRM_PANFROST_PARAM_SYSTEM_TIMESTAMP_FREQUENCY, |
| 230 | 237 | DRM_PANFROST_PARAM_ALLOWED_JM_CTX_PRIORITIES, |
| 238 | + DRM_PANFROST_PARAM_SELECTED_COHERENCY, | |
| 239 | +}; | |
| 240 | + | |
| 241 | +enum drm_panfrost_gpu_coherency { | |
| 242 | + DRM_PANFROST_GPU_COHERENCY_ACE_LITE = 0, | |
| 243 | + DRM_PANFROST_GPU_COHERENCY_ACE = 1, | |
| 244 | + DRM_PANFROST_GPU_COHERENCY_NONE = 31, | |
| 231 | 245 | }; |
| 232 | 246 | |
| 233 | 247 | struct drm_panfrost_get_param { |
| @@ -301,6 +315,66 @@ struct drm_panfrost_set_label_bo { · 67 unmodified lines | ||
| 301 | 315 | __u64 label; |
| 302 | 316 | }; |
| 303 | 317 | |
| 318 | +/* Valid flags to pass to drm_panfrost_bo_sync_op */ | |
| 319 | +#define PANFROST_BO_SYNC_CPU_CACHE_FLUSH 0 | |
| 320 | +#define PANFROST_BO_SYNC_CPU_CACHE_FLUSH_AND_INVALIDATE 1 | |
| 321 | + | |
| 322 | +/** | |
| 323 | + * struct drm_panthor_bo_flush_map_op - BO map sync op | |
| 324 | + */ | |
| 325 | +struct drm_panfrost_bo_sync_op { | |
| 326 | + /** @handle: Handle of the buffer object to sync. */ | |
| 327 | + __u32 handle; | |
| 328 | + | |
| 329 | + /** @type: Type of sync operation. */ | |
| 330 | + __u32 type; | |
| 331 | + | |
| 332 | + /** | |
| 333 | + * @offset: Offset into the BO at which the sync range starts. | |
| 334 | + * | |
| 335 | + * This will be rounded down to the nearest cache line as needed. | |
| 336 | + */ | |
| 337 | + __u32 offset; | |
| 338 | + | |
| 339 | + /** | |
| 340 | + * @size: Size of the range to sync | |
| 341 | + * | |
| 342 | + * @size + @offset will be rounded up to the nearest cache line as | |
| 343 | + * needed. | |
| 344 | + */ | |
| 345 | + __u32 size; | |
| 346 | +}; | |
| 347 | + | |
| 348 | +/** | |
| 349 | + * struct drm_panfrost_sync_bo - ioctl argument for syncing BO maps | |
| 350 | + */ | |
| 351 | +struct drm_panfrost_sync_bo { | |
| 352 | + /** Array of struct drm_panfrost_bo_sync_op */ | |
| 353 | + __u64 ops; | |
| 354 | + | |
| 355 | + /** Number of BO sync ops */ | |
| 356 | + __u32 op_count; | |
| 357 | + | |
| 358 | + __u32 pad; | |
| 359 | +}; | |
| 360 | + | |
| 361 | +/** BO comes from a different subsystem. */ | |
| 362 | +#define DRM_PANFROST_BO_IS_IMPORTED (1 << 0) | |
| 363 | + | |
| 364 | +struct drm_panfrost_query_bo_info { | |
| 365 | + /** Handle of the object being queried. */ | |
| 366 | + __u32 handle; | |
| 367 | + | |
| 368 | + /** Extra flags that are not coming from the BO_CREATE ioctl(). */ | |
| 369 | + __u32 extra_flags; | |
| 370 | + | |
| 371 | + /** Flags passed at creation time. */ | |
| 372 | + __u32 create_flags; | |
| 373 | + | |
| 374 | + /** Will be zero on return. */ | |
| 375 | + __u32 pad; | |
| 376 | +}; | |
| 377 | + | |
| 304 | 378 | /* Definitions for coredump decoding in user space */ |
| 305 | 379 | #define PANFROSTDUMP_MAJOR 1 |
| 306 | 380 | #define PANFROSTDUMP_MINOR 0 |
| @@ -144,6 +144,16 @@ enum drm_panthor_ioctl_id { · 143 unmodified lines | ||
| 144 | 144 | * pgoff_t size. |
| 145 | 145 | */ |
| 146 | 146 | DRM_PANTHOR_SET_USER_MMIO_OFFSET, |
| 147 | + | |
| 148 | + /** @DRM_PANTHOR_BO_SYNC: Sync BO data to/from the device */ | |
| 149 | + DRM_PANTHOR_BO_SYNC, | |
| 150 | + | |
| 151 | + /** | |
| 152 | + * @DRM_PANTHOR_BO_QUERY_INFO: Query information about a BO. | |
| 153 | + * | |
| 154 | + * This is useful for imported BOs. | |
| 155 | + */ | |
| 156 | + DRM_PANTHOR_BO_QUERY_INFO, | |
| 147 | 157 | }; |
| 148 | 158 | |
| 149 | 159 | /** |
| @@ -245,6 +255,26 @@ enum drm_panthor_dev_query_type { · 95 unmodified lines | ||
| 245 | 255 | DRM_PANTHOR_DEV_QUERY_GROUP_PRIORITIES_INFO, |
| 246 | 256 | }; |
| 247 | 257 | |
| 258 | +/** | |
| 259 | + * enum drm_panthor_gpu_coherency: Type of GPU coherency | |
| 260 | + */ | |
| 261 | +enum drm_panthor_gpu_coherency { | |
| 262 | + /** | |
| 263 | + * @DRM_PANTHOR_GPU_COHERENCY_ACE_LITE: ACE Lite coherency. | |
| 264 | + */ | |
| 265 | + DRM_PANTHOR_GPU_COHERENCY_ACE_LITE = 0, | |
| 266 | + | |
| 267 | + /** | |
| 268 | + * @DRM_PANTHOR_GPU_COHERENCY_ACE: ACE coherency. | |
| 269 | + */ | |
| 270 | + DRM_PANTHOR_GPU_COHERENCY_ACE = 1, | |
| 271 | + | |
| 272 | + /** | |
| 273 | + * @DRM_PANTHOR_GPU_COHERENCY_NONE: No coherency. | |
| 274 | + */ | |
| 275 | + DRM_PANTHOR_GPU_COHERENCY_NONE = 31, | |
| 276 | +}; | |
| 277 | + | |
| 248 | 278 | /** |
| 249 | 279 | * struct drm_panthor_gpu_info - GPU information |
| 250 | 280 | * |
| @@ -301,7 +331,16 @@ struct drm_panthor_gpu_info { · 50 unmodified lines | ||
| 301 | 331 | */ |
| 302 | 332 | __u32 thread_max_barrier_size; |
| 303 | 333 | |
| 304 | − /** @coherency_features: Coherency features. */ | |
| 334 | + /** | |
| 335 | + * @coherency_features: Coherency features. | |
| 336 | + * | |
| 337 | + * Combination of drm_panthor_gpu_coherency flags. | |
| 338 | + * | |
| 339 | + * Note that this is just what the coherency protocols supported by the | |
| 340 | + * GPU, but the actual coherency in place depends on the SoC | |
| 341 | + * integration and is reflected by | |
| 342 | + * drm_panthor_gpu_info::selected_coherency. | |
| 343 | + */ | |
| 305 | 344 | __u32 coherency_features; |
| 306 | 345 | |
| 307 | 346 | /** @texture_features: Texture features. */ |
| @@ -310,8 +349,12 @@ struct drm_panthor_gpu_info { · 2 unmodified lines | ||
| 310 | 349 | /** @as_present: Bitmask encoding the number of address-space exposed by the MMU. */ |
| 311 | 350 | __u32 as_present; |
| 312 | 351 | |
| 313 | − /** @pad0: MBZ. */ | |
| 314 | − __u32 pad0; | |
| 352 | + /** | |
| 353 | + * @selected_coherency: Coherency selected for this device. | |
| 354 | + * | |
| 355 | + * One of drm_panthor_gpu_coherency. | |
| 356 | + */ | |
| 357 | + __u32 selected_coherency; | |
| 315 | 358 | |
| 316 | 359 | /** @shader_present: Bitmask encoding the shader cores exposed by the GPU. */ |
| 317 | 360 | __u64 shader_present; |
| @@ -638,6 +681,15 @@ struct drm_panthor_vm_get_state { · 320 unmodified lines | ||
| 638 | 681 | enum drm_panthor_bo_flags { |
| 639 | 682 | /** @DRM_PANTHOR_BO_NO_MMAP: The buffer object will never be CPU-mapped in userspace. */ |
| 640 | 683 | DRM_PANTHOR_BO_NO_MMAP = (1 << 0), |
| 684 | + | |
| 685 | + /** | |
| 686 | + * @DRM_PANTHOR_BO_WB_MMAP: Force "Write-Back Cacheable" CPU mapping. | |
| 687 | + * | |
| 688 | + * CPU map the buffer object in userspace by forcing the "Write-Back | |
| 689 | + * Cacheable" cacheability attribute. The mapping otherwise uses the | |
| 690 | + * "Non-Cacheable" attribute if the GPU is not IO coherent. | |
| 691 | + */ | |
| 692 | + DRM_PANTHOR_BO_WB_MMAP = (1 << 1), | |
| 641 | 693 | }; |
| 642 | 694 | |
| 643 | 695 | /** |
| @@ -1040,6 +1092,101 @@ struct drm_panthor_set_user_mmio_offset { · 396 unmodified lines | ||
| 1040 | 1092 | __u64 offset; |
| 1041 | 1093 | }; |
| 1042 | 1094 | |
| 1095 | +/** | |
| 1096 | + * enum drm_panthor_bo_sync_op_type - BO sync type | |
| 1097 | + */ | |
| 1098 | +enum drm_panthor_bo_sync_op_type { | |
| 1099 | + /** @DRM_PANTHOR_BO_SYNC_CPU_CACHE_FLUSH: Flush CPU caches. */ | |
| 1100 | + DRM_PANTHOR_BO_SYNC_CPU_CACHE_FLUSH = 0, | |
| 1101 | + | |
| 1102 | + /** @DRM_PANTHOR_BO_SYNC_CPU_CACHE_FLUSH_AND_INVALIDATE: Flush and invalidate CPU caches. */ | |
| 1103 | + DRM_PANTHOR_BO_SYNC_CPU_CACHE_FLUSH_AND_INVALIDATE = 1, | |
| 1104 | +}; | |
| 1105 | + | |
| 1106 | +/** | |
| 1107 | + * struct drm_panthor_bo_sync_op - BO map sync op | |
| 1108 | + */ | |
| 1109 | +struct drm_panthor_bo_sync_op { | |
| 1110 | + /** @handle: Handle of the buffer object to sync. */ | |
| 1111 | + __u32 handle; | |
| 1112 | + | |
| 1113 | + /** @type: Type of operation. */ | |
| 1114 | + __u32 type; | |
| 1115 | + | |
| 1116 | + /** | |
| 1117 | + * @offset: Offset into the BO at which the sync range starts. | |
| 1118 | + * | |
| 1119 | + * This will be rounded down to the nearest cache line as needed. | |
| 1120 | + */ | |
| 1121 | + __u64 offset; | |
| 1122 | + | |
| 1123 | + /** | |
| 1124 | + * @size: Size of the range to sync | |
| 1125 | + * | |
| 1126 | + * @size + @offset will be rounded up to the nearest cache line as | |
| 1127 | + * needed. | |
| 1128 | + */ | |
| 1129 | + __u64 size; | |
| 1130 | +}; | |
| 1131 | + | |
| 1132 | +/** | |
| 1133 | + * struct drm_panthor_bo_sync - BO map sync request | |
| 1134 | + */ | |
| 1135 | +struct drm_panthor_bo_sync { | |
| 1136 | + /** | |
| 1137 | + * @ops: Array of struct drm_panthor_bo_sync_op sync operations. | |
| 1138 | + */ | |
| 1139 | + struct drm_panthor_obj_array ops; | |
| 1140 | +}; | |
| 1141 | + | |
| 1142 | +/** | |
| 1143 | + * enum drm_panthor_bo_extra_flags - Set of flags returned on a BO_QUERY_INFO request | |
| 1144 | + * | |
| 1145 | + * Those are flags reflecting BO properties that are not directly coming from the flags | |
| 1146 | + * passed are creation time, or information on BOs that were imported from other drivers. | |
| 1147 | + */ | |
| 1148 | +enum drm_panthor_bo_extra_flags { | |
| 1149 | + /** | |
| 1150 | + * @DRM_PANTHOR_BO_IS_IMPORTED: BO has been imported from an external driver. | |
| 1151 | + * | |
| 1152 | + * Note that imported dma-buf handles are not flagged as imported if they | |
| 1153 | + * where exported by panthor. Only buffers that are coming from other drivers | |
| 1154 | + * (dma heaps, other GPUs, display controllers, V4L, ...). | |
| 1155 | + * | |
| 1156 | + * It's also important to note that all imported BOs are mapped cached and can't | |
| 1157 | + * be considered IO-coherent even if the GPU is. This means they require explicit | |
| 1158 | + * syncs that must go through the DRM_PANTHOR_BO_SYNC ioctl (userland cache | |
| 1159 | + * maintenance is not allowed in that case, because extra operations might be | |
| 1160 | + * needed to make changes visible to the CPU/device, like buffer migration when the | |
| 1161 | + * exporter is a GPU with its own VRAM). | |
| 1162 | + */ | |
| 1163 | + DRM_PANTHOR_BO_IS_IMPORTED = (1 << 0), | |
| 1164 | +}; | |
| 1165 | + | |
| 1166 | +/** | |
| 1167 | + * struct drm_panthor_bo_query_info - Query BO info | |
| 1168 | + */ | |
| 1169 | +struct drm_panthor_bo_query_info { | |
| 1170 | + /** @handle: Handle of the buffer object to query flags on. */ | |
| 1171 | + __u32 handle; | |
| 1172 | + | |
| 1173 | + /** | |
| 1174 | + * @extra_flags: Combination of enum drm_panthor_bo_extra_flags flags. | |
| 1175 | + */ | |
| 1176 | + __u32 extra_flags; | |
| 1177 | + | |
| 1178 | + /** | |
| 1179 | + * @create_flags: Flags passed at creation time. | |
| 1180 | + * | |
| 1181 | + * Combination of enum drm_panthor_bo_flags flags. | |
| 1182 | + * Will be zero if the buffer comes from a different driver. | |
| 1183 | + */ | |
| 1184 | + __u32 create_flags; | |
| 1185 | + | |
| 1186 | + /** @pad: Will be zero on return. */ | |
| 1187 | + __u32 pad; | |
| 1188 | +}; | |
| 1189 | + | |
| 1043 | 1190 | /** |
| 1044 | 1191 | * DRM_IOCTL_PANTHOR() - Build a Panthor IOCTL number |
| 1045 | 1192 | * @__access: Access type. Must be R, W or RW. |
| @@ -1086,6 +1233,10 @@ enum { · 40 unmodified lines | ||
| 1086 | 1233 | DRM_IOCTL_PANTHOR(WR, BO_SET_LABEL, bo_set_label), |
| 1087 | 1234 | DRM_IOCTL_PANTHOR_SET_USER_MMIO_OFFSET = |
| 1088 | 1235 | DRM_IOCTL_PANTHOR(WR, SET_USER_MMIO_OFFSET, set_user_mmio_offset), |
| 1236 | + DRM_IOCTL_PANTHOR_BO_SYNC = | |
| 1237 | + DRM_IOCTL_PANTHOR(WR, BO_SYNC, bo_sync), | |
| 1238 | + DRM_IOCTL_PANTHOR_BO_QUERY_INFO = | |
| 1239 | + DRM_IOCTL_PANTHOR(WR, BO_QUERY_INFO, bo_query_info), | |
| 1089 | 1240 | }; |
| 1090 | 1241 | |
| 1091 | 1242 | #if defined(__cplusplus) |
| @@ -26,20 +26,27 @@ extern "C" { · 25 unmodified lines | ||
| 26 | 26 | * |
| 27 | 27 | */ |
| 28 | 28 | struct drm_rocket_create_bo { |
| 29 | − /** Input: Size of the requested BO. */ | |
| 29 | + /** | |
| 30 | + * @size: Input: Size of the requested BO. | |
| 31 | + */ | |
| 30 | 32 | __u32 size; |
| 31 | 33 | |
| 32 | − /** Output: GEM handle for the BO. */ | |
| 34 | + /** | |
| 35 | + * @handle: Output: GEM handle for the BO. | |
| 36 | + */ | |
| 33 | 37 | __u32 handle; |
| 34 | 38 | |
| 35 | 39 | /** |
| 36 | − * Output: DMA address for the BO in the NPU address space. This address | |
| 37 | − * is private to the DRM fd and is valid for the lifetime of the GEM | |
| 38 | − * handle. | |
| 40 | + * @dma_address: Output: DMA address for the BO in the NPU address | |
| 41 | + * space. This address is private to the DRM fd and is valid for | |
| 42 | + * the lifetime of the GEM handle. | |
| 39 | 43 | */ |
| 40 | 44 | __u64 dma_address; |
| 41 | 45 | |
| 42 | − /** Output: Offset into the drm node to use for subsequent mmap call. */ | |
| 46 | + /** | |
| 47 | + * @offset: Output: Offset into the drm node to use for subsequent | |
| 48 | + * mmap call. | |
| 49 | + */ | |
| 43 | 50 | __u64 offset; |
| 44 | 51 | }; |
| 45 | 52 | |
| @@ -50,13 +57,19 @@ struct drm_rocket_create_bo { · 4 unmodified lines | ||
| 50 | 57 | * synchronization. |
| 51 | 58 | */ |
| 52 | 59 | struct drm_rocket_prep_bo { |
| 53 | − /** Input: GEM handle of the buffer object. */ | |
| 60 | + /** | |
| 61 | + * @handle: Input: GEM handle of the buffer object. | |
| 62 | + */ | |
| 54 | 63 | __u32 handle; |
| 55 | 64 | |
| 56 | − /** Reserved, must be zero. */ | |
| 65 | + /** | |
| 66 | + * @reserved: Reserved, must be zero. | |
| 67 | + */ | |
| 57 | 68 | __u32 reserved; |
| 58 | 69 | |
| 59 | − /** Input: Amount of time to wait for NPU jobs. */ | |
| 70 | + /** | |
| 71 | + * @timeout_ns: Input: Amount of time to wait for NPU jobs. | |
| 72 | + */ | |
| 60 | 73 | __s64 timeout_ns; |
| 61 | 74 | }; |
| 62 | 75 | |
| @@ -66,10 +79,14 @@ struct drm_rocket_prep_bo { · 3 unmodified lines | ||
| 66 | 79 | * Synchronize caches for NPU access. |
| 67 | 80 | */ |
| 68 | 81 | struct drm_rocket_fini_bo { |
| 69 | − /** Input: GEM handle of the buffer object. */ | |
| 82 | + /** | |
| 83 | + * @handle: Input: GEM handle of the buffer object. | |
| 84 | + */ | |
| 70 | 85 | __u32 handle; |
| 71 | 86 | |
| 72 | − /** Reserved, must be zero. */ | |
| 87 | + /** | |
| 88 | + * @reserved: Reserved, must be zero. | |
| 89 | + */ | |
| 73 | 90 | __u32 reserved; |
| 74 | 91 | }; |
| 75 | 92 | |
| @@ -79,10 +96,15 @@ struct drm_rocket_fini_bo { · 3 unmodified lines | ||
| 79 | 96 | * A task is the smallest unit of work that can be run on the NPU. |
| 80 | 97 | */ |
| 81 | 98 | struct drm_rocket_task { |
| 82 | − /** Input: DMA address to NPU mapping of register command buffer */ | |
| 99 | + /** | |
| 100 | + * @regcmd: Input: DMA address to NPU mapping of register command buffer | |
| 101 | + */ | |
| 83 | 102 | __u32 regcmd; |
| 84 | 103 | |
| 85 | − /** Input: Number of commands in the register command buffer */ | |
| 104 | + /** | |
| 105 | + * @regcmd_count: Input: Number of commands in the register command | |
| 106 | + * buffer | |
| 107 | + */ | |
| 86 | 108 | __u32 regcmd_count; |
| 87 | 109 | }; |
| 88 | 110 | |
| @@ -94,25 +116,44 @@ struct drm_rocket_task { · 5 unmodified lines | ||
| 94 | 116 | * sequentially on the same core, to benefit from memory residency in SRAM. |
| 95 | 117 | */ |
| 96 | 118 | struct drm_rocket_job { |
| 97 | − /** Input: Pointer to an array of struct drm_rocket_task. */ | |
| 119 | + /** | |
| 120 | + * @tasks: Input: Pointer to an array of struct drm_rocket_task. | |
| 121 | + */ | |
| 98 | 122 | __u64 tasks; |
| 99 | 123 | |
| 100 | − /** Input: Pointer to a u32 array of the BOs that are read by the job. */ | |
| 124 | + /** | |
| 125 | + * @in_bo_handles: Input: Pointer to a u32 array of the BOs that | |
| 126 | + * are read by the job. | |
| 127 | + */ | |
| 101 | 128 | __u64 in_bo_handles; |
| 102 | 129 | |
| 103 | − /** Input: Pointer to a u32 array of the BOs that are written to by the job. */ | |
| 130 | + /** | |
| 131 | + * @out_bo_handles: Input: Pointer to a u32 array of the BOs that | |
| 132 | + * are written to by the job. | |
| 133 | + */ | |
| 104 | 134 | __u64 out_bo_handles; |
| 105 | 135 | |
| 106 | − /** Input: Number of tasks passed in. */ | |
| 136 | + /** | |
| 137 | + * @task_count: Input: Number of tasks passed in. | |
| 138 | + */ | |
| 107 | 139 | __u32 task_count; |
| 108 | 140 | |
| 109 | − /** Input: Size in bytes of the structs in the @tasks field. */ | |
| 141 | + /** | |
| 142 | + * @task_struct_size: Input: Size in bytes of the structs in the | |
| 143 | + * @tasks field. | |
| 144 | + */ | |
| 110 | 145 | __u32 task_struct_size; |
| 111 | 146 | |
| 112 | − /** Input: Number of input BO handles passed in (size is that times 4). */ | |
| 147 | + /** | |
| 148 | + * @in_bo_handle_count: Input: Number of input BO handles passed in | |
| 149 | + * (size is that times 4). | |
| 150 | + */ | |
| 113 | 151 | __u32 in_bo_handle_count; |
| 114 | 152 | |
| 115 | − /** Input: Number of output BO handles passed in (size is that times 4). */ | |
| 153 | + /** | |
| 154 | + * @out_bo_handle_count: Input: Number of output BO handles passed in | |
| 155 | + * (size is that times 4). | |
| 156 | + */ | |
| 116 | 157 | __u32 out_bo_handle_count; |
| 117 | 158 | }; |
| 118 | 159 | |
| @@ -122,16 +163,25 @@ struct drm_rocket_job { · 3 unmodified lines | ||
| 122 | 163 | * The kernel will schedule the execution of these jobs in dependency order. |
| 123 | 164 | */ |
| 124 | 165 | struct drm_rocket_submit { |
| 125 | − /** Input: Pointer to an array of struct drm_rocket_job. */ | |
| 166 | + /** | |
| 167 | + * @jobs: Input: Pointer to an array of struct drm_rocket_job. | |
| 168 | + */ | |
| 126 | 169 | __u64 jobs; |
| 127 | 170 | |
| 128 | − /** Input: Number of jobs passed in. */ | |
| 171 | + /** | |
| 172 | + * @job_count: Input: Number of jobs passed in. | |
| 173 | + */ | |
| 129 | 174 | __u32 job_count; |
| 130 | 175 | |
| 131 | − /** Input: Size in bytes of the structs in the @jobs field. */ | |
| 176 | + /** | |
| 177 | + * @job_struct_size: Input: Size in bytes of the structs in the | |
| 178 | + * @jobs field. | |
| 179 | + */ | |
| 132 | 180 | __u32 job_struct_size; |
| 133 | 181 | |
| 134 | − /** Reserved, must be zero. */ | |
| 182 | + /** | |
| 183 | + * @reserved: Reserved, must be zero. | |
| 184 | + */ | |
| 135 | 185 | __u64 reserved; |
| 136 | 186 | }; |
| 137 | 187 | |
| @@ -106,6 +106,7 @@ extern "C" { · 105 unmodified lines | ||
| 106 | 106 | #define DRM_XE_OBSERVATION 0x0b |
| 107 | 107 | #define DRM_XE_MADVISE 0x0c |
| 108 | 108 | #define DRM_XE_VM_QUERY_MEM_RANGE_ATTRS 0x0d |
| 109 | +#define DRM_XE_EXEC_QUEUE_SET_PROPERTY 0x0e | |
| 109 | 110 | |
| 110 | 111 | /* Must be kept compact -- no holes */ |
| 111 | 112 | |
| @@ -123,6 +124,7 @@ extern "C" { · 11 unmodified lines | ||
| 123 | 124 | #define DRM_IOCTL_XE_OBSERVATION DRM_IOW(DRM_COMMAND_BASE + DRM_XE_OBSERVATION, struct drm_xe_observation_param) |
| 124 | 125 | #define DRM_IOCTL_XE_MADVISE DRM_IOW(DRM_COMMAND_BASE + DRM_XE_MADVISE, struct drm_xe_madvise) |
| 125 | 126 | #define DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_VM_QUERY_MEM_RANGE_ATTRS, struct drm_xe_vm_query_mem_range_attr) |
| 127 | +#define DRM_IOCTL_XE_EXEC_QUEUE_SET_PROPERTY DRM_IOW(DRM_COMMAND_BASE + DRM_XE_EXEC_QUEUE_SET_PROPERTY, struct drm_xe_exec_queue_set_property) | |
| 126 | 128 | |
| 127 | 129 | /** |
| 128 | 130 | * DOC: Xe IOCTL Extensions |
| @@ -210,8 +212,12 @@ struct drm_xe_ext_set_property { · 81 unmodified lines | ||
| 210 | 212 | /** @pad: MBZ */ |
| 211 | 213 | __u32 pad; |
| 212 | 214 | |
| 213 | − /** @value: property value */ | |
| 214 | − __u64 value; | |
| 215 | + union { | |
| 216 | + /** @value: property value */ | |
| 217 | + __u64 value; | |
| 218 | + /** @ptr: pointer to user value */ | |
| 219 | + __u64 ptr; | |
| 220 | + }; | |
| 215 | 221 | |
| 216 | 222 | /** @reserved: Reserved */ |
| 217 | 223 | __u64 reserved[2]; |
| @@ -403,6 +409,9 @@ struct drm_xe_query_mem_regions { · 185 unmodified lines | ||
| 403 | 409 | * has low latency hint support |
| 404 | 410 | * - %DRM_XE_QUERY_CONFIG_FLAG_HAS_CPU_ADDR_MIRROR - Flag is set if the |
| 405 | 411 | * device has CPU address mirroring support |
| 412 | + * - %DRM_XE_QUERY_CONFIG_FLAG_HAS_NO_COMPRESSION_HINT - Flag is set if the | |
| 413 | + * device supports the userspace hint %DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION. | |
| 414 | + * This is exposed only on Xe2+. | |
| 406 | 415 | * - %DRM_XE_QUERY_CONFIG_MIN_ALIGNMENT - Minimal memory alignment |
| 407 | 416 | * required by this device, typically SZ_4K or SZ_64K |
| 408 | 417 | * - %DRM_XE_QUERY_CONFIG_VA_BITS - Maximum bits of a virtual address |
| @@ -421,6 +430,7 @@ struct drm_xe_query_config { · 12 unmodified lines | ||
| 421 | 430 | #define DRM_XE_QUERY_CONFIG_FLAG_HAS_VRAM (1 << 0) |
| 422 | 431 | #define DRM_XE_QUERY_CONFIG_FLAG_HAS_LOW_LATENCY (1 << 1) |
| 423 | 432 | #define DRM_XE_QUERY_CONFIG_FLAG_HAS_CPU_ADDR_MIRROR (1 << 2) |
| 433 | + #define DRM_XE_QUERY_CONFIG_FLAG_HAS_NO_COMPRESSION_HINT (1 << 3) | |
| 424 | 434 | #define DRM_XE_QUERY_CONFIG_MIN_ALIGNMENT 2 |
| 425 | 435 | #define DRM_XE_QUERY_CONFIG_VA_BITS 3 |
| 426 | 436 | #define DRM_XE_QUERY_CONFIG_MAX_EXEC_QUEUE_PRIORITY 4 |
| @@ -791,6 +801,17 @@ struct drm_xe_device_query { · 364 unmodified lines | ||
| 791 | 801 | * need to use VRAM for display surfaces, therefore the kernel requires |
| 792 | 802 | * setting this flag for such objects, otherwise an error is thrown on |
| 793 | 803 | * small-bar systems. |
| 804 | + * - %DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION - Allows userspace to | |
| 805 | + * hint that compression (CCS) should be disabled for the buffer being | |
| 806 | + * created. This can avoid unnecessary memory operations and CCS state | |
| 807 | + * management. | |
| 808 | + * On pre-Xe2 platforms, this flag is currently rejected as compression | |
| 809 | + * control is not supported via PAT index. On Xe2+ platforms, compression | |
| 810 | + * is controlled via PAT entries. If this flag is set, the driver will reject | |
| 811 | + * any VM bind that requests a PAT index enabling compression for this BO. | |
| 812 | + * Note: On dGPU platforms, there is currently no change in behavior with | |
| 813 | + * this flag, but future improvements may leverage it. The current benefit is | |
| 814 | + * primarily applicable to iGPU platforms. | |
| 794 | 815 | * |
| 795 | 816 | * @cpu_caching supports the following values: |
| 796 | 817 | * - %DRM_XE_GEM_CPU_CACHING_WB - Allocate the pages with write-back |
| @@ -837,6 +858,7 @@ struct drm_xe_gem_create { · 40 unmodified lines | ||
| 837 | 858 | #define DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING (1 << 0) |
| 838 | 859 | #define DRM_XE_GEM_CREATE_FLAG_SCANOUT (1 << 1) |
| 839 | 860 | #define DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM (1 << 2) |
| 861 | +#define DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION (1 << 3) | |
| 840 | 862 | /** |
| 841 | 863 | * @flags: Flags, currently a mask of memory instances of where BO can |
| 842 | 864 | * be placed |
| @@ -1252,6 +1274,17 @@ struct drm_xe_vm_bind { · 409 unmodified lines | ||
| 1252 | 1274 | * Given that going into a power-saving state kills PXP HWDRM sessions, |
| 1253 | 1275 | * runtime PM will be blocked while queues of this type are alive. |
| 1254 | 1276 | * All PXP queues will be killed if a PXP invalidation event occurs. |
| 1277 | + * - %DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_GROUP - Create a multi-queue group | |
| 1278 | + * or add secondary queues to a multi-queue group. | |
| 1279 | + * If the extension's 'value' field has %DRM_XE_MULTI_GROUP_CREATE flag set, | |
| 1280 | + * then a new multi-queue group is created with this queue as the primary queue | |
| 1281 | + * (Q0). Otherwise, the queue gets added to the multi-queue group whose primary | |
| 1282 | + * queue's exec_queue_id is specified in the lower 32 bits of the 'value' field. | |
| 1283 | + * All the other non-relevant bits of extension's 'value' field while adding the | |
| 1284 | + * primary or the secondary queues of the group must be set to 0. | |
| 1285 | + * - %DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE_PRIORITY - Set the queue | |
| 1286 | + * priority within the multi-queue group. Current valid priority values are 0–2 | |
| 1287 | + * (default is 1), with higher values indicating higher priority. | |
| 1255 | 1288 | * |
| 1256 | 1289 | * The example below shows how to use @drm_xe_exec_queue_create to create |
| 1257 | 1290 | * a simple exec_queue (no parallel submission) of class |
| @@ -1292,6 +1325,10 @@ struct drm_xe_exec_queue_create { · 34 unmodified lines | ||
| 1292 | 1325 | #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY 0 |
| 1293 | 1326 | #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE 1 |
| 1294 | 1327 | #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_PXP_TYPE 2 |
| 1328 | +#define DRM_XE_EXEC_QUEUE_SET_HANG_REPLAY_STATE 3 | |
| 1329 | +#define DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_GROUP 4 | |
| 1330 | +#define DRM_XE_MULTI_GROUP_CREATE (1ull << 63) | |
| 1331 | +#define DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE_PRIORITY 5 | |
| 1295 | 1332 | /** @extensions: Pointer to the first extension struct, if any */ |
| 1296 | 1333 | __u64 extensions; |
| 1297 | 1334 | |
| @@ -1655,6 +1692,9 @@ enum drm_xe_oa_unit_type { · 357 unmodified lines | ||
| 1655 | 1692 | |
| 1656 | 1693 | /** @DRM_XE_OA_UNIT_TYPE_OAM_SAG: OAM_SAG OA unit */ |
| 1657 | 1694 | DRM_XE_OA_UNIT_TYPE_OAM_SAG, |
| 1695 | + | |
| 1696 | + /** @DRM_XE_OA_UNIT_TYPE_MERT: MERT OA unit */ | |
| 1697 | + DRM_XE_OA_UNIT_TYPE_MERT, | |
| 1658 | 1698 | }; |
| 1659 | 1699 | |
| 1660 | 1700 | /** |
| @@ -1677,12 +1717,19 @@ struct drm_xe_oa_unit { · 16 unmodified lines | ||
| 1677 | 1717 | #define DRM_XE_OA_CAPS_OA_BUFFER_SIZE (1 << 2) |
| 1678 | 1718 | #define DRM_XE_OA_CAPS_WAIT_NUM_REPORTS (1 << 3) |
| 1679 | 1719 | #define DRM_XE_OA_CAPS_OAM (1 << 4) |
| 1720 | +#define DRM_XE_OA_CAPS_OA_UNIT_GT_ID (1 << 5) | |
| 1680 | 1721 | |
| 1681 | 1722 | /** @oa_timestamp_freq: OA timestamp freq */ |
| 1682 | 1723 | __u64 oa_timestamp_freq; |
| 1683 | 1724 | |
| 1725 | + /** @gt_id: gt id for this OA unit */ | |
| 1726 | + __u16 gt_id; | |
| 1727 | + | |
| 1728 | + /** @reserved1: MBZ */ | |
| 1729 | + __u16 reserved1[3]; | |
| 1730 | + | |
| 1684 | 1731 | /** @reserved: MBZ */ |
| 1685 | − __u64 reserved[4]; | |
| 1732 | + __u64 reserved[3]; | |
| 1686 | 1733 | |
| 1687 | 1734 | /** @num_engines: number of engines in @eci array */ |
| 1688 | 1735 | __u64 num_engines; |
| @@ -2072,7 +2119,13 @@ struct drm_xe_madvise { · 383 unmodified lines | ||
| 2072 | 2119 | struct { |
| 2073 | 2120 | #define DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE 0 |
| 2074 | 2121 | #define DRM_XE_PREFERRED_LOC_DEFAULT_SYSTEM -1 |
| 2075 | − /** @preferred_mem_loc.devmem_fd: fd for preferred loc */ | |
| 2122 | + /** | |
| 2123 | + * @preferred_mem_loc.devmem_fd: | |
| 2124 | + * Device file-descriptor of the device where the | |
| 2125 | + * preferred memory is located, or one of the | |
| 2126 | + * above special values. Please also see | |
| 2127 | + * @preferred_mem_loc.region_instance below. | |
| 2128 | + */ | |
| 2076 | 2129 | __u32 devmem_fd; |
| 2077 | 2130 | |
| 2078 | 2131 | #define DRM_XE_MIGRATE_ALL_PAGES 0 |
| @@ -2080,8 +2133,14 @@ struct drm_xe_madvise { · 1 unmodified line | ||
| 2080 | 2133 | /** @preferred_mem_loc.migration_policy: Page migration policy */ |
| 2081 | 2134 | __u16 migration_policy; |
| 2082 | 2135 | |
| 2083 | − /** @preferred_mem_loc.pad : MBZ */ | |
| 2084 | − __u16 pad; | |
| 2136 | + /** | |
| 2137 | + * @preferred_mem_loc.region_instance : Region instance. | |
| 2138 | + * MBZ if @devmem_fd <= &DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE. | |
| 2139 | + * Otherwise should point to the desired device | |
| 2140 | + * VRAM instance of the device indicated by | |
| 2141 | + * @preferred_mem_loc.devmem_fd. | |
| 2142 | + */ | |
| 2143 | + __u16 region_instance; | |
| 2085 | 2144 | |
| 2086 | 2145 | /** @preferred_mem_loc.reserved : Reserved */ |
| 2087 | 2146 | __u64 reserved; |
| @@ -2274,6 +2333,30 @@ struct drm_xe_vm_query_mem_range_attr { · 186 unmodified lines | ||
| 2274 | 2333 | |
| 2275 | 2334 | }; |
| 2276 | 2335 | |
| 2336 | +/** | |
| 2337 | + * struct drm_xe_exec_queue_set_property - exec queue set property | |
| 2338 | + * | |
| 2339 | + * Sets execution queue properties dynamically. | |
| 2340 | + * Currently only %DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE_PRIORITY | |
| 2341 | + * property can be dynamically set. | |
| 2342 | + */ | |
| 2343 | +struct drm_xe_exec_queue_set_property { | |
| 2344 | + /** @extensions: Pointer to the first extension struct, if any */ | |
| 2345 | + __u64 extensions; | |
| 2346 | + | |
| 2347 | + /** @exec_queue_id: Exec queue ID */ | |
| 2348 | + __u32 exec_queue_id; | |
| 2349 | + | |
| 2350 | + /** @property: property to set */ | |
| 2351 | + __u32 property; | |
| 2352 | + | |
| 2353 | + /** @value: property value */ | |
| 2354 | + __u64 value; | |
| 2355 | + | |
| 2356 | + /** @reserved: Reserved */ | |
| 2357 | + __u64 reserved[2]; | |
| 2358 | +}; | |
| 2359 | + | |
| 2277 | 2360 | #if defined(__cplusplus) |
| 2278 | 2361 | } |
| 2279 | 2362 | #endif |
| @@ -278,7 +278,7 @@ enum { · 277 unmodified lines | ||
| 278 | 278 | * NOTE: Two special error codes you should check for when calling |
| 279 | 279 | * in to the driver are: |
| 280 | 280 | * |
| 281 | − * EINTR -- The operation has been interupted. This should be | |
| 281 | + * EINTR -- The operation has been interrupted. This should be | |
| 282 | 282 | * handled by retrying the ioctl() until a different error code |
| 283 | 283 | * is returned. |
| 284 | 284 | * |
| @@ -81,7 +81,8 @@ enum blk_zone_cond { · 80 unmodified lines | ||
| 81 | 81 | BLK_ZONE_COND_FULL = 0xE, |
| 82 | 82 | BLK_ZONE_COND_OFFLINE = 0xF, |
| 83 | 83 | |
| 84 | − BLK_ZONE_COND_ACTIVE = 0xFF, | |
| 84 | + BLK_ZONE_COND_ACTIVE = 0xFF, /* added in Linux 6.19 */ | |
| 85 | +#define BLK_ZONE_COND_ACTIVE BLK_ZONE_COND_ACTIVE | |
| 85 | 86 | }; |
| 86 | 87 | |
| 87 | 88 | /** |
| @@ -100,7 +101,8 @@ enum blk_zone_report_flags { · 12 unmodified lines | ||
| 100 | 101 | BLK_ZONE_REP_CAPACITY = (1U << 0), |
| 101 | 102 | |
| 102 | 103 | /* Input flags */ |
| 103 | − BLK_ZONE_REP_CACHED = (1U << 31), | |
| 104 | + BLK_ZONE_REP_CACHED = (1U << 31), /* added in Linux 6.19 */ | |
| 105 | +#define BLK_ZONE_REP_CACHED BLK_ZONE_REP_CACHED | |
| 104 | 106 | }; |
| 105 | 107 | |
| 106 | 108 | /** |
| @@ -119,6 +119,14 @@ enum bpf_cgroup_iter_order { · 118 unmodified lines | ||
| 119 | 119 | BPF_CGROUP_ITER_DESCENDANTS_PRE, /* walk descendants in pre-order. */ |
| 120 | 120 | BPF_CGROUP_ITER_DESCENDANTS_POST, /* walk descendants in post-order. */ |
| 121 | 121 | BPF_CGROUP_ITER_ANCESTORS_UP, /* walk ancestors upward. */ |
| 122 | + /* | |
| 123 | + * Walks the immediate children of the specified parent | |
| 124 | + * cgroup_subsys_state. Unlike BPF_CGROUP_ITER_DESCENDANTS_PRE, | |
| 125 | + * BPF_CGROUP_ITER_DESCENDANTS_POST, and BPF_CGROUP_ITER_ANCESTORS_UP | |
| 126 | + * the iterator does not include the specified parent as one of the | |
| 127 | + * returned iterator elements. | |
| 128 | + */ | |
| 129 | + BPF_CGROUP_ITER_CHILDREN, | |
| 122 | 130 | }; |
| 123 | 131 | |
| 124 | 132 | union bpf_iter_link_info { |
| @@ -918,6 +926,16 @@ union bpf_iter_link_info { · 793 unmodified lines | ||
| 918 | 926 | * Number of bytes read from the stream on success, or -1 if an |
| 919 | 927 | * error occurred (in which case, *errno* is set appropriately). |
| 920 | 928 | * |
| 929 | + * BPF_PROG_ASSOC_STRUCT_OPS | |
| 930 | + * Description | |
| 931 | + * Associate a BPF program with a struct_ops map. The struct_ops | |
| 932 | + * map is identified by *map_fd* and the BPF program is | |
| 933 | + * identified by *prog_fd*. | |
| 934 | + * | |
| 935 | + * Return | |
| 936 | + * 0 on success or -1 if an error occurred (in which case, | |
| 937 | + * *errno* is set appropriately). | |
| 938 | + * | |
| 921 | 939 | * NOTES |
| 922 | 940 | * eBPF objects (maps and programs) can be shared between processes. |
| 923 | 941 | * |
| @@ -974,6 +992,7 @@ enum bpf_cmd { · 50 unmodified lines | ||
| 974 | 992 | BPF_PROG_BIND_MAP, |
| 975 | 993 | BPF_TOKEN_CREATE, |
| 976 | 994 | BPF_PROG_STREAM_READ_BY_FD, |
| 995 | + BPF_PROG_ASSOC_STRUCT_OPS, | |
| 977 | 996 | __MAX_BPF_CMD, |
| 978 | 997 | }; |
| 979 | 998 | |
| @@ -1134,6 +1153,7 @@ enum bpf_attach_type { · 154 unmodified lines | ||
| 1134 | 1153 | BPF_NETKIT_PEER, |
| 1135 | 1154 | BPF_TRACE_KPROBE_SESSION, |
| 1136 | 1155 | BPF_TRACE_UPROBE_SESSION, |
| 1156 | + BPF_TRACE_FSESSION, | |
| 1137 | 1157 | __MAX_BPF_ATTACH_TYPE |
| 1138 | 1158 | }; |
| 1139 | 1159 | |
| @@ -1373,6 +1393,8 @@ enum { · 233 unmodified lines | ||
| 1373 | 1393 | BPF_NOEXIST = 1, /* create new element if it didn't exist */ |
| 1374 | 1394 | BPF_EXIST = 2, /* update existing element */ |
| 1375 | 1395 | BPF_F_LOCK = 4, /* spin_lock-ed map_lookup/map_update */ |
| 1396 | + BPF_F_CPU = 8, /* cpu flag for percpu maps, upper 32-bit of flags is a cpu number */ | |
| 1397 | + BPF_F_ALL_CPUS = 16, /* update value across all CPUs for percpu maps */ | |
| 1376 | 1398 | }; |
| 1377 | 1399 | |
| 1378 | 1400 | /* flags for BPF_MAP_CREATE command */ |
| @@ -1894,6 +1916,12 @@ union bpf_attr { · 515 unmodified lines | ||
| 1894 | 1916 | __u32 prog_fd; |
| 1895 | 1917 | } prog_stream_read; |
| 1896 | 1918 | |
| 1919 | + struct { | |
| 1920 | + __u32 map_fd; | |
| 1921 | + __u32 prog_fd; | |
| 1922 | + __u32 flags; | |
| 1923 | + } prog_assoc_struct_ops; | |
| 1924 | + | |
| 1897 | 1925 | } __attribute__((aligned(8))); |
| 1898 | 1926 | |
| 1899 | 1927 | /* The description below is an attempt at providing documentation to eBPF |
| @@ -336,6 +336,7 @@ struct btrfs_ioctl_fs_info_args { · 335 unmodified lines | ||
| 336 | 336 | #define BTRFS_FEATURE_INCOMPAT_EXTENT_TREE_V2 (1ULL << 13) |
| 337 | 337 | #define BTRFS_FEATURE_INCOMPAT_RAID_STRIPE_TREE (1ULL << 14) |
| 338 | 338 | #define BTRFS_FEATURE_INCOMPAT_SIMPLE_QUOTA (1ULL << 16) |
| 339 | +#define BTRFS_FEATURE_INCOMPAT_REMAP_TREE (1ULL << 17) | |
| 339 | 340 | |
| 340 | 341 | struct btrfs_ioctl_feature_flags { |
| 341 | 342 | __u64 compat_flags; |
| @@ -76,6 +76,9 @@ · 75 unmodified lines | ||
| 76 | 76 | /* Tracks RAID stripes in block groups. */ |
| 77 | 77 | #define BTRFS_RAID_STRIPE_TREE_OBJECTID 12ULL |
| 78 | 78 | |
| 79 | +/* Holds details of remapped addresses after relocation. */ | |
| 80 | +#define BTRFS_REMAP_TREE_OBJECTID 13ULL | |
| 81 | + | |
| 79 | 82 | /* device stats in the device tree */ |
| 80 | 83 | #define BTRFS_DEV_STATS_OBJECTID 0ULL |
| 81 | 84 | |
| @@ -282,6 +285,10 @@ · 200 unmodified lines | ||
| 282 | 285 | |
| 283 | 286 | #define BTRFS_RAID_STRIPE_KEY 230 |
| 284 | 287 | |
| 288 | +#define BTRFS_IDENTITY_REMAP_KEY 234 | |
| 289 | +#define BTRFS_REMAP_KEY 235 | |
| 290 | +#define BTRFS_REMAP_BACKREF_KEY 236 | |
| 291 | + | |
| 285 | 292 | /* |
| 286 | 293 | * Records the overall state of the qgroups. |
| 287 | 294 | * There's only one instance of this key present, |
| @@ -714,9 +721,12 @@ struct btrfs_super_block { · 426 unmodified lines | ||
| 714 | 721 | __u8 metadata_uuid[BTRFS_FSID_SIZE]; |
| 715 | 722 | |
| 716 | 723 | __u64 nr_global_roots; |
| 724 | + __le64 remap_root; | |
| 725 | + __le64 remap_root_generation; | |
| 726 | + __u8 remap_root_level; | |
| 717 | 727 | |
| 718 | 728 | /* Future expansion */ |
| 719 | − __le64 reserved[27]; | |
| 729 | + __u8 reserved[199]; | |
| 720 | 730 | __u8 sys_chunk_array[BTRFS_SYSTEM_CHUNK_ARRAY_SIZE]; |
| 721 | 731 | struct btrfs_root_backup super_roots[BTRFS_NUM_BACKUP_ROOTS]; |
| 722 | 732 | |
| @@ -1161,12 +1171,15 @@ struct btrfs_dev_replace_item { · 438 unmodified lines | ||
| 1161 | 1171 | #define BTRFS_BLOCK_GROUP_RAID6 (1ULL << 8) |
| 1162 | 1172 | #define BTRFS_BLOCK_GROUP_RAID1C3 (1ULL << 9) |
| 1163 | 1173 | #define BTRFS_BLOCK_GROUP_RAID1C4 (1ULL << 10) |
| 1174 | +#define BTRFS_BLOCK_GROUP_REMAPPED (1ULL << 11) | |
| 1175 | +#define BTRFS_BLOCK_GROUP_METADATA_REMAP (1ULL << 12) | |
| 1164 | 1176 | #define BTRFS_BLOCK_GROUP_RESERVED (BTRFS_AVAIL_ALLOC_BIT_SINGLE | \ |
| 1165 | 1177 | BTRFS_SPACE_INFO_GLOBAL_RSV) |
| 1166 | 1178 | |
| 1167 | 1179 | #define BTRFS_BLOCK_GROUP_TYPE_MASK (BTRFS_BLOCK_GROUP_DATA | \ |
| 1168 | 1180 | BTRFS_BLOCK_GROUP_SYSTEM | \ |
| 1169 | − BTRFS_BLOCK_GROUP_METADATA) | |
| 1181 | + BTRFS_BLOCK_GROUP_METADATA | \ | |
| 1182 | + BTRFS_BLOCK_GROUP_METADATA_REMAP) | |
| 1170 | 1183 | |
| 1171 | 1184 | #define BTRFS_BLOCK_GROUP_PROFILE_MASK (BTRFS_BLOCK_GROUP_RAID0 | \ |
| 1172 | 1185 | BTRFS_BLOCK_GROUP_RAID1 | \ |
| @@ -1219,6 +1232,14 @@ struct btrfs_block_group_item { · 46 unmodified lines | ||
| 1219 | 1232 | __le64 flags; |
| 1220 | 1233 | } __attribute__ ((__packed__)); |
| 1221 | 1234 | |
| 1235 | +struct btrfs_block_group_item_v2 { | |
| 1236 | + __le64 used; | |
| 1237 | + __le64 chunk_objectid; | |
| 1238 | + __le64 flags; | |
| 1239 | + __le64 remap_bytes; | |
| 1240 | + __le32 identity_remap_count; | |
| 1241 | +} __attribute__ ((__packed__)); | |
| 1242 | + | |
| 1222 | 1243 | struct btrfs_free_space_info { |
| 1223 | 1244 | __le32 extent_count; |
| 1224 | 1245 | __le32 flags; |
| @@ -1323,4 +1344,13 @@ struct btrfs_verity_descriptor_item { · 98 unmodified lines | ||
| 1323 | 1344 | __u8 encryption; |
| 1324 | 1345 | } __attribute__ ((__packed__)); |
| 1325 | 1346 | |
| 1347 | +/* | |
| 1348 | + * For a range identified by a BTRFS_REMAP_KEY item in the remap tree, gives | |
| 1349 | + * the address that the start of the range will get remapped to. This | |
| 1350 | + * structure is also shared by BTRFS_REMAP_BACKREF_KEY. | |
| 1351 | + */ | |
| 1352 | +struct btrfs_remap_item { | |
| 1353 | + __le64 address; | |
| 1354 | +} __attribute__ ((__packed__)); | |
| 1355 | + | |
| 1326 | 1356 | #endif /* _BTRFS_CTREE_H_ */ |
| @@ -640,7 +640,7 @@ struct comedi_chaninfo { · 639 unmodified lines | ||
| 640 | 640 | |
| 641 | 641 | /** |
| 642 | 642 | * struct comedi_rangeinfo - used to retrieve the range table for a channel |
| 643 | − * @range_type: Encodes subdevice index (bits 27:24), channel index | |
| 643 | + * @range_type: Encodes subdevice index (bits 31:24), channel index | |
| 644 | 644 | * (bits 23:16) and range table length (bits 15:0). |
| 645 | 645 | * @range_ptr: Pointer to array of @struct comedi_krange to be filled |
| 646 | 646 | * in with the range table for the channel or subdevice. |
| @@ -0,0 +1,82 @@ | ||
| 1 | +/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */ | |
| 2 | +/* Do not edit directly, auto-generated from: */ | |
| 3 | +/* Documentation/netlink/specs/dev-energymodel.yaml */ | |
| 4 | +/* YNL-GEN uapi header */ | |
| 5 | +/* To regenerate run: tools/net/ynl/ynl-regen.sh */ | |
| 6 | + | |
| 7 | +#ifndef _UAPI_LINUX_DEV_ENERGYMODEL_H | |
| 8 | +#define _UAPI_LINUX_DEV_ENERGYMODEL_H | |
| 9 | + | |
| 10 | +#define DEV_ENERGYMODEL_FAMILY_NAME "dev-energymodel" | |
| 11 | +#define DEV_ENERGYMODEL_FAMILY_VERSION 1 | |
| 12 | + | |
| 13 | +/** | |
| 14 | + * enum dev_energymodel_perf_state_flags | |
| 15 | + * @DEV_ENERGYMODEL_PERF_STATE_FLAGS_PERF_STATE_INEFFICIENT: The performance | |
| 16 | + * state is inefficient. There is in this perf-domain, another performance | |
| 17 | + * state with a higher frequency but a lower or equal power cost. | |
| 18 | + */ | |
| 19 | +enum dev_energymodel_perf_state_flags { | |
| 20 | + DEV_ENERGYMODEL_PERF_STATE_FLAGS_PERF_STATE_INEFFICIENT = 1, | |
| 21 | +}; | |
| 22 | + | |
| 23 | +/** | |
| 24 | + * enum dev_energymodel_perf_domain_flags | |
| 25 | + * @DEV_ENERGYMODEL_PERF_DOMAIN_FLAGS_PERF_DOMAIN_MICROWATTS: The power values | |
| 26 | + * are in micro-Watts or some other scale. | |
| 27 | + * @DEV_ENERGYMODEL_PERF_DOMAIN_FLAGS_PERF_DOMAIN_SKIP_INEFFICIENCIES: Skip | |
| 28 | + * inefficient states when estimating energy consumption. | |
| 29 | + * @DEV_ENERGYMODEL_PERF_DOMAIN_FLAGS_PERF_DOMAIN_ARTIFICIAL: The power values | |
| 30 | + * are artificial and might be created by platform missing real power | |
| 31 | + * information. | |
| 32 | + */ | |
| 33 | +enum dev_energymodel_perf_domain_flags { | |
| 34 | + DEV_ENERGYMODEL_PERF_DOMAIN_FLAGS_PERF_DOMAIN_MICROWATTS = 1, | |
| 35 | + DEV_ENERGYMODEL_PERF_DOMAIN_FLAGS_PERF_DOMAIN_SKIP_INEFFICIENCIES = 2, | |
| 36 | + DEV_ENERGYMODEL_PERF_DOMAIN_FLAGS_PERF_DOMAIN_ARTIFICIAL = 4, | |
| 37 | +}; | |
| 38 | + | |
| 39 | +enum { | |
| 40 | + DEV_ENERGYMODEL_A_PERF_DOMAIN_PAD = 1, | |
| 41 | + DEV_ENERGYMODEL_A_PERF_DOMAIN_PERF_DOMAIN_ID, | |
| 42 | + DEV_ENERGYMODEL_A_PERF_DOMAIN_FLAGS, | |
| 43 | + DEV_ENERGYMODEL_A_PERF_DOMAIN_CPUS, | |
| 44 | + | |
| 45 | + __DEV_ENERGYMODEL_A_PERF_DOMAIN_MAX, | |
| 46 | + DEV_ENERGYMODEL_A_PERF_DOMAIN_MAX = (__DEV_ENERGYMODEL_A_PERF_DOMAIN_MAX - 1) | |
| 47 | +}; | |
| 48 | + | |
| 49 | +enum { | |
| 50 | + DEV_ENERGYMODEL_A_PERF_TABLE_PERF_DOMAIN_ID = 1, | |
| 51 | + DEV_ENERGYMODEL_A_PERF_TABLE_PERF_STATE, | |
| 52 | + | |
| 53 | + __DEV_ENERGYMODEL_A_PERF_TABLE_MAX, | |
| 54 | + DEV_ENERGYMODEL_A_PERF_TABLE_MAX = (__DEV_ENERGYMODEL_A_PERF_TABLE_MAX - 1) | |
| 55 | +}; | |
| 56 | + | |
| 57 | +enum { | |
| 58 | + DEV_ENERGYMODEL_A_PERF_STATE_PAD = 1, | |
| 59 | + DEV_ENERGYMODEL_A_PERF_STATE_PERFORMANCE, | |
| 60 | + DEV_ENERGYMODEL_A_PERF_STATE_FREQUENCY, | |
| 61 | + DEV_ENERGYMODEL_A_PERF_STATE_POWER, | |
| 62 | + DEV_ENERGYMODEL_A_PERF_STATE_COST, | |
| 63 | + DEV_ENERGYMODEL_A_PERF_STATE_FLAGS, | |
| 64 | + | |
| 65 | + __DEV_ENERGYMODEL_A_PERF_STATE_MAX, | |
| 66 | + DEV_ENERGYMODEL_A_PERF_STATE_MAX = (__DEV_ENERGYMODEL_A_PERF_STATE_MAX - 1) | |
| 67 | +}; | |
| 68 | + | |
| 69 | +enum { | |
| 70 | + DEV_ENERGYMODEL_CMD_GET_PERF_DOMAINS = 1, | |
| 71 | + DEV_ENERGYMODEL_CMD_GET_PERF_TABLE, | |
| 72 | + DEV_ENERGYMODEL_CMD_PERF_DOMAIN_CREATED, | |
| 73 | + DEV_ENERGYMODEL_CMD_PERF_DOMAIN_UPDATED, | |
| 74 | + DEV_ENERGYMODEL_CMD_PERF_DOMAIN_DELETED, | |
| 75 | + | |
| 76 | + __DEV_ENERGYMODEL_CMD_MAX, | |
| 77 | + DEV_ENERGYMODEL_CMD_MAX = (__DEV_ENERGYMODEL_CMD_MAX - 1) | |
| 78 | +}; | |
| 79 | + | |
| 80 | +#define DEV_ENERGYMODEL_MCGRP_EVENT "event" | |
| 81 | + | |
| 82 | +#endif /* _UAPI_LINUX_DEV_ENERGYMODEL_H */ | |
| @@ -253,6 +253,7 @@ enum dpll_a_pin { · 252 unmodified lines | ||
| 253 | 253 | DPLL_A_PIN_ESYNC_PULSE, |
| 254 | 254 | DPLL_A_PIN_REFERENCE_SYNC, |
| 255 | 255 | DPLL_A_PIN_PHASE_ADJUST_GRAN, |
| 256 | + DPLL_A_PIN_FRACTIONAL_FREQUENCY_OFFSET_PPT, | |
| 256 | 257 | |
| 257 | 258 | __DPLL_A_PIN_MAX, |
| 258 | 259 | DPLL_A_PIN_MAX = (__DPLL_A_PIN_MAX - 1) |
| @@ -545,6 +545,8 @@ typedef struct elf64_shdr { · 544 unmodified lines | ||
| 545 | 545 | #define NT_RISCV_VECTOR 0x901 /* RISC-V vector registers */ |
| 546 | 546 | #define NN_RISCV_TAGGED_ADDR_CTRL "LINUX" |
| 547 | 547 | #define NT_RISCV_TAGGED_ADDR_CTRL 0x902 /* RISC-V tagged address control (prctl()) */ |
| 548 | +#define NN_RISCV_USER_CFI "LINUX" | |
| 549 | +#define NT_RISCV_USER_CFI 0x903 /* RISC-V shadow stack state */ | |
| 548 | 550 | #define NN_LOONGARCH_CPUCFG "LINUX" |
| 549 | 551 | #define NT_LOONGARCH_CPUCFG 0xa00 /* LoongArch CPU config registers */ |
| 550 | 552 | #define NN_LOONGARCH_CSR "LINUX" |
| @@ -1,63 +0,0 @@ | ||
| 1 | −/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */ | |
| 2 | −/* Do not edit directly, auto-generated from: */ | |
| 3 | −/* Documentation/netlink/specs/em.yaml */ | |
| 4 | −/* YNL-GEN uapi header */ | |
| 5 | −/* To regenerate run: tools/net/ynl/ynl-regen.sh */ | |
| 6 | − | |
| 7 | −#ifndef _UAPI_LINUX_ENERGY_MODEL_H | |
| 8 | −#define _UAPI_LINUX_ENERGY_MODEL_H | |
| 9 | − | |
| 10 | −#define EM_FAMILY_NAME "em" | |
| 11 | −#define EM_FAMILY_VERSION 1 | |
| 12 | − | |
| 13 | −enum { | |
| 14 | − EM_A_PDS_PD = 1, | |
| 15 | − | |
| 16 | − __EM_A_PDS_MAX, | |
| 17 | − EM_A_PDS_MAX = (__EM_A_PDS_MAX - 1) | |
| 18 | −}; | |
| 19 | − | |
| 20 | −enum { | |
| 21 | − EM_A_PD_PAD = 1, | |
| 22 | − EM_A_PD_PD_ID, | |
| 23 | − EM_A_PD_FLAGS, | |
| 24 | − EM_A_PD_CPUS, | |
| 25 | − | |
| 26 | − __EM_A_PD_MAX, | |
| 27 | − EM_A_PD_MAX = (__EM_A_PD_MAX - 1) | |
| 28 | −}; | |
| 29 | − | |
| 30 | −enum { | |
| 31 | − EM_A_PD_TABLE_PD_ID = 1, | |
| 32 | − EM_A_PD_TABLE_PS, | |
| 33 | − | |
| 34 | − __EM_A_PD_TABLE_MAX, | |
| 35 | − EM_A_PD_TABLE_MAX = (__EM_A_PD_TABLE_MAX - 1) | |
| 36 | −}; | |
| 37 | − | |
| 38 | −enum { | |
| 39 | − EM_A_PS_PAD = 1, | |
| 40 | − EM_A_PS_PERFORMANCE, | |
| 41 | − EM_A_PS_FREQUENCY, | |
| 42 | − EM_A_PS_POWER, | |
| 43 | − EM_A_PS_COST, | |
| 44 | − EM_A_PS_FLAGS, | |
| 45 | − | |
| 46 | − __EM_A_PS_MAX, | |
| 47 | − EM_A_PS_MAX = (__EM_A_PS_MAX - 1) | |
| 48 | −}; | |
| 49 | − | |
| 50 | −enum { | |
| 51 | − EM_CMD_GET_PDS = 1, | |
| 52 | − EM_CMD_GET_PD_TABLE, | |
| 53 | − EM_CMD_PD_CREATED, | |
| 54 | − EM_CMD_PD_UPDATED, | |
| 55 | − EM_CMD_PD_DELETED, | |
| 56 | − | |
| 57 | − __EM_CMD_MAX, | |
| 58 | − EM_CMD_MAX = (__EM_CMD_MAX - 1) | |
| 59 | −}; | |
| 60 | − | |
| 61 | −#define EM_MCGRP_EVENT "event" | |
| 62 | − | |
| 63 | −#endif /* _UAPI_LINUX_ENERGY_MODEL_H */ | |
| @@ -15,13 +15,10 @@ · 14 unmodified lines | ||
| 15 | 15 | #define _UAPI_LINUX_ETHTOOL_H |
| 16 | 16 | |
| 17 | 17 | #include <linux/const.h> |
| 18 | +#include <linux/typelimits.h> | |
| 18 | 19 | #include <linux/types.h> |
| 19 | 20 | #include <linux/if_ether.h> |
| 20 | 21 | |
| 21 | −#ifndef __KERNEL__ | |
| 22 | −#include <limits.h> /* for INT_MAX */ | |
| 23 | −#endif | |
| 24 | − | |
| 25 | 22 | /* All structures exposed to userland should be defined such that they |
| 26 | 23 | * have the same layout for 32-bit and 64-bit userland. |
| 27 | 24 | */ |
| @@ -603,6 +600,8 @@ enum ethtool_link_ext_state { · 575 unmodified lines | ||
| 603 | 600 | ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED, |
| 604 | 601 | ETHTOOL_LINK_EXT_STATE_OVERHEAT, |
| 605 | 602 | ETHTOOL_LINK_EXT_STATE_MODULE, |
| 603 | + ETHTOOL_LINK_EXT_STATE_OTP_SPEED_VIOLATION, | |
| 604 | + ETHTOOL_LINK_EXT_STATE_BMC_REQUEST_DOWN, | |
| 606 | 605 | }; |
| 607 | 606 | |
| 608 | 607 | /* More information in addition to ETHTOOL_LINK_EXT_STATE_AUTONEG. */ |
| @@ -1094,13 +1093,20 @@ enum ethtool_module_fw_flash_status { · 485 unmodified lines | ||
| 1094 | 1093 | * struct ethtool_gstrings - string set for data tagging |
| 1095 | 1094 | * @cmd: Command number = %ETHTOOL_GSTRINGS |
| 1096 | 1095 | * @string_set: String set ID; one of &enum ethtool_stringset |
| 1097 | − * @len: On return, the number of strings in the string set | |
| 1096 | + * @len: Number of strings in the string set | |
| 1098 | 1097 | * @data: Buffer for strings. Each string is null-padded to a size of |
| 1099 | 1098 | * %ETH_GSTRING_LEN. |
| 1100 | 1099 | * |
| 1101 | 1100 | * Users must use %ETHTOOL_GSSET_INFO to find the number of strings in |
| 1102 | 1101 | * the string set. They must allocate a buffer of the appropriate |
| 1103 | 1102 | * size immediately following this structure. |
| 1103 | + * | |
| 1104 | + * Setting @len on input is optional (though preferred), but must be zeroed | |
| 1105 | + * otherwise. | |
| 1106 | + * When set, @len will return the requested count if it matches the actual | |
| 1107 | + * count; otherwise, it will be zero. | |
| 1108 | + * This prevents issues when the number of strings is different than the | |
| 1109 | + * userspace allocation. | |
| 1104 | 1110 | */ |
| 1105 | 1111 | struct ethtool_gstrings { |
| 1106 | 1112 | __u32 cmd; |
| @@ -1177,13 +1183,20 @@ struct ethtool_test { · 70 unmodified lines | ||
| 1177 | 1183 | /** |
| 1178 | 1184 | * struct ethtool_stats - device-specific statistics |
| 1179 | 1185 | * @cmd: Command number = %ETHTOOL_GSTATS |
| 1180 | − * @n_stats: On return, the number of statistics | |
| 1186 | + * @n_stats: Number of statistics | |
| 1181 | 1187 | * @data: Array of statistics |
| 1182 | 1188 | * |
| 1183 | 1189 | * Users must use %ETHTOOL_GSSET_INFO or %ETHTOOL_GDRVINFO to find the |
| 1184 | 1190 | * number of statistics that will be returned. They must allocate a |
| 1185 | 1191 | * buffer of the appropriate size (8 * number of statistics) |
| 1186 | 1192 | * immediately following this structure. |
| 1193 | + * | |
| 1194 | + * Setting @n_stats on input is optional (though preferred), but must be zeroed | |
| 1195 | + * otherwise. | |
| 1196 | + * When set, @n_stats will return the requested count if it matches the actual | |
| 1197 | + * count; otherwise, it will be zero. | |
| 1198 | + * This prevents issues when the number of stats is different than the | |
| 1199 | + * userspace allocation. | |
| 1187 | 1200 | */ |
| 1188 | 1201 | struct ethtool_stats { |
| 1189 | 1202 | __u32 cmd; |
| @@ -2190,6 +2203,7 @@ enum ethtool_link_mode_bit_indices { · 1000 unmodified lines | ||
| 2190 | 2203 | #define SPEED_40000 40000 |
| 2191 | 2204 | #define SPEED_50000 50000 |
| 2192 | 2205 | #define SPEED_56000 56000 |
| 2206 | +#define SPEED_80000 80000 | |
| 2193 | 2207 | #define SPEED_100000 100000 |
| 2194 | 2208 | #define SPEED_200000 200000 |
| 2195 | 2209 | #define SPEED_400000 400000 |
| @@ -2200,7 +2214,7 @@ enum ethtool_link_mode_bit_indices { · 4 unmodified lines | ||
| 2200 | 2214 | |
| 2201 | 2215 | static inline int ethtool_validate_speed(__u32 speed) |
| 2202 | 2216 | { |
| 2203 | − return speed <= INT_MAX || speed == (__u32)SPEED_UNKNOWN; | |
| 2217 | + return speed <= __KERNEL_INT_MAX || speed == (__u32)SPEED_UNKNOWN; | |
| 2204 | 2218 | } |
| 2205 | 2219 | |
| 2206 | 2220 | /* Duplex, half or full. */ |
| @@ -139,7 +139,7 @@ struct ext4_tune_sb_params { · 138 unmodified lines | ||
| 139 | 139 | __u32 clear_feature_incompat_mask; |
| 140 | 140 | __u32 clear_feature_ro_compat_mask; |
| 141 | 141 | __u8 mount_opts[64]; |
| 142 | − __u8 pad[64]; | |
| 142 | + __u8 pad[68]; | |
| 143 | 143 | }; |
| 144 | 144 | |
| 145 | 145 | #define EXT4_TUNE_FL_ERRORS_BEHAVIOR 0x00000001 |
| @@ -253,6 +253,7 @@ struct file_attr { · 252 unmodified lines | ||
| 253 | 253 | #define FS_XFLAG_FILESTREAM 0x00004000 /* use filestream allocator */ |
| 254 | 254 | #define FS_XFLAG_DAX 0x00008000 /* use DAX for IO */ |
| 255 | 255 | #define FS_XFLAG_COWEXTSIZE 0x00010000 /* CoW extent size allocator hint */ |
| 256 | +#define FS_XFLAG_VERITY 0x00020000 /* fs-verity enabled */ | |
| 256 | 257 | #define FS_XFLAG_HASATTR 0x80000000 /* no DIFLAG for this */ |
| 257 | 258 | |
| 258 | 259 | /* the read-only stuff doesn't really belong here, but any other place is |
| @@ -362,7 +362,7 @@ struct hv_kvp_exchg_msg_value { · 361 unmodified lines | ||
| 362 | 362 | __u8 value[HV_KVP_EXCHANGE_MAX_VALUE_SIZE]; |
| 363 | 363 | __u32 value_u32; |
| 364 | 364 | __u64 value_u64; |
| 365 | − }; | |
| 365 | + } __attribute__((packed)); | |
| 366 | 366 | } __attribute__((packed)); |
| 367 | 367 | |
| 368 | 368 | struct hv_kvp_msg_enumerate { |
| @@ -3,11 +3,7 @@ · 2 unmodified lines | ||
| 3 | 3 | #ifndef _USR_IDXD_H_ |
| 4 | 4 | #define _USR_IDXD_H_ |
| 5 | 5 | |
| 6 | −#ifdef __KERNEL__ | |
| 7 | 6 | #include <linux/types.h> |
| 8 | −#else | |
| 9 | −#include <stdint.h> | |
| 10 | −#endif | |
| 11 | 7 | |
| 12 | 8 | /* Driver command error status */ |
| 13 | 9 | enum idxd_scmd_stat { |
| @@ -176,132 +172,132 @@ enum iax_completion_status { · 162 unmodified lines | ||
| 176 | 172 | #define DSA_COMP_STATUS(status) ((status) & DSA_COMP_STATUS_MASK) |
| 177 | 173 | |
| 178 | 174 | struct dsa_hw_desc { |
| 179 | − uint32_t pasid:20; | |
| 180 | − uint32_t rsvd:11; | |
| 181 | − uint32_t priv:1; | |
| 182 | − uint32_t flags:24; | |
| 183 | − uint32_t opcode:8; | |
| 184 | − uint64_t completion_addr; | |
| 175 | + __u32 pasid:20; | |
| 176 | + __u32 rsvd:11; | |
| 177 | + __u32 priv:1; | |
| 178 | + __u32 flags:24; | |
| 179 | + __u32 opcode:8; | |
| 180 | + __u64 completion_addr; | |
| 185 | 181 | union { |
| 186 | − uint64_t src_addr; | |
| 187 | − uint64_t rdback_addr; | |
| 188 | − uint64_t pattern; | |
| 189 | − uint64_t desc_list_addr; | |
| 190 | − uint64_t pattern_lower; | |
| 191 | − uint64_t transl_fetch_addr; | |
| 182 | + __u64 src_addr; | |
| 183 | + __u64 rdback_addr; | |
| 184 | + __u64 pattern; | |
| 185 | + __u64 desc_list_addr; | |
| 186 | + __u64 pattern_lower; | |
| 187 | + __u64 transl_fetch_addr; | |
| 192 | 188 | }; |
| 193 | 189 | union { |
| 194 | − uint64_t dst_addr; | |
| 195 | − uint64_t rdback_addr2; | |
| 196 | − uint64_t src2_addr; | |
| 197 | − uint64_t comp_pattern; | |
| 190 | + __u64 dst_addr; | |
| 191 | + __u64 rdback_addr2; | |
| 192 | + __u64 src2_addr; | |
| 193 | + __u64 comp_pattern; | |
| 198 | 194 | }; |
| 199 | 195 | union { |
| 200 | − uint32_t xfer_size; | |
| 201 | − uint32_t desc_count; | |
| 202 | − uint32_t region_size; | |
| 196 | + __u32 xfer_size; | |
| 197 | + __u32 desc_count; | |
| 198 | + __u32 region_size; | |
| 203 | 199 | }; |
| 204 | − uint16_t int_handle; | |
| 205 | − uint16_t rsvd1; | |
| 200 | + __u16 int_handle; | |
| 201 | + __u16 rsvd1; | |
| 206 | 202 | union { |
| 207 | − uint8_t expected_res; | |
| 203 | + __u8 expected_res; | |
| 208 | 204 | /* create delta record */ |
| 209 | 205 | struct { |
| 210 | − uint64_t delta_addr; | |
| 211 | − uint32_t max_delta_size; | |
| 212 | − uint32_t delt_rsvd; | |
| 213 | − uint8_t expected_res_mask; | |
| 206 | + __u64 delta_addr; | |
| 207 | + __u32 max_delta_size; | |
| 208 | + __u32 delt_rsvd; | |
| 209 | + __u8 expected_res_mask; | |
| 214 | 210 | }; |
| 215 | − uint32_t delta_rec_size; | |
| 216 | − uint64_t dest2; | |
| 211 | + __u32 delta_rec_size; | |
| 212 | + __u64 dest2; | |
| 217 | 213 | /* CRC */ |
| 218 | 214 | struct { |
| 219 | − uint32_t crc_seed; | |
| 220 | − uint32_t crc_rsvd; | |
| 221 | − uint64_t seed_addr; | |
| 215 | + __u32 crc_seed; | |
| 216 | + __u32 crc_rsvd; | |
| 217 | + __u64 seed_addr; | |
| 222 | 218 | }; |
| 223 | 219 | /* DIF check or strip */ |
| 224 | 220 | struct { |
| 225 | − uint8_t src_dif_flags; | |
| 226 | − uint8_t dif_chk_res; | |
| 227 | − uint8_t dif_chk_flags; | |
| 228 | − uint8_t dif_chk_res2[5]; | |
| 229 | − uint32_t chk_ref_tag_seed; | |
| 230 | − uint16_t chk_app_tag_mask; | |
| 231 | − uint16_t chk_app_tag_seed; | |
| 221 | + __u8 src_dif_flags; | |
| 222 | + __u8 dif_chk_res; | |
| 223 | + __u8 dif_chk_flags; | |
| 224 | + __u8 dif_chk_res2[5]; | |
| 225 | + __u32 chk_ref_tag_seed; | |
| 226 | + __u16 chk_app_tag_mask; | |
| 227 | + __u16 chk_app_tag_seed; | |
| 232 | 228 | }; |
| 233 | 229 | /* DIF insert */ |
| 234 | 230 | struct { |
| 235 | − uint8_t dif_ins_res; | |
| 236 | − uint8_t dest_dif_flag; | |
| 237 | − uint8_t dif_ins_flags; | |
| 238 | − uint8_t dif_ins_res2[13]; | |
| 239 | − uint32_t ins_ref_tag_seed; | |
| 240 | − uint16_t ins_app_tag_mask; | |
| 241 | − uint16_t ins_app_tag_seed; | |
| 231 | + __u8 dif_ins_res; | |
| 232 | + __u8 dest_dif_flag; | |
| 233 | + __u8 dif_ins_flags; | |
| 234 | + __u8 dif_ins_res2[13]; | |
| 235 | + __u32 ins_ref_tag_seed; | |
| 236 | + __u16 ins_app_tag_mask; | |
| 237 | + __u16 ins_app_tag_seed; | |
| 242 | 238 | }; |
| 243 | 239 | /* DIF update */ |
| 244 | 240 | struct { |
| 245 | − uint8_t src_upd_flags; | |
| 246 | − uint8_t upd_dest_flags; | |
| 247 | − uint8_t dif_upd_flags; | |
| 248 | − uint8_t dif_upd_res[5]; | |
| 249 | − uint32_t src_ref_tag_seed; | |
| 250 | − uint16_t src_app_tag_mask; | |
| 251 | − uint16_t src_app_tag_seed; | |
| 252 | − uint32_t dest_ref_tag_seed; | |
| 253 | − uint16_t dest_app_tag_mask; | |
| 254 | − uint16_t dest_app_tag_seed; | |
| 241 | + __u8 src_upd_flags; | |
| 242 | + __u8 upd_dest_flags; | |
| 243 | + __u8 dif_upd_flags; | |
| 244 | + __u8 dif_upd_res[5]; | |
| 245 | + __u32 src_ref_tag_seed; | |
| 246 | + __u16 src_app_tag_mask; | |
| 247 | + __u16 src_app_tag_seed; | |
| 248 | + __u32 dest_ref_tag_seed; | |
| 249 | + __u16 dest_app_tag_mask; | |
| 250 | + __u16 dest_app_tag_seed; | |
| 255 | 251 | }; |
| 256 | 252 | |
| 257 | 253 | /* Fill */ |
| 258 | − uint64_t pattern_upper; | |
| 254 | + __u64 pattern_upper; | |
| 259 | 255 | |
| 260 | 256 | /* Translation fetch */ |
| 261 | 257 | struct { |
| 262 | − uint64_t transl_fetch_res; | |
| 263 | − uint32_t region_stride; | |
| 258 | + __u64 transl_fetch_res; | |
| 259 | + __u32 region_stride; | |
| 264 | 260 | }; |
| 265 | 261 | |
| 266 | 262 | /* DIX generate */ |
| 267 | 263 | struct { |
| 268 | − uint8_t dix_gen_res; | |
| 269 | − uint8_t dest_dif_flags; | |
| 270 | − uint8_t dif_flags; | |
| 271 | − uint8_t dix_gen_res2[13]; | |
| 272 | − uint32_t ref_tag_seed; | |
| 273 | − uint16_t app_tag_mask; | |
| 274 | − uint16_t app_tag_seed; | |
| 264 | + __u8 dix_gen_res; | |
| 265 | + __u8 dest_dif_flags; | |
| 266 | + __u8 dif_flags; | |
| 267 | + __u8 dix_gen_res2[13]; | |
| 268 | + __u32 ref_tag_seed; | |
| 269 | + __u16 app_tag_mask; | |
| 270 | + __u16 app_tag_seed; | |
| 275 | 271 | }; |
| 276 | 272 | |
| 277 | − uint8_t op_specific[24]; | |
| 273 | + __u8 op_specific[24]; | |
| 278 | 274 | }; |
| 279 | 275 | } __attribute__((packed)); |
| 280 | 276 | |
| 281 | 277 | struct iax_hw_desc { |
| 282 | − uint32_t pasid:20; | |
| 283 | − uint32_t rsvd:11; | |
| 284 | − uint32_t priv:1; | |
| 285 | − uint32_t flags:24; | |
| 286 | − uint32_t opcode:8; | |
| 287 | − uint64_t completion_addr; | |
| 288 | − uint64_t src1_addr; | |
| 289 | − uint64_t dst_addr; | |
| 290 | − uint32_t src1_size; | |
| 291 | − uint16_t int_handle; | |
| 278 | + __u32 pasid:20; | |
| 279 | + __u32 rsvd:11; | |
| 280 | + __u32 priv:1; | |
| 281 | + __u32 flags:24; | |
| 282 | + __u32 opcode:8; | |
| 283 | + __u64 completion_addr; | |
| 284 | + __u64 src1_addr; | |
| 285 | + __u64 dst_addr; | |
| 286 | + __u32 src1_size; | |
| 287 | + __u16 int_handle; | |
| 292 | 288 | union { |
| 293 | − uint16_t compr_flags; | |
| 294 | − uint16_t decompr_flags; | |
| 289 | + __u16 compr_flags; | |
| 290 | + __u16 decompr_flags; | |
| 295 | 291 | }; |
| 296 | − uint64_t src2_addr; | |
| 297 | − uint32_t max_dst_size; | |
| 298 | − uint32_t src2_size; | |
| 299 | − uint32_t filter_flags; | |
| 300 | − uint32_t num_inputs; | |
| 292 | + __u64 src2_addr; | |
| 293 | + __u32 max_dst_size; | |
| 294 | + __u32 src2_size; | |
| 295 | + __u32 filter_flags; | |
| 296 | + __u32 num_inputs; | |
| 301 | 297 | } __attribute__((packed)); |
| 302 | 298 | |
| 303 | 299 | struct dsa_raw_desc { |
| 304 | − uint64_t field[8]; | |
| 300 | + __u64 field[8]; | |
| 305 | 301 | } __attribute__((packed)); |
| 306 | 302 | |
| 307 | 303 | /* |
| @@ -309,91 +305,91 @@ struct dsa_raw_desc { · 1 unmodified line | ||
| 309 | 305 | * volatile and prevent the compiler from optimize the read. |
| 310 | 306 | */ |
| 311 | 307 | struct dsa_completion_record { |
| 312 | − volatile uint8_t status; | |
| 308 | + volatile __u8 status; | |
| 313 | 309 | union { |
| 314 | − uint8_t result; | |
| 315 | − uint8_t dif_status; | |
| 310 | + __u8 result; | |
| 311 | + __u8 dif_status; | |
| 316 | 312 | }; |
| 317 | − uint8_t fault_info; | |
| 318 | − uint8_t rsvd; | |
| 313 | + __u8 fault_info; | |
| 314 | + __u8 rsvd; | |
| 319 | 315 | union { |
| 320 | − uint32_t bytes_completed; | |
| 321 | − uint32_t descs_completed; | |
| 316 | + __u32 bytes_completed; | |
| 317 | + __u32 descs_completed; | |
| 322 | 318 | }; |
| 323 | − uint64_t fault_addr; | |
| 319 | + __u64 fault_addr; | |
| 324 | 320 | union { |
| 325 | 321 | /* common record */ |
| 326 | 322 | struct { |
| 327 | − uint32_t invalid_flags:24; | |
| 328 | − uint32_t rsvd2:8; | |
| 323 | + __u32 invalid_flags:24; | |
| 324 | + __u32 rsvd2:8; | |
| 329 | 325 | }; |
| 330 | 326 | |
| 331 | − uint32_t delta_rec_size; | |
| 332 | − uint64_t crc_val; | |
| 327 | + __u32 delta_rec_size; | |
| 328 | + __u64 crc_val; | |
| 333 | 329 | |
| 334 | 330 | /* DIF check & strip */ |
| 335 | 331 | struct { |
| 336 | − uint32_t dif_chk_ref_tag; | |
| 337 | − uint16_t dif_chk_app_tag_mask; | |
| 338 | − uint16_t dif_chk_app_tag; | |
| 332 | + __u32 dif_chk_ref_tag; | |
| 333 | + __u16 dif_chk_app_tag_mask; | |
| 334 | + __u16 dif_chk_app_tag; | |
| 339 | 335 | }; |
| 340 | 336 | |
| 341 | 337 | /* DIF insert */ |
| 342 | 338 | struct { |
| 343 | − uint64_t dif_ins_res; | |
| 344 | − uint32_t dif_ins_ref_tag; | |
| 345 | − uint16_t dif_ins_app_tag_mask; | |
| 346 | − uint16_t dif_ins_app_tag; | |
| 339 | + __u64 dif_ins_res; | |
| 340 | + __u32 dif_ins_ref_tag; | |
| 341 | + __u16 dif_ins_app_tag_mask; | |
| 342 | + __u16 dif_ins_app_tag; | |
| 347 | 343 | }; |
| 348 | 344 | |
| 349 | 345 | /* DIF update */ |
| 350 | 346 | struct { |
| 351 | − uint32_t dif_upd_src_ref_tag; | |
| 352 | − uint16_t dif_upd_src_app_tag_mask; | |
| 353 | − uint16_t dif_upd_src_app_tag; | |
| 354 | − uint32_t dif_upd_dest_ref_tag; | |
| 355 | − uint16_t dif_upd_dest_app_tag_mask; | |
| 356 | − uint16_t dif_upd_dest_app_tag; | |
| 347 | + __u32 dif_upd_src_ref_tag; | |
| 348 | + __u16 dif_upd_src_app_tag_mask; | |
| 349 | + __u16 dif_upd_src_app_tag; | |
| 350 | + __u32 dif_upd_dest_ref_tag; | |
| 351 | + __u16 dif_upd_dest_app_tag_mask; | |
| 352 | + __u16 dif_upd_dest_app_tag; | |
| 357 | 353 | }; |
| 358 | 354 | |
| 359 | 355 | /* DIX generate */ |
| 360 | 356 | struct { |
| 361 | − uint64_t dix_gen_res; | |
| 362 | − uint32_t dix_ref_tag; | |
| 363 | − uint16_t dix_app_tag_mask; | |
| 364 | − uint16_t dix_app_tag; | |
| 357 | + __u64 dix_gen_res; | |
| 358 | + __u32 dix_ref_tag; | |
| 359 | + __u16 dix_app_tag_mask; | |
| 360 | + __u16 dix_app_tag; | |
| 365 | 361 | }; |
| 366 | 362 | |
| 367 | − uint8_t op_specific[16]; | |
| 363 | + __u8 op_specific[16]; | |
| 368 | 364 | }; |
| 369 | 365 | } __attribute__((packed)); |
| 370 | 366 | |
| 371 | 367 | struct dsa_raw_completion_record { |
| 372 | − uint64_t field[4]; | |
| 368 | + __u64 field[4]; | |
| 373 | 369 | } __attribute__((packed)); |
| 374 | 370 | |
| 375 | 371 | struct iax_completion_record { |
| 376 | − volatile uint8_t status; | |
| 377 | − uint8_t error_code; | |
| 378 | − uint8_t fault_info; | |
| 379 | − uint8_t rsvd; | |
| 380 | − uint32_t bytes_completed; | |
| 381 | − uint64_t fault_addr; | |
| 382 | − uint32_t invalid_flags; | |
| 383 | − uint32_t rsvd2; | |
| 384 | − uint32_t output_size; | |
| 385 | − uint8_t output_bits; | |
| 386 | − uint8_t rsvd3; | |
| 387 | − uint16_t xor_csum; | |
| 388 | − uint32_t crc; | |
| 389 | − uint32_t min; | |
| 390 | − uint32_t max; | |
| 391 | − uint32_t sum; | |
| 392 | − uint64_t rsvd4[2]; | |
| 372 | + volatile __u8 status; | |
| 373 | + __u8 error_code; | |
| 374 | + __u8 fault_info; | |
| 375 | + __u8 rsvd; | |
| 376 | + __u32 bytes_completed; | |
| 377 | + __u64 fault_addr; | |
| 378 | + __u32 invalid_flags; | |
| 379 | + __u32 rsvd2; | |
| 380 | + __u32 output_size; | |
| 381 | + __u8 output_bits; | |
| 382 | + __u8 rsvd3; | |
| 383 | + __u16 xor_csum; | |
| 384 | + __u32 crc; | |
| 385 | + __u32 min; | |
| 386 | + __u32 max; | |
| 387 | + __u32 sum; | |
| 388 | + __u64 rsvd4[2]; | |
| 393 | 389 | } __attribute__((packed)); |
| 394 | 390 | |
| 395 | 391 | struct iax_raw_completion_record { |
| 396 | − uint64_t field[8]; | |
| 392 | + __u64 field[8]; | |
| 397 | 393 | } __attribute__((packed)); |
| 398 | 394 | |
| 399 | 395 | #endif |
| @@ -42,7 +42,7 @@ struct sockaddr_alg_new { · 41 unmodified lines | ||
| 42 | 42 | |
| 43 | 43 | struct af_alg_iv { |
| 44 | 44 | __u32 ivlen; |
| 45 | − __u8 iv[]; | |
| 45 | + __u8 iv[] __counted_by(ivlen); | |
| 46 | 46 | }; |
| 47 | 47 | |
| 48 | 48 | /* Socket options */ |
| @@ -1443,6 +1443,7 @@ enum { · 1442 unmodified lines | ||
| 1443 | 1443 | IFLA_GENEVE_DF, |
| 1444 | 1444 | IFLA_GENEVE_INNER_PROTO_INHERIT, |
| 1445 | 1445 | IFLA_GENEVE_PORT_RANGE, |
| 1446 | + IFLA_GENEVE_GRO_HINT, | |
| 1446 | 1447 | __IFLA_GENEVE_MAX |
| 1447 | 1448 | }; |
| 1448 | 1449 | #define IFLA_GENEVE_MAX (__IFLA_GENEVE_MAX - 1) |
| @@ -237,6 +237,18 @@ enum io_uring_sqe_flags_bit { · 236 unmodified lines | ||
| 237 | 237 | */ |
| 238 | 238 | #define IORING_SETUP_SQE_MIXED (1U << 19) |
| 239 | 239 | |
| 240 | +/* | |
| 241 | + * When set, io_uring ignores SQ head and tail and fetches SQEs to submit | |
| 242 | + * starting from index 0 instead from the index stored in the head pointer. | |
| 243 | + * IOW, the user should place all SQE at the beginning of the SQ memory | |
| 244 | + * before issuing a submission syscall. | |
| 245 | + * | |
| 246 | + * It requires IORING_SETUP_NO_SQARRAY and is incompatible with | |
| 247 | + * IORING_SETUP_SQPOLL. The user must also never change the SQ head and tail | |
| 248 | + * values and keep it set to 0. Any other value is undefined behaviour. | |
| 249 | + */ | |
| 250 | +#define IORING_SETUP_SQ_REWIND (1U << 20) | |
| 251 | + | |
| 240 | 252 | enum io_uring_op { |
| 241 | 253 | IORING_OP_NOP, |
| 242 | 254 | IORING_OP_READV, |
| @@ -700,6 +712,9 @@ enum io_uring_register_op { · 457 unmodified lines | ||
| 700 | 712 | /* auxiliary zcrx configuration, see enum zcrx_ctrl_op */ |
| 701 | 713 | IORING_REGISTER_ZCRX_CTRL = 36, |
| 702 | 714 | |
| 715 | + /* register bpf filtering programs */ | |
| 716 | + IORING_REGISTER_BPF_FILTER = 37, | |
| 717 | + | |
| 703 | 718 | /* this goes last */ |
| 704 | 719 | IORING_REGISTER_LAST, |
| 705 | 720 | |
| @@ -805,6 +820,13 @@ struct io_uring_restriction { · 99 unmodified lines | ||
| 805 | 820 | __u32 resv2[3]; |
| 806 | 821 | }; |
| 807 | 822 | |
| 823 | +struct io_uring_task_restriction { | |
| 824 | + __u16 flags; | |
| 825 | + __u16 nr_res; | |
| 826 | + __u32 resv[3]; | |
| 827 | + __DECLARE_FLEX_ARRAY(struct io_uring_restriction, restrictions); | |
| 828 | +}; | |
| 829 | + | |
| 808 | 830 | struct io_uring_clock_register { |
| 809 | 831 | __u32 clockid; |
| 810 | 832 | __u32 __resv[3]; |
| @@ -1068,6 +1090,14 @@ enum zcrx_reg_flags { · 257 unmodified lines | ||
| 1068 | 1090 | ZCRX_REG_IMPORT = 1, |
| 1069 | 1091 | }; |
| 1070 | 1092 | |
| 1093 | +enum zcrx_features { | |
| 1094 | + /* | |
| 1095 | + * The user can ask for the desired rx page size by passing the | |
| 1096 | + * value in struct io_uring_zcrx_ifq_reg::rx_buf_len. | |
| 1097 | + */ | |
| 1098 | + ZCRX_FEATURE_RX_PAGE_SIZE = 1 << 0, | |
| 1099 | +}; | |
| 1100 | + | |
| 1071 | 1101 | /* |
| 1072 | 1102 | * Argument for IORING_REGISTER_ZCRX_IFQ |
| 1073 | 1103 | */ |
| @@ -1082,7 +1112,7 @@ struct io_uring_zcrx_ifq_reg { · 8 unmodified lines | ||
| 1082 | 1112 | |
| 1083 | 1113 | struct io_uring_zcrx_offsets offsets; |
| 1084 | 1114 | __u32 zcrx_id; |
| 1085 | − __u32 __resv2; | |
| 1115 | + __u32 rx_buf_len; | |
| 1086 | 1116 | __u64 __resv[3]; |
| 1087 | 1117 | }; |
| 1088 | 1118 | |
| @@ -0,0 +1,68 @@ | ||
| 1 | +/* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR MIT */ | |
| 2 | +/* | |
| 3 | + * Header file for the io_uring BPF filters. | |
| 4 | + */ | |
| 5 | +#ifndef LINUX_IO_URING_BPF_FILTER_H | |
| 6 | +#define LINUX_IO_URING_BPF_FILTER_H | |
| 7 | + | |
| 8 | +#include <linux/types.h> | |
| 9 | + | |
| 10 | +/* | |
| 11 | + * Struct passed to filters. | |
| 12 | + */ | |
| 13 | +struct io_uring_bpf_ctx { | |
| 14 | + __u64 user_data; | |
| 15 | + __u8 opcode; | |
| 16 | + __u8 sqe_flags; | |
| 17 | + __u8 pdu_size; /* size of aux data for filter */ | |
| 18 | + __u8 pad[5]; | |
| 19 | + union { | |
| 20 | + struct { | |
| 21 | + __u32 family; | |
| 22 | + __u32 type; | |
| 23 | + __u32 protocol; | |
| 24 | + } socket; | |
| 25 | + struct { | |
| 26 | + __u64 flags; | |
| 27 | + __u64 mode; | |
| 28 | + __u64 resolve; | |
| 29 | + } open; | |
| 30 | + }; | |
| 31 | +}; | |
| 32 | + | |
| 33 | +enum { | |
| 34 | + /* | |
| 35 | + * If set, any currently unset opcode will have a deny filter attached | |
| 36 | + */ | |
| 37 | + IO_URING_BPF_FILTER_DENY_REST = 1, | |
| 38 | + /* | |
| 39 | + * If set, if kernel and application don't agree on pdu_size for | |
| 40 | + * the given opcode, fail the registration of the filter. | |
| 41 | + */ | |
| 42 | + IO_URING_BPF_FILTER_SZ_STRICT = 2, | |
| 43 | +}; | |
| 44 | + | |
| 45 | +struct io_uring_bpf_filter { | |
| 46 | + __u32 opcode; /* io_uring opcode to filter */ | |
| 47 | + __u32 flags; | |
| 48 | + __u32 filter_len; /* number of BPF instructions */ | |
| 49 | + __u8 pdu_size; /* expected pdu size for opcode */ | |
| 50 | + __u8 resv[3]; | |
| 51 | + __u64 filter_ptr; /* pointer to BPF filter */ | |
| 52 | + __u64 resv2[5]; | |
| 53 | +}; | |
| 54 | + | |
| 55 | +enum { | |
| 56 | + IO_URING_BPF_CMD_FILTER = 1, | |
| 57 | +}; | |
| 58 | + | |
| 59 | +struct io_uring_bpf { | |
| 60 | + __u16 cmd_type; /* IO_URING_BPF_* values */ | |
| 61 | + __u16 cmd_flags; /* none so far */ | |
| 62 | + __u32 resv; | |
| 63 | + union { | |
| 64 | + struct io_uring_bpf_filter filter; | |
| 65 | + }; | |
| 66 | +}; | |
| 67 | + | |
| 68 | +#endif | |
| @@ -1,6 +1,9 @@ | ||
| 1 | 1 | /* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR MIT */ |
| 2 | 2 | /* |
| 3 | 3 | * Header file for the io_uring query interface. |
| 4 | + * | |
| 5 | + * Copyright (C) 2026 Pavel Begunkov <asml.silence@gmail.com> | |
| 6 | + * Copyright (C) Meta Platforms, Inc. | |
| 4 | 7 | */ |
| 5 | 8 | #ifndef LINUX_IO_URING_QUERY_H |
| 6 | 9 | #define LINUX_IO_URING_QUERY_H |
| @@ -50,7 +53,8 @@ struct io_uring_query_zcrx { · 43 unmodified lines | ||
| 50 | 53 | __u64 area_flags; |
| 51 | 54 | /* The number of supported ZCRX_CTRL_* opcodes */ |
| 52 | 55 | __u32 nr_ctrl_opcodes; |
| 53 | − __u32 __resv1; | |
| 56 | + /* Bitmask of ZCRX_FEATURE_* indicating which features are available */ | |
| 57 | + __u32 features; | |
| 54 | 58 | /* The refill ring header size */ |
| 55 | 59 | __u32 rq_hdr_size; |
| 56 | 60 | /* The alignment for the header */ |
| @@ -465,16 +465,27 @@ struct iommu_hwpt_arm_smmuv3 { · 464 unmodified lines | ||
| 465 | 465 | __aligned_le64 ste[2]; |
| 466 | 466 | }; |
| 467 | 467 | |
| 468 | +/** | |
| 469 | + * struct iommu_hwpt_amd_guest - AMD IOMMU guest I/O page table data | |
| 470 | + * (IOMMU_HWPT_DATA_AMD_GUEST) | |
| 471 | + * @dte: Guest Device Table Entry (DTE) | |
| 472 | + */ | |
| 473 | +struct iommu_hwpt_amd_guest { | |
| 474 | + __aligned_u64 dte[4]; | |
| 475 | +}; | |
| 476 | + | |
| 468 | 477 | /** |
| 469 | 478 | * enum iommu_hwpt_data_type - IOMMU HWPT Data Type |
| 470 | 479 | * @IOMMU_HWPT_DATA_NONE: no data |
| 471 | 480 | * @IOMMU_HWPT_DATA_VTD_S1: Intel VT-d stage-1 page table |
| 472 | 481 | * @IOMMU_HWPT_DATA_ARM_SMMUV3: ARM SMMUv3 Context Descriptor Table |
| 482 | + * @IOMMU_HWPT_DATA_AMD_GUEST: AMD IOMMU guest page table | |
| 473 | 483 | */ |
| 474 | 484 | enum iommu_hwpt_data_type { |
| 475 | 485 | IOMMU_HWPT_DATA_NONE = 0, |
| 476 | 486 | IOMMU_HWPT_DATA_VTD_S1 = 1, |
| 477 | 487 | IOMMU_HWPT_DATA_ARM_SMMUV3 = 2, |
| 488 | + IOMMU_HWPT_DATA_AMD_GUEST = 3, | |
| 478 | 489 | }; |
| 479 | 490 | |
| 480 | 491 | /** |
| @@ -623,6 +634,32 @@ struct iommu_hw_info_tegra241_cmdqv { · 142 unmodified lines | ||
| 623 | 634 | __u8 __reserved; |
| 624 | 635 | }; |
| 625 | 636 | |
| 637 | +/** | |
| 638 | + * struct iommu_hw_info_amd - AMD IOMMU device info | |
| 639 | + * | |
| 640 | + * @efr : Value of AMD IOMMU Extended Feature Register (EFR) | |
| 641 | + * @efr2: Value of AMD IOMMU Extended Feature 2 Register (EFR2) | |
| 642 | + * | |
| 643 | + * Please See description of these registers in the following sections of | |
| 644 | + * the AMD I/O Virtualization Technology (IOMMU) Specification. | |
| 645 | + * (https://docs.amd.com/v/u/en-US/48882_3.10_PUB) | |
| 646 | + * | |
| 647 | + * - MMIO Offset 0030h IOMMU Extended Feature Register | |
| 648 | + * - MMIO Offset 01A0h IOMMU Extended Feature 2 Register | |
| 649 | + * | |
| 650 | + * Note: The EFR and EFR2 are raw values reported by hardware. | |
| 651 | + * VMM is responsible to determine the appropriate flags to be exposed to | |
| 652 | + * the VM since cetertain features are not currently supported by the kernel | |
| 653 | + * for HW-vIOMMU. | |
| 654 | + * | |
| 655 | + * Current VMM-allowed list of feature flags are: | |
| 656 | + * - EFR[GTSup, GASup, GioSup, PPRSup, EPHSup, GATS, GLX, PASmax] | |
| 657 | + */ | |
| 658 | +struct iommu_hw_info_amd { | |
| 659 | + __aligned_u64 efr; | |
| 660 | + __aligned_u64 efr2; | |
| 661 | +}; | |
| 662 | + | |
| 626 | 663 | /** |
| 627 | 664 | * enum iommu_hw_info_type - IOMMU Hardware Info Types |
| 628 | 665 | * @IOMMU_HW_INFO_TYPE_NONE: Output by the drivers that do not report hardware |
| @@ -632,6 +669,7 @@ struct iommu_hw_info_tegra241_cmdqv { · 3 unmodified lines | ||
| 632 | 669 | * @IOMMU_HW_INFO_TYPE_ARM_SMMUV3: ARM SMMUv3 iommu info type |
| 633 | 670 | * @IOMMU_HW_INFO_TYPE_TEGRA241_CMDQV: NVIDIA Tegra241 CMDQV (extension for ARM |
| 634 | 671 | * SMMUv3) info type |
| 672 | + * @IOMMU_HW_INFO_TYPE_AMD: AMD IOMMU info type | |
| 635 | 673 | */ |
| 636 | 674 | enum iommu_hw_info_type { |
| 637 | 675 | IOMMU_HW_INFO_TYPE_NONE = 0, |
| @@ -639,6 +677,7 @@ enum iommu_hw_info_type { · 1 unmodified line | ||
| 639 | 677 | IOMMU_HW_INFO_TYPE_INTEL_VTD = 1, |
| 640 | 678 | IOMMU_HW_INFO_TYPE_ARM_SMMUV3 = 2, |
| 641 | 679 | IOMMU_HW_INFO_TYPE_TEGRA241_CMDQV = 3, |
| 680 | + IOMMU_HW_INFO_TYPE_AMD = 4, | |
| 642 | 681 | }; |
| 643 | 682 | |
| 644 | 683 | /** |
| @@ -44,9 +44,13 @@ · 43 unmodified lines | ||
| 44 | 44 | * - 1.16 - Add contiguous VRAM allocation flag |
| 45 | 45 | * - 1.17 - Add SDMA queue creation with target SDMA engine ID |
| 46 | 46 | * - 1.18 - Rename pad in set_memory_policy_args to misc_process_flag |
| 47 | + * - 1.19 - Add a new ioctl to craete secondary kfd processes | |
| 48 | + * - 1.20 - Trap handler support for expert scheduling mode available | |
| 49 | + * - 1.21 - Debugger support to subscribe to LDS out-of-address exceptions | |
| 50 | + * - 1.22 - Add queue creation with metadata ring base address | |
| 47 | 51 | */ |
| 48 | 52 | #define KFD_IOCTL_MAJOR_VERSION 1 |
| 49 | −#define KFD_IOCTL_MINOR_VERSION 18 | |
| 53 | +#define KFD_IOCTL_MINOR_VERSION 22 | |
| 50 | 54 | |
| 51 | 55 | struct kfd_ioctl_get_version_args { |
| 52 | 56 | __u32 major_version; /* from KFD */ |
| @@ -84,7 +88,7 @@ struct kfd_ioctl_create_queue_args { · 31 unmodified lines | ||
| 84 | 88 | __u32 ctx_save_restore_size; /* to KFD */ |
| 85 | 89 | __u32 ctl_stack_size; /* to KFD */ |
| 86 | 90 | __u32 sdma_engine_id; /* to KFD */ |
| 87 | − __u32 pad; | |
| 91 | + __u32 metadata_ring_size; /* to KFD */ | |
| 88 | 92 | }; |
| 89 | 93 | |
| 90 | 94 | struct kfd_ioctl_destroy_queue_args { |
| @@ -145,6 +149,8 @@ struct kfd_dbg_device_info_entry { · 54 unmodified lines | ||
| 145 | 149 | __u32 num_xcc; |
| 146 | 150 | __u32 capability; |
| 147 | 151 | __u32 debug_prop; |
| 152 | + __u32 capability2; | |
| 153 | + __u32 pad; | |
| 148 | 154 | }; |
| 149 | 155 | |
| 150 | 156 | /* For kfd_ioctl_set_memory_policy_args.default_policy and alternate_policy */ |
| @@ -945,6 +951,7 @@ enum kfd_dbg_trap_address_watch_mode { · 794 unmodified lines | ||
| 945 | 951 | enum kfd_dbg_trap_flags { |
| 946 | 952 | KFD_DBG_TRAP_FLAG_SINGLE_MEM_OP = 1, |
| 947 | 953 | KFD_DBG_TRAP_FLAG_SINGLE_ALU_OP = 2, |
| 954 | + KFD_DBG_TRAP_FLAG_LDS_OUT_OF_ADDR_RANGE = 4 | |
| 948 | 955 | }; |
| 949 | 956 | |
| 950 | 957 | /* Trap exceptions */ |
| @@ -1671,7 +1678,10 @@ struct kfd_ioctl_dbg_trap_args { · 720 unmodified lines | ||
| 1671 | 1678 | #define AMDKFD_IOC_DBG_TRAP \ |
| 1672 | 1679 | AMDKFD_IOWR(0x26, struct kfd_ioctl_dbg_trap_args) |
| 1673 | 1680 | |
| 1681 | +#define AMDKFD_IOC_CREATE_PROCESS \ | |
| 1682 | + AMDKFD_IO(0x27) | |
| 1683 | + | |
| 1674 | 1684 | #define AMDKFD_COMMAND_START 0x01 |
| 1675 | −#define AMDKFD_COMMAND_END 0x27 | |
| 1685 | +#define AMDKFD_COMMAND_END 0x28 | |
| 1676 | 1686 | |
| 1677 | 1687 | #endif |
| @@ -64,7 +64,8 @@ · 63 unmodified lines | ||
| 64 | 64 | #define HSA_CAP_RESERVED 0x000f8000 |
| 65 | 65 | |
| 66 | 66 | #define HSA_CAP2_PER_SDMA_QUEUE_RESET_SUPPORTED 0x00000001 |
| 67 | −#define HSA_CAP2_RESERVED 0xfffffffe | |
| 67 | +#define HSA_CAP2_TRAP_DEBUG_LDS_OUT_OF_ADDR_RANGE_SUPPORTED 0x00000002 | |
| 68 | +#define HSA_CAP2_RESERVED 0xfffffffc | |
| 68 | 69 | |
| 69 | 70 | /* debug_prop bits in node properties */ |
| 70 | 71 | #define HSA_DBG_WATCH_ADDR_MASK_LO_BIT_MASK 0x0000000f |
| @@ -135,6 +135,12 @@ struct kvm_xen_exit { · 134 unmodified lines | ||
| 135 | 135 | } u; |
| 136 | 136 | }; |
| 137 | 137 | |
| 138 | +struct kvm_exit_snp_req_certs { | |
| 139 | + __u64 gpa; | |
| 140 | + __u64 npages; | |
| 141 | + __u64 ret; | |
| 142 | +}; | |
| 143 | + | |
| 138 | 144 | #define KVM_S390_GET_SKEYS_NONE 1 |
| 139 | 145 | #define KVM_S390_SKEYS_MAX 1048576 |
| 140 | 146 | |
| @@ -180,6 +186,8 @@ struct kvm_xen_exit { · 39 unmodified lines | ||
| 180 | 186 | #define KVM_EXIT_MEMORY_FAULT 39 |
| 181 | 187 | #define KVM_EXIT_TDX 40 |
| 182 | 188 | #define KVM_EXIT_ARM_SEA 41 |
| 189 | +#define KVM_EXIT_ARM_LDST64B 42 | |
| 190 | +#define KVM_EXIT_SNP_REQ_CERTS 43 | |
| 183 | 191 | |
| 184 | 192 | /* For KVM_EXIT_INTERNAL_ERROR */ |
| 185 | 193 | /* Emulate instruction failed. */ |
| @@ -402,7 +410,7 @@ struct kvm_run { · 216 unmodified lines | ||
| 402 | 410 | } eoi; |
| 403 | 411 | /* KVM_EXIT_HYPERV */ |
| 404 | 412 | struct kvm_hyperv_exit hyperv; |
| 405 | − /* KVM_EXIT_ARM_NISV */ | |
| 413 | + /* KVM_EXIT_ARM_NISV / KVM_EXIT_ARM_LDST64B */ | |
| 406 | 414 | struct { |
| 407 | 415 | __u64 esr_iss; |
| 408 | 416 | __u64 fault_ipa; |
| @@ -482,6 +490,8 @@ struct kvm_run { · 73 unmodified lines | ||
| 482 | 490 | __u64 gva; |
| 483 | 491 | __u64 gpa; |
| 484 | 492 | } arm_sea; |
| 493 | + /* KVM_EXIT_SNP_REQ_CERTS */ | |
| 494 | + struct kvm_exit_snp_req_certs snp_req_certs; | |
| 485 | 495 | /* Fix the size of the union. */ |
| 486 | 496 | char padding[256]; |
| 487 | 497 | }; |
| @@ -974,6 +984,7 @@ struct kvm_enable_cap { · 486 unmodified lines | ||
| 974 | 984 | #define KVM_CAP_GUEST_MEMFD_FLAGS 244 |
| 975 | 985 | #define KVM_CAP_ARM_SEA_TO_USER 245 |
| 976 | 986 | #define KVM_CAP_S390_USER_OPEREXEC 246 |
| 987 | +#define KVM_CAP_S390_KEYOP 247 | |
| 977 | 988 | |
| 978 | 989 | struct kvm_irq_routing_irqchip { |
| 979 | 990 | __u32 irqchip; |
| @@ -1219,6 +1230,16 @@ struct kvm_vfio_spapr_tce { · 239 unmodified lines | ||
| 1219 | 1230 | __s32 tablefd; |
| 1220 | 1231 | }; |
| 1221 | 1232 | |
| 1233 | +#define KVM_S390_KEYOP_ISKE 0x01 | |
| 1234 | +#define KVM_S390_KEYOP_RRBE 0x02 | |
| 1235 | +#define KVM_S390_KEYOP_SSKE 0x03 | |
| 1236 | +struct kvm_s390_keyop { | |
| 1237 | + __u64 guest_addr; | |
| 1238 | + __u8 key; | |
| 1239 | + __u8 operation; | |
| 1240 | + __u8 pad[6]; | |
| 1241 | +}; | |
| 1242 | + | |
| 1222 | 1243 | /* |
| 1223 | 1244 | * KVM_CREATE_VCPU receives as a parameter the vcpu slot, and returns |
| 1224 | 1245 | * a vcpu fd. |
| @@ -1238,6 +1259,7 @@ struct kvm_vfio_spapr_tce { · 13 unmodified lines | ||
| 1238 | 1259 | #define KVM_S390_UCAS_MAP _IOW(KVMIO, 0x50, struct kvm_s390_ucas_mapping) |
| 1239 | 1260 | #define KVM_S390_UCAS_UNMAP _IOW(KVMIO, 0x51, struct kvm_s390_ucas_mapping) |
| 1240 | 1261 | #define KVM_S390_VCPU_FAULT _IOW(KVMIO, 0x52, unsigned long) |
| 1262 | +#define KVM_S390_KEYOP _IOWR(KVMIO, 0x53, struct kvm_s390_keyop) | |
| 1241 | 1263 | |
| 1242 | 1264 | /* Device model IOC */ |
| 1243 | 1265 | #define KVM_CREATE_IRQCHIP _IO(KVMIO, 0x60) |
| @@ -117,11 +117,24 @@ struct landlock_ruleset_attr { · 116 unmodified lines | ||
| 117 | 117 | * future nested domains, not the one being created. It can also be used |
| 118 | 118 | * with a @ruleset_fd value of -1 to mute subdomain logs without creating a |
| 119 | 119 | * domain. |
| 120 | + * | |
| 121 | + * The following flag supports policy enforcement in multithreaded processes: | |
| 122 | + * | |
| 123 | + * %LANDLOCK_RESTRICT_SELF_TSYNC | |
| 124 | + * Applies the new Landlock configuration atomically to all threads of the | |
| 125 | + * current process, including the Landlock domain and logging | |
| 126 | + * configuration. This overrides the Landlock configuration of sibling | |
| 127 | + * threads, irrespective of previously established Landlock domains and | |
| 128 | + * logging configurations on these threads. | |
| 129 | + * | |
| 130 | + * If the calling thread is running with no_new_privs, this operation | |
| 131 | + * enables no_new_privs on the sibling threads as well. | |
| 120 | 132 | */ |
| 121 | 133 | /* clang-format off */ |
| 122 | 134 | #define LANDLOCK_RESTRICT_SELF_LOG_SAME_EXEC_OFF (1U << 0) |
| 123 | 135 | #define LANDLOCK_RESTRICT_SELF_LOG_NEW_EXEC_ON (1U << 1) |
| 124 | 136 | #define LANDLOCK_RESTRICT_SELF_LOG_SUBDOMAINS_OFF (1U << 2) |
| 137 | +#define LANDLOCK_RESTRICT_SELF_TSYNC (1U << 3) | |
| 125 | 138 | /* clang-format on */ |
| 126 | 139 | |
| 127 | 140 | /** |
| @@ -182,11 +195,13 @@ struct landlock_net_port_attr { · 54 unmodified lines | ||
| 182 | 195 | * It should be noted that port 0 passed to :manpage:`bind(2)` will bind |
| 183 | 196 | * to an available port from the ephemeral port range. This can be |
| 184 | 197 | * configured with the ``/proc/sys/net/ipv4/ip_local_port_range`` sysctl |
| 185 | − * (also used for IPv6). | |
| 198 | + * (also used for IPv6), and within that range, on a per-socket basis | |
| 199 | + * with ``setsockopt(IP_LOCAL_PORT_RANGE)``. | |
| 186 | 200 | * |
| 187 | − * A Landlock rule with port 0 and the ``LANDLOCK_ACCESS_NET_BIND_TCP`` | |
| 201 | + * A Landlock rule with port 0 and the %LANDLOCK_ACCESS_NET_BIND_TCP | |
| 188 | 202 | * right means that requesting to bind on port 0 is allowed and it will |
| 189 | − * automatically translate to binding on the related port range. | |
| 203 | + * automatically translate to binding on a kernel-assigned ephemeral | |
| 204 | + * port. | |
| 190 | 205 | */ |
| 191 | 206 | __u64 port; |
| 192 | 207 | }; |
| @@ -216,6 +231,23 @@ struct landlock_net_port_attr { · 23 unmodified lines | ||
| 216 | 231 | * :manpage:`ftruncate(2)`, :manpage:`creat(2)`, or :manpage:`open(2)` with |
| 217 | 232 | * ``O_TRUNC``. This access right is available since the third version of the |
| 218 | 233 | * Landlock ABI. |
| 234 | + * - %LANDLOCK_ACCESS_FS_IOCTL_DEV: Invoke :manpage:`ioctl(2)` commands on an opened | |
| 235 | + * character or block device. | |
| 236 | + * | |
| 237 | + * This access right applies to all `ioctl(2)` commands implemented by device | |
| 238 | + * drivers. However, the following common IOCTL commands continue to be | |
| 239 | + * invokable independent of the %LANDLOCK_ACCESS_FS_IOCTL_DEV right: | |
| 240 | + * | |
| 241 | + * * IOCTL commands targeting file descriptors (``FIOCLEX``, ``FIONCLEX``), | |
| 242 | + * * IOCTL commands targeting file descriptions (``FIONBIO``, ``FIOASYNC``), | |
| 243 | + * * IOCTL commands targeting file systems (``FIFREEZE``, ``FITHAW``, | |
| 244 | + * ``FIGETBSZ``, ``FS_IOC_GETFSUUID``, ``FS_IOC_GETFSSYSFSPATH``) | |
| 245 | + * * Some IOCTL commands which do not make sense when used with devices, but | |
| 246 | + * whose implementations are safe and return the right error codes | |
| 247 | + * (``FS_IOC_FIEMAP``, ``FICLONE``, ``FICLONERANGE``, ``FIDEDUPERANGE``) | |
| 248 | + * | |
| 249 | + * This access right is available since the fifth version of the Landlock | |
| 250 | + * ABI. | |
| 219 | 251 | * |
| 220 | 252 | * Whether an opened file can be truncated with :manpage:`ftruncate(2)` or used |
| 221 | 253 | * with `ioctl(2)` is determined during :manpage:`open(2)`, in the same way as |
| @@ -275,26 +307,6 @@ struct landlock_net_port_attr { · 53 unmodified lines | ||
| 275 | 307 | * If multiple requirements are not met, the ``EACCES`` error code takes |
| 276 | 308 | * precedence over ``EXDEV``. |
| 277 | 309 | * |
| 278 | − * The following access right applies both to files and directories: | |
| 279 | − * | |
| 280 | − * - %LANDLOCK_ACCESS_FS_IOCTL_DEV: Invoke :manpage:`ioctl(2)` commands on an opened | |
| 281 | − * character or block device. | |
| 282 | − * | |
| 283 | − * This access right applies to all `ioctl(2)` commands implemented by device | |
| 284 | − * drivers. However, the following common IOCTL commands continue to be | |
| 285 | − * invokable independent of the %LANDLOCK_ACCESS_FS_IOCTL_DEV right: | |
| 286 | − * | |
| 287 | − * * IOCTL commands targeting file descriptors (``FIOCLEX``, ``FIONCLEX``), | |
| 288 | − * * IOCTL commands targeting file descriptions (``FIONBIO``, ``FIOASYNC``), | |
| 289 | − * * IOCTL commands targeting file systems (``FIFREEZE``, ``FITHAW``, | |
| 290 | − * ``FIGETBSZ``, ``FS_IOC_GETFSUUID``, ``FS_IOC_GETFSSYSFSPATH``) | |
| 291 | − * * Some IOCTL commands which do not make sense when used with devices, but | |
| 292 | − * whose implementations are safe and return the right error codes | |
| 293 | − * (``FS_IOC_FIEMAP``, ``FICLONE``, ``FICLONERANGE``, ``FIDEDUPERANGE``) | |
| 294 | − * | |
| 295 | − * This access right is available since the fifth version of the Landlock | |
| 296 | − * ABI. | |
| 297 | − * | |
| 298 | 310 | * .. warning:: |
| 299 | 311 | * |
| 300 | 312 | * It is currently not possible to restrict some file-related actions |
| @@ -332,13 +344,12 @@ struct landlock_net_port_attr { · 31 unmodified lines | ||
| 332 | 344 | * These flags enable to restrict a sandboxed process to a set of network |
| 333 | 345 | * actions. |
| 334 | 346 | * |
| 335 | − * This is supported since Landlock ABI version 4. | |
| 336 | − * | |
| 337 | 347 | * The following access rights apply to TCP port numbers: |
| 338 | 348 | * |
| 339 | − * - %LANDLOCK_ACCESS_NET_BIND_TCP: Bind a TCP socket to a local port. | |
| 340 | − * - %LANDLOCK_ACCESS_NET_CONNECT_TCP: Connect an active TCP socket to | |
| 341 | − * a remote port. | |
| 349 | + * - %LANDLOCK_ACCESS_NET_BIND_TCP: Bind TCP sockets to the given local | |
| 350 | + * port. Support added in Landlock ABI version 4. | |
| 351 | + * - %LANDLOCK_ACCESS_NET_CONNECT_TCP: Connect TCP sockets to the given | |
| 352 | + * remote port. Support added in Landlock ABI version 4. | |
| 342 | 353 | */ |
| 343 | 354 | /* clang-format off */ |
| 344 | 355 | #define LANDLOCK_ACCESS_NET_BIND_TCP (1ULL << 0) |
| @@ -104,5 +104,6 @@ · 103 unmodified lines | ||
| 104 | 104 | #define SECRETMEM_MAGIC 0x5345434d /* "SECM" */ |
| 105 | 105 | #define PID_FS_MAGIC 0x50494446 /* "PIDF" */ |
| 106 | 106 | #define GUEST_MEMFD_MAGIC 0x474d454d /* "GMEM" */ |
| 107 | +#define NULL_FS_MAGIC 0x4E554C4C /* "NULL" */ | |
| 107 | 108 | |
| 108 | 109 | #endif /* __LINUX_MAGIC_H__ */ |
| @@ -194,15 +194,6 @@ struct mali_c55_stats_buffer { · 193 unmodified lines | ||
| 194 | 194 | __u32 reserved3[15]; |
| 195 | 195 | } __attribute__((packed)); |
| 196 | 196 | |
| 197 | −/** | |
| 198 | − * enum mali_c55_param_buffer_version - Mali-C55 parameters block versioning | |
| 199 | − * | |
| 200 | − * @MALI_C55_PARAM_BUFFER_V1: First version of Mali-C55 parameters block | |
| 201 | − */ | |
| 202 | −enum mali_c55_param_buffer_version { | |
| 203 | − MALI_C55_PARAM_BUFFER_V1, | |
| 204 | −}; | |
| 205 | − | |
| 206 | 197 | /** |
| 207 | 198 | * enum mali_c55_param_block_type - Enumeration of Mali-C55 parameter blocks |
| 208 | 199 | * |
| @@ -39,6 +39,9 @@ enum { · 38 unmodified lines | ||
| 39 | 39 | #define MPOL_MODE_FLAGS \ |
| 40 | 40 | (MPOL_F_STATIC_NODES | MPOL_F_RELATIVE_NODES | MPOL_F_NUMA_BALANCING) |
| 41 | 41 | |
| 42 | +/* Whether the nodemask is specified by users */ | |
| 43 | +#define MPOL_USER_NODEMASK_FLAGS (MPOL_F_STATIC_NODES | MPOL_F_RELATIVE_NODES) | |
| 44 | + | |
| 42 | 45 | /* Flags for get_mempolicy */ |
| 43 | 46 | #define MPOL_F_NODE (1<<0) /* return next IL mode instead of node mask */ |
| 44 | 47 | #define MPOL_F_ADDR (1<<1) /* look up vma using address */ |
| @@ -61,7 +61,8 @@ · 60 unmodified lines | ||
| 61 | 61 | /* |
| 62 | 62 | * open_tree() flags. |
| 63 | 63 | */ |
| 64 | −#define OPEN_TREE_CLONE 1 /* Clone the target tree and attach the clone */ | |
| 64 | +#define OPEN_TREE_CLONE (1 << 0) /* Clone the target tree and attach the clone */ | |
| 65 | +#define OPEN_TREE_NAMESPACE (1 << 1) /* Clone the target tree into a new mount namespace */ | |
| 65 | 66 | #define OPEN_TREE_CLOEXEC O_CLOEXEC /* Close the file on execve() */ |
| 66 | 67 | |
| 67 | 68 | /* |
| @@ -197,7 +198,10 @@ struct statmount { · 129 unmodified lines | ||
| 197 | 198 | */ |
| 198 | 199 | struct mnt_id_req { |
| 199 | 200 | __u32 size; |
| 200 | − __u32 mnt_ns_fd; | |
| 201 | + union { | |
| 202 | + __u32 mnt_ns_fd; | |
| 203 | + __u32 mnt_fd; | |
| 204 | + }; | |
| 201 | 205 | __u64 mnt_id; |
| 202 | 206 | __u64 param; |
| 203 | 207 | __u64 mnt_ns_id; |
| @@ -232,4 +236,9 @@ struct mnt_id_req { · 28 unmodified lines | ||
| 232 | 236 | #define LSMT_ROOT 0xffffffffffffffff /* root mount */ |
| 233 | 237 | #define LISTMOUNT_REVERSE (1 << 0) /* List later mounts first */ |
| 234 | 238 | |
| 239 | +/* | |
| 240 | + * @flag bits for statmount(2) | |
| 241 | + */ | |
| 242 | +#define STATMOUNT_BY_FD 0x00000001U /* want mountinfo for given fd */ | |
| 243 | + | |
| 235 | 244 | #endif /* _UAPI_LINUX_MOUNT_H */ |
| @@ -11,7 +11,7 @@ · 10 unmodified lines | ||
| 11 | 11 | #define MPTCP_PM_VER 1 |
| 12 | 12 | |
| 13 | 13 | /** |
| 14 | − * enum mptcp_event_type | |
| 14 | + * enum mptcp_event_type - Netlink MPTCP event types | |
| 15 | 15 | * @MPTCP_EVENT_UNSPEC: unused event |
| 16 | 16 | * @MPTCP_EVENT_CREATED: A new MPTCP connection has been created. It is the |
| 17 | 17 | * good time to allocate memory and send ADD_ADDR if needed. Depending on the |
| @@ -27,6 +27,8 @@ enum { · 26 unmodified lines | ||
| 27 | 27 | MSHV_PT_BIT_X2APIC, |
| 28 | 28 | MSHV_PT_BIT_GPA_SUPER_PAGES, |
| 29 | 29 | MSHV_PT_BIT_CPU_AND_XSAVE_FEATURES, |
| 30 | + MSHV_PT_BIT_NESTED_VIRTUALIZATION, | |
| 31 | + MSHV_PT_BIT_SMT_ENABLED_GUEST, | |
| 30 | 32 | MSHV_PT_BIT_COUNT, |
| 31 | 33 | }; |
| 32 | 34 | |
| @@ -5,15 +5,16 @@ · 4 unmodified lines | ||
| 5 | 5 | /* bridge-specific defines for netfilter. |
| 6 | 6 | */ |
| 7 | 7 | |
| 8 | +#ifndef __KERNEL__ | |
| 9 | +#include <netinet/if_ether.h> /* for __UAPI_DEF_ETHHDR if defined */ | |
| 10 | +#endif | |
| 11 | + | |
| 8 | 12 | #include <linux/in.h> |
| 9 | 13 | #include <linux/netfilter.h> |
| 10 | 14 | #include <linux/if_ether.h> |
| 11 | 15 | #include <linux/if_vlan.h> |
| 12 | 16 | #include <linux/if_pppox.h> |
| 13 | − | |
| 14 | −#ifndef __KERNEL__ | |
| 15 | −#include <limits.h> /* for INT_MIN, INT_MAX */ | |
| 16 | −#endif | |
| 17 | +#include <linux/typelimits.h> | |
| 17 | 18 | |
| 18 | 19 | /* Bridge Hooks */ |
| 19 | 20 | /* After promisc drops, checksum checks. */ |
| @@ -31,14 +32,14 @@ · 11 unmodified lines | ||
| 31 | 32 | #define NF_BR_NUMHOOKS 6 |
| 32 | 33 | |
| 33 | 34 | enum nf_br_hook_priorities { |
| 34 | − NF_BR_PRI_FIRST = INT_MIN, | |
| 35 | + NF_BR_PRI_FIRST = __KERNEL_INT_MIN, | |
| 35 | 36 | NF_BR_PRI_NAT_DST_BRIDGED = -300, |
| 36 | 37 | NF_BR_PRI_FILTER_BRIDGED = -200, |
| 37 | 38 | NF_BR_PRI_BRNF = 0, |
| 38 | 39 | NF_BR_PRI_NAT_DST_OTHER = 100, |
| 39 | 40 | NF_BR_PRI_FILTER_OTHER = 200, |
| 40 | 41 | NF_BR_PRI_NAT_SRC = 300, |
| 41 | − NF_BR_PRI_LAST = INT_MAX, | |
| 42 | + NF_BR_PRI_LAST = __KERNEL_INT_MAX, | |
| 42 | 43 | }; |
| 43 | 44 | |
| 44 | 45 | #endif /* _UAPI__LINUX_BRIDGE_NETFILTER_H */ |
| @@ -7,12 +7,11 @@ · 6 unmodified lines | ||
| 7 | 7 | |
| 8 | 8 | |
| 9 | 9 | #include <linux/netfilter.h> |
| 10 | +#include <linux/typelimits.h> | |
| 10 | 11 | |
| 11 | 12 | /* only for userspace compatibility */ |
| 12 | 13 | #ifndef __KERNEL__ |
| 13 | 14 | |
| 14 | −#include <limits.h> /* for INT_MIN, INT_MAX */ | |
| 15 | − | |
| 16 | 15 | /* IP Hooks */ |
| 17 | 16 | /* After promisc drops, checksum checks. */ |
| 18 | 17 | #define NF_IP_PRE_ROUTING 0 |
| @@ -28,7 +27,7 @@ · 9 unmodified lines | ||
| 28 | 27 | #endif /* ! __KERNEL__ */ |
| 29 | 28 | |
| 30 | 29 | enum nf_ip_hook_priorities { |
| 31 | − NF_IP_PRI_FIRST = INT_MIN, | |
| 30 | + NF_IP_PRI_FIRST = __KERNEL_INT_MIN, | |
| 32 | 31 | NF_IP_PRI_RAW_BEFORE_DEFRAG = -450, |
| 33 | 32 | NF_IP_PRI_CONNTRACK_DEFRAG = -400, |
| 34 | 33 | NF_IP_PRI_RAW = -300, |
| @@ -41,8 +40,8 @@ enum nf_ip_hook_priorities { · 6 unmodified lines | ||
| 41 | 40 | NF_IP_PRI_NAT_SRC = 100, |
| 42 | 41 | NF_IP_PRI_SELINUX_LAST = 225, |
| 43 | 42 | NF_IP_PRI_CONNTRACK_HELPER = 300, |
| 44 | − NF_IP_PRI_CONNTRACK_CONFIRM = INT_MAX, | |
| 45 | − NF_IP_PRI_LAST = INT_MAX, | |
| 43 | + NF_IP_PRI_CONNTRACK_CONFIRM = __KERNEL_INT_MAX, | |
| 44 | + NF_IP_PRI_LAST = __KERNEL_INT_MAX, | |
| 46 | 45 | }; |
| 47 | 46 | |
| 48 | 47 | /* Arguments for setsockopt SOL_IP: */ |
| @@ -10,12 +10,11 @@ · 9 unmodified lines | ||
| 10 | 10 | |
| 11 | 11 | |
| 12 | 12 | #include <linux/netfilter.h> |
| 13 | +#include <linux/typelimits.h> | |
| 13 | 14 | |
| 14 | 15 | /* only for userspace compatibility */ |
| 15 | 16 | #ifndef __KERNEL__ |
| 16 | 17 | |
| 17 | −#include <limits.h> /* for INT_MIN, INT_MAX */ | |
| 18 | − | |
| 19 | 18 | /* IP6 Hooks */ |
| 20 | 19 | /* After promisc drops, checksum checks. */ |
| 21 | 20 | #define NF_IP6_PRE_ROUTING 0 |
| @@ -32,7 +31,7 @@ · 10 unmodified lines | ||
| 32 | 31 | |
| 33 | 32 | |
| 34 | 33 | enum nf_ip6_hook_priorities { |
| 35 | − NF_IP6_PRI_FIRST = INT_MIN, | |
| 34 | + NF_IP6_PRI_FIRST = __KERNEL_INT_MIN, | |
| 36 | 35 | NF_IP6_PRI_RAW_BEFORE_DEFRAG = -450, |
| 37 | 36 | NF_IP6_PRI_CONNTRACK_DEFRAG = -400, |
| 38 | 37 | NF_IP6_PRI_RAW = -300, |
| @@ -45,7 +44,7 @@ enum nf_ip6_hook_priorities { · 6 unmodified lines | ||
| 45 | 44 | NF_IP6_PRI_NAT_SRC = 100, |
| 46 | 45 | NF_IP6_PRI_SELINUX_LAST = 225, |
| 47 | 46 | NF_IP6_PRI_CONNTRACK_HELPER = 300, |
| 48 | − NF_IP6_PRI_LAST = INT_MAX, | |
| 47 | + NF_IP6_PRI_LAST = __KERNEL_INT_MAX, | |
| 49 | 48 | }; |
| 50 | 49 | |
| 51 | 50 | |
| @@ -55,7 +55,7 @@ · 54 unmodified lines | ||
| 55 | 55 | NFSERR_NODEV = 19, /* v2 v3 v4 */ |
| 56 | 56 | NFSERR_NOTDIR = 20, /* v2 v3 v4 */ |
| 57 | 57 | NFSERR_ISDIR = 21, /* v2 v3 v4 */ |
| 58 | − NFSERR_INVAL = 22, /* v2 v3 v4 */ | |
| 58 | + NFSERR_INVAL = 22, /* v3 v4 */ | |
| 59 | 59 | NFSERR_FBIG = 27, /* v2 v3 v4 */ |
| 60 | 60 | NFSERR_NOSPC = 28, /* v2 v3 v4 */ |
| 61 | 61 | NFSERR_ROFS = 30, /* v2 v3 v4 */ |
| @@ -35,6 +35,7 @@ enum { · 34 unmodified lines | ||
| 35 | 35 | NFSD_A_SERVER_GRACETIME, |
| 36 | 36 | NFSD_A_SERVER_LEASETIME, |
| 37 | 37 | NFSD_A_SERVER_SCOPE, |
| 38 | + NFSD_A_SERVER_MIN_THREADS, | |
| 38 | 39 | |
| 39 | 40 | __NFSD_A_SERVER_MAX, |
| 40 | 41 | NFSD_A_SERVER_MAX = (__NFSD_A_SERVER_MAX - 1) |
| @@ -58,7 +58,7 @@ NILFS_CPINFO_FNS(INVALID, invalid) · 57 unmodified lines | ||
| 58 | 58 | NILFS_CPINFO_FNS(MINOR, minor) |
| 59 | 59 | |
| 60 | 60 | /** |
| 61 | − * nilfs_suinfo - segment usage information | |
| 61 | + * struct nilfs_suinfo - segment usage information | |
| 62 | 62 | * @sui_lastmod: timestamp of last modification |
| 63 | 63 | * @sui_nblocks: number of written blocks in segment |
| 64 | 64 | * @sui_flags: segment usage flags |
| @@ -93,7 +93,7 @@ static inline int nilfs_suinfo_clean(const struct nilfs_suinfo *si) · 28 unmodified lines | ||
| 93 | 93 | } |
| 94 | 94 | |
| 95 | 95 | /** |
| 96 | − * nilfs_suinfo_update - segment usage information update | |
| 96 | + * struct nilfs_suinfo_update - segment usage information update | |
| 97 | 97 | * @sup_segnum: segment number |
| 98 | 98 | * @sup_flags: flags for which fields are active in sup_sui |
| 99 | 99 | * @sup_reserved: reserved necessary for alignment |
| @@ -133,73 +133,104 @@ struct nilfs_super_root { · 132 unmodified lines | ||
| 133 | 133 | |
| 134 | 134 | /** |
| 135 | 135 | * struct nilfs_super_block - structure of super block on disk |
| 136 | + * @s_rev_level: Revision level | |
| 137 | + * @s_minor_rev_level: minor revision level | |
| 138 | + * @s_magic: Magic signature | |
| 139 | + * @s_bytes: Bytes count of CRC calculation for | |
| 140 | + * this structure. s_reserved is excluded. | |
| 141 | + * @s_flags: flags | |
| 142 | + * @s_crc_seed: Seed value of CRC calculation | |
| 143 | + * @s_sum: Check sum of super block | |
| 144 | + * @s_log_block_size: Block size represented as follows: | |
| 145 | + * blocksize = 1 << (s_log_block_size + 10) | |
| 146 | + * @s_nsegments: Number of segments in filesystem | |
| 147 | + * @s_dev_size: block device size in bytes | |
| 148 | + * @s_first_data_block: 1st seg disk block number | |
| 149 | + * @s_blocks_per_segment: number of blocks per full segment | |
| 150 | + * @s_r_segments_percentage: Reserved segments percentage | |
| 151 | + * @s_last_cno: Last checkpoint number | |
| 152 | + * @s_last_pseg: disk block addr pseg written last | |
| 153 | + * @s_last_seq: seq. number of seg written last | |
| 154 | + * @s_free_blocks_count: Free blocks count | |
| 155 | + * @s_ctime: Creation time (execution time of newfs) | |
| 156 | + * @s_mtime: Mount time | |
| 157 | + * @s_wtime: Write time | |
| 158 | + * @s_mnt_count: Mount count | |
| 159 | + * @s_max_mnt_count: Maximal mount count | |
| 160 | + * @s_state: File system state | |
| 161 | + * @s_errors: Behaviour when detecting errors | |
| 162 | + * @s_lastcheck: time of last check | |
| 163 | + * @s_checkinterval: max. time between checks | |
| 164 | + * @s_creator_os: OS | |
| 165 | + * @s_def_resuid: Default uid for reserved blocks | |
| 166 | + * @s_def_resgid: Default gid for reserved blocks | |
| 167 | + * @s_first_ino: First non-reserved inode | |
| 168 | + * @s_inode_size: Size of an inode | |
| 169 | + * @s_dat_entry_size: Size of a dat entry | |
| 170 | + * @s_checkpoint_size: Size of a checkpoint | |
| 171 | + * @s_segment_usage_size: Size of a segment usage | |
| 172 | + * @s_uuid: 128-bit uuid for volume | |
| 173 | + * @s_volume_name: volume name | |
| 174 | + * @s_c_interval: Commit interval of segment | |
| 175 | + * @s_c_block_max: Threshold of data amount for the | |
| 176 | + * segment construction | |
| 177 | + * @s_feature_compat: Compatible feature set | |
| 178 | + * @s_feature_compat_ro: Read-only compatible feature set | |
| 179 | + * @s_feature_incompat: Incompatible feature set | |
| 180 | + * @s_reserved: padding to the end of the block | |
| 136 | 181 | */ |
| 137 | 182 | struct nilfs_super_block { |
| 138 | −/*00*/ __le32 s_rev_level; /* Revision level */ | |
| 139 | − __le16 s_minor_rev_level; /* minor revision level */ | |
| 140 | − __le16 s_magic; /* Magic signature */ | |
| 141 | − | |
| 142 | − __le16 s_bytes; /* | |
| 143 | − * Bytes count of CRC calculation | |
| 144 | − * for this structure. s_reserved | |
| 145 | − * is excluded. | |
| 146 | − */ | |
| 147 | − __le16 s_flags; /* flags */ | |
| 148 | − __le32 s_crc_seed; /* Seed value of CRC calculation */ | |
| 149 | −/*10*/ __le32 s_sum; /* Check sum of super block */ | |
| 150 | − | |
| 151 | − __le32 s_log_block_size; /* | |
| 152 | − * Block size represented as follows | |
| 153 | − * blocksize = | |
| 154 | − * 1 << (s_log_block_size + 10) | |
| 155 | − */ | |
| 156 | − __le64 s_nsegments; /* Number of segments in filesystem */ | |
| 157 | −/*20*/ __le64 s_dev_size; /* block device size in bytes */ | |
| 158 | − __le64 s_first_data_block; /* 1st seg disk block number */ | |
| 159 | −/*30*/ __le32 s_blocks_per_segment; /* number of blocks per full segment */ | |
| 160 | − __le32 s_r_segments_percentage; /* Reserved segments percentage */ | |
| 161 | − | |
| 162 | − __le64 s_last_cno; /* Last checkpoint number */ | |
| 163 | −/*40*/ __le64 s_last_pseg; /* disk block addr pseg written last */ | |
| 164 | − __le64 s_last_seq; /* seq. number of seg written last */ | |
| 165 | −/*50*/ __le64 s_free_blocks_count; /* Free blocks count */ | |
| 166 | − | |
| 167 | − __le64 s_ctime; /* | |
| 168 | − * Creation time (execution time of | |
| 169 | − * newfs) | |
| 170 | − */ | |
| 171 | −/*60*/ __le64 s_mtime; /* Mount time */ | |
| 172 | − __le64 s_wtime; /* Write time */ | |
| 173 | −/*70*/ __le16 s_mnt_count; /* Mount count */ | |
| 174 | − __le16 s_max_mnt_count; /* Maximal mount count */ | |
| 175 | − __le16 s_state; /* File system state */ | |
| 176 | − __le16 s_errors; /* Behaviour when detecting errors */ | |
| 177 | − __le64 s_lastcheck; /* time of last check */ | |
| 178 | − | |
| 179 | −/*80*/ __le32 s_checkinterval; /* max. time between checks */ | |
| 180 | − __le32 s_creator_os; /* OS */ | |
| 181 | − __le16 s_def_resuid; /* Default uid for reserved blocks */ | |
| 182 | − __le16 s_def_resgid; /* Default gid for reserved blocks */ | |
| 183 | − __le32 s_first_ino; /* First non-reserved inode */ | |
| 184 | − | |
| 185 | −/*90*/ __le16 s_inode_size; /* Size of an inode */ | |
| 186 | − __le16 s_dat_entry_size; /* Size of a dat entry */ | |
| 187 | − __le16 s_checkpoint_size; /* Size of a checkpoint */ | |
| 188 | − __le16 s_segment_usage_size; /* Size of a segment usage */ | |
| 189 | − | |
| 190 | −/*98*/ __u8 s_uuid[16]; /* 128-bit uuid for volume */ | |
| 191 | −/*A8*/ char s_volume_name[80] /* volume name */ | |
| 192 | − __kernel_nonstring; | |
| 193 | − | |
| 194 | −/*F8*/ __le32 s_c_interval; /* Commit interval of segment */ | |
| 195 | − __le32 s_c_block_max; /* | |
| 196 | − * Threshold of data amount for | |
| 197 | − * the segment construction | |
| 198 | − */ | |
| 199 | −/*100*/ __le64 s_feature_compat; /* Compatible feature set */ | |
| 200 | − __le64 s_feature_compat_ro; /* Read-only compatible feature set */ | |
| 201 | − __le64 s_feature_incompat; /* Incompatible feature set */ | |
| 202 | − __u32 s_reserved[186]; /* padding to the end of the block */ | |
| 183 | +/*00*/ __le32 s_rev_level; | |
| 184 | + __le16 s_minor_rev_level; | |
| 185 | + __le16 s_magic; | |
| 186 | + | |
| 187 | + __le16 s_bytes; | |
| 188 | + __le16 s_flags; | |
| 189 | + __le32 s_crc_seed; | |
| 190 | +/*10*/ __le32 s_sum; | |
| 191 | + | |
| 192 | + __le32 s_log_block_size; | |
| 193 | + __le64 s_nsegments; | |
| 194 | +/*20*/ __le64 s_dev_size; | |
| 195 | + __le64 s_first_data_block; | |
| 196 | +/*30*/ __le32 s_blocks_per_segment; | |
| 197 | + __le32 s_r_segments_percentage; | |
| 198 | + | |
| 199 | + __le64 s_last_cno; | |
| 200 | +/*40*/ __le64 s_last_pseg; | |
| 201 | + __le64 s_last_seq; | |
| 202 | +/*50*/ __le64 s_free_blocks_count; | |
| 203 | + | |
| 204 | + __le64 s_ctime; | |
| 205 | +/*60*/ __le64 s_mtime; | |
| 206 | + __le64 s_wtime; | |
| 207 | +/*70*/ __le16 s_mnt_count; | |
| 208 | + __le16 s_max_mnt_count; | |
| 209 | + __le16 s_state; | |
| 210 | + __le16 s_errors; | |
| 211 | + __le64 s_lastcheck; | |
| 212 | + | |
| 213 | +/*80*/ __le32 s_checkinterval; | |
| 214 | + __le32 s_creator_os; | |
| 215 | + __le16 s_def_resuid; | |
| 216 | + __le16 s_def_resgid; | |
| 217 | + __le32 s_first_ino; | |
| 218 | + | |
| 219 | +/*90*/ __le16 s_inode_size; | |
| 220 | + __le16 s_dat_entry_size; | |
| 221 | + __le16 s_checkpoint_size; | |
| 222 | + __le16 s_segment_usage_size; | |
| 223 | + | |
| 224 | +/*98*/ __u8 s_uuid[16]; | |
| 225 | +/*A8*/ char s_volume_name[80] __kernel_nonstring; | |
| 226 | + | |
| 227 | +/*F8*/ __le32 s_c_interval; | |
| 228 | + __le32 s_c_block_max; | |
| 229 | + | |
| 230 | +/*100*/ __le64 s_feature_compat; | |
| 231 | + __le64 s_feature_compat_ro; | |
| 232 | + __le64 s_feature_incompat; | |
| 233 | + __u32 s_reserved[186]; | |
| 203 | 234 | }; |
| 204 | 235 | |
| 205 | 236 | /* |
| @@ -449,7 +480,7 @@ struct nilfs_btree_node { · 243 unmodified lines | ||
| 449 | 480 | /** |
| 450 | 481 | * struct nilfs_direct_node - header of built-in bmap array |
| 451 | 482 | * @dn_flags: flags |
| 452 | − * @dn_pad: padding | |
| 483 | + * @pad: padding | |
| 453 | 484 | */ |
| 454 | 485 | struct nilfs_direct_node { |
| 455 | 486 | __u8 dn_flags; |
| @@ -11,7 +11,7 @@ · 10 unmodified lines | ||
| 11 | 11 | * Copyright 2008 Jouni Malinen <jouni.malinen@atheros.com> |
| 12 | 12 | * Copyright 2008 Colin McCabe <colin@cozybit.com> |
| 13 | 13 | * Copyright 2015-2017 Intel Deutschland GmbH |
| 14 | − * Copyright (C) 2018-2025 Intel Corporation | |
| 14 | + * Copyright (C) 2018-2026 Intel Corporation | |
| 15 | 15 | * |
| 16 | 16 | * Permission to use, copy, modify, and/or distribute this software for any |
| 17 | 17 | * purpose with or without fee is hereby granted, provided that the above |
| @@ -2880,8 +2880,9 @@ enum nl80211_commands { · 2862 unmodified lines | ||
| 2880 | 2880 | * index. If the userspace includes more RNR elements than number of |
| 2881 | 2881 | * MBSSID elements then these will be added in every EMA beacon. |
| 2882 | 2882 | * |
| 2883 | − * @NL80211_ATTR_MLO_LINK_DISABLED: Flag attribute indicating that the link is | |
| 2884 | − * disabled. | |
| 2883 | + * @NL80211_ATTR_MLO_LINK_DISABLED: Unused. It was used to indicate that a link | |
| 2884 | + * is disabled during association. However, the AP will send the | |
| 2885 | + * information by including a TTLM in the association response. | |
| 2885 | 2886 | * |
| 2886 | 2887 | * @NL80211_ATTR_BSS_DUMP_INCLUDE_USE_DATA: Include BSS usage data, i.e. |
| 2887 | 2888 | * include BSSes that can only be used in restricted scenarios and/or |
| @@ -2973,6 +2974,16 @@ enum nl80211_commands { · 85 unmodified lines | ||
| 2973 | 2974 | * primary channel is 2 MHz wide, and the control channel designates |
| 2974 | 2975 | * the 1 MHz primary subchannel within that 2 MHz primary. |
| 2975 | 2976 | * |
| 2977 | + * @NL80211_ATTR_EPP_PEER: A flag attribute to indicate if the peer is an EPP | |
| 2978 | + * STA. Used with %NL80211_CMD_NEW_STA and %NL80211_CMD_ADD_LINK_STA | |
| 2979 | + * | |
| 2980 | + * @NL80211_ATTR_UHR_CAPABILITY: UHR Capability information element (from | |
| 2981 | + * association request when used with NL80211_CMD_NEW_STATION). Can be set | |
| 2982 | + * only if HE/EHT are also available. | |
| 2983 | + * @NL80211_ATTR_DISABLE_UHR: Force UHR capable interfaces to disable | |
| 2984 | + * this feature during association. This is a flag attribute. | |
| 2985 | + * Currently only supported in mac80211 drivers. | |
| 2986 | + * | |
| 2976 | 2987 | * @NUM_NL80211_ATTR: total number of nl80211_attrs available |
| 2977 | 2988 | * @NL80211_ATTR_MAX: highest attribute number currently defined |
| 2978 | 2989 | * @__NL80211_ATTR_AFTER_LAST: internal use |
| @@ -3541,6 +3552,11 @@ enum nl80211_attrs { · 562 unmodified lines | ||
| 3541 | 3552 | |
| 3542 | 3553 | NL80211_ATTR_S1G_PRIMARY_2MHZ, |
| 3543 | 3554 | |
| 3555 | + NL80211_ATTR_EPP_PEER, | |
| 3556 | + | |
| 3557 | + NL80211_ATTR_UHR_CAPABILITY, | |
| 3558 | + NL80211_ATTR_DISABLE_UHR, | |
| 3559 | + | |
| 3544 | 3560 | /* add attributes here, update the policy in nl80211.c */ |
| 3545 | 3561 | |
| 3546 | 3562 | __NL80211_ATTR_AFTER_LAST, |
| @@ -3893,6 +3909,12 @@ enum nl80211_eht_ru_alloc { · 346 unmodified lines | ||
| 3893 | 3909 | * @NL80211_RATE_INFO_4_MHZ_WIDTH: 4 MHz S1G rate |
| 3894 | 3910 | * @NL80211_RATE_INFO_8_MHZ_WIDTH: 8 MHz S1G rate |
| 3895 | 3911 | * @NL80211_RATE_INFO_16_MHZ_WIDTH: 16 MHz S1G rate |
| 3912 | + * @NL80211_RATE_INFO_UHR_MCS: UHR MCS index (u8, 0-15, 17, 19, 20, 23) | |
| 3913 | + * Note that the other EHT attributes (such as @NL80211_RATE_INFO_EHT_NSS) | |
| 3914 | + * are used in conjunction with this where applicable | |
| 3915 | + * @NL80211_RATE_INFO_UHR_ELR: UHR ELR flag, which restricts NSS to 1, | |
| 3916 | + * MCS to 0 or 1, and GI to %NL80211_RATE_INFO_EHT_GI_1_6. | |
| 3917 | + * @NL80211_RATE_INFO_UHR_IM: UHR Interference Mitigation flag | |
| 3896 | 3918 | * @__NL80211_RATE_INFO_AFTER_LAST: internal use |
| 3897 | 3919 | */ |
| 3898 | 3920 | enum nl80211_rate_info { |
| @@ -3926,6 +3948,9 @@ enum nl80211_rate_info { · 27 unmodified lines | ||
| 3926 | 3948 | NL80211_RATE_INFO_4_MHZ_WIDTH, |
| 3927 | 3949 | NL80211_RATE_INFO_8_MHZ_WIDTH, |
| 3928 | 3950 | NL80211_RATE_INFO_16_MHZ_WIDTH, |
| 3951 | + NL80211_RATE_INFO_UHR_MCS, | |
| 3952 | + NL80211_RATE_INFO_UHR_ELR, | |
| 3953 | + NL80211_RATE_INFO_UHR_IM, | |
| 3929 | 3954 | |
| 3930 | 3955 | /* keep last */ |
| 3931 | 3956 | __NL80211_RATE_INFO_AFTER_LAST, |
| @@ -4248,6 +4273,10 @@ enum nl80211_mpath_info { · 316 unmodified lines | ||
| 4248 | 4273 | * capabilities element |
| 4249 | 4274 | * @NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE: EHT PPE thresholds information as |
| 4250 | 4275 | * defined in EHT capabilities element |
| 4276 | + * @NL80211_BAND_IFTYPE_ATTR_UHR_CAP_MAC: UHR MAC capabilities as in UHR | |
| 4277 | + * capabilities element | |
| 4278 | + * @NL80211_BAND_IFTYPE_ATTR_UHR_CAP_PHY: UHR PHY capabilities as in UHR | |
| 4279 | + * capabilities element | |
| 4251 | 4280 | * @__NL80211_BAND_IFTYPE_ATTR_AFTER_LAST: internal use |
| 4252 | 4281 | * @NL80211_BAND_IFTYPE_ATTR_MAX: highest band attribute currently defined |
| 4253 | 4282 | */ |
| @@ -4265,6 +4294,8 @@ enum nl80211_band_iftype_attr { · 11 unmodified lines | ||
| 4265 | 4294 | NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY, |
| 4266 | 4295 | NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET, |
| 4267 | 4296 | NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE, |
| 4297 | + NL80211_BAND_IFTYPE_ATTR_UHR_CAP_MAC, | |
| 4298 | + NL80211_BAND_IFTYPE_ATTR_UHR_CAP_PHY, | |
| 4268 | 4299 | |
| 4269 | 4300 | /* keep last */ |
| 4270 | 4301 | __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST, |
| @@ -4444,6 +4475,11 @@ enum nl80211_wmm_rule { · 173 unmodified lines | ||
| 4444 | 4475 | * channel in current regulatory domain. |
| 4445 | 4476 | * @NL80211_FREQUENCY_ATTR_NO_16MHZ: 16 MHz operation is not allowed on this |
| 4446 | 4477 | * channel in current regulatory domain. |
| 4478 | + * @NL80211_FREQUENCY_ATTR_S1G_NO_PRIMARY: Channel is not permitted for use | |
| 4479 | + * as a primary channel. Does not prevent the channel from existing | |
| 4480 | + * as a non-primary subchannel. Only applicable to S1G channels. | |
| 4481 | + * @NL80211_FREQUENCY_ATTR_NO_UHR: UHR operation is not allowed on this channel | |
| 4482 | + * in current regulatory domain. | |
| 4447 | 4483 | * @NL80211_FREQUENCY_ATTR_MAX: highest frequency attribute number |
| 4448 | 4484 | * currently defined |
| 4449 | 4485 | * @__NL80211_FREQUENCY_ATTR_AFTER_LAST: internal use |
| @@ -4492,6 +4528,8 @@ enum nl80211_frequency_attr { · 42 unmodified lines | ||
| 4492 | 4528 | NL80211_FREQUENCY_ATTR_NO_4MHZ, |
| 4493 | 4529 | NL80211_FREQUENCY_ATTR_NO_8MHZ, |
| 4494 | 4530 | NL80211_FREQUENCY_ATTR_NO_16MHZ, |
| 4531 | + NL80211_FREQUENCY_ATTR_S1G_NO_PRIMARY, | |
| 4532 | + NL80211_FREQUENCY_ATTR_NO_UHR, | |
| 4495 | 4533 | |
| 4496 | 4534 | /* keep last */ |
| 4497 | 4535 | __NL80211_FREQUENCY_ATTR_AFTER_LAST, |
| @@ -4705,6 +4743,7 @@ enum nl80211_sched_scan_match_attr { · 207 unmodified lines | ||
| 4705 | 4743 | * despite NO_IR configuration. |
| 4706 | 4744 | * @NL80211_RRF_ALLOW_20MHZ_ACTIVITY: Allow activity in 20 MHz bandwidth, |
| 4707 | 4745 | * despite NO_IR configuration. |
| 4746 | + * @NL80211_RRF_NO_UHR: UHR operation not allowed | |
| 4708 | 4747 | */ |
| 4709 | 4748 | enum nl80211_reg_rule_flags { |
| 4710 | 4749 | NL80211_RRF_NO_OFDM = 1 << 0, |
| @@ -4731,6 +4770,7 @@ enum nl80211_reg_rule_flags { · 20 unmodified lines | ||
| 4731 | 4770 | NL80211_RRF_NO_6GHZ_AFC_CLIENT = 1 << 23, |
| 4732 | 4771 | NL80211_RRF_ALLOW_6GHZ_VLP_AP = 1 << 24, |
| 4733 | 4772 | NL80211_RRF_ALLOW_20MHZ_ACTIVITY = 1 << 25, |
| 4773 | + NL80211_RRF_NO_UHR = 1 << 26, | |
| 4734 | 4774 | }; |
| 4735 | 4775 | |
| 4736 | 4776 | #define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR |
| @@ -5425,6 +5465,7 @@ enum nl80211_bss_status { · 688 unmodified lines | ||
| 5425 | 5465 | * @NL80211_AUTHTYPE_FILS_SK: Fast Initial Link Setup shared key |
| 5426 | 5466 | * @NL80211_AUTHTYPE_FILS_SK_PFS: Fast Initial Link Setup shared key with PFS |
| 5427 | 5467 | * @NL80211_AUTHTYPE_FILS_PK: Fast Initial Link Setup public key |
| 5468 | + * @NL80211_AUTHTYPE_EPPKE: Enhanced Privacy Protection Key Exchange | |
| 5428 | 5469 | * @__NL80211_AUTHTYPE_NUM: internal |
| 5429 | 5470 | * @NL80211_AUTHTYPE_MAX: maximum valid auth algorithm |
| 5430 | 5471 | * @NL80211_AUTHTYPE_AUTOMATIC: determine automatically (if necessary by |
| @@ -5440,6 +5481,7 @@ enum nl80211_auth_type { · 9 unmodified lines | ||
| 5440 | 5481 | NL80211_AUTHTYPE_FILS_SK, |
| 5441 | 5482 | NL80211_AUTHTYPE_FILS_SK_PFS, |
| 5442 | 5483 | NL80211_AUTHTYPE_FILS_PK, |
| 5484 | + NL80211_AUTHTYPE_EPPKE, | |
| 5443 | 5485 | |
| 5444 | 5486 | /* keep last */ |
| 5445 | 5487 | __NL80211_AUTHTYPE_NUM, |
| @@ -6744,6 +6786,15 @@ enum nl80211_feature_flags { · 1298 unmodified lines | ||
| 6744 | 6786 | * @NL80211_EXT_FEATURE_BEACON_RATE_EHT: Driver supports beacon rate |
| 6745 | 6787 | * configuration (AP/mesh) with EHT rates. |
| 6746 | 6788 | * |
| 6789 | + * @NL80211_EXT_FEATURE_EPPKE: Driver supports Enhanced Privacy Protection | |
| 6790 | + * Key Exchange (EPPKE) with user space SME (NL80211_CMD_AUTHENTICATE) | |
| 6791 | + * in non-AP STA mode. | |
| 6792 | + * | |
| 6793 | + * @NL80211_EXT_FEATURE_ASSOC_FRAME_ENCRYPTION: This specifies that the | |
| 6794 | + * driver supports encryption of (Re)Association Request and Response | |
| 6795 | + * frames in both non‑AP STA and AP mode as specified in | |
| 6796 | + * "IEEE P802.11bi/D3.0, 12.16.6". | |
| 6797 | + * | |
| 6747 | 6798 | * @NUM_NL80211_EXT_FEATURES: number of extended features. |
| 6748 | 6799 | * @MAX_NL80211_EXT_FEATURES: highest extended feature index. |
| 6749 | 6800 | */ |
| @@ -6820,6 +6871,8 @@ enum nl80211_ext_feature_index { · 70 unmodified lines | ||
| 6820 | 6871 | NL80211_EXT_FEATURE_DFS_CONCURRENT, |
| 6821 | 6872 | NL80211_EXT_FEATURE_SPP_AMSDU_SUPPORT, |
| 6822 | 6873 | NL80211_EXT_FEATURE_BEACON_RATE_EHT, |
| 6874 | + NL80211_EXT_FEATURE_EPPKE, | |
| 6875 | + NL80211_EXT_FEATURE_ASSOC_FRAME_ENCRYPTION, | |
| 6823 | 6876 | |
| 6824 | 6877 | /* add new features before the definition below */ |
| 6825 | 6878 | NUM_NL80211_EXT_FEATURES, |
| @@ -7432,6 +7485,8 @@ enum nl80211_nan_band_conf_attributes { · 606 unmodified lines | ||
| 7432 | 7485 | * address that can take values from 50-6F-9A-01-00-00 to |
| 7433 | 7486 | * 50-6F-9A-01-FF-FF. This attribute is optional. If not present, |
| 7434 | 7487 | * a random Cluster ID will be chosen. |
| 7488 | + * This attribute will be ignored in NL80211_CMD_CHANGE_NAN_CONFIG | |
| 7489 | + * since after NAN was started, the cluster ID can no longer change. | |
| 7435 | 7490 | * @NL80211_NAN_CONF_EXTRA_ATTRS: Additional NAN attributes to be |
| 7436 | 7491 | * published in the beacons. This is an optional byte array. |
| 7437 | 7492 | * @NL80211_NAN_CONF_VENDOR_ELEMS: Vendor-specific elements that will |
| @@ -7766,6 +7821,30 @@ enum nl80211_peer_measurement_attrs { · 328 unmodified lines | ||
| 7766 | 7821 | * trigger based ranging measurement is supported |
| 7767 | 7822 | * @NL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED: flag attribute indicating |
| 7768 | 7823 | * if non-trigger-based ranging measurement is supported |
| 7824 | + * @NL80211_PMSR_FTM_CAPA_ATTR_6GHZ_SUPPORT: flag attribute indicating if | |
| 7825 | + * ranging on the 6 GHz band is supported | |
| 7826 | + * @NL80211_PMSR_FTM_CAPA_ATTR_MAX_TX_LTF_REP: u32 attribute indicating | |
| 7827 | + * the maximum number of LTF repetitions the device can transmit in the | |
| 7828 | + * preamble of the ranging NDP (zero means only one LTF, no repetitions) | |
| 7829 | + * @NL80211_PMSR_FTM_CAPA_ATTR_MAX_RX_LTF_REP: u32 attribute indicating | |
| 7830 | + * the maximum number of LTF repetitions the device can receive in the | |
| 7831 | + * preamble of the ranging NDP (zero means only one LTF, no repetitions) | |
| 7832 | + * @NL80211_PMSR_FTM_CAPA_ATTR_MAX_TX_STS: u32 attribute indicating | |
| 7833 | + * the maximum number of space-time streams supported for ranging NDP TX | |
| 7834 | + * (zero-based) | |
| 7835 | + * @NL80211_PMSR_FTM_CAPA_ATTR_MAX_RX_STS: u32 attribute indicating | |
| 7836 | + * the maximum number of space-time streams supported for ranging NDP RX | |
| 7837 | + * (zero-based) | |
| 7838 | + * @NL80211_PMSR_FTM_CAPA_ATTR_MAX_TOTAL_LTF_TX: u32 attribute indicating the | |
| 7839 | + * maximum total number of LTFs the device can transmit. The total number | |
| 7840 | + * of LTFs is (number of LTF repetitions) * (number of space-time streams). | |
| 7841 | + * This limits the allowed combinations of LTF repetitions and STS. | |
| 7842 | + * @NL80211_PMSR_FTM_CAPA_ATTR_MAX_TOTAL_LTF_RX: u32 attribute indicating the | |
| 7843 | + * maximum total number of LTFs the device can receive. The total number | |
| 7844 | + * of LTFs is (number of LTF repetitions) * (number of space-time streams). | |
| 7845 | + * This limits the allowed combinations of LTF repetitions and STS. | |
| 7846 | + * @NL80211_PMSR_FTM_CAPA_ATTR_RSTA_SUPPORT: flag attribute indicating the | |
| 7847 | + * device supports operating as the RSTA in PMSR FTM request | |
| 7769 | 7848 | * |
| 7770 | 7849 | * @NUM_NL80211_PMSR_FTM_CAPA_ATTR: internal |
| 7771 | 7850 | * @NL80211_PMSR_FTM_CAPA_ATTR_MAX: highest attribute number |
| @@ -7783,6 +7862,14 @@ enum nl80211_peer_measurement_ftm_capa { · 11 unmodified lines | ||
| 7783 | 7862 | NL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST, |
| 7784 | 7863 | NL80211_PMSR_FTM_CAPA_ATTR_TRIGGER_BASED, |
| 7785 | 7864 | NL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED, |
| 7865 | + NL80211_PMSR_FTM_CAPA_ATTR_6GHZ_SUPPORT, | |
| 7866 | + NL80211_PMSR_FTM_CAPA_ATTR_MAX_TX_LTF_REP, | |
| 7867 | + NL80211_PMSR_FTM_CAPA_ATTR_MAX_RX_LTF_REP, | |
| 7868 | + NL80211_PMSR_FTM_CAPA_ATTR_MAX_TX_STS, | |
| 7869 | + NL80211_PMSR_FTM_CAPA_ATTR_MAX_RX_STS, | |
| 7870 | + NL80211_PMSR_FTM_CAPA_ATTR_MAX_TOTAL_LTF_TX, | |
| 7871 | + NL80211_PMSR_FTM_CAPA_ATTR_MAX_TOTAL_LTF_RX, | |
| 7872 | + NL80211_PMSR_FTM_CAPA_ATTR_RSTA_SUPPORT, | |
| 7786 | 7873 | |
| 7787 | 7874 | /* keep last */ |
| 7788 | 7875 | NUM_NL80211_PMSR_FTM_CAPA_ATTR, |
| @@ -7798,12 +7885,15 @@ enum nl80211_peer_measurement_ftm_capa { · 9 unmodified lines | ||
| 7798 | 7885 | * &enum nl80211_preamble), optional for DMG (u32) |
| 7799 | 7886 | * @NL80211_PMSR_FTM_REQ_ATTR_NUM_BURSTS_EXP: number of bursts exponent as in |
| 7800 | 7887 | * 802.11-2016 9.4.2.168 "Fine Timing Measurement Parameters element" |
| 7801 | − * (u8, 0-15, optional with default 15 i.e. "no preference") | |
| 7888 | + * (u8, 0-15, optional with default 15 i.e. "no preference". No limit for | |
| 7889 | + * non-EDCA ranging) | |
| 7802 | 7890 | * @NL80211_PMSR_FTM_REQ_ATTR_BURST_PERIOD: interval between bursts in units |
| 7803 | 7891 | * of 100ms (u16, optional with default 0) |
| 7804 | 7892 | * @NL80211_PMSR_FTM_REQ_ATTR_BURST_DURATION: burst duration, as in 802.11-2016 |
| 7805 | 7893 | * Table 9-257 "Burst Duration field encoding" (u8, 0-15, optional with |
| 7806 | − * default 15 i.e. "no preference") | |
| 7894 | + * default 15 i.e. "no preference"). For non-EDCA ranging, this is the | |
| 7895 | + * burst duration in milliseconds (optional with default 0, i.e. let the | |
| 7896 | + * device decide). | |
| 7807 | 7897 | * @NL80211_PMSR_FTM_REQ_ATTR_FTMS_PER_BURST: number of successful FTM frames |
| 7808 | 7898 | * requested per burst |
| 7809 | 7899 | * (u8, 0-31, optional with default 0 i.e. "no preference") |
| @@ -7832,6 +7922,14 @@ enum nl80211_peer_measurement_ftm_capa { · 22 unmodified lines | ||
| 7832 | 7922 | * @NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR: optional. The BSS color of the |
| 7833 | 7923 | * responder. Only valid if %NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED |
| 7834 | 7924 | * or %NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED is set. |
| 7925 | + * @NL80211_PMSR_FTM_REQ_ATTR_RSTA: optional. Request to perform the measurement | |
| 7926 | + * as the RSTA (flag). When set, the device is expected to dwell on the | |
| 7927 | + * channel specified in %NL80211_PMSR_PEER_ATTR_CHAN until it receives the | |
| 7928 | + * FTM request from the peer or the timeout specified by | |
| 7929 | + * %NL80211_ATTR_TIMEOUT has expired. | |
| 7930 | + * Only valid if %NL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK is set (so the | |
| 7931 | + * RSTA will have the measurement results to report back in the FTM | |
| 7932 | + * response). | |
| 7835 | 7933 | * |
| 7836 | 7934 | * @NUM_NL80211_PMSR_FTM_REQ_ATTR: internal |
| 7837 | 7935 | * @NL80211_PMSR_FTM_REQ_ATTR_MAX: highest attribute number |
| @@ -7852,6 +7950,7 @@ enum nl80211_peer_measurement_ftm_req { · 14 unmodified lines | ||
| 7852 | 7950 | NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED, |
| 7853 | 7951 | NL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK, |
| 7854 | 7952 | NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR, |
| 7953 | + NL80211_PMSR_FTM_REQ_ATTR_RSTA, | |
| 7855 | 7954 | |
| 7856 | 7955 | /* keep last */ |
| 7857 | 7956 | NUM_NL80211_PMSR_FTM_REQ_ATTR, |
| @@ -7936,6 +8035,8 @@ enum nl80211_peer_measurement_ftm_failure_reasons { · 78 unmodified lines | ||
| 7936 | 8035 | * 9.4.2.22.1) starting with the Measurement Token, with Measurement |
| 7937 | 8036 | * Type 11. |
| 7938 | 8037 | * @NL80211_PMSR_FTM_RESP_ATTR_PAD: ignore, for u64/s64 padding only |
| 8038 | + * @NL80211_PMSR_FTM_RESP_ATTR_BURST_PERIOD: actual burst period used by | |
| 8039 | + * the responder (similar to request, u16) | |
| 7939 | 8040 | * |
| 7940 | 8041 | * @NUM_NL80211_PMSR_FTM_RESP_ATTR: internal |
| 7941 | 8042 | * @NL80211_PMSR_FTM_RESP_ATTR_MAX: highest attribute number |
| @@ -7964,6 +8065,7 @@ enum nl80211_peer_measurement_ftm_resp { · 22 unmodified lines | ||
| 7964 | 8065 | NL80211_PMSR_FTM_RESP_ATTR_LCI, |
| 7965 | 8066 | NL80211_PMSR_FTM_RESP_ATTR_CIVICLOC, |
| 7966 | 8067 | NL80211_PMSR_FTM_RESP_ATTR_PAD, |
| 8068 | + NL80211_PMSR_FTM_RESP_ATTR_BURST_PERIOD, | |
| 7967 | 8069 | |
| 7968 | 8070 | /* keep last */ |
| 7969 | 8071 | NUM_NL80211_PMSR_FTM_RESP_ATTR, |
| @@ -39,4 +39,11 @@ · 38 unmodified lines | ||
| 39 | 39 | #define PCIIOC_MMAP_IS_MEM (PCIIOC_BASE | 0x02) /* Set mmap state to MEM space. */ |
| 40 | 40 | #define PCIIOC_WRITE_COMBINE (PCIIOC_BASE | 0x03) /* Enable/disable write-combining. */ |
| 41 | 41 | |
| 42 | +enum pci_hotplug_event { | |
| 43 | + PCI_HOTPLUG_LINK_UP, | |
| 44 | + PCI_HOTPLUG_LINK_DOWN, | |
| 45 | + PCI_HOTPLUG_CARD_PRESENT, | |
| 46 | + PCI_HOTPLUG_CARD_NOT_PRESENT, | |
| 47 | +}; | |
| 48 | + | |
| 42 | 49 | #endif /* _UAPILINUX_PCI_H */ |
| @@ -132,6 +132,11 @@ · 131 unmodified lines | ||
| 132 | 132 | #define PCI_SECONDARY_BUS 0x19 /* Secondary bus number */ |
| 133 | 133 | #define PCI_SUBORDINATE_BUS 0x1a /* Highest bus number behind the bridge */ |
| 134 | 134 | #define PCI_SEC_LATENCY_TIMER 0x1b /* Latency timer for secondary interface */ |
| 135 | +/* Masks for dword-sized processing of Bus Number and Sec Latency Timer fields */ | |
| 136 | +#define PCI_PRIMARY_BUS_MASK 0x000000ff | |
| 137 | +#define PCI_SECONDARY_BUS_MASK 0x0000ff00 | |
| 138 | +#define PCI_SUBORDINATE_BUS_MASK 0x00ff0000 | |
| 139 | +#define PCI_SEC_LATENCY_TIMER_MASK 0xff000000 | |
| 135 | 140 | #define PCI_IO_BASE 0x1c /* I/O range behind the bridge */ |
| 136 | 141 | #define PCI_IO_LIMIT 0x1d |
| 137 | 142 | #define PCI_IO_RANGE_TYPE_MASK 0x0fUL /* I/O bridging type */ |
| @@ -1253,11 +1258,6 @@ · 1115 unmodified lines | ||
| 1253 | 1258 | #define PCI_DEV3_STA 0x0c /* Device 3 Status Register */ |
| 1254 | 1259 | #define PCI_DEV3_STA_SEGMENT 0x8 /* Segment Captured (end-to-end flit-mode detected) */ |
| 1255 | 1260 | |
| 1256 | −/* Compute Express Link (CXL r3.1, sec 8.1.5) */ | |
| 1257 | −#define PCI_DVSEC_CXL_PORT 3 | |
| 1258 | −#define PCI_DVSEC_CXL_PORT_CTL 0x0c | |
| 1259 | −#define PCI_DVSEC_CXL_PORT_CTL_UNMASK_SBR 0x00000001 | |
| 1260 | − | |
| 1261 | 1261 | /* Integrity and Data Encryption Extended Capability */ |
| 1262 | 1262 | #define PCI_IDE_CAP 0x04 |
| 1263 | 1263 | #define PCI_IDE_CAP_LINK 0x1 /* Link IDE Stream Supported */ |
| @@ -1338,4 +1338,63 @@ · 74 unmodified lines | ||
| 1338 | 1338 | #define PCI_IDE_SEL_ADDR_3(x) (28 + (x) * PCI_IDE_SEL_ADDR_BLOCK_SIZE) |
| 1339 | 1339 | #define PCI_IDE_SEL_BLOCK_SIZE(nr_assoc) (20 + PCI_IDE_SEL_ADDR_BLOCK_SIZE * (nr_assoc)) |
| 1340 | 1340 | |
| 1341 | +/* | |
| 1342 | + * Compute Express Link (CXL r4.0, sec 8.1) | |
| 1343 | + * | |
| 1344 | + * Note that CXL DVSEC id 3 and 7 to be ignored when the CXL link state | |
| 1345 | + * is "disconnected" (CXL r4.0, sec 9.12.3). Re-enumerate these | |
| 1346 | + * registers on downstream link-up events. | |
| 1347 | + */ | |
| 1348 | + | |
| 1349 | +/* CXL r4.0, 8.1.3: PCIe DVSEC for CXL Device */ | |
| 1350 | +#define PCI_DVSEC_CXL_DEVICE 0 | |
| 1351 | +#define PCI_DVSEC_CXL_CAP 0xA | |
| 1352 | +#define PCI_DVSEC_CXL_MEM_CAPABLE _BITUL(2) | |
| 1353 | +#define PCI_DVSEC_CXL_HDM_COUNT __GENMASK(5, 4) | |
| 1354 | +#define PCI_DVSEC_CXL_CTRL 0xC | |
| 1355 | +#define PCI_DVSEC_CXL_MEM_ENABLE _BITUL(2) | |
| 1356 | +#define PCI_DVSEC_CXL_RANGE_SIZE_HIGH(i) (0x18 + (i * 0x10)) | |
| 1357 | +#define PCI_DVSEC_CXL_RANGE_SIZE_LOW(i) (0x1C + (i * 0x10)) | |
| 1358 | +#define PCI_DVSEC_CXL_MEM_INFO_VALID _BITUL(0) | |
| 1359 | +#define PCI_DVSEC_CXL_MEM_ACTIVE _BITUL(1) | |
| 1360 | +#define PCI_DVSEC_CXL_MEM_SIZE_LOW __GENMASK(31, 28) | |
| 1361 | +#define PCI_DVSEC_CXL_RANGE_BASE_HIGH(i) (0x20 + (i * 0x10)) | |
| 1362 | +#define PCI_DVSEC_CXL_RANGE_BASE_LOW(i) (0x24 + (i * 0x10)) | |
| 1363 | +#define PCI_DVSEC_CXL_MEM_BASE_LOW __GENMASK(31, 28) | |
| 1364 | + | |
| 1365 | +#define CXL_DVSEC_RANGE_MAX 2 | |
| 1366 | + | |
| 1367 | +/* CXL r4.0, 8.1.4: Non-CXL Function Map DVSEC */ | |
| 1368 | +#define PCI_DVSEC_CXL_FUNCTION_MAP 2 | |
| 1369 | + | |
| 1370 | +/* CXL r4.0, 8.1.5: Extensions DVSEC for Ports */ | |
| 1371 | +#define PCI_DVSEC_CXL_PORT 3 | |
| 1372 | +#define PCI_DVSEC_CXL_PORT_CTL 0x0c | |
| 1373 | +#define PCI_DVSEC_CXL_PORT_CTL_UNMASK_SBR 0x00000001 | |
| 1374 | + | |
| 1375 | +/* CXL r4.0, 8.1.6: GPF DVSEC for CXL Port */ | |
| 1376 | +#define PCI_DVSEC_CXL_PORT_GPF 4 | |
| 1377 | +#define PCI_DVSEC_CXL_PORT_GPF_PHASE_1_CONTROL 0x0C | |
| 1378 | +#define PCI_DVSEC_CXL_PORT_GPF_PHASE_1_TMO_BASE __GENMASK(3, 0) | |
| 1379 | +#define PCI_DVSEC_CXL_PORT_GPF_PHASE_1_TMO_SCALE __GENMASK(11, 8) | |
| 1380 | +#define PCI_DVSEC_CXL_PORT_GPF_PHASE_2_CONTROL 0xE | |
| 1381 | +#define PCI_DVSEC_CXL_PORT_GPF_PHASE_2_TMO_BASE __GENMASK(3, 0) | |
| 1382 | +#define PCI_DVSEC_CXL_PORT_GPF_PHASE_2_TMO_SCALE __GENMASK(11, 8) | |
| 1383 | + | |
| 1384 | +/* CXL r4.0, 8.1.7: GPF DVSEC for CXL Device */ | |
| 1385 | +#define PCI_DVSEC_CXL_DEVICE_GPF 5 | |
| 1386 | + | |
| 1387 | +/* CXL r4.0, 8.1.8: Flex Bus DVSEC */ | |
| 1388 | +#define PCI_DVSEC_CXL_FLEXBUS_PORT 7 | |
| 1389 | +#define PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS 0xE | |
| 1390 | +#define PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS_CACHE _BITUL(0) | |
| 1391 | +#define PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS_MEM _BITUL(2) | |
| 1392 | + | |
| 1393 | +/* CXL r4.0, 8.1.9: Register Locator DVSEC */ | |
| 1394 | +#define PCI_DVSEC_CXL_REG_LOCATOR 8 | |
| 1395 | +#define PCI_DVSEC_CXL_REG_LOCATOR_BLOCK1 0xC | |
| 1396 | +#define PCI_DVSEC_CXL_REG_LOCATOR_BIR __GENMASK(2, 0) | |
| 1397 | +#define PCI_DVSEC_CXL_REG_LOCATOR_BLOCK_ID __GENMASK(15, 8) | |
| 1398 | +#define PCI_DVSEC_CXL_REG_LOCATOR_BLOCK_OFF_LOW __GENMASK(31, 16) | |
| 1399 | + | |
| 1341 | 1400 | #endif /* LINUX_PCI_REGS_H */ |
| @@ -22,6 +22,7 @@ · 21 unmodified lines | ||
| 22 | 22 | #define PCITEST_GET_IRQTYPE _IO('P', 0x9) |
| 23 | 23 | #define PCITEST_BARS _IO('P', 0xa) |
| 24 | 24 | #define PCITEST_DOORBELL _IO('P', 0xb) |
| 25 | +#define PCITEST_BAR_SUBRANGE _IO('P', 0xc) | |
| 25 | 26 | #define PCITEST_CLEAR_IRQ _IO('P', 0x10) |
| 26 | 27 | |
| 27 | 28 | #define PCITEST_IRQ_TYPE_UNDEFINED -1 |
| @@ -1330,14 +1330,16 @@ union perf_mem_data_src { · 1329 unmodified lines | ||
| 1330 | 1330 | mem_snoopx : 2, /* Snoop mode, ext */ |
| 1331 | 1331 | mem_blk : 3, /* Access blocked */ |
| 1332 | 1332 | mem_hops : 3, /* Hop level */ |
| 1333 | − mem_rsvd : 18; | |
| 1333 | + mem_region : 5, /* cache/memory regions */ | |
| 1334 | + mem_rsvd : 13; | |
| 1334 | 1335 | }; |
| 1335 | 1336 | }; |
| 1336 | 1337 | #elif defined(__BIG_ENDIAN_BITFIELD) |
| 1337 | 1338 | union perf_mem_data_src { |
| 1338 | 1339 | __u64 val; |
| 1339 | 1340 | struct { |
| 1340 | − __u64 mem_rsvd : 18, | |
| 1341 | + __u64 mem_rsvd : 13, | |
| 1342 | + mem_region : 5, /* cache/memory regions */ | |
| 1341 | 1343 | mem_hops : 3, /* Hop level */ |
| 1342 | 1344 | mem_blk : 3, /* Access blocked */ |
| 1343 | 1345 | mem_snoopx : 2, /* Snoop mode, ext */ |
| @@ -1394,7 +1396,7 @@ union perf_mem_data_src { · 50 unmodified lines | ||
| 1394 | 1396 | #define PERF_MEM_LVLNUM_L4 0x0004 /* L4 */ |
| 1395 | 1397 | #define PERF_MEM_LVLNUM_L2_MHB 0x0005 /* L2 Miss Handling Buffer */ |
| 1396 | 1398 | #define PERF_MEM_LVLNUM_MSC 0x0006 /* Memory-side Cache */ |
| 1397 | −/* 0x007 available */ | |
| 1399 | +#define PERF_MEM_LVLNUM_L0 0x0007 /* L0 */ | |
| 1398 | 1400 | #define PERF_MEM_LVLNUM_UNC 0x0008 /* Uncached */ |
| 1399 | 1401 | #define PERF_MEM_LVLNUM_CXL 0x0009 /* CXL */ |
| 1400 | 1402 | #define PERF_MEM_LVLNUM_IO 0x000a /* I/O */ |
| @@ -1447,6 +1449,25 @@ union perf_mem_data_src { · 46 unmodified lines | ||
| 1447 | 1449 | /* 5-7 available */ |
| 1448 | 1450 | #define PERF_MEM_HOPS_SHIFT 43 |
| 1449 | 1451 | |
| 1452 | +/* Cache/Memory region */ | |
| 1453 | +#define PERF_MEM_REGION_NA 0x0 /* Invalid */ | |
| 1454 | +#define PERF_MEM_REGION_RSVD 0x01 /* Reserved */ | |
| 1455 | +#define PERF_MEM_REGION_L_SHARE 0x02 /* Local CA shared cache */ | |
| 1456 | +#define PERF_MEM_REGION_L_NON_SHARE 0x03 /* Local CA non-shared cache */ | |
| 1457 | +#define PERF_MEM_REGION_O_IO 0x04 /* Other CA IO agent */ | |
| 1458 | +#define PERF_MEM_REGION_O_SHARE 0x05 /* Other CA shared cache */ | |
| 1459 | +#define PERF_MEM_REGION_O_NON_SHARE 0x06 /* Other CA non-shared cache */ | |
| 1460 | +#define PERF_MEM_REGION_MMIO 0x07 /* MMIO */ | |
| 1461 | +#define PERF_MEM_REGION_MEM0 0x08 /* Memory region 0 */ | |
| 1462 | +#define PERF_MEM_REGION_MEM1 0x09 /* Memory region 1 */ | |
| 1463 | +#define PERF_MEM_REGION_MEM2 0x0a /* Memory region 2 */ | |
| 1464 | +#define PERF_MEM_REGION_MEM3 0x0b /* Memory region 3 */ | |
| 1465 | +#define PERF_MEM_REGION_MEM4 0x0c /* Memory region 4 */ | |
| 1466 | +#define PERF_MEM_REGION_MEM5 0x0d /* Memory region 5 */ | |
| 1467 | +#define PERF_MEM_REGION_MEM6 0x0e /* Memory region 6 */ | |
| 1468 | +#define PERF_MEM_REGION_MEM7 0x0f /* Memory region 7 */ | |
| 1469 | +#define PERF_MEM_REGION_SHIFT 46 | |
| 1470 | + | |
| 1450 | 1471 | #define PERF_MEM_S(a, s) \ |
| 1451 | 1472 | (((__u64)PERF_MEM_##a##_##s) << PERF_MEM_##a##_SHIFT) |
| 1452 | 1473 | |
| @@ -1036,6 +1036,7 @@ enum { · 1035 unmodified lines | ||
| 1036 | 1036 | TCA_CAKE_STATS_DROP_NEXT_US, |
| 1037 | 1037 | TCA_CAKE_STATS_P_DROP, |
| 1038 | 1038 | TCA_CAKE_STATS_BLUE_TIMER_US, |
| 1039 | + TCA_CAKE_STATS_ACTIVE_QUEUES, | |
| 1039 | 1040 | __TCA_CAKE_STATS_MAX |
| 1040 | 1041 | }; |
| 1041 | 1042 | #define TCA_CAKE_STATS_MAX (__TCA_CAKE_STATS_MAX - 1) |
| @@ -386,4 +386,41 @@ struct prctl_mm_map { · 385 unmodified lines | ||
| 386 | 386 | # define PR_FUTEX_HASH_SET_SLOTS 1 |
| 387 | 387 | # define PR_FUTEX_HASH_GET_SLOTS 2 |
| 388 | 388 | |
| 389 | +/* RSEQ time slice extensions */ | |
| 390 | +#define PR_RSEQ_SLICE_EXTENSION 79 | |
| 391 | +# define PR_RSEQ_SLICE_EXTENSION_GET 1 | |
| 392 | +# define PR_RSEQ_SLICE_EXTENSION_SET 2 | |
| 393 | +/* | |
| 394 | + * Bits for RSEQ_SLICE_EXTENSION_GET/SET | |
| 395 | + * PR_RSEQ_SLICE_EXT_ENABLE: Enable | |
| 396 | + */ | |
| 397 | +# define PR_RSEQ_SLICE_EXT_ENABLE 0x01 | |
| 398 | + | |
| 399 | +/* | |
| 400 | + * Get the current indirect branch tracking configuration for the current | |
| 401 | + * thread, this will be the value configured via PR_SET_INDIR_BR_LP_STATUS. | |
| 402 | + */ | |
| 403 | +#define PR_GET_INDIR_BR_LP_STATUS 80 | |
| 404 | + | |
| 405 | +/* | |
| 406 | + * Set the indirect branch tracking configuration. PR_INDIR_BR_LP_ENABLE will | |
| 407 | + * enable cpu feature for user thread, to track all indirect branches and ensure | |
| 408 | + * they land on arch defined landing pad instruction. | |
| 409 | + * x86 - If enabled, an indirect branch must land on an ENDBRANCH instruction. | |
| 410 | + * arch64 - If enabled, an indirect branch must land on a BTI instruction. | |
| 411 | + * riscv - If enabled, an indirect branch must land on an lpad instruction. | |
| 412 | + * PR_INDIR_BR_LP_DISABLE will disable feature for user thread and indirect | |
| 413 | + * branches will no more be tracked by cpu to land on arch defined landing pad | |
| 414 | + * instruction. | |
| 415 | + */ | |
| 416 | +#define PR_SET_INDIR_BR_LP_STATUS 81 | |
| 417 | +# define PR_INDIR_BR_LP_ENABLE (1UL << 0) | |
| 418 | + | |
| 419 | +/* | |
| 420 | + * Prevent further changes to the specified indirect branch tracking | |
| 421 | + * configuration. All bits may be locked via this call, including | |
| 422 | + * undefined bits. | |
| 423 | + */ | |
| 424 | +#define PR_LOCK_INDIR_BR_LP_STATUS 82 | |
| 425 | + | |
| 389 | 426 | #endif /* _LINUX_PRCTL_H */ |
| @@ -19,13 +19,20 @@ enum rseq_cpu_id_state { · 18 unmodified lines | ||
| 19 | 19 | }; |
| 20 | 20 | |
| 21 | 21 | enum rseq_flags { |
| 22 | − RSEQ_FLAG_UNREGISTER = (1 << 0), | |
| 22 | + RSEQ_FLAG_UNREGISTER = (1 << 0), | |
| 23 | + RSEQ_FLAG_SLICE_EXT_DEFAULT_ON = (1 << 1), | |
| 23 | 24 | }; |
| 24 | 25 | |
| 25 | 26 | enum rseq_cs_flags_bit { |
| 27 | + /* Historical and unsupported bits */ | |
| 26 | 28 | RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT_BIT = 0, |
| 27 | 29 | RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL_BIT = 1, |
| 28 | 30 | RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE_BIT = 2, |
| 31 | + /* (3) Intentional gap to put new bits into a separate byte */ | |
| 32 | + | |
| 33 | + /* User read only feature flags */ | |
| 34 | + RSEQ_CS_FLAG_SLICE_EXT_AVAILABLE_BIT = 4, | |
| 35 | + RSEQ_CS_FLAG_SLICE_EXT_ENABLED_BIT = 5, | |
| 29 | 36 | }; |
| 30 | 37 | |
| 31 | 38 | enum rseq_cs_flags { |
| @@ -35,6 +42,11 @@ enum rseq_cs_flags { · 3 unmodified lines | ||
| 35 | 42 | (1U << RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL_BIT), |
| 36 | 43 | RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE = |
| 37 | 44 | (1U << RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE_BIT), |
| 45 | + | |
| 46 | + RSEQ_CS_FLAG_SLICE_EXT_AVAILABLE = | |
| 47 | + (1U << RSEQ_CS_FLAG_SLICE_EXT_AVAILABLE_BIT), | |
| 48 | + RSEQ_CS_FLAG_SLICE_EXT_ENABLED = | |
| 49 | + (1U << RSEQ_CS_FLAG_SLICE_EXT_ENABLED_BIT), | |
| 38 | 50 | }; |
| 39 | 51 | |
| 40 | 52 | /* |
| @@ -53,6 +65,27 @@ struct rseq_cs { · 12 unmodified lines | ||
| 53 | 65 | __u64 abort_ip; |
| 54 | 66 | } __attribute__((aligned(4 * sizeof(__u64)))); |
| 55 | 67 | |
| 68 | +/** | |
| 69 | + * rseq_slice_ctrl - Time slice extension control structure | |
| 70 | + * @all: Compound value | |
| 71 | + * @request: Request for a time slice extension | |
| 72 | + * @granted: Granted time slice extension | |
| 73 | + * | |
| 74 | + * @request is set by user space and can be cleared by user space or kernel | |
| 75 | + * space. @granted is set and cleared by the kernel and must only be read | |
| 76 | + * by user space. | |
| 77 | + */ | |
| 78 | +struct rseq_slice_ctrl { | |
| 79 | + union { | |
| 80 | + __u32 all; | |
| 81 | + struct { | |
| 82 | + __u8 request; | |
| 83 | + __u8 granted; | |
| 84 | + __u16 __reserved; | |
| 85 | + }; | |
| 86 | + }; | |
| 87 | +}; | |
| 88 | + | |
| 56 | 89 | /* |
| 57 | 90 | * struct rseq is aligned on 4 * 8 bytes to ensure it is always |
| 58 | 91 | * contained within a single cache-line. |
| @@ -141,6 +174,12 @@ struct rseq { · 82 unmodified lines | ||
| 141 | 174 | */ |
| 142 | 175 | __u32 mm_cid; |
| 143 | 176 | |
| 177 | + /* | |
| 178 | + * Time slice extension control structure. CPU local updates from | |
| 179 | + * kernel and user space. | |
| 180 | + */ | |
| 181 | + struct rseq_slice_ctrl slice_ctrl; | |
| 182 | + | |
| 144 | 183 | /* |
| 145 | 184 | * Flexible array member at end of structure, after last feature field. |
| 146 | 185 | */ |
| @@ -5,9 +5,6 @@ · 4 unmodified lines | ||
| 5 | 5 | #include <linux/ipc.h> |
| 6 | 6 | #include <linux/errno.h> |
| 7 | 7 | #include <asm-generic/hugetlb_encode.h> |
| 8 | −#ifndef __KERNEL__ | |
| 9 | −#include <unistd.h> | |
| 10 | −#endif | |
| 11 | 8 | |
| 12 | 9 | /* |
| 13 | 10 | * SHMMNI, SHMMAX and SHMALL are default upper limits which can be |
| @@ -72,6 +72,10 @@ · 71 unmodified lines | ||
| 72 | 72 | #define __counted_by_be(m) |
| 73 | 73 | #endif |
| 74 | 74 | |
| 75 | +#ifndef __counted_by_ptr | |
| 76 | +#define __counted_by_ptr(m) | |
| 77 | +#endif | |
| 78 | + | |
| 75 | 79 | #ifdef __KERNEL__ |
| 76 | 80 | #define __kernel_nonstring __nonstring |
| 77 | 81 | #else |
| @@ -92,7 +92,6 @@ enum · 91 unmodified lines | ||
| 92 | 92 | KERN_DOMAINNAME=8, /* string: domainname */ |
| 93 | 93 | |
| 94 | 94 | KERN_PANIC=15, /* int: panic timeout */ |
| 95 | − KERN_REALROOTDEV=16, /* real root device to mount after initrd */ | |
| 96 | 95 | |
| 97 | 96 | KERN_SPARC_REBOOT=21, /* reboot command on Sparc */ |
| 98 | 97 | KERN_CTLALTDEL=22, /* int: allow ctl-alt-del to reboot */ |
| @@ -183,7 +182,7 @@ enum · 84 unmodified lines | ||
| 183 | 182 | VM_LOWMEM_RESERVE_RATIO=20,/* reservation ratio for lower memory zones */ |
| 184 | 183 | VM_MIN_FREE_KBYTES=21, /* Minimum free kilobytes to maintain */ |
| 185 | 184 | VM_MAX_MAP_COUNT=22, /* int: Maximum number of mmaps/address-space */ |
| 186 | − VM_LAPTOP_MODE=23, /* vm laptop mode */ | |
| 185 | + | |
| 187 | 186 | VM_BLOCK_DUMP=24, /* block dump mode */ |
| 188 | 187 | VM_HUGETLB_GROUP=25, /* permitted hugetlb group */ |
| 189 | 188 | VM_VFS_CACHE_PRESSURE=26, /* dcache/icache reclaim pressure */ |
| @@ -18,6 +18,7 @@ · 17 unmodified lines | ||
| 18 | 18 | #define _LINUX_TASKSTATS_H |
| 19 | 19 | |
| 20 | 20 | #include <linux/types.h> |
| 21 | +#include <linux/time_types.h> | |
| 21 | 22 | |
| 22 | 23 | /* Format for per-task data returned to userland when |
| 23 | 24 | * - a task exits |
| @@ -34,7 +35,7 @@ · 10 unmodified lines | ||
| 34 | 35 | */ |
| 35 | 36 | |
| 36 | 37 | |
| 37 | −#define TASKSTATS_VERSION 16 | |
| 38 | +#define TASKSTATS_VERSION 17 | |
| 38 | 39 | #define TS_COMM_LEN 32 /* should be >= TASK_COMM_LEN |
| 39 | 40 | * in linux/sched.h */ |
| 40 | 41 | |
| @@ -230,6 +231,16 @@ struct taskstats { · 189 unmodified lines | ||
| 230 | 231 | |
| 231 | 232 | __u64 irq_delay_max; |
| 232 | 233 | __u64 irq_delay_min; |
| 234 | + | |
| 235 | + /*v17: delay max timestamp record*/ | |
| 236 | + struct __kernel_timespec cpu_delay_max_ts; | |
| 237 | + struct __kernel_timespec blkio_delay_max_ts; | |
| 238 | + struct __kernel_timespec swapin_delay_max_ts; | |
| 239 | + struct __kernel_timespec freepages_delay_max_ts; | |
| 240 | + struct __kernel_timespec thrashing_delay_max_ts; | |
| 241 | + struct __kernel_timespec compact_delay_max_ts; | |
| 242 | + struct __kernel_timespec wpcopy_delay_max_ts; | |
| 243 | + struct __kernel_timespec irq_delay_max_ts; | |
| 233 | 244 | }; |
| 234 | 245 | |
| 235 | 246 | |
| @@ -226,6 +226,24 @@ enum tcp_ca_state { · 225 unmodified lines | ||
| 226 | 226 | #define TCPF_CA_Loss (1<<TCP_CA_Loss) |
| 227 | 227 | }; |
| 228 | 228 | |
| 229 | +/* Values for tcpi_ecn_mode after negotiation */ | |
| 230 | +#define TCPI_ECN_MODE_DISABLED 0x0 | |
| 231 | +#define TCPI_ECN_MODE_RFC3168 0x1 | |
| 232 | +#define TCPI_ECN_MODE_ACCECN 0x2 | |
| 233 | +#define TCPI_ECN_MODE_PENDING 0x3 | |
| 234 | + | |
| 235 | +/* Values for accecn_opt_seen */ | |
| 236 | +#define TCP_ACCECN_OPT_NOT_SEEN 0x0 | |
| 237 | +#define TCP_ACCECN_OPT_EMPTY_SEEN 0x1 | |
| 238 | +#define TCP_ACCECN_OPT_COUNTER_SEEN 0x2 | |
| 239 | +#define TCP_ACCECN_OPT_FAIL_SEEN 0x3 | |
| 240 | + | |
| 241 | +/* Values for accecn_fail_mode */ | |
| 242 | +#define TCP_ACCECN_ACE_FAIL_SEND BIT(0) | |
| 243 | +#define TCP_ACCECN_ACE_FAIL_RECV BIT(1) | |
| 244 | +#define TCP_ACCECN_OPT_FAIL_SEND BIT(2) | |
| 245 | +#define TCP_ACCECN_OPT_FAIL_RECV BIT(3) | |
| 246 | + | |
| 229 | 247 | struct tcp_info { |
| 230 | 248 | __u8 tcpi_state; |
| 231 | 249 | __u8 tcpi_ca_state; |
| @@ -316,15 +334,17 @@ struct tcp_info { · 84 unmodified lines | ||
| 316 | 334 | * in milliseconds, including any |
| 317 | 335 | * unfinished recovery. |
| 318 | 336 | */ |
| 319 | − __u32 tcpi_received_ce; /* # of CE marks received */ | |
| 337 | + __u32 tcpi_received_ce; /* # of CE marked segments received */ | |
| 320 | 338 | __u32 tcpi_delivered_e1_bytes; /* Accurate ECN byte counters */ |
| 321 | 339 | __u32 tcpi_delivered_e0_bytes; |
| 322 | 340 | __u32 tcpi_delivered_ce_bytes; |
| 323 | 341 | __u32 tcpi_received_e1_bytes; |
| 324 | 342 | __u32 tcpi_received_e0_bytes; |
| 325 | 343 | __u32 tcpi_received_ce_bytes; |
| 326 | − __u16 tcpi_accecn_fail_mode; | |
| 327 | − __u16 tcpi_accecn_opt_seen; | |
| 344 | + __u32 tcpi_ecn_mode:2, | |
| 345 | + tcpi_accecn_opt_seen:2, | |
| 346 | + tcpi_accecn_fail_mode:4, | |
| 347 | + tcpi_options2:24; | |
| 328 | 348 | }; |
| 329 | 349 | |
| 330 | 350 | /* netlink attributes types for SCM_TIMESTAMPING_OPT_STATS */ |
| @@ -0,0 +1,8 @@ | ||
| 1 | +/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */ | |
| 2 | +#ifndef _UAPI_LINUX_TYPELIMITS_H | |
| 3 | +#define _UAPI_LINUX_TYPELIMITS_H | |
| 4 | + | |
| 5 | +#define __KERNEL_INT_MAX ((int)(~0U >> 1)) | |
| 6 | +#define __KERNEL_INT_MIN (-__KERNEL_INT_MAX - 1) | |
| 7 | + | |
| 8 | +#endif /* _UAPI_LINUX_TYPELIMITS_H */ | |
| @@ -55,7 +55,8 @@ · 54 unmodified lines | ||
| 55 | 55 | _IOWR('u', 0x15, struct ublksrv_ctrl_cmd) |
| 56 | 56 | #define UBLK_U_CMD_QUIESCE_DEV \ |
| 57 | 57 | _IOWR('u', 0x16, struct ublksrv_ctrl_cmd) |
| 58 | − | |
| 58 | +#define UBLK_U_CMD_TRY_STOP_DEV \ | |
| 59 | + _IOWR('u', 0x17, struct ublksrv_ctrl_cmd) | |
| 59 | 60 | /* |
| 60 | 61 | * 64bits are enough now, and it should be easy to extend in case of |
| 61 | 62 | * running out of feature flags |
| @@ -103,6 +104,30 @@ · 41 unmodified lines | ||
| 103 | 104 | #define UBLK_U_IO_UNREGISTER_IO_BUF \ |
| 104 | 105 | _IOWR('u', 0x24, struct ublksrv_io_cmd) |
| 105 | 106 | |
| 107 | +/* | |
| 108 | + * return 0 if the command is run successfully, otherwise failure code | |
| 109 | + * is returned | |
| 110 | + */ | |
| 111 | +#define UBLK_U_IO_PREP_IO_CMDS \ | |
| 112 | + _IOWR('u', 0x25, struct ublk_batch_io) | |
| 113 | +/* | |
| 114 | + * If failure code is returned, nothing in the command buffer is handled. | |
| 115 | + * Otherwise, the returned value means how many bytes in command buffer | |
| 116 | + * are handled actually, then number of handled IOs can be calculated with | |
| 117 | + * `elem_bytes` for each IO. IOs in the remained bytes are not committed, | |
| 118 | + * userspace has to check return value for dealing with partial committing | |
| 119 | + * correctly. | |
| 120 | + */ | |
| 121 | +#define UBLK_U_IO_COMMIT_IO_CMDS \ | |
| 122 | + _IOWR('u', 0x26, struct ublk_batch_io) | |
| 123 | + | |
| 124 | +/* | |
| 125 | + * Fetch io commands to provided buffer in multishot style, | |
| 126 | + * `IORING_URING_CMD_MULTISHOT` is required for this command. | |
| 127 | + */ | |
| 128 | +#define UBLK_U_IO_FETCH_IO_CMDS \ | |
| 129 | + _IOWR('u', 0x27, struct ublk_batch_io) | |
| 130 | + | |
| 106 | 131 | /* only ABORT means that no re-fetch */ |
| 107 | 132 | #define UBLK_IO_RES_OK 0 |
| 108 | 133 | #define UBLK_IO_RES_NEED_GET_DATA 1 |
| @@ -134,6 +159,10 @@ · 25 unmodified lines | ||
| 134 | 159 | #define UBLKSRV_IO_BUF_TOTAL_BITS (UBLK_QID_OFF + UBLK_QID_BITS) |
| 135 | 160 | #define UBLKSRV_IO_BUF_TOTAL_SIZE (1ULL << UBLKSRV_IO_BUF_TOTAL_BITS) |
| 136 | 161 | |
| 162 | +/* Copy to/from request integrity buffer instead of data buffer */ | |
| 163 | +#define UBLK_INTEGRITY_FLAG_OFF 62 | |
| 164 | +#define UBLKSRV_IO_INTEGRITY_FLAG (1ULL << UBLK_INTEGRITY_FLAG_OFF) | |
| 165 | + | |
| 137 | 166 | /* |
| 138 | 167 | * ublk server can register data buffers for incoming I/O requests with a sparse |
| 139 | 168 | * io_uring buffer table. The request buffer can then be used as the data buffer |
| @@ -311,6 +340,36 @@ · 171 unmodified lines | ||
| 311 | 340 | */ |
| 312 | 341 | #define UBLK_F_BUF_REG_OFF_DAEMON (1ULL << 14) |
| 313 | 342 | |
| 343 | +/* | |
| 344 | + * Support the following commands for delivering & committing io command | |
| 345 | + * in batch. | |
| 346 | + * | |
| 347 | + * - UBLK_U_IO_PREP_IO_CMDS | |
| 348 | + * - UBLK_U_IO_COMMIT_IO_CMDS | |
| 349 | + * - UBLK_U_IO_FETCH_IO_CMDS | |
| 350 | + * - UBLK_U_IO_REGISTER_IO_BUF | |
| 351 | + * - UBLK_U_IO_UNREGISTER_IO_BUF | |
| 352 | + * | |
| 353 | + * The existing UBLK_U_IO_FETCH_REQ, UBLK_U_IO_COMMIT_AND_FETCH_REQ and | |
| 354 | + * UBLK_U_IO_NEED_GET_DATA uring_cmd are not supported for this feature. | |
| 355 | + */ | |
| 356 | +#define UBLK_F_BATCH_IO (1ULL << 15) | |
| 357 | + | |
| 358 | +/* | |
| 359 | + * ublk device supports requests with integrity/metadata buffer. | |
| 360 | + * Requires UBLK_F_USER_COPY. | |
| 361 | + */ | |
| 362 | +#define UBLK_F_INTEGRITY (1ULL << 16) | |
| 363 | + | |
| 364 | +/* | |
| 365 | + * The device supports the UBLK_CMD_TRY_STOP_DEV command, which | |
| 366 | + * allows stopping the device only if there are no openers. | |
| 367 | + */ | |
| 368 | +#define UBLK_F_SAFE_STOP_DEV (1ULL << 17) | |
| 369 | + | |
| 370 | +/* Disable automatic partition scanning when device is started */ | |
| 371 | +#define UBLK_F_NO_AUTO_PART_SCAN (1ULL << 18) | |
| 372 | + | |
| 314 | 373 | /* device state */ |
| 315 | 374 | #define UBLK_S_DEV_DEAD 0 |
| 316 | 375 | #define UBLK_S_DEV_LIVE 1 |
| @@ -408,6 +467,8 @@ struct ublksrv_ctrl_dev_info { · 91 unmodified lines | ||
| 408 | 467 | * passed in. |
| 409 | 468 | */ |
| 410 | 469 | #define UBLK_IO_F_NEED_REG_BUF (1U << 17) |
| 470 | +/* Request has an integrity data buffer */ | |
| 471 | +#define UBLK_IO_F_INTEGRITY (1UL << 18) | |
| 411 | 472 | |
| 412 | 473 | /* |
| 413 | 474 | * io cmd is described by this structure, and stored in share memory, indexed |
| @@ -525,6 +586,51 @@ struct ublksrv_io_cmd { · 111 unmodified lines | ||
| 525 | 586 | }; |
| 526 | 587 | }; |
| 527 | 588 | |
| 589 | +struct ublk_elem_header { | |
| 590 | + __u16 tag; /* IO tag */ | |
| 591 | + | |
| 592 | + /* | |
| 593 | + * Buffer index for incoming io command, only valid iff | |
| 594 | + * UBLK_F_AUTO_BUF_REG is set | |
| 595 | + */ | |
| 596 | + __u16 buf_index; | |
| 597 | + __s32 result; /* I/O completion result (commit only) */ | |
| 598 | +}; | |
| 599 | + | |
| 600 | +/* | |
| 601 | + * uring_cmd buffer structure for batch commands | |
| 602 | + * | |
| 603 | + * buffer includes multiple elements, which number is specified by | |
| 604 | + * `nr_elem`. Each element buffer is organized in the following order: | |
| 605 | + * | |
| 606 | + * struct ublk_elem_buffer { | |
| 607 | + * // Mandatory fields (8 bytes) | |
| 608 | + * struct ublk_elem_header header; | |
| 609 | + * | |
| 610 | + * // Optional fields (8 bytes each, included based on flags) | |
| 611 | + * | |
| 612 | + * // Buffer address (if UBLK_BATCH_F_HAS_BUF_ADDR) for copying data | |
| 613 | + * // between ublk request and ublk server buffer | |
| 614 | + * __u64 buf_addr; | |
| 615 | + * | |
| 616 | + * // returned Zone append LBA (if UBLK_BATCH_F_HAS_ZONE_LBA) | |
| 617 | + * __u64 zone_lba; | |
| 618 | + * } | |
| 619 | + * | |
| 620 | + * Used for `UBLK_U_IO_PREP_IO_CMDS` and `UBLK_U_IO_COMMIT_IO_CMDS` | |
| 621 | + */ | |
| 622 | +struct ublk_batch_io { | |
| 623 | + __u16 q_id; | |
| 624 | +#define UBLK_BATCH_F_HAS_ZONE_LBA (1 << 0) | |
| 625 | +#define UBLK_BATCH_F_HAS_BUF_ADDR (1 << 1) | |
| 626 | +#define UBLK_BATCH_F_AUTO_BUF_REG_FALLBACK (1 << 2) | |
| 627 | + __u16 flags; | |
| 628 | + __u16 nr_elem; | |
| 629 | + __u8 elem_bytes; | |
| 630 | + __u8 reserved; | |
| 631 | + __u64 reserved2; | |
| 632 | +}; | |
| 633 | + | |
| 528 | 634 | struct ublk_param_basic { |
| 529 | 635 | #define UBLK_ATTR_READ_ONLY (1 << 0) |
| 530 | 636 | #define UBLK_ATTR_ROTATIONAL (1 << 1) |
| @@ -600,6 +706,17 @@ struct ublk_param_segment { · 69 unmodified lines | ||
| 600 | 706 | __u8 pad[2]; |
| 601 | 707 | }; |
| 602 | 708 | |
| 709 | +struct ublk_param_integrity { | |
| 710 | + __u32 flags; /* LBMD_PI_CAP_* from linux/fs.h */ | |
| 711 | + __u16 max_integrity_segments; /* 0 means no limit */ | |
| 712 | + __u8 interval_exp; | |
| 713 | + __u8 metadata_size; /* UBLK_PARAM_TYPE_INTEGRITY requires nonzero */ | |
| 714 | + __u8 pi_offset; | |
| 715 | + __u8 csum_type; /* LBMD_PI_CSUM_* from linux/fs.h */ | |
| 716 | + __u8 tag_size; | |
| 717 | + __u8 pad[5]; | |
| 718 | +}; | |
| 719 | + | |
| 603 | 720 | struct ublk_params { |
| 604 | 721 | /* |
| 605 | 722 | * Total length of parameters, userspace has to set 'len' for both |
| @@ -614,6 +731,7 @@ struct ublk_params { · 8 unmodified lines | ||
| 614 | 731 | #define UBLK_PARAM_TYPE_ZONED (1 << 3) |
| 615 | 732 | #define UBLK_PARAM_TYPE_DMA_ALIGN (1 << 4) |
| 616 | 733 | #define UBLK_PARAM_TYPE_SEGMENT (1 << 5) |
| 734 | +#define UBLK_PARAM_TYPE_INTEGRITY (1 << 6) /* requires UBLK_F_INTEGRITY */ | |
| 617 | 735 | __u32 types; /* types of parameter included */ |
| 618 | 736 | |
| 619 | 737 | struct ublk_param_basic basic; |
| @@ -622,6 +740,7 @@ struct ublk_params { · 2 unmodified lines | ||
| 622 | 740 | struct ublk_param_zoned zoned; |
| 623 | 741 | struct ublk_param_dma_align dma; |
| 624 | 742 | struct ublk_param_segment seg; |
| 743 | + struct ublk_param_integrity integrity; | |
| 625 | 744 | }; |
| 626 | 745 | |
| 627 | 746 | #endif |
| @@ -1192,6 +1192,8 @@ enum v4l2_flash_strobe_source { · 1191 unmodified lines | ||
| 1192 | 1192 | |
| 1193 | 1193 | #define V4L2_CID_FLASH_CHARGE (V4L2_CID_FLASH_CLASS_BASE + 11) |
| 1194 | 1194 | #define V4L2_CID_FLASH_READY (V4L2_CID_FLASH_CLASS_BASE + 12) |
| 1195 | +#define V4L2_CID_FLASH_DURATION (V4L2_CID_FLASH_CLASS_BASE + 13) | |
| 1196 | +#define V4L2_CID_FLASH_STROBE_OE (V4L2_CID_FLASH_CLASS_BASE + 14) | |
| 1195 | 1197 | |
| 1196 | 1198 | |
| 1197 | 1199 | /* JPEG-class control IDs */ |
| @@ -2099,6 +2101,8 @@ struct v4l2_ctrl_mpeg2_quantisation { · 901 unmodified lines | ||
| 2099 | 2101 | #define V4L2_CID_STATELESS_HEVC_DECODE_MODE (V4L2_CID_CODEC_STATELESS_BASE + 405) |
| 2100 | 2102 | #define V4L2_CID_STATELESS_HEVC_START_CODE (V4L2_CID_CODEC_STATELESS_BASE + 406) |
| 2101 | 2103 | #define V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS (V4L2_CID_CODEC_STATELESS_BASE + 407) |
| 2104 | +#define V4L2_CID_STATELESS_HEVC_EXT_SPS_ST_RPS (V4L2_CID_CODEC_STATELESS_BASE + 408) | |
| 2105 | +#define V4L2_CID_STATELESS_HEVC_EXT_SPS_LT_RPS (V4L2_CID_CODEC_STATELESS_BASE + 409) | |
| 2102 | 2106 | |
| 2103 | 2107 | enum v4l2_stateless_hevc_decode_mode { |
| 2104 | 2108 | V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED, |
| @@ -2554,6 +2558,65 @@ struct v4l2_ctrl_hevc_scaling_matrix { · 449 unmodified lines | ||
| 2554 | 2558 | __u8 scaling_list_dc_coef_32x32[2]; |
| 2555 | 2559 | }; |
| 2556 | 2560 | |
| 2561 | +#define V4L2_HEVC_EXT_SPS_ST_RPS_FLAG_INTER_REF_PIC_SET_PRED 0x1 | |
| 2562 | + | |
| 2563 | +/* | |
| 2564 | + * struct v4l2_ctrl_hevc_ext_sps_st_rps - HEVC short term RPS parameters | |
| 2565 | + * | |
| 2566 | + * Dynamic size 1-dimension array for short term RPS. The number of elements | |
| 2567 | + * is v4l2_ctrl_hevc_sps::num_short_term_ref_pic_sets. It can contain up to 65 elements. | |
| 2568 | + * | |
| 2569 | + * @delta_idx_minus1: Specifies the delta compare to the index. See details in section 7.4.8 | |
| 2570 | + * "Short-term reference picture set semantics" of the specification. | |
| 2571 | + * @delta_rps_sign: Sign of the delta as specified in section 7.4.8 "Short-term reference picture | |
| 2572 | + * set semantics" of the specification. | |
| 2573 | + * @abs_delta_rps_minus1: Absolute delta RPS as specified in section 7.4.8 "Short-term reference | |
| 2574 | + * picture set semantics" of the specification. | |
| 2575 | + * @num_negative_pics: Number of short-term RPS entries that have picture order count values less | |
| 2576 | + * than the picture order count value of the current picture. | |
| 2577 | + * @num_positive_pics: Number of short-term RPS entries that have picture order count values | |
| 2578 | + * greater than the picture order count value of the current picture. | |
| 2579 | + * @used_by_curr_pic: Bit j specifies if short-term RPS j is used by the current picture. | |
| 2580 | + * @use_delta_flag: Bit j equals to 1 specifies that the j-th entry in the source candidate | |
| 2581 | + * short-term RPS is included in this candidate short-term RPS. | |
| 2582 | + * @delta_poc_s0_minus1: Specifies the negative picture order count delta for the i-th entry in | |
| 2583 | + * the short-term RPS. See details in section 7.4.8 "Short-term reference | |
| 2584 | + * picture set semantics" of the specification. | |
| 2585 | + * @delta_poc_s1_minus1: Specifies the positive picture order count delta for the i-th entry in | |
| 2586 | + * the short-term RPS. See details in section 7.4.8 "Short-term reference | |
| 2587 | + * picture set semantics" of the specification. | |
| 2588 | + * @flags: See V4L2_HEVC_EXT_SPS_ST_RPS_FLAG_{} | |
| 2589 | + */ | |
| 2590 | +struct v4l2_ctrl_hevc_ext_sps_st_rps { | |
| 2591 | + __u8 delta_idx_minus1; | |
| 2592 | + __u8 delta_rps_sign; | |
| 2593 | + __u8 num_negative_pics; | |
| 2594 | + __u8 num_positive_pics; | |
| 2595 | + __u32 used_by_curr_pic; | |
| 2596 | + __u32 use_delta_flag; | |
| 2597 | + __u16 abs_delta_rps_minus1; | |
| 2598 | + __u16 delta_poc_s0_minus1[16]; | |
| 2599 | + __u16 delta_poc_s1_minus1[16]; | |
| 2600 | + __u16 flags; | |
| 2601 | +}; | |
| 2602 | + | |
| 2603 | +#define V4L2_HEVC_EXT_SPS_LT_RPS_FLAG_USED_LT 0x1 | |
| 2604 | + | |
| 2605 | +/* | |
| 2606 | + * struct v4l2_ctrl_hevc_ext_sps_lt_rps - HEVC long term RPS parameters | |
| 2607 | + * | |
| 2608 | + * Dynamic size 1-dimension array for long term RPS. The number of elements | |
| 2609 | + * is v4l2_ctrl_hevc_sps::num_long_term_ref_pics_sps. It can contain up to 65 elements. | |
| 2610 | + * | |
| 2611 | + * @lt_ref_pic_poc_lsb_sps: picture order count modulo MaxPicOrderCntLsb of the i-th candidate | |
| 2612 | + * long-term reference picture. | |
| 2613 | + * @flags: See V4L2_HEVC_EXT_SPS_LT_RPS_FLAG_{} | |
| 2614 | + */ | |
| 2615 | +struct v4l2_ctrl_hevc_ext_sps_lt_rps { | |
| 2616 | + __u16 lt_ref_pic_poc_lsb_sps; | |
| 2617 | + __u16 flags; | |
| 2618 | +}; | |
| 2619 | + | |
| 2557 | 2620 | /* Stateless VP9 controls */ |
| 2558 | 2621 | |
| 2559 | 2622 | #define V4L2_VP9_LOOP_FILTER_FLAG_DELTA_ENABLED 0x1 |
| @@ -236,7 +236,7 @@ struct vmmdev_hgcm_function_parameter32 { · 235 unmodified lines | ||
| 236 | 236 | /** Relative to the request header. */ |
| 237 | 237 | __u32 offset; |
| 238 | 238 | } page_list; |
| 239 | − } u; | |
| 239 | + } __packed u; | |
| 240 | 240 | } __packed; |
| 241 | 241 | VMMDEV_ASSERT_SIZE(vmmdev_hgcm_function_parameter32, 4 + 8); |
| 242 | 242 | |
| @@ -251,7 +251,7 @@ struct vmmdev_hgcm_function_parameter64 { · 8 unmodified lines | ||
| 251 | 251 | union { |
| 252 | 252 | __u64 phys_addr; |
| 253 | 253 | __u64 linear_addr; |
| 254 | − } u; | |
| 254 | + } __packed u; | |
| 255 | 255 | } __packed pointer; |
| 256 | 256 | struct { |
| 257 | 257 | /** Size of the buffer described by the page list. */ |
| @@ -10,6 +10,10 @@ · 9 unmodified lines | ||
| 10 | 10 | |
| 11 | 11 | #define VDUSE_API_VERSION 0 |
| 12 | 12 | |
| 13 | +/* VQ groups and ASID support */ | |
| 14 | + | |
| 15 | +#define VDUSE_API_VERSION_1 1 | |
| 16 | + | |
| 13 | 17 | /* |
| 14 | 18 | * Get the version of VDUSE API that kernel supported (VDUSE_API_VERSION). |
| 15 | 19 | * This is used for future extension. |
| @@ -27,6 +31,8 @@ · 11 unmodified lines | ||
| 27 | 31 | * @features: virtio features |
| 28 | 32 | * @vq_num: the number of virtqueues |
| 29 | 33 | * @vq_align: the allocation alignment of virtqueue's metadata |
| 34 | + * @ngroups: number of vq groups that VDUSE device declares | |
| 35 | + * @nas: number of address spaces that VDUSE device declares | |
| 30 | 36 | * @reserved: for future use, needs to be initialized to zero |
| 31 | 37 | * @config_size: the size of the configuration space |
| 32 | 38 | * @config: the buffer of the configuration space |
| @@ -41,7 +47,9 @@ struct vduse_dev_config { · 8 unmodified lines | ||
| 41 | 47 | __u64 features; |
| 42 | 48 | __u32 vq_num; |
| 43 | 49 | __u32 vq_align; |
| 44 | − __u32 reserved[13]; | |
| 50 | + __u32 ngroups; /* if VDUSE_API_VERSION >= 1 */ | |
| 51 | + __u32 nas; /* if VDUSE_API_VERSION >= 1 */ | |
| 52 | + __u32 reserved[11]; | |
| 45 | 53 | __u32 config_size; |
| 46 | 54 | __u8 config[]; |
| 47 | 55 | }; |
| @@ -118,14 +126,18 @@ struct vduse_config_data { · 70 unmodified lines | ||
| 118 | 126 | * struct vduse_vq_config - basic configuration of a virtqueue |
| 119 | 127 | * @index: virtqueue index |
| 120 | 128 | * @max_size: the max size of virtqueue |
| 121 | − * @reserved: for future use, needs to be initialized to zero | |
| 129 | + * @reserved1: for future use, needs to be initialized to zero | |
| 130 | + * @group: virtqueue group | |
| 131 | + * @reserved2: for future use, needs to be initialized to zero | |
| 122 | 132 | * |
| 123 | 133 | * Structure used by VDUSE_VQ_SETUP ioctl to setup a virtqueue. |
| 124 | 134 | */ |
| 125 | 135 | struct vduse_vq_config { |
| 126 | 136 | __u32 index; |
| 127 | 137 | __u16 max_size; |
| 128 | − __u16 reserved[13]; | |
| 138 | + __u16 reserved1; | |
| 139 | + __u32 group; | |
| 140 | + __u16 reserved2[10]; | |
| 129 | 141 | }; |
| 130 | 142 | |
| 131 | 143 | /* |
| @@ -156,6 +168,16 @@ struct vduse_vq_state_packed { · 24 unmodified lines | ||
| 156 | 168 | __u16 last_used_idx; |
| 157 | 169 | }; |
| 158 | 170 | |
| 171 | +/** | |
| 172 | + * struct vduse_vq_group_asid - virtqueue group ASID | |
| 173 | + * @group: Index of the virtqueue group | |
| 174 | + * @asid: Address space ID of the group | |
| 175 | + */ | |
| 176 | +struct vduse_vq_group_asid { | |
| 177 | + __u32 group; | |
| 178 | + __u32 asid; | |
| 179 | +}; | |
| 180 | + | |
| 159 | 181 | /** |
| 160 | 182 | * struct vduse_vq_info - information of a virtqueue |
| 161 | 183 | * @index: virtqueue index |
| @@ -215,6 +237,7 @@ struct vduse_vq_eventfd { · 53 unmodified lines | ||
| 215 | 237 | * @uaddr: start address of userspace memory, it must be aligned to page size |
| 216 | 238 | * @iova: start of the IOVA region |
| 217 | 239 | * @size: size of the IOVA region |
| 240 | + * @asid: Address space ID of the IOVA region | |
| 218 | 241 | * @reserved: for future use, needs to be initialized to zero |
| 219 | 242 | * |
| 220 | 243 | * Structure used by VDUSE_IOTLB_REG_UMEM and VDUSE_IOTLB_DEREG_UMEM |
| @@ -224,7 +247,8 @@ struct vduse_iova_umem { · 3 unmodified lines | ||
| 224 | 247 | __u64 uaddr; |
| 225 | 248 | __u64 iova; |
| 226 | 249 | __u64 size; |
| 227 | − __u64 reserved[3]; | |
| 250 | + __u32 asid; | |
| 251 | + __u32 reserved[5]; | |
| 228 | 252 | }; |
| 229 | 253 | |
| 230 | 254 | /* Register userspace memory for IOVA regions */ |
| @@ -238,6 +262,7 @@ struct vduse_iova_umem { · 7 unmodified lines | ||
| 238 | 262 | * @start: start of the IOVA region |
| 239 | 263 | * @last: last of the IOVA region |
| 240 | 264 | * @capability: capability of the IOVA region |
| 265 | + * @asid: Address space ID of the IOVA region, only if device API version >= 1 | |
| 241 | 266 | * @reserved: for future use, needs to be initialized to zero |
| 242 | 267 | * |
| 243 | 268 | * Structure used by VDUSE_IOTLB_GET_INFO ioctl to get information of |
| @@ -248,7 +273,8 @@ struct vduse_iova_info { · 4 unmodified lines | ||
| 248 | 273 | __u64 last; |
| 249 | 274 | #define VDUSE_IOVA_CAP_UMEM (1 << 0) |
| 250 | 275 | __u64 capability; |
| 251 | − __u64 reserved[3]; | |
| 276 | + __u32 asid; /* Only if device API version >= 1 */ | |
| 277 | + __u32 reserved[5]; | |
| 252 | 278 | }; |
| 253 | 279 | |
| 254 | 280 | /* |
| @@ -257,6 +283,32 @@ struct vduse_iova_info { · 2 unmodified lines | ||
| 257 | 283 | */ |
| 258 | 284 | #define VDUSE_IOTLB_GET_INFO _IOWR(VDUSE_BASE, 0x1a, struct vduse_iova_info) |
| 259 | 285 | |
| 286 | +/** | |
| 287 | + * struct vduse_iotlb_entry_v2 - entry of IOTLB to describe one IOVA region | |
| 288 | + * | |
| 289 | + * @v1: the original vduse_iotlb_entry | |
| 290 | + * @asid: address space ID of the IOVA region | |
| 291 | + * @reserved: for future use, needs to be initialized to zero | |
| 292 | + * | |
| 293 | + * Structure used by VDUSE_IOTLB_GET_FD2 ioctl to find an overlapped IOVA region. | |
| 294 | + */ | |
| 295 | +struct vduse_iotlb_entry_v2 { | |
| 296 | + __u64 offset; | |
| 297 | + __u64 start; | |
| 298 | + __u64 last; | |
| 299 | + __u8 perm; | |
| 300 | + __u8 padding[7]; | |
| 301 | + __u32 asid; | |
| 302 | + __u32 reserved[11]; | |
| 303 | +}; | |
| 304 | + | |
| 305 | +/* | |
| 306 | + * Same as VDUSE_IOTLB_GET_FD but with vduse_iotlb_entry_v2 argument that | |
| 307 | + * support extra fields. | |
| 308 | + */ | |
| 309 | +#define VDUSE_IOTLB_GET_FD2 _IOWR(VDUSE_BASE, 0x1b, struct vduse_iotlb_entry_v2) | |
| 310 | + | |
| 311 | + | |
| 260 | 312 | /* The control messages definition for read(2)/write(2) on /dev/vduse/$NAME */ |
| 261 | 313 | |
| 262 | 314 | /** |
| @@ -265,11 +317,14 @@ struct vduse_iova_info { · 2 unmodified lines | ||
| 265 | 317 | * @VDUSE_SET_STATUS: set the device status |
| 266 | 318 | * @VDUSE_UPDATE_IOTLB: Notify userspace to update the memory mapping for |
| 267 | 319 | * specified IOVA range via VDUSE_IOTLB_GET_FD ioctl |
| 320 | + * @VDUSE_SET_VQ_GROUP_ASID: Notify userspace to update the address space of a | |
| 321 | + * virtqueue group. | |
| 268 | 322 | */ |
| 269 | 323 | enum vduse_req_type { |
| 270 | 324 | VDUSE_GET_VQ_STATE, |
| 271 | 325 | VDUSE_SET_STATUS, |
| 272 | 326 | VDUSE_UPDATE_IOTLB, |
| 327 | + VDUSE_SET_VQ_GROUP_ASID, | |
| 273 | 328 | }; |
| 274 | 329 | |
| 275 | 330 | /** |
| @@ -304,6 +359,19 @@ struct vduse_iova_range { · 28 unmodified lines | ||
| 304 | 359 | __u64 last; |
| 305 | 360 | }; |
| 306 | 361 | |
| 362 | +/** | |
| 363 | + * struct vduse_iova_range_v2 - IOVA range [start, last] if API_VERSION >= 1 | |
| 364 | + * @start: start of the IOVA range | |
| 365 | + * @last: last of the IOVA range | |
| 366 | + * @asid: address space ID of the IOVA range | |
| 367 | + */ | |
| 368 | +struct vduse_iova_range_v2 { | |
| 369 | + __u64 start; | |
| 370 | + __u64 last; | |
| 371 | + __u32 asid; | |
| 372 | + __u32 padding; | |
| 373 | +}; | |
| 374 | + | |
| 307 | 375 | /** |
| 308 | 376 | * struct vduse_dev_request - control request |
| 309 | 377 | * @type: request type |
| @@ -312,6 +380,8 @@ struct vduse_iova_range { · 2 unmodified lines | ||
| 312 | 380 | * @vq_state: virtqueue state, only index field is available |
| 313 | 381 | * @s: device status |
| 314 | 382 | * @iova: IOVA range for updating |
| 383 | + * @iova_v2: IOVA range for updating if API_VERSION >= 1 | |
| 384 | + * @vq_group_asid: ASID of a virtqueue group | |
| 315 | 385 | * @padding: padding |
| 316 | 386 | * |
| 317 | 387 | * Structure used by read(2) on /dev/vduse/$NAME. |
| @@ -324,6 +394,11 @@ struct vduse_dev_request { · 6 unmodified lines | ||
| 324 | 394 | struct vduse_vq_state vq_state; |
| 325 | 395 | struct vduse_dev_status s; |
| 326 | 396 | struct vduse_iova_range iova; |
| 397 | + /* Following members but padding exist only if vduse api | |
| 398 | + * version >= 1 | |
| 399 | + */ | |
| 400 | + struct vduse_iova_range_v2 iova_v2; | |
| 401 | + struct vduse_vq_group_asid vq_group_asid; | |
| 327 | 402 | __u32 padding[32]; |
| 328 | 403 | }; |
| 329 | 404 | }; |
| @@ -964,6 +964,10 @@ struct vfio_device_bind_iommufd { · 963 unmodified lines | ||
| 964 | 964 | * hwpt corresponding to the given pt_id. |
| 965 | 965 | * |
| 966 | 966 | * Return: 0 on success, -errno on failure. |
| 967 | + * | |
| 968 | + * When a device is resetting, -EBUSY will be returned to reject any concurrent | |
| 969 | + * attachment to the resetting device itself or any sibling device in the IOMMU | |
| 970 | + * group having the resetting device. | |
| 967 | 971 | */ |
| 968 | 972 | struct vfio_device_attach_iommufd_pt { |
| 969 | 973 | __u32 argsz; |
| @@ -775,6 +775,7 @@ struct v4l2_pix_format { · 774 unmodified lines | ||
| 775 | 775 | #define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4') /* H264 parsed slices */ |
| 776 | 776 | #define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5') /* HEVC parsed slices */ |
| 777 | 777 | #define V4L2_PIX_FMT_AV1_FRAME v4l2_fourcc('A', 'V', '1', 'F') /* AV1 parsed frame */ |
| 778 | +#define V4L2_PIX_FMT_AV1 v4l2_fourcc('A', 'V', '0', '1') /* AV1 */ | |
| 778 | 779 | #define V4L2_PIX_FMT_SPK v4l2_fourcc('S', 'P', 'K', '0') /* Sorenson Spark */ |
| 779 | 780 | #define V4L2_PIX_FMT_RV30 v4l2_fourcc('R', 'V', '3', '0') /* RealVideo 8 */ |
| 780 | 781 | #define V4L2_PIX_FMT_RV40 v4l2_fourcc('R', 'V', '4', '0') /* RealVideo 9 & 10 */ |
| @@ -1985,6 +1986,8 @@ enum v4l2_ctrl_type { · 1204 unmodified lines | ||
| 1985 | 1986 | V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS = 0x0272, |
| 1986 | 1987 | V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX = 0x0273, |
| 1987 | 1988 | V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS = 0x0274, |
| 1989 | + V4L2_CTRL_TYPE_HEVC_EXT_SPS_ST_RPS = 0x0275, | |
| 1990 | + V4L2_CTRL_TYPE_HEVC_EXT_SPS_LT_RPS = 0x0276, | |
| 1988 | 1991 | |
| 1989 | 1992 | V4L2_CTRL_TYPE_AV1_SEQUENCE = 0x280, |
| 1990 | 1993 | V4L2_CTRL_TYPE_AV1_TILE_GROUP_ENTRY = 0x281, |
| @@ -31,9 +31,6 @@ · 30 unmodified lines | ||
| 31 | 31 | * SUCH DAMAGE. |
| 32 | 32 | * |
| 33 | 33 | * Copyright Rusty Russell IBM Corporation 2007. */ |
| 34 | −#ifndef __KERNEL__ | |
| 35 | −#include <stdint.h> | |
| 36 | −#endif | |
| 37 | 34 | #include <linux/types.h> |
| 38 | 35 | #include <linux/virtio_types.h> |
| 39 | 36 | |
| @@ -202,7 +199,7 @@ static inline void vring_init(struct vring *vr, unsigned int num, void *p, · 162 unmodified lines | ||
| 202 | 199 | vr->num = num; |
| 203 | 200 | vr->desc = p; |
| 204 | 201 | vr->avail = (struct vring_avail *)((char *)p + num * sizeof(struct vring_desc)); |
| 205 | − vr->used = (void *)(((uintptr_t)&vr->avail->ring[num] + sizeof(__virtio16) | |
| 202 | + vr->used = (void *)(((unsigned long)&vr->avail->ring[num] + sizeof(__virtio16) | |
| 206 | 203 | + align-1) & ~(align - 1)); |
| 207 | 204 | } |
| 208 | 205 | |
| @@ -115,6 +115,17 @@ struct vmclock_abi { · 114 unmodified lines | ||
| 115 | 115 | * bit again after the update, using the about-to-be-valid fields. |
| 116 | 116 | */ |
| 117 | 117 | #define VMCLOCK_FLAG_TIME_MONOTONIC (1 << 7) |
| 118 | + /* | |
| 119 | + * If the VM_GEN_COUNTER_PRESENT flag is set, the hypervisor will | |
| 120 | + * bump the vm_generation_counter field every time the guest is | |
| 121 | + * loaded from some save state (restored from a snapshot). | |
| 122 | + */ | |
| 123 | +#define VMCLOCK_FLAG_VM_GEN_COUNTER_PRESENT (1 << 8) | |
| 124 | + /* | |
| 125 | + * If the NOTIFICATION_PRESENT flag is set, the hypervisor will send | |
| 126 | + * a notification every time it updates seq_count to a new even number. | |
| 127 | + */ | |
| 128 | +#define VMCLOCK_FLAG_NOTIFICATION_PRESENT (1 << 9) | |
| 118 | 129 | |
| 119 | 130 | __u8 pad[2]; |
| 120 | 131 | __u8 clock_status; |
| @@ -177,6 +188,15 @@ struct vmclock_abi { · 56 unmodified lines | ||
| 177 | 188 | __le64 time_frac_sec; /* Units of 1/2^64 of a second */ |
| 178 | 189 | __le64 time_esterror_nanosec; |
| 179 | 190 | __le64 time_maxerror_nanosec; |
| 191 | + | |
| 192 | + /* | |
| 193 | + * This field changes to another non-repeating value when the guest | |
| 194 | + * has been loaded from a snapshot. In addition to handling a | |
| 195 | + * disruption in time (which will also be signalled through the | |
| 196 | + * disruption_marker field), a guest may wish to discard UUIDs, | |
| 197 | + * reset network connections, reseed entropy, etc. | |
| 198 | + */ | |
| 199 | + __le64 vm_generation_counter; | |
| 180 | 200 | }; |
| 181 | 201 | |
| 182 | 202 | #endif /* __VMCLOCK_ABI_H__ */ |
| @@ -56,6 +56,7 @@ enum { · 55 unmodified lines | ||
| 56 | 56 | BNXT_RE_UCNTX_CMASK_DBR_PACING_ENABLED = 0x08ULL, |
| 57 | 57 | BNXT_RE_UCNTX_CMASK_POW2_DISABLED = 0x10ULL, |
| 58 | 58 | BNXT_RE_UCNTX_CMASK_MSN_TABLE_ENABLED = 0x40, |
| 59 | + BNXT_RE_UCNTX_CMASK_QP_RATE_LIMIT_ENABLED = 0x80ULL, | |
| 59 | 60 | }; |
| 60 | 61 | |
| 61 | 62 | enum bnxt_re_wqe_mode { |
| @@ -215,4 +216,19 @@ enum bnxt_re_toggle_mem_methods { · 153 unmodified lines | ||
| 215 | 216 | BNXT_RE_METHOD_GET_TOGGLE_MEM = (1U << UVERBS_ID_NS_SHIFT), |
| 216 | 217 | BNXT_RE_METHOD_RELEASE_TOGGLE_MEM, |
| 217 | 218 | }; |
| 219 | + | |
| 220 | +struct bnxt_re_packet_pacing_caps { | |
| 221 | + __u32 qp_rate_limit_min; | |
| 222 | + __u32 qp_rate_limit_max; /* In kbps */ | |
| 223 | + /* Corresponding bit will be set if qp type from | |
| 224 | + * 'enum ib_qp_type' is supported, e.g. | |
| 225 | + * supported_qpts |= 1 << IB_QPT_RC | |
| 226 | + */ | |
| 227 | + __u32 supported_qpts; | |
| 228 | + __u32 reserved; | |
| 229 | +}; | |
| 230 | + | |
| 231 | +struct bnxt_re_query_device_ex_resp { | |
| 232 | + struct bnxt_re_packet_pacing_caps packet_pacing_caps; | |
| 233 | +}; | |
| 218 | 234 | #endif /* __BNXT_RE_UVERBS_ABI_H__*/ |
| @@ -56,6 +56,7 @@ enum uverbs_default_objects { · 55 unmodified lines | ||
| 56 | 56 | UVERBS_OBJECT_COUNTERS, |
| 57 | 57 | UVERBS_OBJECT_ASYNC_EVENT, |
| 58 | 58 | UVERBS_OBJECT_DMAH, |
| 59 | + UVERBS_OBJECT_DMABUF, | |
| 59 | 60 | }; |
| 60 | 61 | |
| 61 | 62 | enum { |
| @@ -73,6 +74,7 @@ enum uverbs_methods_device { · 11 unmodified lines | ||
| 73 | 74 | UVERBS_METHOD_QUERY_CONTEXT, |
| 74 | 75 | UVERBS_METHOD_QUERY_GID_TABLE, |
| 75 | 76 | UVERBS_METHOD_QUERY_GID_ENTRY, |
| 77 | + UVERBS_METHOD_QUERY_PORT_SPEED, | |
| 76 | 78 | }; |
| 77 | 79 | |
| 78 | 80 | enum uverbs_attrs_invoke_write_cmd_attr_ids { |
| @@ -86,6 +88,11 @@ enum uverbs_attrs_query_port_cmd_attr_ids { · 7 unmodified lines | ||
| 86 | 88 | UVERBS_ATTR_QUERY_PORT_RESP, |
| 87 | 89 | }; |
| 88 | 90 | |
| 91 | +enum uverbs_attrs_query_port_speed_cmd_attr_ids { | |
| 92 | + UVERBS_ATTR_QUERY_PORT_SPEED_PORT_NUM, | |
| 93 | + UVERBS_ATTR_QUERY_PORT_SPEED_RESP, | |
| 94 | +}; | |
| 95 | + | |
| 89 | 96 | enum uverbs_attrs_get_context_attr_ids { |
| 90 | 97 | UVERBS_ATTR_GET_CONTEXT_NUM_COMP_VECTORS, |
| 91 | 98 | UVERBS_ATTR_GET_CONTEXT_CORE_SUPPORT, |
| @@ -257,6 +264,15 @@ enum uverbs_methods_dmah { · 165 unmodified lines | ||
| 257 | 264 | UVERBS_METHOD_DMAH_FREE, |
| 258 | 265 | }; |
| 259 | 266 | |
| 267 | +enum uverbs_attrs_alloc_dmabuf_cmd_attr_ids { | |
| 268 | + UVERBS_ATTR_ALLOC_DMABUF_HANDLE, | |
| 269 | + UVERBS_ATTR_ALLOC_DMABUF_PGOFF, | |
| 270 | +}; | |
| 271 | + | |
| 272 | +enum uverbs_methods_dmabuf { | |
| 273 | + UVERBS_METHOD_DMABUF_ALLOC, | |
| 274 | +}; | |
| 275 | + | |
| 260 | 276 | enum uverbs_attrs_reg_dm_mr_cmd_attr_ids { |
| 261 | 277 | UVERBS_ATTR_REG_DM_MR_HANDLE, |
| 262 | 278 | UVERBS_ATTR_REG_DM_MR_OFFSET, |
| @@ -17,6 +17,9 @@ · 16 unmodified lines | ||
| 17 | 17 | #define MANA_IB_UVERBS_ABI_VERSION 1 |
| 18 | 18 | |
| 19 | 19 | enum mana_ib_create_cq_flags { |
| 20 | + /* Reserved for backward compatibility. Legacy | |
| 21 | + * kernel versions use it to create CQs in RNIC | |
| 22 | + */ | |
| 20 | 23 | MANA_IB_CREATE_RNIC_CQ = 1 << 0, |
| 21 | 24 | }; |
| 22 | 25 | |
| @@ -94,16 +94,15 @@ struct utp_upiu_header { · 93 unmodified lines | ||
| 94 | 94 | }; |
| 95 | 95 | |
| 96 | 96 | /** |
| 97 | − * struct utp_upiu_query - upiu request buffer structure for | |
| 98 | − * query request. | |
| 99 | − * @opcode: command to perform B-0 | |
| 100 | − * @idn: a value that indicates the particular type of data B-1 | |
| 101 | − * @index: Index to further identify data B-2 | |
| 102 | − * @selector: Index to further identify data B-3 | |
| 97 | + * struct utp_upiu_query - QUERY REQUEST UPIU structure. | |
| 98 | + * @opcode: query function to perform B-0 | |
| 99 | + * @idn: descriptor or attribute identification number B-1 | |
| 100 | + * @index: Index that further identifies which data to access B-2 | |
| 101 | + * @selector: Index that further identifies which data to access B-3 | |
| 103 | 102 | * @reserved_osf: spec reserved field B-4,5 |
| 104 | − * @length: number of descriptor bytes to read/write B-6,7 | |
| 105 | − * @value: Attribute value to be written DW-5 | |
| 106 | − * @reserved: spec reserved DW-6,7 | |
| 103 | + * @length: number of descriptor bytes to read or write B-6,7 | |
| 104 | + * @value: if @opcode == UPIU_QUERY_OPCODE_WRITE_ATTR, the value to be written B-6,7 | |
| 105 | + * @reserved: reserved for future use DW-6,7 | |
| 107 | 106 | */ |
| 108 | 107 | struct utp_upiu_query { |
| 109 | 108 | __u8 opcode; |
| @@ -56,6 +56,9 @@ · 55 unmodified lines | ||
| 56 | 56 | #define SOF_TKN_SCHED_LP_MODE 207 |
| 57 | 57 | #define SOF_TKN_SCHED_MEM_USAGE 208 |
| 58 | 58 | #define SOF_TKN_SCHED_USE_CHAIN_DMA 209 |
| 59 | +#define SOF_TKN_SCHED_KCPS 210 | |
| 60 | +#define SOF_TKN_SCHED_DIRECTION 211 | |
| 61 | +#define SOF_TKN_SCHED_DIRECTION_VALID 212 | |
| 59 | 62 | |
| 60 | 63 | /* volume */ |
| 61 | 64 | #define SOF_TKN_VOLUME_RAMP_STEP_TYPE 250 |
| @@ -107,6 +110,9 @@ · 45 unmodified lines | ||
| 107 | 110 | #define SOF_TKN_COMP_NO_WNAME_IN_KCONTROL_NAME 417 |
| 108 | 111 | |
| 109 | 112 | #define SOF_TKN_COMP_SCHED_DOMAIN 418 |
| 113 | +#define SOF_TKN_COMP_DOMAIN_ID 419 | |
| 114 | +#define SOF_TKN_COMP_HEAP_BYTES_REQUIREMENT 420 | |
| 115 | +#define SOF_TKN_COMP_STACK_BYTES_REQUIREMENT 421 | |
| 110 | 116 | |
| 111 | 117 | /* SSP */ |
| 112 | 118 | #define SOF_TKN_INTEL_SSP_CLKS_CONTROL 500 |