History

Merge drm/drm-fixes into drm-misc-fixes

7.0-rc1 was just released, let's merge it to kick the new release cycle.

Maxime Ripard committed 8 months ago

Commit c17ee632 parents 803ec1f 6de23f817345 files · +652622 −240756Browse files

Showing the changes to include/uapi (73 of 17345 files). Show all

Unified · Split

73 files
  1. include/uapi/asm-generic/errno.h +2 −0
  2. include/uapi/asm-generic/unistd.h +4 −1
  3. include/uapi/drm/amdgpu_drm.h +20 −6
  4. include/uapi/drm/amdxdna_accel.h +8 −0
  5. include/uapi/drm/panfrost_drm.h +75 −1
  6. include/uapi/drm/panthor_drm.h +154 −3
  7. include/uapi/drm/rocket_accel.h +74 −24
  8. include/uapi/drm/xe_drm.h +89 −6
  9. include/uapi/linux/android/binder.h +1 −1
  10. include/uapi/linux/blkzoned.h +4 −2
  11. include/uapi/linux/bpf.h +28 −0
  12. include/uapi/linux/btrfs.h +1 −0
  13. include/uapi/linux/btrfs_tree.h +32 −2
  14. include/uapi/linux/comedi.h +1 −1
  15. include/uapi/linux/dev_energymodel.h +82 −0
  16. include/uapi/linux/dpll.h +1 −0
  17. include/uapi/linux/elf.h +2 −0
  18. include/uapi/linux/energy_model.h +0 −63
  19. include/uapi/linux/ethtool.h +21 −7
  20. include/uapi/linux/ext4.h +1 −1
  21. include/uapi/linux/fs.h +1 −0
  22. include/uapi/linux/hyperv.h +1 −1
  23. include/uapi/linux/idxd.h +133 −137
  24. include/uapi/linux/if_alg.h +1 −1
  25. include/uapi/linux/if_link.h +1 −0
  26. include/uapi/linux/io_uring.h +31 −1
  27. include/uapi/linux/io_uring/bpf_filter.h +68 −0
  28. include/uapi/linux/io_uring/query.h +5 −1
  29. include/uapi/linux/iommufd.h +39 −0
  30. include/uapi/linux/kfd_ioctl.h +13 −3
  31. include/uapi/linux/kfd_sysfs.h +2 −1
  32. include/uapi/linux/kvm.h +23 −1
  33. include/uapi/linux/landlock.h +39 −28
  34. include/uapi/linux/magic.h +1 −0
  35. include/uapi/linux/media/arm/mali-c55-config.h +0 −9
  36. include/uapi/linux/mempolicy.h +3 −0
  37. include/uapi/linux/mount.h +11 −2
  38. include/uapi/linux/mptcp_pm.h +1 −1
  39. include/uapi/linux/mshv.h +2 −0
  40. include/uapi/linux/netfilter_bridge.h +7 −6
  41. include/uapi/linux/netfilter_ipv4.h +4 −5
  42. include/uapi/linux/netfilter_ipv6.h +3 −4
  43. include/uapi/linux/nfs.h +1 −1
  44. include/uapi/linux/nfsd_netlink.h +1 −0
  45. include/uapi/linux/nilfs2_api.h +2 −2
  46. include/uapi/linux/nilfs2_ondisk.h +97 −66
  47. include/uapi/linux/nl80211.h +107 −5
  48. include/uapi/linux/pci.h +7 −0
  49. include/uapi/linux/pci_regs.h +64 −5
  50. include/uapi/linux/pcitest.h +1 −0
  51. include/uapi/linux/perf_event.h +24 −3
  52. include/uapi/linux/pkt_sched.h +1 −0
  53. include/uapi/linux/prctl.h +37 −0
  54. include/uapi/linux/rseq.h +40 −1
  55. include/uapi/linux/shm.h +0 −3
  56. include/uapi/linux/stddef.h +4 −0
  57. include/uapi/linux/sysctl.h +1 −2
  58. include/uapi/linux/taskstats.h +12 −1
  59. include/uapi/linux/tcp.h +23 −3
  60. include/uapi/linux/typelimits.h +8 −0
  61. include/uapi/linux/ublk_cmd.h +120 −1
  62. include/uapi/linux/v4l2-controls.h +63 −0
  63. include/uapi/linux/vbox_vmmdev_types.h +2 −2
  64. include/uapi/linux/vduse.h +80 −5
  65. include/uapi/linux/vfio.h +4 −0
  66. include/uapi/linux/videodev2.h +3 −0
  67. include/uapi/linux/virtio_ring.h +1 −4
  68. include/uapi/linux/vmclock-abi.h +20 −0
  69. include/uapi/rdma/bnxt_re-abi.h +16 −0
  70. include/uapi/rdma/ib_user_ioctl_cmds.h +16 −0
  71. include/uapi/rdma/mana-abi.h +3 −0
  72. include/uapi/scsi/scsi_bsg_ufs.h +8 −9
  73. include/uapi/sound/sof/tokens.h +6 −0
include/uapi/asm-generic/errno.h+2−0
@@ -55,6 +55,7 @@ · 54 unmodified lines
5555 #define EMULTIHOP 72 /* Multihop attempted */
5656 #define EDOTDOT 73 /* RFS specific error */
5757 #define EBADMSG 74 /* Not a data message */
58+#define EFSBADCRC EBADMSG /* Bad CRC detected */
5859 #define EOVERFLOW 75 /* Value too large for defined data type */
5960 #define ENOTUNIQ 76 /* Name not unique on network */
6061 #define EBADFD 77 /* File descriptor in bad state */
@@ -98,6 +99,7 @@ · 37 unmodified lines
9899 #define EINPROGRESS 115 /* Operation now in progress */
99100 #define ESTALE 116 /* Stale file handle */
100101 #define EUCLEAN 117 /* Structure needs cleaning */
102+#define EFSCORRUPTED EUCLEAN /* Filesystem is corrupted */
101103 #define ENOTNAM 118 /* Not a XENIX named type file */
102104 #define ENAVAIL 119 /* No XENIX semaphores available */
103105 #define EISNAM 120 /* Is a named type file */
include/uapi/asm-generic/unistd.h+4−1
@@ -860,8 +860,11 @@ __SYSCALL(__NR_file_setattr, sys_file_setattr) · 859 unmodified lines
860860 #define __NR_listns 470
861861 __SYSCALL(__NR_listns, sys_listns)
862862
863+#define __NR_rseq_slice_yield 471
864+__SYSCALL(__NR_rseq_slice_yield, sys_rseq_slice_yield)
865+
863866 #undef __NR_syscalls
864−#define __NR_syscalls 471
867+#define __NR_syscalls 472
865868
866869 /*
867870 * 32 bit systems traditionally used different
include/uapi/drm/amdgpu_drm.h+20−6
@@ -105,8 +105,6 @@ extern "C" { · 104 unmodified lines
105105 *
106106 * %AMDGPU_GEM_DOMAIN_DOORBELL Doorbell. It is an MMIO region for
107107 * signalling user mode queues.
108− *
109− * %AMDGPU_GEM_DOMAIN_MMIO_REMAP MMIO remap page (special mapping for HDP flushing).
110108 */
111109 #define AMDGPU_GEM_DOMAIN_CPU 0x1
112110 #define AMDGPU_GEM_DOMAIN_GTT 0x2
@@ -115,15 +113,13 @@ extern "C" { · 2 unmodified lines
115113 #define AMDGPU_GEM_DOMAIN_GWS 0x10
116114 #define AMDGPU_GEM_DOMAIN_OA 0x20
117115 #define AMDGPU_GEM_DOMAIN_DOORBELL 0x40
118−#define AMDGPU_GEM_DOMAIN_MMIO_REMAP 0x80
119116 #define AMDGPU_GEM_DOMAIN_MASK (AMDGPU_GEM_DOMAIN_CPU | \
120117 AMDGPU_GEM_DOMAIN_GTT | \
121118 AMDGPU_GEM_DOMAIN_VRAM | \
122119 AMDGPU_GEM_DOMAIN_GDS | \
123120 AMDGPU_GEM_DOMAIN_GWS | \
124121 AMDGPU_GEM_DOMAIN_OA | \
125− AMDGPU_GEM_DOMAIN_DOORBELL | \
126− AMDGPU_GEM_DOMAIN_MMIO_REMAP)
122+ AMDGPU_GEM_DOMAIN_DOORBELL)
127123
128124 /* Flag that CPU access will be required for the case of VRAM domain */
129125 #define AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED (1 << 0)
@@ -883,7 +879,7 @@ struct drm_amdgpu_gem_list_handles_entry { · 753 unmodified lines
883879 #define AMDGPU_VM_PAGE_WRITEABLE (1 << 2)
884880 /* executable mapping, new for VI */
885881 #define AMDGPU_VM_PAGE_EXECUTABLE (1 << 3)
886−/* partially resident texture */
882+/* unmapped page of partially resident textures */
887883 #define AMDGPU_VM_PAGE_PRT (1 << 4)
888884 /* MTYPE flags use bit 5 to 8 */
889885 #define AMDGPU_VM_MTYPE_MASK (0xf << 5)
@@ -1427,6 +1423,7 @@ struct drm_amdgpu_info_vbios { · 537 unmodified lines
14271423 #define AMDGPU_VRAM_TYPE_LPDDR4 11
14281424 #define AMDGPU_VRAM_TYPE_LPDDR5 12
14291425 #define AMDGPU_VRAM_TYPE_HBM3E 13
1426+#define AMDGPU_VRAM_TYPE_HBM4 14
14301427
14311428 struct drm_amdgpu_info_device {
14321429 /** PCI Device ID */
@@ -1629,9 +1626,25 @@ struct drm_amdgpu_info_uq_metadata_gfx { · 196 unmodified lines
16291626 __u32 csa_alignment;
16301627 };
16311628
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+
16321643 struct drm_amdgpu_info_uq_metadata {
16331644 union {
16341645 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;
16351648 };
16361649 };
16371650
@@ -1654,6 +1667,7 @@ struct drm_amdgpu_info_uq_metadata { · 16 unmodified lines
16541667 #define AMDGPU_FAMILY_GC_10_3_6 149 /* GC 10.3.6 */
16551668 #define AMDGPU_FAMILY_GC_10_3_7 151 /* GC 10.3.7 */
16561669 #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 */
16571671 #define AMDGPU_FAMILY_GC_12_0_0 152 /* GC 12.0.0 */
16581672
16591673 #if defined(__cplusplus)
include/uapi/drm/amdxdna_accel.h+8−0
@@ -19,6 +19,14 @@ extern "C" { · 18 unmodified lines
1919 #define AMDXDNA_INVALID_BO_HANDLE 0
2020 #define AMDXDNA_INVALID_FENCE_HANDLE 0
2121
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+
2230 enum amdxdna_device_type {
2331 AMDXDNA_DEV_TYPE_UNKNOWN = -1,
2432 AMDXDNA_DEV_TYPE_KMQ,
include/uapi/drm/panfrost_drm.h+75−1
@@ -24,6 +24,8 @@ extern "C" { · 23 unmodified lines
2424 #define DRM_PANFROST_SET_LABEL_BO 0x09
2525 #define DRM_PANFROST_JM_CTX_CREATE 0x0a
2626 #define DRM_PANFROST_JM_CTX_DESTROY 0x0b
27+#define DRM_PANFROST_SYNC_BO 0x0c
28+#define DRM_PANFROST_QUERY_BO_INFO 0x0d
2729
2830 #define DRM_IOCTL_PANFROST_SUBMIT DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_SUBMIT, struct drm_panfrost_submit)
2931 #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
3537 #define DRM_IOCTL_PANFROST_SET_LABEL_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_SET_LABEL_BO, struct drm_panfrost_set_label_bo)
3638 #define DRM_IOCTL_PANFROST_JM_CTX_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_JM_CTX_CREATE, struct drm_panfrost_jm_ctx_create)
3739 #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)
3842
3943 /*
4044 * Unstable ioctl(s): only exposed when the unsafe unstable_ioctls module
@@ -120,9 +124,12 @@ struct drm_panfrost_wait_bo { · 79 unmodified lines
120124 __s64 timeout_ns;
121125 };
122126
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+ */
124130 #define PANFROST_BO_NOEXEC 1
125131 #define PANFROST_BO_HEAP 2
132+#define PANFROST_BO_WB_MMAP 4
126133
127134 /**
128135 * struct drm_panfrost_create_bo - ioctl argument for creating Panfrost BOs.
@@ -228,6 +235,13 @@ enum drm_panfrost_param { · 99 unmodified lines
228235 DRM_PANFROST_PARAM_SYSTEM_TIMESTAMP,
229236 DRM_PANFROST_PARAM_SYSTEM_TIMESTAMP_FREQUENCY,
230237 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,
231245 };
232246
233247 struct drm_panfrost_get_param {
@@ -301,6 +315,66 @@ struct drm_panfrost_set_label_bo { · 67 unmodified lines
301315 __u64 label;
302316 };
303317
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+
304378 /* Definitions for coredump decoding in user space */
305379 #define PANFROSTDUMP_MAJOR 1
306380 #define PANFROSTDUMP_MINOR 0
include/uapi/drm/panthor_drm.h+154−3
@@ -144,6 +144,16 @@ enum drm_panthor_ioctl_id { · 143 unmodified lines
144144 * pgoff_t size.
145145 */
146146 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,
147157 };
148158
149159 /**
@@ -245,6 +255,26 @@ enum drm_panthor_dev_query_type { · 95 unmodified lines
245255 DRM_PANTHOR_DEV_QUERY_GROUP_PRIORITIES_INFO,
246256 };
247257
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+
248278 /**
249279 * struct drm_panthor_gpu_info - GPU information
250280 *
@@ -301,7 +331,16 @@ struct drm_panthor_gpu_info { · 50 unmodified lines
301331 */
302332 __u32 thread_max_barrier_size;
303333
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+ */
305344 __u32 coherency_features;
306345
307346 /** @texture_features: Texture features. */
@@ -310,8 +349,12 @@ struct drm_panthor_gpu_info { · 2 unmodified lines
310349 /** @as_present: Bitmask encoding the number of address-space exposed by the MMU. */
311350 __u32 as_present;
312351
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;
315358
316359 /** @shader_present: Bitmask encoding the shader cores exposed by the GPU. */
317360 __u64 shader_present;
@@ -638,6 +681,15 @@ struct drm_panthor_vm_get_state { · 320 unmodified lines
638681 enum drm_panthor_bo_flags {
639682 /** @DRM_PANTHOR_BO_NO_MMAP: The buffer object will never be CPU-mapped in userspace. */
640683 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),
641693 };
642694
643695 /**
@@ -1040,6 +1092,101 @@ struct drm_panthor_set_user_mmio_offset { · 396 unmodified lines
10401092 __u64 offset;
10411093 };
10421094
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+
10431190 /**
10441191 * DRM_IOCTL_PANTHOR() - Build a Panthor IOCTL number
10451192 * @__access: Access type. Must be R, W or RW.
@@ -1086,6 +1233,10 @@ enum { · 40 unmodified lines
10861233 DRM_IOCTL_PANTHOR(WR, BO_SET_LABEL, bo_set_label),
10871234 DRM_IOCTL_PANTHOR_SET_USER_MMIO_OFFSET =
10881235 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),
10891240 };
10901241
10911242 #if defined(__cplusplus)
include/uapi/drm/rocket_accel.h+74−24
@@ -26,20 +26,27 @@ extern "C" { · 25 unmodified lines
2626 *
2727 */
2828 struct drm_rocket_create_bo {
29− /** Input: Size of the requested BO. */
29+ /**
30+ * @size: Input: Size of the requested BO.
31+ */
3032 __u32 size;
3133
32− /** Output: GEM handle for the BO. */
34+ /**
35+ * @handle: Output: GEM handle for the BO.
36+ */
3337 __u32 handle;
3438
3539 /**
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.
3943 */
4044 __u64 dma_address;
4145
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+ */
4350 __u64 offset;
4451 };
4552
@@ -50,13 +57,19 @@ struct drm_rocket_create_bo { · 4 unmodified lines
5057 * synchronization.
5158 */
5259 struct drm_rocket_prep_bo {
53− /** Input: GEM handle of the buffer object. */
60+ /**
61+ * @handle: Input: GEM handle of the buffer object.
62+ */
5463 __u32 handle;
5564
56− /** Reserved, must be zero. */
65+ /**
66+ * @reserved: Reserved, must be zero.
67+ */
5768 __u32 reserved;
5869
59− /** Input: Amount of time to wait for NPU jobs. */
70+ /**
71+ * @timeout_ns: Input: Amount of time to wait for NPU jobs.
72+ */
6073 __s64 timeout_ns;
6174 };
6275
@@ -66,10 +79,14 @@ struct drm_rocket_prep_bo { · 3 unmodified lines
6679 * Synchronize caches for NPU access.
6780 */
6881 struct drm_rocket_fini_bo {
69− /** Input: GEM handle of the buffer object. */
82+ /**
83+ * @handle: Input: GEM handle of the buffer object.
84+ */
7085 __u32 handle;
7186
72− /** Reserved, must be zero. */
87+ /**
88+ * @reserved: Reserved, must be zero.
89+ */
7390 __u32 reserved;
7491 };
7592
@@ -79,10 +96,15 @@ struct drm_rocket_fini_bo { · 3 unmodified lines
7996 * A task is the smallest unit of work that can be run on the NPU.
8097 */
8198 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+ */
83102 __u32 regcmd;
84103
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+ */
86108 __u32 regcmd_count;
87109 };
88110
@@ -94,25 +116,44 @@ struct drm_rocket_task { · 5 unmodified lines
94116 * sequentially on the same core, to benefit from memory residency in SRAM.
95117 */
96118 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+ */
98122 __u64 tasks;
99123
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+ */
101128 __u64 in_bo_handles;
102129
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+ */
104134 __u64 out_bo_handles;
105135
106− /** Input: Number of tasks passed in. */
136+ /**
137+ * @task_count: Input: Number of tasks passed in.
138+ */
107139 __u32 task_count;
108140
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+ */
110145 __u32 task_struct_size;
111146
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+ */
113151 __u32 in_bo_handle_count;
114152
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+ */
116157 __u32 out_bo_handle_count;
117158 };
118159
@@ -122,16 +163,25 @@ struct drm_rocket_job { · 3 unmodified lines
122163 * The kernel will schedule the execution of these jobs in dependency order.
123164 */
124165 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+ */
126169 __u64 jobs;
127170
128− /** Input: Number of jobs passed in. */
171+ /**
172+ * @job_count: Input: Number of jobs passed in.
173+ */
129174 __u32 job_count;
130175
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+ */
132180 __u32 job_struct_size;
133181
134− /** Reserved, must be zero. */
182+ /**
183+ * @reserved: Reserved, must be zero.
184+ */
135185 __u64 reserved;
136186 };
137187
include/uapi/drm/xe_drm.h+89−6
@@ -106,6 +106,7 @@ extern "C" { · 105 unmodified lines
106106 #define DRM_XE_OBSERVATION 0x0b
107107 #define DRM_XE_MADVISE 0x0c
108108 #define DRM_XE_VM_QUERY_MEM_RANGE_ATTRS 0x0d
109+#define DRM_XE_EXEC_QUEUE_SET_PROPERTY 0x0e
109110
110111 /* Must be kept compact -- no holes */
111112
@@ -123,6 +124,7 @@ extern "C" { · 11 unmodified lines
123124 #define DRM_IOCTL_XE_OBSERVATION DRM_IOW(DRM_COMMAND_BASE + DRM_XE_OBSERVATION, struct drm_xe_observation_param)
124125 #define DRM_IOCTL_XE_MADVISE DRM_IOW(DRM_COMMAND_BASE + DRM_XE_MADVISE, struct drm_xe_madvise)
125126 #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)
126128
127129 /**
128130 * DOC: Xe IOCTL Extensions
@@ -210,8 +212,12 @@ struct drm_xe_ext_set_property { · 81 unmodified lines
210212 /** @pad: MBZ */
211213 __u32 pad;
212214
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+ };
215221
216222 /** @reserved: Reserved */
217223 __u64 reserved[2];
@@ -403,6 +409,9 @@ struct drm_xe_query_mem_regions { · 185 unmodified lines
403409 * has low latency hint support
404410 * - %DRM_XE_QUERY_CONFIG_FLAG_HAS_CPU_ADDR_MIRROR - Flag is set if the
405411 * 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+.
406415 * - %DRM_XE_QUERY_CONFIG_MIN_ALIGNMENT - Minimal memory alignment
407416 * required by this device, typically SZ_4K or SZ_64K
408417 * - %DRM_XE_QUERY_CONFIG_VA_BITS - Maximum bits of a virtual address
@@ -421,6 +430,7 @@ struct drm_xe_query_config { · 12 unmodified lines
421430 #define DRM_XE_QUERY_CONFIG_FLAG_HAS_VRAM (1 << 0)
422431 #define DRM_XE_QUERY_CONFIG_FLAG_HAS_LOW_LATENCY (1 << 1)
423432 #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)
424434 #define DRM_XE_QUERY_CONFIG_MIN_ALIGNMENT 2
425435 #define DRM_XE_QUERY_CONFIG_VA_BITS 3
426436 #define DRM_XE_QUERY_CONFIG_MAX_EXEC_QUEUE_PRIORITY 4
@@ -791,6 +801,17 @@ struct drm_xe_device_query { · 364 unmodified lines
791801 * need to use VRAM for display surfaces, therefore the kernel requires
792802 * setting this flag for such objects, otherwise an error is thrown on
793803 * 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.
794815 *
795816 * @cpu_caching supports the following values:
796817 * - %DRM_XE_GEM_CPU_CACHING_WB - Allocate the pages with write-back
@@ -837,6 +858,7 @@ struct drm_xe_gem_create { · 40 unmodified lines
837858 #define DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING (1 << 0)
838859 #define DRM_XE_GEM_CREATE_FLAG_SCANOUT (1 << 1)
839860 #define DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM (1 << 2)
861+#define DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION (1 << 3)
840862 /**
841863 * @flags: Flags, currently a mask of memory instances of where BO can
842864 * be placed
@@ -1252,6 +1274,17 @@ struct drm_xe_vm_bind { · 409 unmodified lines
12521274 * Given that going into a power-saving state kills PXP HWDRM sessions,
12531275 * runtime PM will be blocked while queues of this type are alive.
12541276 * 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.
12551288 *
12561289 * The example below shows how to use @drm_xe_exec_queue_create to create
12571290 * a simple exec_queue (no parallel submission) of class
@@ -1292,6 +1325,10 @@ struct drm_xe_exec_queue_create { · 34 unmodified lines
12921325 #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY 0
12931326 #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE 1
12941327 #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
12951332 /** @extensions: Pointer to the first extension struct, if any */
12961333 __u64 extensions;
12971334
@@ -1655,6 +1692,9 @@ enum drm_xe_oa_unit_type { · 357 unmodified lines
16551692
16561693 /** @DRM_XE_OA_UNIT_TYPE_OAM_SAG: OAM_SAG OA unit */
16571694 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,
16581698 };
16591699
16601700 /**
@@ -1677,12 +1717,19 @@ struct drm_xe_oa_unit { · 16 unmodified lines
16771717 #define DRM_XE_OA_CAPS_OA_BUFFER_SIZE (1 << 2)
16781718 #define DRM_XE_OA_CAPS_WAIT_NUM_REPORTS (1 << 3)
16791719 #define DRM_XE_OA_CAPS_OAM (1 << 4)
1720+#define DRM_XE_OA_CAPS_OA_UNIT_GT_ID (1 << 5)
16801721
16811722 /** @oa_timestamp_freq: OA timestamp freq */
16821723 __u64 oa_timestamp_freq;
16831724
1725+ /** @gt_id: gt id for this OA unit */
1726+ __u16 gt_id;
1727+
1728+ /** @reserved1: MBZ */
1729+ __u16 reserved1[3];
1730+
16841731 /** @reserved: MBZ */
1685− __u64 reserved[4];
1732+ __u64 reserved[3];
16861733
16871734 /** @num_engines: number of engines in @eci array */
16881735 __u64 num_engines;
@@ -2072,7 +2119,13 @@ struct drm_xe_madvise { · 383 unmodified lines
20722119 struct {
20732120 #define DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE 0
20742121 #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+ */
20762129 __u32 devmem_fd;
20772130
20782131 #define DRM_XE_MIGRATE_ALL_PAGES 0
@@ -2080,8 +2133,14 @@ struct drm_xe_madvise { · 1 unmodified line
20802133 /** @preferred_mem_loc.migration_policy: Page migration policy */
20812134 __u16 migration_policy;
20822135
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;
20852144
20862145 /** @preferred_mem_loc.reserved : Reserved */
20872146 __u64 reserved;
@@ -2274,6 +2333,30 @@ struct drm_xe_vm_query_mem_range_attr { · 186 unmodified lines
22742333
22752334 };
22762335
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+
22772360 #if defined(__cplusplus)
22782361 }
22792362 #endif
include/uapi/linux/android/binder.h+1−1
@@ -278,7 +278,7 @@ enum { · 277 unmodified lines
278278 * NOTE: Two special error codes you should check for when calling
279279 * in to the driver are:
280280 *
281− * EINTR -- The operation has been interupted. This should be
281+ * EINTR -- The operation has been interrupted. This should be
282282 * handled by retrying the ioctl() until a different error code
283283 * is returned.
284284 *
include/uapi/linux/blkzoned.h+4−2
@@ -81,7 +81,8 @@ enum blk_zone_cond { · 80 unmodified lines
8181 BLK_ZONE_COND_FULL = 0xE,
8282 BLK_ZONE_COND_OFFLINE = 0xF,
8383
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
8586 };
8687
8788 /**
@@ -100,7 +101,8 @@ enum blk_zone_report_flags { · 12 unmodified lines
100101 BLK_ZONE_REP_CAPACITY = (1U << 0),
101102
102103 /* 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
104106 };
105107
106108 /**
include/uapi/linux/bpf.h+28−0
@@ -119,6 +119,14 @@ enum bpf_cgroup_iter_order { · 118 unmodified lines
119119 BPF_CGROUP_ITER_DESCENDANTS_PRE, /* walk descendants in pre-order. */
120120 BPF_CGROUP_ITER_DESCENDANTS_POST, /* walk descendants in post-order. */
121121 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,
122130 };
123131
124132 union bpf_iter_link_info {
@@ -918,6 +926,16 @@ union bpf_iter_link_info { · 793 unmodified lines
918926 * Number of bytes read from the stream on success, or -1 if an
919927 * error occurred (in which case, *errno* is set appropriately).
920928 *
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+ *
921939 * NOTES
922940 * eBPF objects (maps and programs) can be shared between processes.
923941 *
@@ -974,6 +992,7 @@ enum bpf_cmd { · 50 unmodified lines
974992 BPF_PROG_BIND_MAP,
975993 BPF_TOKEN_CREATE,
976994 BPF_PROG_STREAM_READ_BY_FD,
995+ BPF_PROG_ASSOC_STRUCT_OPS,
977996 __MAX_BPF_CMD,
978997 };
979998
@@ -1134,6 +1153,7 @@ enum bpf_attach_type { · 154 unmodified lines
11341153 BPF_NETKIT_PEER,
11351154 BPF_TRACE_KPROBE_SESSION,
11361155 BPF_TRACE_UPROBE_SESSION,
1156+ BPF_TRACE_FSESSION,
11371157 __MAX_BPF_ATTACH_TYPE
11381158 };
11391159
@@ -1373,6 +1393,8 @@ enum { · 233 unmodified lines
13731393 BPF_NOEXIST = 1, /* create new element if it didn't exist */
13741394 BPF_EXIST = 2, /* update existing element */
13751395 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 */
13761398 };
13771399
13781400 /* flags for BPF_MAP_CREATE command */
@@ -1894,6 +1916,12 @@ union bpf_attr { · 515 unmodified lines
18941916 __u32 prog_fd;
18951917 } prog_stream_read;
18961918
1919+ struct {
1920+ __u32 map_fd;
1921+ __u32 prog_fd;
1922+ __u32 flags;
1923+ } prog_assoc_struct_ops;
1924+
18971925 } __attribute__((aligned(8)));
18981926
18991927 /* The description below is an attempt at providing documentation to eBPF
include/uapi/linux/btrfs.h+1−0
@@ -336,6 +336,7 @@ struct btrfs_ioctl_fs_info_args { · 335 unmodified lines
336336 #define BTRFS_FEATURE_INCOMPAT_EXTENT_TREE_V2 (1ULL << 13)
337337 #define BTRFS_FEATURE_INCOMPAT_RAID_STRIPE_TREE (1ULL << 14)
338338 #define BTRFS_FEATURE_INCOMPAT_SIMPLE_QUOTA (1ULL << 16)
339+#define BTRFS_FEATURE_INCOMPAT_REMAP_TREE (1ULL << 17)
339340
340341 struct btrfs_ioctl_feature_flags {
341342 __u64 compat_flags;
include/uapi/linux/btrfs_tree.h+32−2
@@ -76,6 +76,9 @@ · 75 unmodified lines
7676 /* Tracks RAID stripes in block groups. */
7777 #define BTRFS_RAID_STRIPE_TREE_OBJECTID 12ULL
7878
79+/* Holds details of remapped addresses after relocation. */
80+#define BTRFS_REMAP_TREE_OBJECTID 13ULL
81+
7982 /* device stats in the device tree */
8083 #define BTRFS_DEV_STATS_OBJECTID 0ULL
8184
@@ -282,6 +285,10 @@ · 200 unmodified lines
282285
283286 #define BTRFS_RAID_STRIPE_KEY 230
284287
288+#define BTRFS_IDENTITY_REMAP_KEY 234
289+#define BTRFS_REMAP_KEY 235
290+#define BTRFS_REMAP_BACKREF_KEY 236
291+
285292 /*
286293 * Records the overall state of the qgroups.
287294 * There's only one instance of this key present,
@@ -714,9 +721,12 @@ struct btrfs_super_block { · 426 unmodified lines
714721 __u8 metadata_uuid[BTRFS_FSID_SIZE];
715722
716723 __u64 nr_global_roots;
724+ __le64 remap_root;
725+ __le64 remap_root_generation;
726+ __u8 remap_root_level;
717727
718728 /* Future expansion */
719− __le64 reserved[27];
729+ __u8 reserved[199];
720730 __u8 sys_chunk_array[BTRFS_SYSTEM_CHUNK_ARRAY_SIZE];
721731 struct btrfs_root_backup super_roots[BTRFS_NUM_BACKUP_ROOTS];
722732
@@ -1161,12 +1171,15 @@ struct btrfs_dev_replace_item { · 438 unmodified lines
11611171 #define BTRFS_BLOCK_GROUP_RAID6 (1ULL << 8)
11621172 #define BTRFS_BLOCK_GROUP_RAID1C3 (1ULL << 9)
11631173 #define BTRFS_BLOCK_GROUP_RAID1C4 (1ULL << 10)
1174+#define BTRFS_BLOCK_GROUP_REMAPPED (1ULL << 11)
1175+#define BTRFS_BLOCK_GROUP_METADATA_REMAP (1ULL << 12)
11641176 #define BTRFS_BLOCK_GROUP_RESERVED (BTRFS_AVAIL_ALLOC_BIT_SINGLE | \
11651177 BTRFS_SPACE_INFO_GLOBAL_RSV)
11661178
11671179 #define BTRFS_BLOCK_GROUP_TYPE_MASK (BTRFS_BLOCK_GROUP_DATA | \
11681180 BTRFS_BLOCK_GROUP_SYSTEM | \
1169− BTRFS_BLOCK_GROUP_METADATA)
1181+ BTRFS_BLOCK_GROUP_METADATA | \
1182+ BTRFS_BLOCK_GROUP_METADATA_REMAP)
11701183
11711184 #define BTRFS_BLOCK_GROUP_PROFILE_MASK (BTRFS_BLOCK_GROUP_RAID0 | \
11721185 BTRFS_BLOCK_GROUP_RAID1 | \
@@ -1219,6 +1232,14 @@ struct btrfs_block_group_item { · 46 unmodified lines
12191232 __le64 flags;
12201233 } __attribute__ ((__packed__));
12211234
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+
12221243 struct btrfs_free_space_info {
12231244 __le32 extent_count;
12241245 __le32 flags;
@@ -1323,4 +1344,13 @@ struct btrfs_verity_descriptor_item { · 98 unmodified lines
13231344 __u8 encryption;
13241345 } __attribute__ ((__packed__));
13251346
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+
13261356 #endif /* _BTRFS_CTREE_H_ */
include/uapi/linux/comedi.h+1−1
@@ -640,7 +640,7 @@ struct comedi_chaninfo { · 639 unmodified lines
640640
641641 /**
642642 * 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
644644 * (bits 23:16) and range table length (bits 15:0).
645645 * @range_ptr: Pointer to array of @struct comedi_krange to be filled
646646 * in with the range table for the channel or subdevice.
include/uapi/linux/dev_energymodel.h+82−0
@@ -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 */
include/uapi/linux/dpll.h+1−0
@@ -253,6 +253,7 @@ enum dpll_a_pin { · 252 unmodified lines
253253 DPLL_A_PIN_ESYNC_PULSE,
254254 DPLL_A_PIN_REFERENCE_SYNC,
255255 DPLL_A_PIN_PHASE_ADJUST_GRAN,
256+ DPLL_A_PIN_FRACTIONAL_FREQUENCY_OFFSET_PPT,
256257
257258 __DPLL_A_PIN_MAX,
258259 DPLL_A_PIN_MAX = (__DPLL_A_PIN_MAX - 1)
include/uapi/linux/elf.h+2−0
@@ -545,6 +545,8 @@ typedef struct elf64_shdr { · 544 unmodified lines
545545 #define NT_RISCV_VECTOR 0x901 /* RISC-V vector registers */
546546 #define NN_RISCV_TAGGED_ADDR_CTRL "LINUX"
547547 #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 */
548550 #define NN_LOONGARCH_CPUCFG "LINUX"
549551 #define NT_LOONGARCH_CPUCFG 0xa00 /* LoongArch CPU config registers */
550552 #define NN_LOONGARCH_CSR "LINUX"
include/uapi/linux/energy_model.h+0−63
@@ -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 */
include/uapi/linux/ethtool.h+21−7
@@ -15,13 +15,10 @@ · 14 unmodified lines
1515 #define _UAPI_LINUX_ETHTOOL_H
1616
1717 #include <linux/const.h>
18+#include <linux/typelimits.h>
1819 #include <linux/types.h>
1920 #include <linux/if_ether.h>
2021
21−#ifndef __KERNEL__
22−#include <limits.h> /* for INT_MAX */
23−#endif
24−
2522 /* All structures exposed to userland should be defined such that they
2623 * have the same layout for 32-bit and 64-bit userland.
2724 */
@@ -603,6 +600,8 @@ enum ethtool_link_ext_state { · 575 unmodified lines
603600 ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED,
604601 ETHTOOL_LINK_EXT_STATE_OVERHEAT,
605602 ETHTOOL_LINK_EXT_STATE_MODULE,
603+ ETHTOOL_LINK_EXT_STATE_OTP_SPEED_VIOLATION,
604+ ETHTOOL_LINK_EXT_STATE_BMC_REQUEST_DOWN,
606605 };
607606
608607 /* More information in addition to ETHTOOL_LINK_EXT_STATE_AUTONEG. */
@@ -1094,13 +1093,20 @@ enum ethtool_module_fw_flash_status { · 485 unmodified lines
10941093 * struct ethtool_gstrings - string set for data tagging
10951094 * @cmd: Command number = %ETHTOOL_GSTRINGS
10961095 * @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
10981097 * @data: Buffer for strings. Each string is null-padded to a size of
10991098 * %ETH_GSTRING_LEN.
11001099 *
11011100 * Users must use %ETHTOOL_GSSET_INFO to find the number of strings in
11021101 * the string set. They must allocate a buffer of the appropriate
11031102 * 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.
11041110 */
11051111 struct ethtool_gstrings {
11061112 __u32 cmd;
@@ -1177,13 +1183,20 @@ struct ethtool_test { · 70 unmodified lines
11771183 /**
11781184 * struct ethtool_stats - device-specific statistics
11791185 * @cmd: Command number = %ETHTOOL_GSTATS
1180− * @n_stats: On return, the number of statistics
1186+ * @n_stats: Number of statistics
11811187 * @data: Array of statistics
11821188 *
11831189 * Users must use %ETHTOOL_GSSET_INFO or %ETHTOOL_GDRVINFO to find the
11841190 * number of statistics that will be returned. They must allocate a
11851191 * buffer of the appropriate size (8 * number of statistics)
11861192 * 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.
11871200 */
11881201 struct ethtool_stats {
11891202 __u32 cmd;
@@ -2190,6 +2203,7 @@ enum ethtool_link_mode_bit_indices { · 1000 unmodified lines
21902203 #define SPEED_40000 40000
21912204 #define SPEED_50000 50000
21922205 #define SPEED_56000 56000
2206+#define SPEED_80000 80000
21932207 #define SPEED_100000 100000
21942208 #define SPEED_200000 200000
21952209 #define SPEED_400000 400000
@@ -2200,7 +2214,7 @@ enum ethtool_link_mode_bit_indices { · 4 unmodified lines
22002214
22012215 static inline int ethtool_validate_speed(__u32 speed)
22022216 {
2203− return speed <= INT_MAX || speed == (__u32)SPEED_UNKNOWN;
2217+ return speed <= __KERNEL_INT_MAX || speed == (__u32)SPEED_UNKNOWN;
22042218 }
22052219
22062220 /* Duplex, half or full. */
include/uapi/linux/ext4.h+1−1
@@ -139,7 +139,7 @@ struct ext4_tune_sb_params { · 138 unmodified lines
139139 __u32 clear_feature_incompat_mask;
140140 __u32 clear_feature_ro_compat_mask;
141141 __u8 mount_opts[64];
142− __u8 pad[64];
142+ __u8 pad[68];
143143 };
144144
145145 #define EXT4_TUNE_FL_ERRORS_BEHAVIOR 0x00000001
include/uapi/linux/fs.h+1−0
@@ -253,6 +253,7 @@ struct file_attr { · 252 unmodified lines
253253 #define FS_XFLAG_FILESTREAM 0x00004000 /* use filestream allocator */
254254 #define FS_XFLAG_DAX 0x00008000 /* use DAX for IO */
255255 #define FS_XFLAG_COWEXTSIZE 0x00010000 /* CoW extent size allocator hint */
256+#define FS_XFLAG_VERITY 0x00020000 /* fs-verity enabled */
256257 #define FS_XFLAG_HASATTR 0x80000000 /* no DIFLAG for this */
257258
258259 /* the read-only stuff doesn't really belong here, but any other place is
include/uapi/linux/hyperv.h+1−1
@@ -362,7 +362,7 @@ struct hv_kvp_exchg_msg_value { · 361 unmodified lines
362362 __u8 value[HV_KVP_EXCHANGE_MAX_VALUE_SIZE];
363363 __u32 value_u32;
364364 __u64 value_u64;
365− };
365+ } __attribute__((packed));
366366 } __attribute__((packed));
367367
368368 struct hv_kvp_msg_enumerate {
include/uapi/linux/idxd.h+133−137
@@ -3,11 +3,7 @@ · 2 unmodified lines
33 #ifndef _USR_IDXD_H_
44 #define _USR_IDXD_H_
55
6−#ifdef __KERNEL__
76 #include <linux/types.h>
8−#else
9−#include <stdint.h>
10−#endif
117
128 /* Driver command error status */
139 enum idxd_scmd_stat {
@@ -176,132 +172,132 @@ enum iax_completion_status { · 162 unmodified lines
176172 #define DSA_COMP_STATUS(status) ((status) & DSA_COMP_STATUS_MASK)
177173
178174 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;
185181 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;
192188 };
193189 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;
198194 };
199195 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;
203199 };
204− uint16_t int_handle;
205− uint16_t rsvd1;
200+ __u16 int_handle;
201+ __u16 rsvd1;
206202 union {
207− uint8_t expected_res;
203+ __u8 expected_res;
208204 /* create delta record */
209205 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;
214210 };
215− uint32_t delta_rec_size;
216− uint64_t dest2;
211+ __u32 delta_rec_size;
212+ __u64 dest2;
217213 /* CRC */
218214 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;
222218 };
223219 /* DIF check or strip */
224220 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;
232228 };
233229 /* DIF insert */
234230 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;
242238 };
243239 /* DIF update */
244240 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;
255251 };
256252
257253 /* Fill */
258− uint64_t pattern_upper;
254+ __u64 pattern_upper;
259255
260256 /* Translation fetch */
261257 struct {
262− uint64_t transl_fetch_res;
263− uint32_t region_stride;
258+ __u64 transl_fetch_res;
259+ __u32 region_stride;
264260 };
265261
266262 /* DIX generate */
267263 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;
275271 };
276272
277− uint8_t op_specific[24];
273+ __u8 op_specific[24];
278274 };
279275 } __attribute__((packed));
280276
281277 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;
292288 union {
293− uint16_t compr_flags;
294− uint16_t decompr_flags;
289+ __u16 compr_flags;
290+ __u16 decompr_flags;
295291 };
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;
301297 } __attribute__((packed));
302298
303299 struct dsa_raw_desc {
304− uint64_t field[8];
300+ __u64 field[8];
305301 } __attribute__((packed));
306302
307303 /*
@@ -309,91 +305,91 @@ struct dsa_raw_desc { · 1 unmodified line
309305 * volatile and prevent the compiler from optimize the read.
310306 */
311307 struct dsa_completion_record {
312− volatile uint8_t status;
308+ volatile __u8 status;
313309 union {
314− uint8_t result;
315− uint8_t dif_status;
310+ __u8 result;
311+ __u8 dif_status;
316312 };
317− uint8_t fault_info;
318− uint8_t rsvd;
313+ __u8 fault_info;
314+ __u8 rsvd;
319315 union {
320− uint32_t bytes_completed;
321− uint32_t descs_completed;
316+ __u32 bytes_completed;
317+ __u32 descs_completed;
322318 };
323− uint64_t fault_addr;
319+ __u64 fault_addr;
324320 union {
325321 /* common record */
326322 struct {
327− uint32_t invalid_flags:24;
328− uint32_t rsvd2:8;
323+ __u32 invalid_flags:24;
324+ __u32 rsvd2:8;
329325 };
330326
331− uint32_t delta_rec_size;
332− uint64_t crc_val;
327+ __u32 delta_rec_size;
328+ __u64 crc_val;
333329
334330 /* DIF check & strip */
335331 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;
339335 };
340336
341337 /* DIF insert */
342338 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;
347343 };
348344
349345 /* DIF update */
350346 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;
357353 };
358354
359355 /* DIX generate */
360356 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;
365361 };
366362
367− uint8_t op_specific[16];
363+ __u8 op_specific[16];
368364 };
369365 } __attribute__((packed));
370366
371367 struct dsa_raw_completion_record {
372− uint64_t field[4];
368+ __u64 field[4];
373369 } __attribute__((packed));
374370
375371 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];
393389 } __attribute__((packed));
394390
395391 struct iax_raw_completion_record {
396− uint64_t field[8];
392+ __u64 field[8];
397393 } __attribute__((packed));
398394
399395 #endif
include/uapi/linux/if_alg.h+1−1
@@ -42,7 +42,7 @@ struct sockaddr_alg_new { · 41 unmodified lines
4242
4343 struct af_alg_iv {
4444 __u32 ivlen;
45− __u8 iv[];
45+ __u8 iv[] __counted_by(ivlen);
4646 };
4747
4848 /* Socket options */
include/uapi/linux/if_link.h+1−0
@@ -1443,6 +1443,7 @@ enum { · 1442 unmodified lines
14431443 IFLA_GENEVE_DF,
14441444 IFLA_GENEVE_INNER_PROTO_INHERIT,
14451445 IFLA_GENEVE_PORT_RANGE,
1446+ IFLA_GENEVE_GRO_HINT,
14461447 __IFLA_GENEVE_MAX
14471448 };
14481449 #define IFLA_GENEVE_MAX (__IFLA_GENEVE_MAX - 1)
include/uapi/linux/io_uring.h+31−1
@@ -237,6 +237,18 @@ enum io_uring_sqe_flags_bit { · 236 unmodified lines
237237 */
238238 #define IORING_SETUP_SQE_MIXED (1U << 19)
239239
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+
240252 enum io_uring_op {
241253 IORING_OP_NOP,
242254 IORING_OP_READV,
@@ -700,6 +712,9 @@ enum io_uring_register_op { · 457 unmodified lines
700712 /* auxiliary zcrx configuration, see enum zcrx_ctrl_op */
701713 IORING_REGISTER_ZCRX_CTRL = 36,
702714
715+ /* register bpf filtering programs */
716+ IORING_REGISTER_BPF_FILTER = 37,
717+
703718 /* this goes last */
704719 IORING_REGISTER_LAST,
705720
@@ -805,6 +820,13 @@ struct io_uring_restriction { · 99 unmodified lines
805820 __u32 resv2[3];
806821 };
807822
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+
808830 struct io_uring_clock_register {
809831 __u32 clockid;
810832 __u32 __resv[3];
@@ -1068,6 +1090,14 @@ enum zcrx_reg_flags { · 257 unmodified lines
10681090 ZCRX_REG_IMPORT = 1,
10691091 };
10701092
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+
10711101 /*
10721102 * Argument for IORING_REGISTER_ZCRX_IFQ
10731103 */
@@ -1082,7 +1112,7 @@ struct io_uring_zcrx_ifq_reg { · 8 unmodified lines
10821112
10831113 struct io_uring_zcrx_offsets offsets;
10841114 __u32 zcrx_id;
1085− __u32 __resv2;
1115+ __u32 rx_buf_len;
10861116 __u64 __resv[3];
10871117 };
10881118
include/uapi/linux/io_uring/bpf_filter.h+68−0
@@ -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
include/uapi/linux/io_uring/query.h+5−1
@@ -1,6 +1,9 @@
11 /* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR MIT */
22 /*
33 * 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.
47 */
58 #ifndef LINUX_IO_URING_QUERY_H
69 #define LINUX_IO_URING_QUERY_H
@@ -50,7 +53,8 @@ struct io_uring_query_zcrx { · 43 unmodified lines
5053 __u64 area_flags;
5154 /* The number of supported ZCRX_CTRL_* opcodes */
5255 __u32 nr_ctrl_opcodes;
53− __u32 __resv1;
56+ /* Bitmask of ZCRX_FEATURE_* indicating which features are available */
57+ __u32 features;
5458 /* The refill ring header size */
5559 __u32 rq_hdr_size;
5660 /* The alignment for the header */
include/uapi/linux/iommufd.h+39−0
@@ -465,16 +465,27 @@ struct iommu_hwpt_arm_smmuv3 { · 464 unmodified lines
465465 __aligned_le64 ste[2];
466466 };
467467
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+
468477 /**
469478 * enum iommu_hwpt_data_type - IOMMU HWPT Data Type
470479 * @IOMMU_HWPT_DATA_NONE: no data
471480 * @IOMMU_HWPT_DATA_VTD_S1: Intel VT-d stage-1 page table
472481 * @IOMMU_HWPT_DATA_ARM_SMMUV3: ARM SMMUv3 Context Descriptor Table
482+ * @IOMMU_HWPT_DATA_AMD_GUEST: AMD IOMMU guest page table
473483 */
474484 enum iommu_hwpt_data_type {
475485 IOMMU_HWPT_DATA_NONE = 0,
476486 IOMMU_HWPT_DATA_VTD_S1 = 1,
477487 IOMMU_HWPT_DATA_ARM_SMMUV3 = 2,
488+ IOMMU_HWPT_DATA_AMD_GUEST = 3,
478489 };
479490
480491 /**
@@ -623,6 +634,32 @@ struct iommu_hw_info_tegra241_cmdqv { · 142 unmodified lines
623634 __u8 __reserved;
624635 };
625636
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+
626663 /**
627664 * enum iommu_hw_info_type - IOMMU Hardware Info Types
628665 * @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
632669 * @IOMMU_HW_INFO_TYPE_ARM_SMMUV3: ARM SMMUv3 iommu info type
633670 * @IOMMU_HW_INFO_TYPE_TEGRA241_CMDQV: NVIDIA Tegra241 CMDQV (extension for ARM
634671 * SMMUv3) info type
672+ * @IOMMU_HW_INFO_TYPE_AMD: AMD IOMMU info type
635673 */
636674 enum iommu_hw_info_type {
637675 IOMMU_HW_INFO_TYPE_NONE = 0,
@@ -639,6 +677,7 @@ enum iommu_hw_info_type { · 1 unmodified line
639677 IOMMU_HW_INFO_TYPE_INTEL_VTD = 1,
640678 IOMMU_HW_INFO_TYPE_ARM_SMMUV3 = 2,
641679 IOMMU_HW_INFO_TYPE_TEGRA241_CMDQV = 3,
680+ IOMMU_HW_INFO_TYPE_AMD = 4,
642681 };
643682
644683 /**
include/uapi/linux/kfd_ioctl.h+13−3
@@ -44,9 +44,13 @@ · 43 unmodified lines
4444 * - 1.16 - Add contiguous VRAM allocation flag
4545 * - 1.17 - Add SDMA queue creation with target SDMA engine ID
4646 * - 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
4751 */
4852 #define KFD_IOCTL_MAJOR_VERSION 1
49−#define KFD_IOCTL_MINOR_VERSION 18
53+#define KFD_IOCTL_MINOR_VERSION 22
5054
5155 struct kfd_ioctl_get_version_args {
5256 __u32 major_version; /* from KFD */
@@ -84,7 +88,7 @@ struct kfd_ioctl_create_queue_args { · 31 unmodified lines
8488 __u32 ctx_save_restore_size; /* to KFD */
8589 __u32 ctl_stack_size; /* to KFD */
8690 __u32 sdma_engine_id; /* to KFD */
87− __u32 pad;
91+ __u32 metadata_ring_size; /* to KFD */
8892 };
8993
9094 struct kfd_ioctl_destroy_queue_args {
@@ -145,6 +149,8 @@ struct kfd_dbg_device_info_entry { · 54 unmodified lines
145149 __u32 num_xcc;
146150 __u32 capability;
147151 __u32 debug_prop;
152+ __u32 capability2;
153+ __u32 pad;
148154 };
149155
150156 /* 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
945951 enum kfd_dbg_trap_flags {
946952 KFD_DBG_TRAP_FLAG_SINGLE_MEM_OP = 1,
947953 KFD_DBG_TRAP_FLAG_SINGLE_ALU_OP = 2,
954+ KFD_DBG_TRAP_FLAG_LDS_OUT_OF_ADDR_RANGE = 4
948955 };
949956
950957 /* Trap exceptions */
@@ -1671,7 +1678,10 @@ struct kfd_ioctl_dbg_trap_args { · 720 unmodified lines
16711678 #define AMDKFD_IOC_DBG_TRAP \
16721679 AMDKFD_IOWR(0x26, struct kfd_ioctl_dbg_trap_args)
16731680
1681+#define AMDKFD_IOC_CREATE_PROCESS \
1682+ AMDKFD_IO(0x27)
1683+
16741684 #define AMDKFD_COMMAND_START 0x01
1675−#define AMDKFD_COMMAND_END 0x27
1685+#define AMDKFD_COMMAND_END 0x28
16761686
16771687 #endif
include/uapi/linux/kfd_sysfs.h+2−1
@@ -64,7 +64,8 @@ · 63 unmodified lines
6464 #define HSA_CAP_RESERVED 0x000f8000
6565
6666 #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
6869
6970 /* debug_prop bits in node properties */
7071 #define HSA_DBG_WATCH_ADDR_MASK_LO_BIT_MASK 0x0000000f
include/uapi/linux/kvm.h+23−1
@@ -135,6 +135,12 @@ struct kvm_xen_exit { · 134 unmodified lines
135135 } u;
136136 };
137137
138+struct kvm_exit_snp_req_certs {
139+ __u64 gpa;
140+ __u64 npages;
141+ __u64 ret;
142+};
143+
138144 #define KVM_S390_GET_SKEYS_NONE 1
139145 #define KVM_S390_SKEYS_MAX 1048576
140146
@@ -180,6 +186,8 @@ struct kvm_xen_exit { · 39 unmodified lines
180186 #define KVM_EXIT_MEMORY_FAULT 39
181187 #define KVM_EXIT_TDX 40
182188 #define KVM_EXIT_ARM_SEA 41
189+#define KVM_EXIT_ARM_LDST64B 42
190+#define KVM_EXIT_SNP_REQ_CERTS 43
183191
184192 /* For KVM_EXIT_INTERNAL_ERROR */
185193 /* Emulate instruction failed. */
@@ -402,7 +410,7 @@ struct kvm_run { · 216 unmodified lines
402410 } eoi;
403411 /* KVM_EXIT_HYPERV */
404412 struct kvm_hyperv_exit hyperv;
405− /* KVM_EXIT_ARM_NISV */
413+ /* KVM_EXIT_ARM_NISV / KVM_EXIT_ARM_LDST64B */
406414 struct {
407415 __u64 esr_iss;
408416 __u64 fault_ipa;
@@ -482,6 +490,8 @@ struct kvm_run { · 73 unmodified lines
482490 __u64 gva;
483491 __u64 gpa;
484492 } arm_sea;
493+ /* KVM_EXIT_SNP_REQ_CERTS */
494+ struct kvm_exit_snp_req_certs snp_req_certs;
485495 /* Fix the size of the union. */
486496 char padding[256];
487497 };
@@ -974,6 +984,7 @@ struct kvm_enable_cap { · 486 unmodified lines
974984 #define KVM_CAP_GUEST_MEMFD_FLAGS 244
975985 #define KVM_CAP_ARM_SEA_TO_USER 245
976986 #define KVM_CAP_S390_USER_OPEREXEC 246
987+#define KVM_CAP_S390_KEYOP 247
977988
978989 struct kvm_irq_routing_irqchip {
979990 __u32 irqchip;
@@ -1219,6 +1230,16 @@ struct kvm_vfio_spapr_tce { · 239 unmodified lines
12191230 __s32 tablefd;
12201231 };
12211232
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+
12221243 /*
12231244 * KVM_CREATE_VCPU receives as a parameter the vcpu slot, and returns
12241245 * a vcpu fd.
@@ -1238,6 +1259,7 @@ struct kvm_vfio_spapr_tce { · 13 unmodified lines
12381259 #define KVM_S390_UCAS_MAP _IOW(KVMIO, 0x50, struct kvm_s390_ucas_mapping)
12391260 #define KVM_S390_UCAS_UNMAP _IOW(KVMIO, 0x51, struct kvm_s390_ucas_mapping)
12401261 #define KVM_S390_VCPU_FAULT _IOW(KVMIO, 0x52, unsigned long)
1262+#define KVM_S390_KEYOP _IOWR(KVMIO, 0x53, struct kvm_s390_keyop)
12411263
12421264 /* Device model IOC */
12431265 #define KVM_CREATE_IRQCHIP _IO(KVMIO, 0x60)
include/uapi/linux/landlock.h+39−28
@@ -117,11 +117,24 @@ struct landlock_ruleset_attr { · 116 unmodified lines
117117 * future nested domains, not the one being created. It can also be used
118118 * with a @ruleset_fd value of -1 to mute subdomain logs without creating a
119119 * 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.
120132 */
121133 /* clang-format off */
122134 #define LANDLOCK_RESTRICT_SELF_LOG_SAME_EXEC_OFF (1U << 0)
123135 #define LANDLOCK_RESTRICT_SELF_LOG_NEW_EXEC_ON (1U << 1)
124136 #define LANDLOCK_RESTRICT_SELF_LOG_SUBDOMAINS_OFF (1U << 2)
137+#define LANDLOCK_RESTRICT_SELF_TSYNC (1U << 3)
125138 /* clang-format on */
126139
127140 /**
@@ -182,11 +195,13 @@ struct landlock_net_port_attr { · 54 unmodified lines
182195 * It should be noted that port 0 passed to :manpage:`bind(2)` will bind
183196 * to an available port from the ephemeral port range. This can be
184197 * 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)``.
186200 *
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
188202 * 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.
190205 */
191206 __u64 port;
192207 };
@@ -216,6 +231,23 @@ struct landlock_net_port_attr { · 23 unmodified lines
216231 * :manpage:`ftruncate(2)`, :manpage:`creat(2)`, or :manpage:`open(2)` with
217232 * ``O_TRUNC``. This access right is available since the third version of the
218233 * 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.
219251 *
220252 * Whether an opened file can be truncated with :manpage:`ftruncate(2)` or used
221253 * 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
275307 * If multiple requirements are not met, the ``EACCES`` error code takes
276308 * precedence over ``EXDEV``.
277309 *
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− *
298310 * .. warning::
299311 *
300312 * It is currently not possible to restrict some file-related actions
@@ -332,13 +344,12 @@ struct landlock_net_port_attr { · 31 unmodified lines
332344 * These flags enable to restrict a sandboxed process to a set of network
333345 * actions.
334346 *
335− * This is supported since Landlock ABI version 4.
336− *
337347 * The following access rights apply to TCP port numbers:
338348 *
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.
342353 */
343354 /* clang-format off */
344355 #define LANDLOCK_ACCESS_NET_BIND_TCP (1ULL << 0)
include/uapi/linux/magic.h+1−0
@@ -104,5 +104,6 @@ · 103 unmodified lines
104104 #define SECRETMEM_MAGIC 0x5345434d /* "SECM" */
105105 #define PID_FS_MAGIC 0x50494446 /* "PIDF" */
106106 #define GUEST_MEMFD_MAGIC 0x474d454d /* "GMEM" */
107+#define NULL_FS_MAGIC 0x4E554C4C /* "NULL" */
107108
108109 #endif /* __LINUX_MAGIC_H__ */
include/uapi/linux/media/arm/mali-c55-config.h+0−9
@@ -194,15 +194,6 @@ struct mali_c55_stats_buffer { · 193 unmodified lines
194194 __u32 reserved3[15];
195195 } __attribute__((packed));
196196
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−
206197 /**
207198 * enum mali_c55_param_block_type - Enumeration of Mali-C55 parameter blocks
208199 *
include/uapi/linux/mempolicy.h+3−0
@@ -39,6 +39,9 @@ enum { · 38 unmodified lines
3939 #define MPOL_MODE_FLAGS \
4040 (MPOL_F_STATIC_NODES | MPOL_F_RELATIVE_NODES | MPOL_F_NUMA_BALANCING)
4141
42+/* Whether the nodemask is specified by users */
43+#define MPOL_USER_NODEMASK_FLAGS (MPOL_F_STATIC_NODES | MPOL_F_RELATIVE_NODES)
44+
4245 /* Flags for get_mempolicy */
4346 #define MPOL_F_NODE (1<<0) /* return next IL mode instead of node mask */
4447 #define MPOL_F_ADDR (1<<1) /* look up vma using address */
include/uapi/linux/mount.h+11−2
@@ -61,7 +61,8 @@ · 60 unmodified lines
6161 /*
6262 * open_tree() flags.
6363 */
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 */
6566 #define OPEN_TREE_CLOEXEC O_CLOEXEC /* Close the file on execve() */
6667
6768 /*
@@ -197,7 +198,10 @@ struct statmount { · 129 unmodified lines
197198 */
198199 struct mnt_id_req {
199200 __u32 size;
200− __u32 mnt_ns_fd;
201+ union {
202+ __u32 mnt_ns_fd;
203+ __u32 mnt_fd;
204+ };
201205 __u64 mnt_id;
202206 __u64 param;
203207 __u64 mnt_ns_id;
@@ -232,4 +236,9 @@ struct mnt_id_req { · 28 unmodified lines
232236 #define LSMT_ROOT 0xffffffffffffffff /* root mount */
233237 #define LISTMOUNT_REVERSE (1 << 0) /* List later mounts first */
234238
239+/*
240+ * @flag bits for statmount(2)
241+ */
242+#define STATMOUNT_BY_FD 0x00000001U /* want mountinfo for given fd */
243+
235244 #endif /* _UAPI_LINUX_MOUNT_H */
include/uapi/linux/mptcp_pm.h+1−1
@@ -11,7 +11,7 @@ · 10 unmodified lines
1111 #define MPTCP_PM_VER 1
1212
1313 /**
14− * enum mptcp_event_type
14+ * enum mptcp_event_type - Netlink MPTCP event types
1515 * @MPTCP_EVENT_UNSPEC: unused event
1616 * @MPTCP_EVENT_CREATED: A new MPTCP connection has been created. It is the
1717 * good time to allocate memory and send ADD_ADDR if needed. Depending on the
include/uapi/linux/mshv.h+2−0
@@ -27,6 +27,8 @@ enum { · 26 unmodified lines
2727 MSHV_PT_BIT_X2APIC,
2828 MSHV_PT_BIT_GPA_SUPER_PAGES,
2929 MSHV_PT_BIT_CPU_AND_XSAVE_FEATURES,
30+ MSHV_PT_BIT_NESTED_VIRTUALIZATION,
31+ MSHV_PT_BIT_SMT_ENABLED_GUEST,
3032 MSHV_PT_BIT_COUNT,
3133 };
3234
include/uapi/linux/netfilter_bridge.h+7−6
@@ -5,15 +5,16 @@ · 4 unmodified lines
55 /* bridge-specific defines for netfilter.
66 */
77
8+#ifndef __KERNEL__
9+#include <netinet/if_ether.h> /* for __UAPI_DEF_ETHHDR if defined */
10+#endif
11+
812 #include <linux/in.h>
913 #include <linux/netfilter.h>
1014 #include <linux/if_ether.h>
1115 #include <linux/if_vlan.h>
1216 #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>
1718
1819 /* Bridge Hooks */
1920 /* After promisc drops, checksum checks. */
@@ -31,14 +32,14 @@ · 11 unmodified lines
3132 #define NF_BR_NUMHOOKS 6
3233
3334 enum nf_br_hook_priorities {
34− NF_BR_PRI_FIRST = INT_MIN,
35+ NF_BR_PRI_FIRST = __KERNEL_INT_MIN,
3536 NF_BR_PRI_NAT_DST_BRIDGED = -300,
3637 NF_BR_PRI_FILTER_BRIDGED = -200,
3738 NF_BR_PRI_BRNF = 0,
3839 NF_BR_PRI_NAT_DST_OTHER = 100,
3940 NF_BR_PRI_FILTER_OTHER = 200,
4041 NF_BR_PRI_NAT_SRC = 300,
41− NF_BR_PRI_LAST = INT_MAX,
42+ NF_BR_PRI_LAST = __KERNEL_INT_MAX,
4243 };
4344
4445 #endif /* _UAPI__LINUX_BRIDGE_NETFILTER_H */
include/uapi/linux/netfilter_ipv4.h+4−5
@@ -7,12 +7,11 @@ · 6 unmodified lines
77
88
99 #include <linux/netfilter.h>
10+#include <linux/typelimits.h>
1011
1112 /* only for userspace compatibility */
1213 #ifndef __KERNEL__
1314
14−#include <limits.h> /* for INT_MIN, INT_MAX */
15−
1615 /* IP Hooks */
1716 /* After promisc drops, checksum checks. */
1817 #define NF_IP_PRE_ROUTING 0
@@ -28,7 +27,7 @@ · 9 unmodified lines
2827 #endif /* ! __KERNEL__ */
2928
3029 enum nf_ip_hook_priorities {
31− NF_IP_PRI_FIRST = INT_MIN,
30+ NF_IP_PRI_FIRST = __KERNEL_INT_MIN,
3231 NF_IP_PRI_RAW_BEFORE_DEFRAG = -450,
3332 NF_IP_PRI_CONNTRACK_DEFRAG = -400,
3433 NF_IP_PRI_RAW = -300,
@@ -41,8 +40,8 @@ enum nf_ip_hook_priorities { · 6 unmodified lines
4140 NF_IP_PRI_NAT_SRC = 100,
4241 NF_IP_PRI_SELINUX_LAST = 225,
4342 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,
4645 };
4746
4847 /* Arguments for setsockopt SOL_IP: */
include/uapi/linux/netfilter_ipv6.h+3−4
@@ -10,12 +10,11 @@ · 9 unmodified lines
1010
1111
1212 #include <linux/netfilter.h>
13+#include <linux/typelimits.h>
1314
1415 /* only for userspace compatibility */
1516 #ifndef __KERNEL__
1617
17−#include <limits.h> /* for INT_MIN, INT_MAX */
18−
1918 /* IP6 Hooks */
2019 /* After promisc drops, checksum checks. */
2120 #define NF_IP6_PRE_ROUTING 0
@@ -32,7 +31,7 @@ · 10 unmodified lines
3231
3332
3433 enum nf_ip6_hook_priorities {
35− NF_IP6_PRI_FIRST = INT_MIN,
34+ NF_IP6_PRI_FIRST = __KERNEL_INT_MIN,
3635 NF_IP6_PRI_RAW_BEFORE_DEFRAG = -450,
3736 NF_IP6_PRI_CONNTRACK_DEFRAG = -400,
3837 NF_IP6_PRI_RAW = -300,
@@ -45,7 +44,7 @@ enum nf_ip6_hook_priorities { · 6 unmodified lines
4544 NF_IP6_PRI_NAT_SRC = 100,
4645 NF_IP6_PRI_SELINUX_LAST = 225,
4746 NF_IP6_PRI_CONNTRACK_HELPER = 300,
48− NF_IP6_PRI_LAST = INT_MAX,
47+ NF_IP6_PRI_LAST = __KERNEL_INT_MAX,
4948 };
5049
5150
include/uapi/linux/nfs.h+1−1
@@ -55,7 +55,7 @@ · 54 unmodified lines
5555 NFSERR_NODEV = 19, /* v2 v3 v4 */
5656 NFSERR_NOTDIR = 20, /* v2 v3 v4 */
5757 NFSERR_ISDIR = 21, /* v2 v3 v4 */
58− NFSERR_INVAL = 22, /* v2 v3 v4 */
58+ NFSERR_INVAL = 22, /* v3 v4 */
5959 NFSERR_FBIG = 27, /* v2 v3 v4 */
6060 NFSERR_NOSPC = 28, /* v2 v3 v4 */
6161 NFSERR_ROFS = 30, /* v2 v3 v4 */
include/uapi/linux/nfsd_netlink.h+1−0
@@ -35,6 +35,7 @@ enum { · 34 unmodified lines
3535 NFSD_A_SERVER_GRACETIME,
3636 NFSD_A_SERVER_LEASETIME,
3737 NFSD_A_SERVER_SCOPE,
38+ NFSD_A_SERVER_MIN_THREADS,
3839
3940 __NFSD_A_SERVER_MAX,
4041 NFSD_A_SERVER_MAX = (__NFSD_A_SERVER_MAX - 1)
include/uapi/linux/nilfs2_api.h+2−2
@@ -58,7 +58,7 @@ NILFS_CPINFO_FNS(INVALID, invalid) · 57 unmodified lines
5858 NILFS_CPINFO_FNS(MINOR, minor)
5959
6060 /**
61− * nilfs_suinfo - segment usage information
61+ * struct nilfs_suinfo - segment usage information
6262 * @sui_lastmod: timestamp of last modification
6363 * @sui_nblocks: number of written blocks in segment
6464 * @sui_flags: segment usage flags
@@ -93,7 +93,7 @@ static inline int nilfs_suinfo_clean(const struct nilfs_suinfo *si) · 28 unmodified lines
9393 }
9494
9595 /**
96− * nilfs_suinfo_update - segment usage information update
96+ * struct nilfs_suinfo_update - segment usage information update
9797 * @sup_segnum: segment number
9898 * @sup_flags: flags for which fields are active in sup_sui
9999 * @sup_reserved: reserved necessary for alignment
include/uapi/linux/nilfs2_ondisk.h+97−66
@@ -133,73 +133,104 @@ struct nilfs_super_root { · 132 unmodified lines
133133
134134 /**
135135 * 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
136181 */
137182 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];
203234 };
204235
205236 /*
@@ -449,7 +480,7 @@ struct nilfs_btree_node { · 243 unmodified lines
449480 /**
450481 * struct nilfs_direct_node - header of built-in bmap array
451482 * @dn_flags: flags
452− * @dn_pad: padding
483+ * @pad: padding
453484 */
454485 struct nilfs_direct_node {
455486 __u8 dn_flags;
include/uapi/linux/nl80211.h+107−5
@@ -11,7 +11,7 @@ · 10 unmodified lines
1111 * Copyright 2008 Jouni Malinen <jouni.malinen@atheros.com>
1212 * Copyright 2008 Colin McCabe <colin@cozybit.com>
1313 * Copyright 2015-2017 Intel Deutschland GmbH
14− * Copyright (C) 2018-2025 Intel Corporation
14+ * Copyright (C) 2018-2026 Intel Corporation
1515 *
1616 * Permission to use, copy, modify, and/or distribute this software for any
1717 * purpose with or without fee is hereby granted, provided that the above
@@ -2880,8 +2880,9 @@ enum nl80211_commands { · 2862 unmodified lines
28802880 * index. If the userspace includes more RNR elements than number of
28812881 * MBSSID elements then these will be added in every EMA beacon.
28822882 *
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.
28852886 *
28862887 * @NL80211_ATTR_BSS_DUMP_INCLUDE_USE_DATA: Include BSS usage data, i.e.
28872888 * include BSSes that can only be used in restricted scenarios and/or
@@ -2973,6 +2974,16 @@ enum nl80211_commands { · 85 unmodified lines
29732974 * primary channel is 2 MHz wide, and the control channel designates
29742975 * the 1 MHz primary subchannel within that 2 MHz primary.
29752976 *
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+ *
29762987 * @NUM_NL80211_ATTR: total number of nl80211_attrs available
29772988 * @NL80211_ATTR_MAX: highest attribute number currently defined
29782989 * @__NL80211_ATTR_AFTER_LAST: internal use
@@ -3541,6 +3552,11 @@ enum nl80211_attrs { · 562 unmodified lines
35413552
35423553 NL80211_ATTR_S1G_PRIMARY_2MHZ,
35433554
3555+ NL80211_ATTR_EPP_PEER,
3556+
3557+ NL80211_ATTR_UHR_CAPABILITY,
3558+ NL80211_ATTR_DISABLE_UHR,
3559+
35443560 /* add attributes here, update the policy in nl80211.c */
35453561
35463562 __NL80211_ATTR_AFTER_LAST,
@@ -3893,6 +3909,12 @@ enum nl80211_eht_ru_alloc { · 346 unmodified lines
38933909 * @NL80211_RATE_INFO_4_MHZ_WIDTH: 4 MHz S1G rate
38943910 * @NL80211_RATE_INFO_8_MHZ_WIDTH: 8 MHz S1G rate
38953911 * @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
38963918 * @__NL80211_RATE_INFO_AFTER_LAST: internal use
38973919 */
38983920 enum nl80211_rate_info {
@@ -3926,6 +3948,9 @@ enum nl80211_rate_info { · 27 unmodified lines
39263948 NL80211_RATE_INFO_4_MHZ_WIDTH,
39273949 NL80211_RATE_INFO_8_MHZ_WIDTH,
39283950 NL80211_RATE_INFO_16_MHZ_WIDTH,
3951+ NL80211_RATE_INFO_UHR_MCS,
3952+ NL80211_RATE_INFO_UHR_ELR,
3953+ NL80211_RATE_INFO_UHR_IM,
39293954
39303955 /* keep last */
39313956 __NL80211_RATE_INFO_AFTER_LAST,
@@ -4248,6 +4273,10 @@ enum nl80211_mpath_info { · 316 unmodified lines
42484273 * capabilities element
42494274 * @NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE: EHT PPE thresholds information as
42504275 * 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
42514280 * @__NL80211_BAND_IFTYPE_ATTR_AFTER_LAST: internal use
42524281 * @NL80211_BAND_IFTYPE_ATTR_MAX: highest band attribute currently defined
42534282 */
@@ -4265,6 +4294,8 @@ enum nl80211_band_iftype_attr { · 11 unmodified lines
42654294 NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY,
42664295 NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET,
42674296 NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE,
4297+ NL80211_BAND_IFTYPE_ATTR_UHR_CAP_MAC,
4298+ NL80211_BAND_IFTYPE_ATTR_UHR_CAP_PHY,
42684299
42694300 /* keep last */
42704301 __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST,
@@ -4444,6 +4475,11 @@ enum nl80211_wmm_rule { · 173 unmodified lines
44444475 * channel in current regulatory domain.
44454476 * @NL80211_FREQUENCY_ATTR_NO_16MHZ: 16 MHz operation is not allowed on this
44464477 * 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.
44474483 * @NL80211_FREQUENCY_ATTR_MAX: highest frequency attribute number
44484484 * currently defined
44494485 * @__NL80211_FREQUENCY_ATTR_AFTER_LAST: internal use
@@ -4492,6 +4528,8 @@ enum nl80211_frequency_attr { · 42 unmodified lines
44924528 NL80211_FREQUENCY_ATTR_NO_4MHZ,
44934529 NL80211_FREQUENCY_ATTR_NO_8MHZ,
44944530 NL80211_FREQUENCY_ATTR_NO_16MHZ,
4531+ NL80211_FREQUENCY_ATTR_S1G_NO_PRIMARY,
4532+ NL80211_FREQUENCY_ATTR_NO_UHR,
44954533
44964534 /* keep last */
44974535 __NL80211_FREQUENCY_ATTR_AFTER_LAST,
@@ -4705,6 +4743,7 @@ enum nl80211_sched_scan_match_attr { · 207 unmodified lines
47054743 * despite NO_IR configuration.
47064744 * @NL80211_RRF_ALLOW_20MHZ_ACTIVITY: Allow activity in 20 MHz bandwidth,
47074745 * despite NO_IR configuration.
4746+ * @NL80211_RRF_NO_UHR: UHR operation not allowed
47084747 */
47094748 enum nl80211_reg_rule_flags {
47104749 NL80211_RRF_NO_OFDM = 1 << 0,
@@ -4731,6 +4770,7 @@ enum nl80211_reg_rule_flags { · 20 unmodified lines
47314770 NL80211_RRF_NO_6GHZ_AFC_CLIENT = 1 << 23,
47324771 NL80211_RRF_ALLOW_6GHZ_VLP_AP = 1 << 24,
47334772 NL80211_RRF_ALLOW_20MHZ_ACTIVITY = 1 << 25,
4773+ NL80211_RRF_NO_UHR = 1 << 26,
47344774 };
47354775
47364776 #define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR
@@ -5425,6 +5465,7 @@ enum nl80211_bss_status { · 688 unmodified lines
54255465 * @NL80211_AUTHTYPE_FILS_SK: Fast Initial Link Setup shared key
54265466 * @NL80211_AUTHTYPE_FILS_SK_PFS: Fast Initial Link Setup shared key with PFS
54275467 * @NL80211_AUTHTYPE_FILS_PK: Fast Initial Link Setup public key
5468+ * @NL80211_AUTHTYPE_EPPKE: Enhanced Privacy Protection Key Exchange
54285469 * @__NL80211_AUTHTYPE_NUM: internal
54295470 * @NL80211_AUTHTYPE_MAX: maximum valid auth algorithm
54305471 * @NL80211_AUTHTYPE_AUTOMATIC: determine automatically (if necessary by
@@ -5440,6 +5481,7 @@ enum nl80211_auth_type { · 9 unmodified lines
54405481 NL80211_AUTHTYPE_FILS_SK,
54415482 NL80211_AUTHTYPE_FILS_SK_PFS,
54425483 NL80211_AUTHTYPE_FILS_PK,
5484+ NL80211_AUTHTYPE_EPPKE,
54435485
54445486 /* keep last */
54455487 __NL80211_AUTHTYPE_NUM,
@@ -6744,6 +6786,15 @@ enum nl80211_feature_flags { · 1298 unmodified lines
67446786 * @NL80211_EXT_FEATURE_BEACON_RATE_EHT: Driver supports beacon rate
67456787 * configuration (AP/mesh) with EHT rates.
67466788 *
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+ *
67476798 * @NUM_NL80211_EXT_FEATURES: number of extended features.
67486799 * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
67496800 */
@@ -6820,6 +6871,8 @@ enum nl80211_ext_feature_index { · 70 unmodified lines
68206871 NL80211_EXT_FEATURE_DFS_CONCURRENT,
68216872 NL80211_EXT_FEATURE_SPP_AMSDU_SUPPORT,
68226873 NL80211_EXT_FEATURE_BEACON_RATE_EHT,
6874+ NL80211_EXT_FEATURE_EPPKE,
6875+ NL80211_EXT_FEATURE_ASSOC_FRAME_ENCRYPTION,
68236876
68246877 /* add new features before the definition below */
68256878 NUM_NL80211_EXT_FEATURES,
@@ -7432,6 +7485,8 @@ enum nl80211_nan_band_conf_attributes { · 606 unmodified lines
74327485 * address that can take values from 50-6F-9A-01-00-00 to
74337486 * 50-6F-9A-01-FF-FF. This attribute is optional. If not present,
74347487 * 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.
74357490 * @NL80211_NAN_CONF_EXTRA_ATTRS: Additional NAN attributes to be
74367491 * published in the beacons. This is an optional byte array.
74377492 * @NL80211_NAN_CONF_VENDOR_ELEMS: Vendor-specific elements that will
@@ -7766,6 +7821,30 @@ enum nl80211_peer_measurement_attrs { · 328 unmodified lines
77667821 * trigger based ranging measurement is supported
77677822 * @NL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED: flag attribute indicating
77687823 * 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
77697848 *
77707849 * @NUM_NL80211_PMSR_FTM_CAPA_ATTR: internal
77717850 * @NL80211_PMSR_FTM_CAPA_ATTR_MAX: highest attribute number
@@ -7783,6 +7862,14 @@ enum nl80211_peer_measurement_ftm_capa { · 11 unmodified lines
77837862 NL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST,
77847863 NL80211_PMSR_FTM_CAPA_ATTR_TRIGGER_BASED,
77857864 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,
77867873
77877874 /* keep last */
77887875 NUM_NL80211_PMSR_FTM_CAPA_ATTR,
@@ -7798,12 +7885,15 @@ enum nl80211_peer_measurement_ftm_capa { · 9 unmodified lines
77987885 * &enum nl80211_preamble), optional for DMG (u32)
77997886 * @NL80211_PMSR_FTM_REQ_ATTR_NUM_BURSTS_EXP: number of bursts exponent as in
78007887 * 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)
78027890 * @NL80211_PMSR_FTM_REQ_ATTR_BURST_PERIOD: interval between bursts in units
78037891 * of 100ms (u16, optional with default 0)
78047892 * @NL80211_PMSR_FTM_REQ_ATTR_BURST_DURATION: burst duration, as in 802.11-2016
78057893 * 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).
78077897 * @NL80211_PMSR_FTM_REQ_ATTR_FTMS_PER_BURST: number of successful FTM frames
78087898 * requested per burst
78097899 * (u8, 0-31, optional with default 0 i.e. "no preference")
@@ -7832,6 +7922,14 @@ enum nl80211_peer_measurement_ftm_capa { · 22 unmodified lines
78327922 * @NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR: optional. The BSS color of the
78337923 * responder. Only valid if %NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED
78347924 * 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).
78357933 *
78367934 * @NUM_NL80211_PMSR_FTM_REQ_ATTR: internal
78377935 * @NL80211_PMSR_FTM_REQ_ATTR_MAX: highest attribute number
@@ -7852,6 +7950,7 @@ enum nl80211_peer_measurement_ftm_req { · 14 unmodified lines
78527950 NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED,
78537951 NL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK,
78547952 NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR,
7953+ NL80211_PMSR_FTM_REQ_ATTR_RSTA,
78557954
78567955 /* keep last */
78577956 NUM_NL80211_PMSR_FTM_REQ_ATTR,
@@ -7936,6 +8035,8 @@ enum nl80211_peer_measurement_ftm_failure_reasons { · 78 unmodified lines
79368035 * 9.4.2.22.1) starting with the Measurement Token, with Measurement
79378036 * Type 11.
79388037 * @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)
79398040 *
79408041 * @NUM_NL80211_PMSR_FTM_RESP_ATTR: internal
79418042 * @NL80211_PMSR_FTM_RESP_ATTR_MAX: highest attribute number
@@ -7964,6 +8065,7 @@ enum nl80211_peer_measurement_ftm_resp { · 22 unmodified lines
79648065 NL80211_PMSR_FTM_RESP_ATTR_LCI,
79658066 NL80211_PMSR_FTM_RESP_ATTR_CIVICLOC,
79668067 NL80211_PMSR_FTM_RESP_ATTR_PAD,
8068+ NL80211_PMSR_FTM_RESP_ATTR_BURST_PERIOD,
79678069
79688070 /* keep last */
79698071 NUM_NL80211_PMSR_FTM_RESP_ATTR,
include/uapi/linux/pci.h+7−0
@@ -39,4 +39,11 @@ · 38 unmodified lines
3939 #define PCIIOC_MMAP_IS_MEM (PCIIOC_BASE | 0x02) /* Set mmap state to MEM space. */
4040 #define PCIIOC_WRITE_COMBINE (PCIIOC_BASE | 0x03) /* Enable/disable write-combining. */
4141
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+
4249 #endif /* _UAPILINUX_PCI_H */
include/uapi/linux/pci_regs.h+64−5
@@ -132,6 +132,11 @@ · 131 unmodified lines
132132 #define PCI_SECONDARY_BUS 0x19 /* Secondary bus number */
133133 #define PCI_SUBORDINATE_BUS 0x1a /* Highest bus number behind the bridge */
134134 #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
135140 #define PCI_IO_BASE 0x1c /* I/O range behind the bridge */
136141 #define PCI_IO_LIMIT 0x1d
137142 #define PCI_IO_RANGE_TYPE_MASK 0x0fUL /* I/O bridging type */
@@ -1253,11 +1258,6 @@ · 1115 unmodified lines
12531258 #define PCI_DEV3_STA 0x0c /* Device 3 Status Register */
12541259 #define PCI_DEV3_STA_SEGMENT 0x8 /* Segment Captured (end-to-end flit-mode detected) */
12551260
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−
12611261 /* Integrity and Data Encryption Extended Capability */
12621262 #define PCI_IDE_CAP 0x04
12631263 #define PCI_IDE_CAP_LINK 0x1 /* Link IDE Stream Supported */
@@ -1338,4 +1338,63 @@ · 74 unmodified lines
13381338 #define PCI_IDE_SEL_ADDR_3(x) (28 + (x) * PCI_IDE_SEL_ADDR_BLOCK_SIZE)
13391339 #define PCI_IDE_SEL_BLOCK_SIZE(nr_assoc) (20 + PCI_IDE_SEL_ADDR_BLOCK_SIZE * (nr_assoc))
13401340
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+
13411400 #endif /* LINUX_PCI_REGS_H */
include/uapi/linux/pcitest.h+1−0
@@ -22,6 +22,7 @@ · 21 unmodified lines
2222 #define PCITEST_GET_IRQTYPE _IO('P', 0x9)
2323 #define PCITEST_BARS _IO('P', 0xa)
2424 #define PCITEST_DOORBELL _IO('P', 0xb)
25+#define PCITEST_BAR_SUBRANGE _IO('P', 0xc)
2526 #define PCITEST_CLEAR_IRQ _IO('P', 0x10)
2627
2728 #define PCITEST_IRQ_TYPE_UNDEFINED -1
include/uapi/linux/perf_event.h+24−3
@@ -1330,14 +1330,16 @@ union perf_mem_data_src { · 1329 unmodified lines
13301330 mem_snoopx : 2, /* Snoop mode, ext */
13311331 mem_blk : 3, /* Access blocked */
13321332 mem_hops : 3, /* Hop level */
1333− mem_rsvd : 18;
1333+ mem_region : 5, /* cache/memory regions */
1334+ mem_rsvd : 13;
13341335 };
13351336 };
13361337 #elif defined(__BIG_ENDIAN_BITFIELD)
13371338 union perf_mem_data_src {
13381339 __u64 val;
13391340 struct {
1340− __u64 mem_rsvd : 18,
1341+ __u64 mem_rsvd : 13,
1342+ mem_region : 5, /* cache/memory regions */
13411343 mem_hops : 3, /* Hop level */
13421344 mem_blk : 3, /* Access blocked */
13431345 mem_snoopx : 2, /* Snoop mode, ext */
@@ -1394,7 +1396,7 @@ union perf_mem_data_src { · 50 unmodified lines
13941396 #define PERF_MEM_LVLNUM_L4 0x0004 /* L4 */
13951397 #define PERF_MEM_LVLNUM_L2_MHB 0x0005 /* L2 Miss Handling Buffer */
13961398 #define PERF_MEM_LVLNUM_MSC 0x0006 /* Memory-side Cache */
1397−/* 0x007 available */
1399+#define PERF_MEM_LVLNUM_L0 0x0007 /* L0 */
13981400 #define PERF_MEM_LVLNUM_UNC 0x0008 /* Uncached */
13991401 #define PERF_MEM_LVLNUM_CXL 0x0009 /* CXL */
14001402 #define PERF_MEM_LVLNUM_IO 0x000a /* I/O */
@@ -1447,6 +1449,25 @@ union perf_mem_data_src { · 46 unmodified lines
14471449 /* 5-7 available */
14481450 #define PERF_MEM_HOPS_SHIFT 43
14491451
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+
14501471 #define PERF_MEM_S(a, s) \
14511472 (((__u64)PERF_MEM_##a##_##s) << PERF_MEM_##a##_SHIFT)
14521473
include/uapi/linux/pkt_sched.h+1−0
@@ -1036,6 +1036,7 @@ enum { · 1035 unmodified lines
10361036 TCA_CAKE_STATS_DROP_NEXT_US,
10371037 TCA_CAKE_STATS_P_DROP,
10381038 TCA_CAKE_STATS_BLUE_TIMER_US,
1039+ TCA_CAKE_STATS_ACTIVE_QUEUES,
10391040 __TCA_CAKE_STATS_MAX
10401041 };
10411042 #define TCA_CAKE_STATS_MAX (__TCA_CAKE_STATS_MAX - 1)
include/uapi/linux/prctl.h+37−0
@@ -386,4 +386,41 @@ struct prctl_mm_map { · 385 unmodified lines
386386 # define PR_FUTEX_HASH_SET_SLOTS 1
387387 # define PR_FUTEX_HASH_GET_SLOTS 2
388388
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+
389426 #endif /* _LINUX_PRCTL_H */
include/uapi/linux/rseq.h+40−1
@@ -19,13 +19,20 @@ enum rseq_cpu_id_state { · 18 unmodified lines
1919 };
2020
2121 enum rseq_flags {
22− RSEQ_FLAG_UNREGISTER = (1 << 0),
22+ RSEQ_FLAG_UNREGISTER = (1 << 0),
23+ RSEQ_FLAG_SLICE_EXT_DEFAULT_ON = (1 << 1),
2324 };
2425
2526 enum rseq_cs_flags_bit {
27+ /* Historical and unsupported bits */
2628 RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT_BIT = 0,
2729 RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL_BIT = 1,
2830 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,
2936 };
3037
3138 enum rseq_cs_flags {
@@ -35,6 +42,11 @@ enum rseq_cs_flags { · 3 unmodified lines
3542 (1U << RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL_BIT),
3643 RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE =
3744 (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),
3850 };
3951
4052 /*
@@ -53,6 +65,27 @@ struct rseq_cs { · 12 unmodified lines
5365 __u64 abort_ip;
5466 } __attribute__((aligned(4 * sizeof(__u64))));
5567
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+
5689 /*
5790 * struct rseq is aligned on 4 * 8 bytes to ensure it is always
5891 * contained within a single cache-line.
@@ -141,6 +174,12 @@ struct rseq { · 82 unmodified lines
141174 */
142175 __u32 mm_cid;
143176
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+
144183 /*
145184 * Flexible array member at end of structure, after last feature field.
146185 */
include/uapi/linux/shm.h+0−3
@@ -5,9 +5,6 @@ · 4 unmodified lines
55 #include <linux/ipc.h>
66 #include <linux/errno.h>
77 #include <asm-generic/hugetlb_encode.h>
8−#ifndef __KERNEL__
9−#include <unistd.h>
10−#endif
118
129 /*
1310 * SHMMNI, SHMMAX and SHMALL are default upper limits which can be
include/uapi/linux/stddef.h+4−0
@@ -72,6 +72,10 @@ · 71 unmodified lines
7272 #define __counted_by_be(m)
7373 #endif
7474
75+#ifndef __counted_by_ptr
76+#define __counted_by_ptr(m)
77+#endif
78+
7579 #ifdef __KERNEL__
7680 #define __kernel_nonstring __nonstring
7781 #else
include/uapi/linux/sysctl.h+1−2
@@ -92,7 +92,6 @@ enum · 91 unmodified lines
9292 KERN_DOMAINNAME=8, /* string: domainname */
9393
9494 KERN_PANIC=15, /* int: panic timeout */
95− KERN_REALROOTDEV=16, /* real root device to mount after initrd */
9695
9796 KERN_SPARC_REBOOT=21, /* reboot command on Sparc */
9897 KERN_CTLALTDEL=22, /* int: allow ctl-alt-del to reboot */
@@ -183,7 +182,7 @@ enum · 84 unmodified lines
183182 VM_LOWMEM_RESERVE_RATIO=20,/* reservation ratio for lower memory zones */
184183 VM_MIN_FREE_KBYTES=21, /* Minimum free kilobytes to maintain */
185184 VM_MAX_MAP_COUNT=22, /* int: Maximum number of mmaps/address-space */
186− VM_LAPTOP_MODE=23, /* vm laptop mode */
185+
187186 VM_BLOCK_DUMP=24, /* block dump mode */
188187 VM_HUGETLB_GROUP=25, /* permitted hugetlb group */
189188 VM_VFS_CACHE_PRESSURE=26, /* dcache/icache reclaim pressure */
include/uapi/linux/taskstats.h+12−1
@@ -18,6 +18,7 @@ · 17 unmodified lines
1818 #define _LINUX_TASKSTATS_H
1919
2020 #include <linux/types.h>
21+#include <linux/time_types.h>
2122
2223 /* Format for per-task data returned to userland when
2324 * - a task exits
@@ -34,7 +35,7 @@ · 10 unmodified lines
3435 */
3536
3637
37−#define TASKSTATS_VERSION 16
38+#define TASKSTATS_VERSION 17
3839 #define TS_COMM_LEN 32 /* should be >= TASK_COMM_LEN
3940 * in linux/sched.h */
4041
@@ -230,6 +231,16 @@ struct taskstats { · 189 unmodified lines
230231
231232 __u64 irq_delay_max;
232233 __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;
233244 };
234245
235246
include/uapi/linux/tcp.h+23−3
@@ -226,6 +226,24 @@ enum tcp_ca_state { · 225 unmodified lines
226226 #define TCPF_CA_Loss (1<<TCP_CA_Loss)
227227 };
228228
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+
229247 struct tcp_info {
230248 __u8 tcpi_state;
231249 __u8 tcpi_ca_state;
@@ -316,15 +334,17 @@ struct tcp_info { · 84 unmodified lines
316334 * in milliseconds, including any
317335 * unfinished recovery.
318336 */
319− __u32 tcpi_received_ce; /* # of CE marks received */
337+ __u32 tcpi_received_ce; /* # of CE marked segments received */
320338 __u32 tcpi_delivered_e1_bytes; /* Accurate ECN byte counters */
321339 __u32 tcpi_delivered_e0_bytes;
322340 __u32 tcpi_delivered_ce_bytes;
323341 __u32 tcpi_received_e1_bytes;
324342 __u32 tcpi_received_e0_bytes;
325343 __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;
328348 };
329349
330350 /* netlink attributes types for SCM_TIMESTAMPING_OPT_STATS */
include/uapi/linux/typelimits.h+8−0
@@ -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 */
include/uapi/linux/ublk_cmd.h+120−1
@@ -55,7 +55,8 @@ · 54 unmodified lines
5555 _IOWR('u', 0x15, struct ublksrv_ctrl_cmd)
5656 #define UBLK_U_CMD_QUIESCE_DEV \
5757 _IOWR('u', 0x16, struct ublksrv_ctrl_cmd)
58−
58+#define UBLK_U_CMD_TRY_STOP_DEV \
59+ _IOWR('u', 0x17, struct ublksrv_ctrl_cmd)
5960 /*
6061 * 64bits are enough now, and it should be easy to extend in case of
6162 * running out of feature flags
@@ -103,6 +104,30 @@ · 41 unmodified lines
103104 #define UBLK_U_IO_UNREGISTER_IO_BUF \
104105 _IOWR('u', 0x24, struct ublksrv_io_cmd)
105106
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+
106131 /* only ABORT means that no re-fetch */
107132 #define UBLK_IO_RES_OK 0
108133 #define UBLK_IO_RES_NEED_GET_DATA 1
@@ -134,6 +159,10 @@ · 25 unmodified lines
134159 #define UBLKSRV_IO_BUF_TOTAL_BITS (UBLK_QID_OFF + UBLK_QID_BITS)
135160 #define UBLKSRV_IO_BUF_TOTAL_SIZE (1ULL << UBLKSRV_IO_BUF_TOTAL_BITS)
136161
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+
137166 /*
138167 * ublk server can register data buffers for incoming I/O requests with a sparse
139168 * io_uring buffer table. The request buffer can then be used as the data buffer
@@ -311,6 +340,36 @@ · 171 unmodified lines
311340 */
312341 #define UBLK_F_BUF_REG_OFF_DAEMON (1ULL << 14)
313342
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+
314373 /* device state */
315374 #define UBLK_S_DEV_DEAD 0
316375 #define UBLK_S_DEV_LIVE 1
@@ -408,6 +467,8 @@ struct ublksrv_ctrl_dev_info { · 91 unmodified lines
408467 * passed in.
409468 */
410469 #define UBLK_IO_F_NEED_REG_BUF (1U << 17)
470+/* Request has an integrity data buffer */
471+#define UBLK_IO_F_INTEGRITY (1UL << 18)
411472
412473 /*
413474 * io cmd is described by this structure, and stored in share memory, indexed
@@ -525,6 +586,51 @@ struct ublksrv_io_cmd { · 111 unmodified lines
525586 };
526587 };
527588
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+
528634 struct ublk_param_basic {
529635 #define UBLK_ATTR_READ_ONLY (1 << 0)
530636 #define UBLK_ATTR_ROTATIONAL (1 << 1)
@@ -600,6 +706,17 @@ struct ublk_param_segment { · 69 unmodified lines
600706 __u8 pad[2];
601707 };
602708
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+
603720 struct ublk_params {
604721 /*
605722 * Total length of parameters, userspace has to set 'len' for both
@@ -614,6 +731,7 @@ struct ublk_params { · 8 unmodified lines
614731 #define UBLK_PARAM_TYPE_ZONED (1 << 3)
615732 #define UBLK_PARAM_TYPE_DMA_ALIGN (1 << 4)
616733 #define UBLK_PARAM_TYPE_SEGMENT (1 << 5)
734+#define UBLK_PARAM_TYPE_INTEGRITY (1 << 6) /* requires UBLK_F_INTEGRITY */
617735 __u32 types; /* types of parameter included */
618736
619737 struct ublk_param_basic basic;
@@ -622,6 +740,7 @@ struct ublk_params { · 2 unmodified lines
622740 struct ublk_param_zoned zoned;
623741 struct ublk_param_dma_align dma;
624742 struct ublk_param_segment seg;
743+ struct ublk_param_integrity integrity;
625744 };
626745
627746 #endif
include/uapi/linux/v4l2-controls.h+63−0
@@ -1192,6 +1192,8 @@ enum v4l2_flash_strobe_source { · 1191 unmodified lines
11921192
11931193 #define V4L2_CID_FLASH_CHARGE (V4L2_CID_FLASH_CLASS_BASE + 11)
11941194 #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)
11951197
11961198
11971199 /* JPEG-class control IDs */
@@ -2099,6 +2101,8 @@ struct v4l2_ctrl_mpeg2_quantisation { · 901 unmodified lines
20992101 #define V4L2_CID_STATELESS_HEVC_DECODE_MODE (V4L2_CID_CODEC_STATELESS_BASE + 405)
21002102 #define V4L2_CID_STATELESS_HEVC_START_CODE (V4L2_CID_CODEC_STATELESS_BASE + 406)
21012103 #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)
21022106
21032107 enum v4l2_stateless_hevc_decode_mode {
21042108 V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED,
@@ -2554,6 +2558,65 @@ struct v4l2_ctrl_hevc_scaling_matrix { · 449 unmodified lines
25542558 __u8 scaling_list_dc_coef_32x32[2];
25552559 };
25562560
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+
25572620 /* Stateless VP9 controls */
25582621
25592622 #define V4L2_VP9_LOOP_FILTER_FLAG_DELTA_ENABLED 0x1
include/uapi/linux/vbox_vmmdev_types.h+2−2
@@ -236,7 +236,7 @@ struct vmmdev_hgcm_function_parameter32 { · 235 unmodified lines
236236 /** Relative to the request header. */
237237 __u32 offset;
238238 } page_list;
239− } u;
239+ } __packed u;
240240 } __packed;
241241 VMMDEV_ASSERT_SIZE(vmmdev_hgcm_function_parameter32, 4 + 8);
242242
@@ -251,7 +251,7 @@ struct vmmdev_hgcm_function_parameter64 { · 8 unmodified lines
251251 union {
252252 __u64 phys_addr;
253253 __u64 linear_addr;
254− } u;
254+ } __packed u;
255255 } __packed pointer;
256256 struct {
257257 /** Size of the buffer described by the page list. */
include/uapi/linux/vduse.h+80−5
@@ -10,6 +10,10 @@ · 9 unmodified lines
1010
1111 #define VDUSE_API_VERSION 0
1212
13+/* VQ groups and ASID support */
14+
15+#define VDUSE_API_VERSION_1 1
16+
1317 /*
1418 * Get the version of VDUSE API that kernel supported (VDUSE_API_VERSION).
1519 * This is used for future extension.
@@ -27,6 +31,8 @@ · 11 unmodified lines
2731 * @features: virtio features
2832 * @vq_num: the number of virtqueues
2933 * @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
3036 * @reserved: for future use, needs to be initialized to zero
3137 * @config_size: the size of the configuration space
3238 * @config: the buffer of the configuration space
@@ -41,7 +47,9 @@ struct vduse_dev_config { · 8 unmodified lines
4147 __u64 features;
4248 __u32 vq_num;
4349 __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];
4553 __u32 config_size;
4654 __u8 config[];
4755 };
@@ -118,14 +126,18 @@ struct vduse_config_data { · 70 unmodified lines
118126 * struct vduse_vq_config - basic configuration of a virtqueue
119127 * @index: virtqueue index
120128 * @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
122132 *
123133 * Structure used by VDUSE_VQ_SETUP ioctl to setup a virtqueue.
124134 */
125135 struct vduse_vq_config {
126136 __u32 index;
127137 __u16 max_size;
128− __u16 reserved[13];
138+ __u16 reserved1;
139+ __u32 group;
140+ __u16 reserved2[10];
129141 };
130142
131143 /*
@@ -156,6 +168,16 @@ struct vduse_vq_state_packed { · 24 unmodified lines
156168 __u16 last_used_idx;
157169 };
158170
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+
159181 /**
160182 * struct vduse_vq_info - information of a virtqueue
161183 * @index: virtqueue index
@@ -215,6 +237,7 @@ struct vduse_vq_eventfd { · 53 unmodified lines
215237 * @uaddr: start address of userspace memory, it must be aligned to page size
216238 * @iova: start of the IOVA region
217239 * @size: size of the IOVA region
240+ * @asid: Address space ID of the IOVA region
218241 * @reserved: for future use, needs to be initialized to zero
219242 *
220243 * Structure used by VDUSE_IOTLB_REG_UMEM and VDUSE_IOTLB_DEREG_UMEM
@@ -224,7 +247,8 @@ struct vduse_iova_umem { · 3 unmodified lines
224247 __u64 uaddr;
225248 __u64 iova;
226249 __u64 size;
227− __u64 reserved[3];
250+ __u32 asid;
251+ __u32 reserved[5];
228252 };
229253
230254 /* Register userspace memory for IOVA regions */
@@ -238,6 +262,7 @@ struct vduse_iova_umem { · 7 unmodified lines
238262 * @start: start of the IOVA region
239263 * @last: last of the IOVA region
240264 * @capability: capability of the IOVA region
265+ * @asid: Address space ID of the IOVA region, only if device API version >= 1
241266 * @reserved: for future use, needs to be initialized to zero
242267 *
243268 * Structure used by VDUSE_IOTLB_GET_INFO ioctl to get information of
@@ -248,7 +273,8 @@ struct vduse_iova_info { · 4 unmodified lines
248273 __u64 last;
249274 #define VDUSE_IOVA_CAP_UMEM (1 << 0)
250275 __u64 capability;
251− __u64 reserved[3];
276+ __u32 asid; /* Only if device API version >= 1 */
277+ __u32 reserved[5];
252278 };
253279
254280 /*
@@ -257,6 +283,32 @@ struct vduse_iova_info { · 2 unmodified lines
257283 */
258284 #define VDUSE_IOTLB_GET_INFO _IOWR(VDUSE_BASE, 0x1a, struct vduse_iova_info)
259285
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+
260312 /* The control messages definition for read(2)/write(2) on /dev/vduse/$NAME */
261313
262314 /**
@@ -265,11 +317,14 @@ struct vduse_iova_info { · 2 unmodified lines
265317 * @VDUSE_SET_STATUS: set the device status
266318 * @VDUSE_UPDATE_IOTLB: Notify userspace to update the memory mapping for
267319 * 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.
268322 */
269323 enum vduse_req_type {
270324 VDUSE_GET_VQ_STATE,
271325 VDUSE_SET_STATUS,
272326 VDUSE_UPDATE_IOTLB,
327+ VDUSE_SET_VQ_GROUP_ASID,
273328 };
274329
275330 /**
@@ -304,6 +359,19 @@ struct vduse_iova_range { · 28 unmodified lines
304359 __u64 last;
305360 };
306361
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+
307375 /**
308376 * struct vduse_dev_request - control request
309377 * @type: request type
@@ -312,6 +380,8 @@ struct vduse_iova_range { · 2 unmodified lines
312380 * @vq_state: virtqueue state, only index field is available
313381 * @s: device status
314382 * @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
315385 * @padding: padding
316386 *
317387 * Structure used by read(2) on /dev/vduse/$NAME.
@@ -324,6 +394,11 @@ struct vduse_dev_request { · 6 unmodified lines
324394 struct vduse_vq_state vq_state;
325395 struct vduse_dev_status s;
326396 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;
327402 __u32 padding[32];
328403 };
329404 };
include/uapi/linux/vfio.h+4−0
@@ -964,6 +964,10 @@ struct vfio_device_bind_iommufd { · 963 unmodified lines
964964 * hwpt corresponding to the given pt_id.
965965 *
966966 * 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.
967971 */
968972 struct vfio_device_attach_iommufd_pt {
969973 __u32 argsz;
include/uapi/linux/videodev2.h+3−0
@@ -775,6 +775,7 @@ struct v4l2_pix_format { · 774 unmodified lines
775775 #define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4') /* H264 parsed slices */
776776 #define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5') /* HEVC parsed slices */
777777 #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 */
778779 #define V4L2_PIX_FMT_SPK v4l2_fourcc('S', 'P', 'K', '0') /* Sorenson Spark */
779780 #define V4L2_PIX_FMT_RV30 v4l2_fourcc('R', 'V', '3', '0') /* RealVideo 8 */
780781 #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
19851986 V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS = 0x0272,
19861987 V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX = 0x0273,
19871988 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,
19881991
19891992 V4L2_CTRL_TYPE_AV1_SEQUENCE = 0x280,
19901993 V4L2_CTRL_TYPE_AV1_TILE_GROUP_ENTRY = 0x281,
include/uapi/linux/virtio_ring.h+1−4
@@ -31,9 +31,6 @@ · 30 unmodified lines
3131 * SUCH DAMAGE.
3232 *
3333 * Copyright Rusty Russell IBM Corporation 2007. */
34−#ifndef __KERNEL__
35−#include <stdint.h>
36−#endif
3734 #include <linux/types.h>
3835 #include <linux/virtio_types.h>
3936
@@ -202,7 +199,7 @@ static inline void vring_init(struct vring *vr, unsigned int num, void *p, · 162 unmodified lines
202199 vr->num = num;
203200 vr->desc = p;
204201 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)
206203 + align-1) & ~(align - 1));
207204 }
208205
include/uapi/linux/vmclock-abi.h+20−0
@@ -115,6 +115,17 @@ struct vmclock_abi { · 114 unmodified lines
115115 * bit again after the update, using the about-to-be-valid fields.
116116 */
117117 #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)
118129
119130 __u8 pad[2];
120131 __u8 clock_status;
@@ -177,6 +188,15 @@ struct vmclock_abi { · 56 unmodified lines
177188 __le64 time_frac_sec; /* Units of 1/2^64 of a second */
178189 __le64 time_esterror_nanosec;
179190 __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;
180200 };
181201
182202 #endif /* __VMCLOCK_ABI_H__ */
include/uapi/rdma/bnxt_re-abi.h+16−0
@@ -56,6 +56,7 @@ enum { · 55 unmodified lines
5656 BNXT_RE_UCNTX_CMASK_DBR_PACING_ENABLED = 0x08ULL,
5757 BNXT_RE_UCNTX_CMASK_POW2_DISABLED = 0x10ULL,
5858 BNXT_RE_UCNTX_CMASK_MSN_TABLE_ENABLED = 0x40,
59+ BNXT_RE_UCNTX_CMASK_QP_RATE_LIMIT_ENABLED = 0x80ULL,
5960 };
6061
6162 enum bnxt_re_wqe_mode {
@@ -215,4 +216,19 @@ enum bnxt_re_toggle_mem_methods { · 153 unmodified lines
215216 BNXT_RE_METHOD_GET_TOGGLE_MEM = (1U << UVERBS_ID_NS_SHIFT),
216217 BNXT_RE_METHOD_RELEASE_TOGGLE_MEM,
217218 };
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+};
218234 #endif /* __BNXT_RE_UVERBS_ABI_H__*/
include/uapi/rdma/ib_user_ioctl_cmds.h+16−0
@@ -56,6 +56,7 @@ enum uverbs_default_objects { · 55 unmodified lines
5656 UVERBS_OBJECT_COUNTERS,
5757 UVERBS_OBJECT_ASYNC_EVENT,
5858 UVERBS_OBJECT_DMAH,
59+ UVERBS_OBJECT_DMABUF,
5960 };
6061
6162 enum {
@@ -73,6 +74,7 @@ enum uverbs_methods_device { · 11 unmodified lines
7374 UVERBS_METHOD_QUERY_CONTEXT,
7475 UVERBS_METHOD_QUERY_GID_TABLE,
7576 UVERBS_METHOD_QUERY_GID_ENTRY,
77+ UVERBS_METHOD_QUERY_PORT_SPEED,
7678 };
7779
7880 enum uverbs_attrs_invoke_write_cmd_attr_ids {
@@ -86,6 +88,11 @@ enum uverbs_attrs_query_port_cmd_attr_ids { · 7 unmodified lines
8688 UVERBS_ATTR_QUERY_PORT_RESP,
8789 };
8890
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+
8996 enum uverbs_attrs_get_context_attr_ids {
9097 UVERBS_ATTR_GET_CONTEXT_NUM_COMP_VECTORS,
9198 UVERBS_ATTR_GET_CONTEXT_CORE_SUPPORT,
@@ -257,6 +264,15 @@ enum uverbs_methods_dmah { · 165 unmodified lines
257264 UVERBS_METHOD_DMAH_FREE,
258265 };
259266
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+
260276 enum uverbs_attrs_reg_dm_mr_cmd_attr_ids {
261277 UVERBS_ATTR_REG_DM_MR_HANDLE,
262278 UVERBS_ATTR_REG_DM_MR_OFFSET,
include/uapi/rdma/mana-abi.h+3−0
@@ -17,6 +17,9 @@ · 16 unmodified lines
1717 #define MANA_IB_UVERBS_ABI_VERSION 1
1818
1919 enum mana_ib_create_cq_flags {
20+ /* Reserved for backward compatibility. Legacy
21+ * kernel versions use it to create CQs in RNIC
22+ */
2023 MANA_IB_CREATE_RNIC_CQ = 1 << 0,
2124 };
2225
include/uapi/scsi/scsi_bsg_ufs.h+8−9
@@ -94,16 +94,15 @@ struct utp_upiu_header { · 93 unmodified lines
9494 };
9595
9696 /**
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
103102 * @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
107106 */
108107 struct utp_upiu_query {
109108 __u8 opcode;
include/uapi/sound/sof/tokens.h+6−0
@@ -56,6 +56,9 @@ · 55 unmodified lines
5656 #define SOF_TKN_SCHED_LP_MODE 207
5757 #define SOF_TKN_SCHED_MEM_USAGE 208
5858 #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
5962
6063 /* volume */
6164 #define SOF_TKN_VOLUME_RAMP_STEP_TYPE 250
@@ -107,6 +110,9 @@ · 45 unmodified lines
107110 #define SOF_TKN_COMP_NO_WNAME_IN_KCONTROL_NAME 417
108111
109112 #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
110116
111117 /* SSP */
112118 #define SOF_TKN_INTEL_SSP_CLKS_CONTROL 500