History

Merge drm/drm-next into drm-xe-next

Bring v6.17-rc1 to propagate commits from other subsystems, particularly PCI, which has some new functions needed for SR-IOV integration.

Lucas De Marchi committed 1 year ago

Commit ca994e82 parents 30e0c3f 8f5ae3011960 files · +462094 −234513Browse files

Showing the changes to include/uapi (67 of 11960 files). Show all

Unified · Split

67 files
  1. include/uapi/asm-generic/param.h +5 −1
  2. include/uapi/asm-generic/socket.h +3 −0
  3. include/uapi/asm-generic/unistd.h +7 −1
  4. include/uapi/drm/amdgpu_drm.h +2 −0
  5. include/uapi/drm/drm_fourcc.h +19 −1
  6. include/uapi/drm/msm_drm.h +134 −15
  7. include/uapi/linux/bpf.h +44 −1
  8. include/uapi/linux/btrfs.h +3 −0
  9. include/uapi/linux/capability.h +3 −2
  10. include/uapi/linux/coredump.h +104 −0
  11. include/uapi/linux/devlink.h +16 −0
  12. include/uapi/linux/dpll.h +13 −0
  13. include/uapi/linux/ethtool.h +2 −2
  14. include/uapi/linux/ethtool_netlink.h +0 −6
  15. include/uapi/linux/ethtool_netlink_generated.h +85 −2
  16. include/uapi/linux/falloc.h +17 −0
  17. include/uapi/linux/fcntl.h +18 −0
  18. include/uapi/linux/fs.h +88 −0
  19. include/uapi/linux/handshake.h +1 −0
  20. include/uapi/linux/i2c.h +2 −1
  21. include/uapi/linux/if_link.h +2 −0
  22. include/uapi/linux/if_tun.h +9 −0
  23. include/uapi/linux/if_xdp.h +1 −0
  24. include/uapi/linux/in6.h +2 −2
  25. include/uapi/linux/input-event-codes.h +8 −0
  26. include/uapi/linux/input.h +1 −0
  27. include/uapi/linux/io_uring.h +22 −1
  28. include/uapi/linux/io_uring/mock_file.h +47 −0
  29. include/uapi/linux/iommufd.h +151 −3
  30. include/uapi/linux/ipv6.h +1 −0
  31. include/uapi/linux/kexec.h +1 −0
  32. include/uapi/linux/kvm.h +28 −0
  33. include/uapi/linux/mctp.h +8 −0
  34. include/uapi/linux/media/raspberrypi/pisp_be_config.h +5 −4
  35. include/uapi/linux/mptcp_pm.h +3 −3
  36. include/uapi/linux/neighbour.h +5 −0
  37. include/uapi/linux/net_dropmon.h +0 −7
  38. include/uapi/linux/netconf.h +1 −0
  39. include/uapi/linux/netdev.h +6 −0
  40. include/uapi/linux/netfilter/nf_tables.h +0 −10
  41. include/uapi/linux/netfilter/nfnetlink.h +0 −2
  42. include/uapi/linux/netfilter/nfnetlink_hook.h +2 −0
  43. include/uapi/linux/nl80211.h +60 −1
  44. include/uapi/linux/nsfs.h +11 −0
  45. include/uapi/linux/openvswitch.h +6 −0
  46. include/uapi/linux/pci_regs.h +9 −0
  47. include/uapi/linux/pcitest.h +1 −0
  48. include/uapi/linux/pidfd.h +0 −15
  49. include/uapi/linux/pkt_sched.h +68 −0
  50. include/uapi/linux/prctl.h +8 −3
  51. include/uapi/linux/pwm.h +53 −0
  52. include/uapi/linux/raid/md_p.h +1 −1
  53. include/uapi/linux/rkisp1-config.h +105 −1
  54. include/uapi/linux/snmp.h +1 −0
  55. include/uapi/linux/sysctl.h +1 −0
  56. include/uapi/linux/time.h +11 −0
  57. include/uapi/linux/ublk_cmd.h +36 −6
  58. include/uapi/linux/v4l2-controls.h +6 −0
  59. include/uapi/linux/vfio.h +11 −1
  60. include/uapi/linux/vhost.h +35 −0
  61. include/uapi/linux/vhost_types.h +5 −0
  62. include/uapi/linux/videodev2.h +8 −1
  63. include/uapi/linux/virtio_net.h +33 −0
  64. include/uapi/linux/vm_sockets.h +4 −0
  65. include/uapi/linux/vt.h +22 −22
  66. include/uapi/rdma/efa-abi.h +2 −1
  67. include/uapi/rdma/ib_user_ioctl_cmds.h +36 −0
include/uapi/asm-generic/param.h+5−1
@@ -2,8 +2,12 @@ · 1 unmodified line
22 #ifndef _UAPI__ASM_GENERIC_PARAM_H
33 #define _UAPI__ASM_GENERIC_PARAM_H
44
5+#ifndef __USER_HZ
6+#define __USER_HZ 100
7+#endif
8+
59 #ifndef HZ
6−#define HZ 100
10+#define HZ __USER_HZ
711 #endif
812
913 #ifndef EXEC_PAGESIZE
include/uapi/asm-generic/socket.h+3−0
@@ -147,6 +147,9 @@ · 146 unmodified lines
147147
148148 #define SO_PASSRIGHTS 83
149149
150+#define SO_INQ 84
151+#define SCM_INQ SO_INQ
152+
150153 #if !defined(__KERNEL__)
151154
152155 #if __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__))
include/uapi/asm-generic/unistd.h+7−1
@@ -852,8 +852,14 @@ __SYSCALL(__NR_removexattrat, sys_removexattrat) · 851 unmodified lines
852852 #define __NR_open_tree_attr 467
853853 __SYSCALL(__NR_open_tree_attr, sys_open_tree_attr)
854854
855+/* fs/inode.c */
856+#define __NR_file_getattr 468
857+__SYSCALL(__NR_file_getattr, sys_file_getattr)
858+#define __NR_file_setattr 469
859+__SYSCALL(__NR_file_setattr, sys_file_setattr)
860+
855861 #undef __NR_syscalls
856−#define __NR_syscalls 468
862+#define __NR_syscalls 470
857863
858864 /*
859865 * 32 bit systems traditionally used different
include/uapi/drm/amdgpu_drm.h+2−0
@@ -1493,6 +1493,8 @@ struct drm_amdgpu_info_hw_ip { · 1492 unmodified lines
14931493 __u32 available_rings;
14941494 /** version info: bits 23:16 major, 15:8 minor, 7:0 revision */
14951495 __u32 ip_discovery_version;
1496+ /* Userq available slots */
1497+ __u32 userq_num_slots;
14961498 };
14971499
14981500 /* GFX metadata BO sizes and alignment info (in bytes) */
include/uapi/drm/drm_fourcc.h+19−1
@@ -210,6 +210,10 @@ extern "C" { · 209 unmodified lines
210210 #define DRM_FORMAT_RGBA1010102 fourcc_code('R', 'A', '3', '0') /* [31:0] R:G:B:A 10:10:10:2 little endian */
211211 #define DRM_FORMAT_BGRA1010102 fourcc_code('B', 'A', '3', '0') /* [31:0] B:G:R:A 10:10:10:2 little endian */
212212
213+/* 48 bpp RGB */
214+#define DRM_FORMAT_RGB161616 fourcc_code('R', 'G', '4', '8') /* [47:0] R:G:B 16:16:16 little endian */
215+#define DRM_FORMAT_BGR161616 fourcc_code('B', 'G', '4', '8') /* [47:0] B:G:R 16:16:16 little endian */
216+
213217 /* 64 bpp RGB */
214218 #define DRM_FORMAT_XRGB16161616 fourcc_code('X', 'R', '4', '8') /* [63:0] x:R:G:B 16:16:16:16 little endian */
215219 #define DRM_FORMAT_XBGR16161616 fourcc_code('X', 'B', '4', '8') /* [63:0] x:B:G:R 16:16:16:16 little endian */
@@ -218,7 +222,7 @@ extern "C" { · 2 unmodified lines
218222 #define DRM_FORMAT_ABGR16161616 fourcc_code('A', 'B', '4', '8') /* [63:0] A:B:G:R 16:16:16:16 little endian */
219223
220224 /*
221− * Floating point 64bpp RGB
225+ * Half-Floating point - 16b/component
222226 * IEEE 754-2008 binary16 half-precision float
223227 * [15:0] sign:exponent:mantissa 1:5:10
224228 */
@@ -228,6 +232,20 @@ extern "C" { · 3 unmodified lines
228232 #define DRM_FORMAT_ARGB16161616F fourcc_code('A', 'R', '4', 'H') /* [63:0] A:R:G:B 16:16:16:16 little endian */
229233 #define DRM_FORMAT_ABGR16161616F fourcc_code('A', 'B', '4', 'H') /* [63:0] A:B:G:R 16:16:16:16 little endian */
230234
235+#define DRM_FORMAT_R16F fourcc_code('R', ' ', ' ', 'H') /* [15:0] R 16 little endian */
236+#define DRM_FORMAT_GR1616F fourcc_code('G', 'R', ' ', 'H') /* [31:0] G:R 16:16 little endian */
237+#define DRM_FORMAT_BGR161616F fourcc_code('B', 'G', 'R', 'H') /* [47:0] B:G:R 16:16:16 little endian */
238+
239+/*
240+ * Floating point - 32b/component
241+ * IEEE 754-2008 binary32 float
242+ * [31:0] sign:exponent:mantissa 1:8:23
243+ */
244+#define DRM_FORMAT_R32F fourcc_code('R', ' ', ' ', 'F') /* [31:0] R 32 little endian */
245+#define DRM_FORMAT_GR3232F fourcc_code('G', 'R', ' ', 'F') /* [63:0] R:G 32:32 little endian */
246+#define DRM_FORMAT_BGR323232F fourcc_code('B', 'G', 'R', 'F') /* [95:0] R:G:B 32:32:32 little endian */
247+#define DRM_FORMAT_ABGR32323232F fourcc_code('A', 'B', '8', 'F') /* [127:0] R:G:B:A 32:32:32:32 little endian */
248+
231249 /*
232250 * RGBA format with 10-bit components packed in 64-bit per pixel, with 6 bits
233251 * of unused padding per component:
include/uapi/drm/msm_drm.h+134−15
@@ -91,6 +91,32 @@ struct drm_msm_timespec { · 90 unmodified lines
9191 #define MSM_PARAM_UBWC_SWIZZLE 0x12 /* RO */
9292 #define MSM_PARAM_MACROTILE_MODE 0x13 /* RO */
9393 #define MSM_PARAM_UCHE_TRAP_BASE 0x14 /* RO */
94+/* PRR (Partially Resident Region) is required for sparse residency: */
95+#define MSM_PARAM_HAS_PRR 0x15 /* RO */
96+/* MSM_PARAM_EN_VM_BIND is set to 1 to enable VM_BIND ops.
97+ *
98+ * With VM_BIND enabled, userspace is required to allocate iova and use the
99+ * VM_BIND ops for map/unmap ioctls. MSM_INFO_SET_IOVA and MSM_INFO_GET_IOVA
100+ * will be rejected. (The latter does not have a sensible meaning when a BO
101+ * can have multiple and/or partial mappings.)
102+ *
103+ * With VM_BIND enabled, userspace does not include a submit_bo table in the
104+ * SUBMIT ioctl (this will be rejected), the resident set is determined by
105+ * the the VM_BIND ops.
106+ *
107+ * Enabling VM_BIND will fail on devices which do not have per-process pgtables.
108+ * And it is not allowed to disable VM_BIND once it has been enabled.
109+ *
110+ * Enabling VM_BIND should be done (attempted) prior to allocating any BOs or
111+ * submitqueues of type MSM_SUBMITQUEUE_VM_BIND.
112+ *
113+ * Relatedly, when VM_BIND mode is enabled, the kernel will not try to recover
114+ * from GPU faults or failed async VM_BIND ops, in particular because it is
115+ * difficult to communicate to userspace which op failed so that userspace
116+ * could rewind and try again. When the VM is marked unusable, the SUBMIT
117+ * ioctl will throw -EPIPE.
118+ */
119+#define MSM_PARAM_EN_VM_BIND 0x16 /* WO, once */
94120
95121 /* For backwards compat. The original support for preemption was based on
96122 * a single ring per priority level so # of priority levels equals the #
@@ -114,6 +140,19 @@ struct drm_msm_param { · 17 unmodified lines
114140
115141 #define MSM_BO_SCANOUT 0x00000001 /* scanout capable */
116142 #define MSM_BO_GPU_READONLY 0x00000002
143+/* Private buffers do not need to be explicitly listed in the SUBMIT
144+ * ioctl, unless referenced by a drm_msm_gem_submit_cmd. Private
145+ * buffers may NOT be imported/exported or used for scanout (or any
146+ * other situation where buffers can be indefinitely pinned, but
147+ * cases other than scanout are all kernel owned BOs which are not
148+ * visible to userspace).
149+ *
150+ * In exchange for those constraints, all private BOs associated with
151+ * a single context (drm_file) share a single dma_resv, and if there
152+ * has been no eviction since the last submit, there are no per-BO
153+ * bookeeping to do, significantly cutting the SUBMIT overhead.
154+ */
155+#define MSM_BO_NO_SHARE 0x00000004
117156 #define MSM_BO_CACHE_MASK 0x000f0000
118157 /* cache modes */
119158 #define MSM_BO_CACHED 0x00010000
@@ -123,6 +162,7 @@ struct drm_msm_param { · 3 unmodified lines
123162
124163 #define MSM_BO_FLAGS (MSM_BO_SCANOUT | \
125164 MSM_BO_GPU_READONLY | \
165+ MSM_BO_NO_SHARE | \
126166 MSM_BO_CACHE_MASK)
127167
128168 struct drm_msm_gem_new {
@@ -180,6 +220,17 @@ struct drm_msm_gem_cpu_fini { · 51 unmodified lines
180220 * Cmdstream Submission:
181221 */
182222
223+#define MSM_SYNCOBJ_RESET 0x00000001 /* Reset syncobj after wait. */
224+#define MSM_SYNCOBJ_FLAGS ( \
225+ MSM_SYNCOBJ_RESET | \
226+ 0)
227+
228+struct drm_msm_syncobj {
229+ __u32 handle; /* in, syncobj handle. */
230+ __u32 flags; /* in, from MSM_SUBMIT_SYNCOBJ_FLAGS */
231+ __u64 point; /* in, timepoint for timeline syncobjs. */
232+};
233+
183234 /* The value written into the cmdstream is logically:
184235 *
185236 * ((relocbuf->gpuaddr + reloc_offset) << shift) | or
@@ -221,7 +272,10 @@ struct drm_msm_gem_submit_cmd { · 35 unmodified lines
221272 __u32 size; /* in, cmdstream size */
222273 __u32 pad;
223274 __u32 nr_relocs; /* in, number of submit_reloc's */
224− __u64 relocs; /* in, ptr to array of submit_reloc's */
275+ union {
276+ __u64 relocs; /* in, ptr to array of submit_reloc's */
277+ __u64 iova; /* cmdstream address (for VM_BIND contexts) */
278+ };
225279 };
226280
227281 /* Each buffer referenced elsewhere in the cmdstream submit (ie. the
@@ -269,17 +323,6 @@ struct drm_msm_gem_submit_bo { · 41 unmodified lines
269323 MSM_SUBMIT_FENCE_SN_IN | \
270324 0)
271325
272−#define MSM_SUBMIT_SYNCOBJ_RESET 0x00000001 /* Reset syncobj after wait. */
273−#define MSM_SUBMIT_SYNCOBJ_FLAGS ( \
274− MSM_SUBMIT_SYNCOBJ_RESET | \
275− 0)
276−
277−struct drm_msm_gem_submit_syncobj {
278− __u32 handle; /* in, syncobj handle. */
279− __u32 flags; /* in, from MSM_SUBMIT_SYNCOBJ_FLAGS */
280− __u64 point; /* in, timepoint for timeline syncobjs. */
281−};
282−
283326 /* Each cmdstream submit consists of a table of buffers involved, and
284327 * one or more cmdstream buffers. This allows for conditional execution
285328 * (context-restore), and IB buffers needed for per tile/bin draw cmds.
@@ -293,13 +336,80 @@ struct drm_msm_gem_submit { · 7 unmodified lines
293336 __u64 cmds; /* in, ptr to array of submit_cmd's */
294337 __s32 fence_fd; /* in/out fence fd (see MSM_SUBMIT_FENCE_FD_IN/OUT) */
295338 __u32 queueid; /* in, submitqueue id */
296− __u64 in_syncobjs; /* in, ptr to array of drm_msm_gem_submit_syncobj */
297− __u64 out_syncobjs; /* in, ptr to array of drm_msm_gem_submit_syncobj */
339+ __u64 in_syncobjs; /* in, ptr to array of drm_msm_syncobj */
340+ __u64 out_syncobjs; /* in, ptr to array of drm_msm_syncobj */
298341 __u32 nr_in_syncobjs; /* in, number of entries in in_syncobj */
299342 __u32 nr_out_syncobjs; /* in, number of entries in out_syncobj. */
300343 __u32 syncobj_stride; /* in, stride of syncobj arrays. */
301344 __u32 pad; /*in, reserved for future use, always 0. */
345+};
302346
347+#define MSM_VM_BIND_OP_UNMAP 0
348+#define MSM_VM_BIND_OP_MAP 1
349+#define MSM_VM_BIND_OP_MAP_NULL 2
350+
351+#define MSM_VM_BIND_OP_DUMP 1
352+#define MSM_VM_BIND_OP_FLAGS ( \
353+ MSM_VM_BIND_OP_DUMP | \
354+ 0)
355+
356+/**
357+ * struct drm_msm_vm_bind_op - bind/unbind op to run
358+ */
359+struct drm_msm_vm_bind_op {
360+ /** @op: one of MSM_VM_BIND_OP_x */
361+ __u32 op;
362+ /** @handle: GEM object handle, MBZ for UNMAP or MAP_NULL */
363+ __u32 handle;
364+ /** @obj_offset: Offset into GEM object, MBZ for UNMAP or MAP_NULL */
365+ __u64 obj_offset;
366+ /** @iova: Address to operate on */
367+ __u64 iova;
368+ /** @range: Number of bites to to map/unmap */
369+ __u64 range;
370+ /** @flags: Bitmask of MSM_VM_BIND_OP_FLAG_x */
371+ __u32 flags;
372+ /** @pad: MBZ */
373+ __u32 pad;
374+};
375+
376+#define MSM_VM_BIND_FENCE_FD_IN 0x00000001
377+#define MSM_VM_BIND_FENCE_FD_OUT 0x00000002
378+#define MSM_VM_BIND_FLAGS ( \
379+ MSM_VM_BIND_FENCE_FD_IN | \
380+ MSM_VM_BIND_FENCE_FD_OUT | \
381+ 0)
382+
383+/**
384+ * struct drm_msm_vm_bind - Input of &DRM_IOCTL_MSM_VM_BIND
385+ */
386+struct drm_msm_vm_bind {
387+ /** @flags: in, bitmask of MSM_VM_BIND_x */
388+ __u32 flags;
389+ /** @nr_ops: the number of bind ops in this ioctl */
390+ __u32 nr_ops;
391+ /** @fence_fd: in/out fence fd (see MSM_VM_BIND_FENCE_FD_IN/OUT) */
392+ __s32 fence_fd;
393+ /** @queue_id: in, submitqueue id */
394+ __u32 queue_id;
395+ /** @in_syncobjs: in, ptr to array of drm_msm_gem_syncobj */
396+ __u64 in_syncobjs;
397+ /** @out_syncobjs: in, ptr to array of drm_msm_gem_syncobj */
398+ __u64 out_syncobjs;
399+ /** @nr_in_syncobjs: in, number of entries in in_syncobj */
400+ __u32 nr_in_syncobjs;
401+ /** @nr_out_syncobjs: in, number of entries in out_syncobj */
402+ __u32 nr_out_syncobjs;
403+ /** @syncobj_stride: in, stride of syncobj arrays */
404+ __u32 syncobj_stride;
405+ /** @op_stride: sizeof each struct drm_msm_vm_bind_op in @ops */
406+ __u32 op_stride;
407+ union {
408+ /** @op: used if num_ops == 1 */
409+ struct drm_msm_vm_bind_op op;
410+ /** @ops: userptr to array of drm_msm_vm_bind_op if num_ops > 1 */
411+ __u64 ops;
412+ };
303413 };
304414
305415 #define MSM_WAIT_FENCE_BOOST 0x00000001
@@ -345,12 +455,19 @@ struct drm_msm_gem_madvise { · 39 unmodified lines
345455 /*
346456 * Draw queues allow the user to set specific submission parameter. Command
347457 * submissions specify a specific submitqueue to use. ID 0 is reserved for
348− * backwards compatibility as a "default" submitqueue
458+ * backwards compatibility as a "default" submitqueue.
459+ *
460+ * Because VM_BIND async updates happen on the CPU, they must run on a
461+ * virtual queue created with the flag MSM_SUBMITQUEUE_VM_BIND. If we had
462+ * a way to do pgtable updates on the GPU, we could drop this restriction.
349463 */
350464
351465 #define MSM_SUBMITQUEUE_ALLOW_PREEMPT 0x00000001
466+#define MSM_SUBMITQUEUE_VM_BIND 0x00000002 /* virtual queue for VM_BIND ops */
467+
352468 #define MSM_SUBMITQUEUE_FLAGS ( \
353469 MSM_SUBMITQUEUE_ALLOW_PREEMPT | \
470+ MSM_SUBMITQUEUE_VM_BIND | \
354471 0)
355472
356473 /*
@@ -388,6 +505,7 @@ struct drm_msm_submitqueue_query { · 31 unmodified lines
388505 #define DRM_MSM_SUBMITQUEUE_NEW 0x0A
389506 #define DRM_MSM_SUBMITQUEUE_CLOSE 0x0B
390507 #define DRM_MSM_SUBMITQUEUE_QUERY 0x0C
508+#define DRM_MSM_VM_BIND 0x0D
391509
392510 #define DRM_IOCTL_MSM_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GET_PARAM, struct drm_msm_param)
393511 #define DRM_IOCTL_MSM_SET_PARAM DRM_IOW (DRM_COMMAND_BASE + DRM_MSM_SET_PARAM, struct drm_msm_param)
@@ -401,6 +519,7 @@ struct drm_msm_submitqueue_query { · 7 unmodified lines
401519 #define DRM_IOCTL_MSM_SUBMITQUEUE_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_SUBMITQUEUE_NEW, struct drm_msm_submitqueue)
402520 #define DRM_IOCTL_MSM_SUBMITQUEUE_CLOSE DRM_IOW (DRM_COMMAND_BASE + DRM_MSM_SUBMITQUEUE_CLOSE, __u32)
403521 #define DRM_IOCTL_MSM_SUBMITQUEUE_QUERY DRM_IOW (DRM_COMMAND_BASE + DRM_MSM_SUBMITQUEUE_QUERY, struct drm_msm_submitqueue_query)
522+#define DRM_IOCTL_MSM_VM_BIND DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_VM_BIND, struct drm_msm_vm_bind)
404523
405524 #if defined(__cplusplus)
406525 }
include/uapi/linux/bpf.h+44−1
@@ -450,6 +450,7 @@ union bpf_iter_link_info { · 449 unmodified lines
450450 * * **struct bpf_map_info**
451451 * * **struct bpf_btf_info**
452452 * * **struct bpf_link_info**
453+ * * **struct bpf_token_info**
453454 *
454455 * Return
455456 * Returns zero on success. On error, -1 is returned and *errno*
@@ -906,6 +907,17 @@ union bpf_iter_link_info { · 450 unmodified lines
906907 * A new file descriptor (a nonnegative integer), or -1 if an
907908 * error occurred (in which case, *errno* is set appropriately).
908909 *
910+ * BPF_PROG_STREAM_READ_BY_FD
911+ * Description
912+ * Read data of a program's BPF stream. The program is identified
913+ * by *prog_fd*, and the stream is identified by the *stream_id*.
914+ * The data is copied to a buffer pointed to by *stream_buf*, and
915+ * filled less than or equal to *stream_buf_len* bytes.
916+ *
917+ * Return
918+ * Number of bytes read from the stream on success, or -1 if an
919+ * error occurred (in which case, *errno* is set appropriately).
920+ *
909921 * NOTES
910922 * eBPF objects (maps and programs) can be shared between processes.
911923 *
@@ -961,6 +973,7 @@ enum bpf_cmd { · 49 unmodified lines
961973 BPF_LINK_DETACH,
962974 BPF_PROG_BIND_MAP,
963975 BPF_TOKEN_CREATE,
976+ BPF_PROG_STREAM_READ_BY_FD,
964977 __MAX_BPF_CMD,
965978 };
966979
@@ -1463,6 +1476,11 @@ struct bpf_stack_build_id { · 496 unmodified lines
14631476
14641477 #define BPF_OBJ_NAME_LEN 16U
14651478
1479+enum {
1480+ BPF_STREAM_STDOUT = 1,
1481+ BPF_STREAM_STDERR = 2,
1482+};
1483+
14661484 union bpf_attr {
14671485 struct { /* anonymous struct used by BPF_MAP_CREATE command */
14681486 __u32 map_type; /* one of enum bpf_map_type */
@@ -1794,6 +1812,13 @@ union bpf_attr { · 325 unmodified lines
17941812 };
17951813 __u64 expected_revision;
17961814 } netkit;
1815+ struct {
1816+ union {
1817+ __u32 relative_fd;
1818+ __u32 relative_id;
1819+ };
1820+ __u64 expected_revision;
1821+ } cgroup;
17971822 };
17981823 } link_create;
17991824
@@ -1842,6 +1867,13 @@ union bpf_attr { · 42 unmodified lines
18421867 __u32 bpffs_fd;
18431868 } token_create;
18441869
1870+ struct {
1871+ __aligned_u64 stream_buf;
1872+ __u32 stream_buf_len;
1873+ __u32 stream_id;
1874+ __u32 prog_fd;
1875+ } prog_stream_read;
1876+
18451877 } __attribute__((aligned(8)));
18461878
18471879 /* The description below is an attempt at providing documentation to eBPF
@@ -2403,7 +2435,7 @@ union bpf_attr { · 555 unmodified lines
24032435 * into it. An example is available in file
24042436 * *samples/bpf/trace_output_user.c* in the Linux kernel source
24052437 * tree (the eBPF program counterpart is in
2406− * *samples/bpf/trace_output_kern.c*).
2438+ * *samples/bpf/trace_output.bpf.c*).
24072439 *
24082440 * **bpf_perf_event_output**\ () achieves better performance
24092441 * than **bpf_trace_printk**\ () for sharing data with user
@@ -6653,11 +6685,15 @@ struct bpf_link_info { · 4243 unmodified lines
66536685 struct {
66546686 __aligned_u64 tp_name; /* in/out: tp_name buffer ptr */
66556687 __u32 tp_name_len; /* in/out: tp_name buffer len */
6688+ __u32 :32;
6689+ __u64 cookie;
66566690 } raw_tracepoint;
66576691 struct {
66586692 __u32 attach_type;
66596693 __u32 target_obj_id; /* prog_id for PROG_EXT, otherwise btf object id */
66606694 __u32 target_btf_id; /* BTF type id inside the object */
6695+ __u32 :32;
6696+ __u64 cookie;
66616697 } tracing;
66626698 struct {
66636699 __u64 cgroup_id;
@@ -6768,6 +6804,13 @@ struct bpf_link_info { · 104 unmodified lines
67686804 };
67696805 } __attribute__((aligned(8)));
67706806
6807+struct bpf_token_info {
6808+ __u64 allowed_cmds;
6809+ __u64 allowed_maps;
6810+ __u64 allowed_progs;
6811+ __u64 allowed_attachs;
6812+} __attribute__((aligned(8)));
6813+
67716814 /* User bpf_sock_addr struct to access socket fields and sockaddr struct passed
67726815 * by user and intended to be used by socket (e.g. to bind to, depends on
67736816 * attach type).
include/uapi/linux/btrfs.h+3−0
@@ -616,8 +616,11 @@ struct btrfs_ioctl_clone_range_args { · 615 unmodified lines
616616 #define BTRFS_DEFRAG_RANGE_COMPRESS 1
617617 #define BTRFS_DEFRAG_RANGE_START_IO 2
618618 #define BTRFS_DEFRAG_RANGE_COMPRESS_LEVEL 4
619+/* Request no compression on the range (uncompress if necessary). */
620+#define BTRFS_DEFRAG_RANGE_NOCOMPRESS 8
619621 #define BTRFS_DEFRAG_RANGE_FLAGS_SUPP (BTRFS_DEFRAG_RANGE_COMPRESS | \
620622 BTRFS_DEFRAG_RANGE_COMPRESS_LEVEL | \
623+ BTRFS_DEFRAG_RANGE_NOCOMPRESS | \
621624 BTRFS_DEFRAG_RANGE_START_IO)
622625
623626 struct btrfs_ioctl_defrag_range_args {
include/uapi/linux/capability.h+3−2
@@ -6,9 +6,10 @@ · 5 unmodified lines
66 * Alexander Kjeldaas <astor@guardian.no>
77 * with help from Aleph1, Roland Buresund and Andrew Main.
88 *
9− * See here for the libcap library ("POSIX draft" compliance):
9+ * See here for the libcap2 library (compliant with Section 25 of
10+ * the withdrawn POSIX 1003.1e Draft 17):
1011 *
11− * ftp://www.kernel.org/pub/linux/libs/security/linux-privs/kernel-2.6/
12+ * https://www.kernel.org/pub/linux/libs/security/linux-privs/libcap2/
1213 */
1314
1415 #ifndef _UAPI_LINUX_CAPABILITY_H
include/uapi/linux/coredump.h+104−0
@@ -0,0 +1,104 @@
1+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2+
3+#ifndef _UAPI_LINUX_COREDUMP_H
4+#define _UAPI_LINUX_COREDUMP_H
5+
6+#include <linux/types.h>
7+
8+/**
9+ * coredump_{req,ack} flags
10+ * @COREDUMP_KERNEL: kernel writes coredump
11+ * @COREDUMP_USERSPACE: userspace writes coredump
12+ * @COREDUMP_REJECT: don't generate coredump
13+ * @COREDUMP_WAIT: wait for coredump server
14+ */
15+enum {
16+ COREDUMP_KERNEL = (1ULL << 0),
17+ COREDUMP_USERSPACE = (1ULL << 1),
18+ COREDUMP_REJECT = (1ULL << 2),
19+ COREDUMP_WAIT = (1ULL << 3),
20+};
21+
22+/**
23+ * struct coredump_req - message kernel sends to userspace
24+ * @size: size of struct coredump_req
25+ * @size_ack: known size of struct coredump_ack on this kernel
26+ * @mask: supported features
27+ *
28+ * When a coredump happens the kernel will connect to the coredump
29+ * socket and send a coredump request to the coredump server. The @size
30+ * member is set to the size of struct coredump_req and provides a hint
31+ * to userspace how much data can be read. Userspace may use MSG_PEEK to
32+ * peek the size of struct coredump_req and then choose to consume it in
33+ * one go. Userspace may also simply read a COREDUMP_ACK_SIZE_VER0
34+ * request. If the size the kernel sends is larger userspace simply
35+ * discards any remaining data.
36+ *
37+ * The coredump_req->mask member is set to the currently know features.
38+ * Userspace may only set coredump_ack->mask to the bits raised by the
39+ * kernel in coredump_req->mask.
40+ *
41+ * The coredump_req->size_ack member is set by the kernel to the size of
42+ * struct coredump_ack the kernel knows. Userspace may only send up to
43+ * coredump_req->size_ack bytes to the kernel and must set
44+ * coredump_ack->size accordingly.
45+ */
46+struct coredump_req {
47+ __u32 size;
48+ __u32 size_ack;
49+ __u64 mask;
50+};
51+
52+enum {
53+ COREDUMP_REQ_SIZE_VER0 = 16U, /* size of first published struct */
54+};
55+
56+/**
57+ * struct coredump_ack - message userspace sends to kernel
58+ * @size: size of the struct
59+ * @spare: unused
60+ * @mask: features kernel is supposed to use
61+ *
62+ * The @size member must be set to the size of struct coredump_ack. It
63+ * may never exceed what the kernel returned in coredump_req->size_ack
64+ * but it may of course be smaller (>= COREDUMP_ACK_SIZE_VER0 and <=
65+ * coredump_req->size_ack).
66+ *
67+ * The @mask member must be set to the features the coredump server
68+ * wants the kernel to use. Only bits the kernel returned in
69+ * coredump_req->mask may be set.
70+ */
71+struct coredump_ack {
72+ __u32 size;
73+ __u32 spare;
74+ __u64 mask;
75+};
76+
77+enum {
78+ COREDUMP_ACK_SIZE_VER0 = 16U, /* size of first published struct */
79+};
80+
81+/**
82+ * enum coredump_mark - Markers for the coredump socket
83+ *
84+ * The kernel will place a single byte on the coredump socket. The
85+ * markers notify userspace whether the coredump ack succeeded or
86+ * failed.
87+ *
88+ * @COREDUMP_MARK_MINSIZE: the provided coredump_ack size was too small
89+ * @COREDUMP_MARK_MAXSIZE: the provided coredump_ack size was too big
90+ * @COREDUMP_MARK_UNSUPPORTED: the provided coredump_ack mask was invalid
91+ * @COREDUMP_MARK_CONFLICTING: the provided coredump_ack mask has conflicting options
92+ * @COREDUMP_MARK_REQACK: the coredump request and ack was successful
93+ * @__COREDUMP_MARK_MAX: the maximum coredump mark value
94+ */
95+enum coredump_mark {
96+ COREDUMP_MARK_REQACK = 0U,
97+ COREDUMP_MARK_MINSIZE = 1U,
98+ COREDUMP_MARK_MAXSIZE = 2U,
99+ COREDUMP_MARK_UNSUPPORTED = 3U,
100+ COREDUMP_MARK_CONFLICTING = 4U,
101+ __COREDUMP_MARK_MAX = (1U << 31),
102+};
103+
104+#endif /* _UAPI_LINUX_COREDUMP_H */
include/uapi/linux/devlink.h+16−0
@@ -221,6 +221,11 @@ enum devlink_port_flavour { · 220 unmodified lines
221221 */
222222 };
223223
224+/* IEEE 802.1Qaz standard supported values. */
225+
226+#define DEVLINK_RATE_TCS_MAX 8
227+#define DEVLINK_RATE_TC_INDEX_MAX (DEVLINK_RATE_TCS_MAX - 1)
228+
224229 enum devlink_rate_type {
225230 DEVLINK_RATE_TYPE_LEAF,
226231 DEVLINK_RATE_TYPE_NODE,
@@ -629,6 +634,8 @@ enum devlink_attr { · 402 unmodified lines
629634
630635 DEVLINK_ATTR_REGION_DIRECT, /* flag */
631636
637+ DEVLINK_ATTR_RATE_TC_BWS, /* nested */
638+
632639 /* Add new attributes above here, update the spec in
633640 * Documentation/netlink/specs/devlink.yaml and re-generate
634641 * net/devlink/netlink_gen.c.
@@ -638,6 +645,15 @@ enum devlink_attr { · 3 unmodified lines
638645 DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1
639646 };
640647
648+enum devlink_rate_tc_attr {
649+ DEVLINK_RATE_TC_ATTR_UNSPEC,
650+ DEVLINK_RATE_TC_ATTR_INDEX, /* u8 */
651+ DEVLINK_RATE_TC_ATTR_BW, /* u32 */
652+
653+ __DEVLINK_RATE_TC_ATTR_MAX,
654+ DEVLINK_RATE_TC_ATTR_MAX = __DEVLINK_RATE_TC_ATTR_MAX - 1
655+};
656+
641657 /* Mapping between internal resource described by the field and system
642658 * structure
643659 */
include/uapi/linux/dpll.h+13−0
@@ -192,6 +192,17 @@ enum dpll_pin_capabilities { · 191 unmodified lines
192192
193193 #define DPLL_PHASE_OFFSET_DIVIDER 1000
194194
195+/**
196+ * enum dpll_feature_state - Allow control (enable/disable) and status checking
197+ * over features.
198+ * @DPLL_FEATURE_STATE_DISABLE: feature shall be disabled
199+ * @DPLL_FEATURE_STATE_ENABLE: feature shall be enabled
200+ */
201+enum dpll_feature_state {
202+ DPLL_FEATURE_STATE_DISABLE,
203+ DPLL_FEATURE_STATE_ENABLE,
204+};
205+
195206 enum dpll_a {
196207 DPLL_A_ID = 1,
197208 DPLL_A_MODULE_NAME,
@@ -204,6 +215,7 @@ enum dpll_a { · 6 unmodified lines
204215 DPLL_A_TYPE,
205216 DPLL_A_LOCK_STATUS_ERROR,
206217 DPLL_A_CLOCK_QUALITY_LEVEL,
218+ DPLL_A_PHASE_OFFSET_MONITOR,
207219
208220 __DPLL_A_MAX,
209221 DPLL_A_MAX = (__DPLL_A_MAX - 1)
@@ -237,6 +249,7 @@ enum dpll_a_pin { · 27 unmodified lines
237249 DPLL_A_PIN_ESYNC_FREQUENCY,
238250 DPLL_A_PIN_ESYNC_FREQUENCY_SUPPORTED,
239251 DPLL_A_PIN_ESYNC_PULSE,
252+ DPLL_A_PIN_REFERENCE_SYNC,
240253
241254 __DPLL_A_PIN_MAX,
242255 DPLL_A_PIN_MAX = (__DPLL_A_PIN_MAX - 1)
include/uapi/linux/ethtool.h+2−2
@@ -2314,7 +2314,7 @@ enum { · 2313 unmodified lines
23142314 IPV6_USER_FLOW = 0x0e, /* spec only (usr_ip6_spec; nfc only) */
23152315 IPV4_FLOW = 0x10, /* hash only */
23162316 IPV6_FLOW = 0x11, /* hash only */
2317− ETHER_FLOW = 0x12, /* spec only (ether_spec) */
2317+ ETHER_FLOW = 0x12, /* hash or spec (ether_spec) */
23182318
23192319 /* Used for GTP-U IPv4 and IPv6.
23202320 * The format of GTP packets only includes
@@ -2371,7 +2371,7 @@ enum { · 50 unmodified lines
23712371 /* Flag to enable RSS spreading of traffic matching rule (nfc only) */
23722372 #define FLOW_RSS 0x20000000
23732373
2374−/* L3-L4 network traffic flow hash options */
2374+/* L2-L4 network traffic flow hash options */
23752375 #define RXH_L2DA (1 << 1)
23762376 #define RXH_VLAN (1 << 2)
23772377 #define RXH_L3_PROTO (1 << 3)
include/uapi/linux/ethtool_netlink.h+0−6
@@ -208,10 +208,4 @@ enum { · 207 unmodified lines
208208 ETHTOOL_A_STATS_PHY_MAX = (__ETHTOOL_A_STATS_PHY_CNT - 1)
209209 };
210210
211−/* generic netlink info */
212−#define ETHTOOL_GENL_NAME "ethtool"
213−#define ETHTOOL_GENL_VERSION 1
214−
215−#define ETHTOOL_MCGRP_MONITOR_NAME "monitor"
216−
217211 #endif /* _UAPI_LINUX_ETHTOOL_NETLINK_H_ */
include/uapi/linux/ethtool_netlink_generated.h+85−2
@@ -6,8 +6,8 @@ · 5 unmodified lines
66 #ifndef _UAPI_LINUX_ETHTOOL_NETLINK_GENERATED_H
77 #define _UAPI_LINUX_ETHTOOL_NETLINK_GENERATED_H
88
9−#define ETHTOOL_FAMILY_NAME "ethtool"
10−#define ETHTOOL_FAMILY_VERSION 1
9+#define ETHTOOL_GENL_NAME "ethtool"
10+#define ETHTOOL_GENL_VERSION 1
1111
1212 enum {
1313 ETHTOOL_UDP_TUNNEL_TYPE_VXLAN,
@@ -49,6 +49,34 @@ enum hwtstamp_source { · 35 unmodified lines
4949 HWTSTAMP_SOURCE_PHYLIB,
5050 };
5151
52+/**
53+ * enum ethtool_pse_event - PSE event list for the PSE controller
54+ * @ETHTOOL_PSE_EVENT_OVER_CURRENT: PSE output current is too high
55+ * @ETHTOOL_PSE_EVENT_OVER_TEMP: PSE in over temperature state
56+ * @ETHTOOL_C33_PSE_EVENT_DETECTION: detection process occur on the PSE. IEEE
57+ * 802.3-2022 33.2.5 and 145.2.6 PSE detection of PDs. IEEE 802.3-202
58+ * 30.9.1.1.5 aPSEPowerDetectionStatus
59+ * @ETHTOOL_C33_PSE_EVENT_CLASSIFICATION: classification process occur on the
60+ * PSE. IEEE 802.3-2022 33.2.6 and 145.2.8 classification of PDs mutual
61+ * identification. IEEE 802.3-2022 30.9.1.1.8 aPSEPowerClassification.
62+ * @ETHTOOL_C33_PSE_EVENT_DISCONNECTION: PD has been disconnected on the PSE.
63+ * IEEE 802.3-2022 33.3.8 and 145.3.9 PD Maintain Power Signature. IEEE
64+ * 802.3-2022 33.5.1.2.9 MPS Absent. IEEE 802.3-2022 30.9.1.1.20
65+ * aPSEMPSAbsentCounter.
66+ * @ETHTOOL_PSE_EVENT_OVER_BUDGET: PSE turned off due to over budget situation
67+ * @ETHTOOL_PSE_EVENT_SW_PW_CONTROL_ERROR: PSE faced an error managing the
68+ * power control from software
69+ */
70+enum ethtool_pse_event {
71+ ETHTOOL_PSE_EVENT_OVER_CURRENT = 1,
72+ ETHTOOL_PSE_EVENT_OVER_TEMP = 2,
73+ ETHTOOL_C33_PSE_EVENT_DETECTION = 4,
74+ ETHTOOL_C33_PSE_EVENT_CLASSIFICATION = 8,
75+ ETHTOOL_C33_PSE_EVENT_DISCONNECTION = 16,
76+ ETHTOOL_PSE_EVENT_OVER_BUDGET = 32,
77+ ETHTOOL_PSE_EVENT_SW_PW_CONTROL_ERROR = 64,
78+};
79+
5280 enum {
5381 ETHTOOL_A_HEADER_UNSPEC,
5482 ETHTOOL_A_HEADER_DEV_INDEX,
@@ -642,11 +670,47 @@ enum { · 587 unmodified lines
642670 ETHTOOL_A_C33_PSE_EXT_SUBSTATE,
643671 ETHTOOL_A_C33_PSE_AVAIL_PW_LIMIT,
644672 ETHTOOL_A_C33_PSE_PW_LIMIT_RANGES,
673+ ETHTOOL_A_PSE_PW_D_ID,
674+ ETHTOOL_A_PSE_PRIO_MAX,
675+ ETHTOOL_A_PSE_PRIO,
645676
646677 __ETHTOOL_A_PSE_CNT,
647678 ETHTOOL_A_PSE_MAX = (__ETHTOOL_A_PSE_CNT - 1)
648679 };
649680
681+enum {
682+ ETHTOOL_A_FLOW_ETHER = 1,
683+ ETHTOOL_A_FLOW_IP4,
684+ ETHTOOL_A_FLOW_IP6,
685+ ETHTOOL_A_FLOW_TCP4,
686+ ETHTOOL_A_FLOW_TCP6,
687+ ETHTOOL_A_FLOW_UDP4,
688+ ETHTOOL_A_FLOW_UDP6,
689+ ETHTOOL_A_FLOW_SCTP4,
690+ ETHTOOL_A_FLOW_SCTP6,
691+ ETHTOOL_A_FLOW_AH4,
692+ ETHTOOL_A_FLOW_AH6,
693+ ETHTOOL_A_FLOW_ESP4,
694+ ETHTOOL_A_FLOW_ESP6,
695+ ETHTOOL_A_FLOW_AH_ESP4,
696+ ETHTOOL_A_FLOW_AH_ESP6,
697+ ETHTOOL_A_FLOW_GTPU4,
698+ ETHTOOL_A_FLOW_GTPU6,
699+ ETHTOOL_A_FLOW_GTPC4,
700+ ETHTOOL_A_FLOW_GTPC6,
701+ ETHTOOL_A_FLOW_GTPC_TEID4,
702+ ETHTOOL_A_FLOW_GTPC_TEID6,
703+ ETHTOOL_A_FLOW_GTPU_EH4,
704+ ETHTOOL_A_FLOW_GTPU_EH6,
705+ ETHTOOL_A_FLOW_GTPU_UL4,
706+ ETHTOOL_A_FLOW_GTPU_UL6,
707+ ETHTOOL_A_FLOW_GTPU_DL4,
708+ ETHTOOL_A_FLOW_GTPU_DL6,
709+
710+ __ETHTOOL_A_FLOW_CNT,
711+ ETHTOOL_A_FLOW_MAX = (__ETHTOOL_A_FLOW_CNT - 1)
712+};
713+
650714 enum {
651715 ETHTOOL_A_RSS_UNSPEC,
652716 ETHTOOL_A_RSS_HEADER,
@@ -656,6 +720,7 @@ enum { · 3 unmodified lines
656720 ETHTOOL_A_RSS_HKEY,
657721 ETHTOOL_A_RSS_INPUT_XFRM,
658722 ETHTOOL_A_RSS_START_CONTEXT,
723+ ETHTOOL_A_RSS_FLOW_HASH,
659724
660725 __ETHTOOL_A_RSS_CNT,
661726 ETHTOOL_A_RSS_MAX = (__ETHTOOL_A_RSS_CNT - 1)
@@ -718,6 +783,14 @@ enum { · 56 unmodified lines
718783 ETHTOOL_A_TSCONFIG_MAX = (__ETHTOOL_A_TSCONFIG_CNT - 1)
719784 };
720785
786+enum {
787+ ETHTOOL_A_PSE_NTF_HEADER = 1,
788+ ETHTOOL_A_PSE_NTF_EVENTS,
789+
790+ __ETHTOOL_A_PSE_NTF_CNT,
791+ ETHTOOL_A_PSE_NTF_MAX = (__ETHTOOL_A_PSE_NTF_CNT - 1)
792+};
793+
721794 enum {
722795 ETHTOOL_MSG_USER_NONE = 0,
723796 ETHTOOL_MSG_STRSET_GET = 1,
@@ -767,6 +840,9 @@ enum { · 43 unmodified lines
767840 ETHTOOL_MSG_PHY_GET,
768841 ETHTOOL_MSG_TSCONFIG_GET,
769842 ETHTOOL_MSG_TSCONFIG_SET,
843+ ETHTOOL_MSG_RSS_SET,
844+ ETHTOOL_MSG_RSS_CREATE_ACT,
845+ ETHTOOL_MSG_RSS_DELETE_ACT,
770846
771847 __ETHTOOL_MSG_USER_CNT,
772848 ETHTOOL_MSG_USER_MAX = (__ETHTOOL_MSG_USER_CNT - 1)
@@ -822,9 +898,16 @@ enum { · 49 unmodified lines
822898 ETHTOOL_MSG_PHY_NTF,
823899 ETHTOOL_MSG_TSCONFIG_GET_REPLY,
824900 ETHTOOL_MSG_TSCONFIG_SET_REPLY,
901+ ETHTOOL_MSG_PSE_NTF,
902+ ETHTOOL_MSG_RSS_NTF,
903+ ETHTOOL_MSG_RSS_CREATE_ACT_REPLY,
904+ ETHTOOL_MSG_RSS_CREATE_NTF,
905+ ETHTOOL_MSG_RSS_DELETE_NTF,
825906
826907 __ETHTOOL_MSG_KERNEL_CNT,
827908 ETHTOOL_MSG_KERNEL_MAX = (__ETHTOOL_MSG_KERNEL_CNT - 1)
828909 };
829910
911+#define ETHTOOL_MCGRP_MONITOR_NAME "monitor"
912+
830913 #endif /* _UAPI_LINUX_ETHTOOL_NETLINK_GENERATED_H */
include/uapi/linux/falloc.h+17−0
@@ -78,4 +78,21 @@ · 77 unmodified lines
7878 */
7979 #define FALLOC_FL_UNSHARE_RANGE 0x40
8080
81+/*
82+ * FALLOC_FL_WRITE_ZEROES zeroes a specified file range in such a way that
83+ * subsequent writes to that range do not require further changes to the file
84+ * mapping metadata. This flag is beneficial for subsequent pure overwriting
85+ * within this range, as it can save on block allocation and, consequently,
86+ * significant metadata changes. Therefore, filesystems that always require
87+ * out-of-place writes should not support this flag.
88+ *
89+ * Different filesystems may implement different limitations on the
90+ * granularity of the zeroing operation. Most will preferably be accelerated
91+ * by submitting write zeroes command if the backing storage supports, which
92+ * may not physically write zeros to the media.
93+ *
94+ * This flag cannot be specified in conjunction with the FALLOC_FL_KEEP_SIZE.
95+ */
96+#define FALLOC_FL_WRITE_ZEROES 0x80
97+
8198 #endif /* _UAPI_FALLOC_H_ */
include/uapi/linux/fcntl.h+18−0
@@ -90,10 +90,28 @@ · 89 unmodified lines
9090 #define DN_ATTRIB 0x00000020 /* File changed attibutes */
9191 #define DN_MULTISHOT 0x80000000 /* Don't remove notifier */
9292
93+/* Reserved kernel ranges [-100], [-10000, -40000]. */
9394 #define AT_FDCWD -100 /* Special value for dirfd used to
9495 indicate openat should use the
9596 current working directory. */
9697
98+/*
99+ * The concept of process and threads in userland and the kernel is a confusing
100+ * one - within the kernel every thread is a 'task' with its own individual PID,
101+ * however from userland's point of view threads are grouped by a single PID,
102+ * which is that of the 'thread group leader', typically the first thread
103+ * spawned.
104+ *
105+ * To cut the Gideon knot, for internal kernel usage, we refer to
106+ * PIDFD_SELF_THREAD to refer to the current thread (or task from a kernel
107+ * perspective), and PIDFD_SELF_THREAD_GROUP to refer to the current thread
108+ * group leader...
109+ */
110+#define PIDFD_SELF_THREAD -10000 /* Current thread. */
111+#define PIDFD_SELF_THREAD_GROUP -10001 /* Current thread group leader. */
112+
113+#define FD_PIDFS_ROOT -10002 /* Root of the pidfs filesystem */
114+#define FD_INVALID -10009 /* Invalid file descriptor: -10000 - EBADF = -10009 */
97115
98116 /* Generic flags for the *at(2) family of syscalls. */
99117
include/uapi/linux/fs.h+88−0
@@ -60,6 +60,17 @@ · 59 unmodified lines
6060 #define RENAME_EXCHANGE (1 << 1) /* Exchange source and dest */
6161 #define RENAME_WHITEOUT (1 << 2) /* Whiteout source */
6262
63+/*
64+ * The root inode of procfs is guaranteed to always have the same inode number.
65+ * For programs that make heavy use of procfs, verifying that the root is a
66+ * real procfs root and using openat2(RESOLVE_{NO_{XDEV,MAGICLINKS},BENEATH})
67+ * will allow you to make sure you are never tricked into operating on the
68+ * wrong procfs file.
69+ */
70+enum procfs_ino {
71+ PROCFS_ROOT_INO = 1,
72+};
73+
6374 struct file_clone_range {
6475 __s64 src_fd;
6576 __u64 src_offset;
@@ -91,6 +102,63 @@ struct fs_sysfs_path { · 25 unmodified lines
91102 __u8 name[128];
92103 };
93104
105+/* Protection info capability flags */
106+#define LBMD_PI_CAP_INTEGRITY (1 << 0)
107+#define LBMD_PI_CAP_REFTAG (1 << 1)
108+
109+/* Checksum types for Protection Information */
110+#define LBMD_PI_CSUM_NONE 0
111+#define LBMD_PI_CSUM_IP 1
112+#define LBMD_PI_CSUM_CRC16_T10DIF 2
113+#define LBMD_PI_CSUM_CRC64_NVME 4
114+
115+/* sizeof first published struct */
116+#define LBMD_SIZE_VER0 16
117+
118+/*
119+ * Logical block metadata capability descriptor
120+ * If the device does not support metadata, all the fields will be zero.
121+ * Applications must check lbmd_flags to determine whether metadata is
122+ * supported or not.
123+ */
124+struct logical_block_metadata_cap {
125+ /* Bitmask of logical block metadata capability flags */
126+ __u32 lbmd_flags;
127+ /*
128+ * The amount of data described by each unit of logical block
129+ * metadata
130+ */
131+ __u16 lbmd_interval;
132+ /*
133+ * Size in bytes of the logical block metadata associated with each
134+ * interval
135+ */
136+ __u8 lbmd_size;
137+ /*
138+ * Size in bytes of the opaque block tag associated with each
139+ * interval
140+ */
141+ __u8 lbmd_opaque_size;
142+ /*
143+ * Offset in bytes of the opaque block tag within the logical block
144+ * metadata
145+ */
146+ __u8 lbmd_opaque_offset;
147+ /* Size in bytes of the T10 PI tuple associated with each interval */
148+ __u8 lbmd_pi_size;
149+ /* Offset in bytes of T10 PI tuple within the logical block metadata */
150+ __u8 lbmd_pi_offset;
151+ /* T10 PI guard tag type */
152+ __u8 lbmd_guard_tag_type;
153+ /* Size in bytes of the T10 PI application tag */
154+ __u8 lbmd_app_tag_size;
155+ /* Size in bytes of the T10 PI reference tag */
156+ __u8 lbmd_ref_tag_size;
157+ /* Size in bytes of the T10 PI storage tag */
158+ __u8 lbmd_storage_tag_size;
159+ __u8 pad;
160+};
161+
94162 /* extent-same (dedupe) ioctls; these MUST match the btrfs ioctl definitions */
95163 #define FILE_DEDUPE_RANGE_SAME 0
96164 #define FILE_DEDUPE_RANGE_DIFFERS 1
@@ -148,6 +216,24 @@ struct fsxattr { · 51 unmodified lines
148216 unsigned char fsx_pad[8];
149217 };
150218
219+/*
220+ * Variable size structure for file_[sg]et_attr().
221+ *
222+ * Note. This is alternative to the structure 'struct file_kattr'/'struct fsxattr'.
223+ * As this structure is passed to/from userspace with its size, this can
224+ * be versioned based on the size.
225+ */
226+struct file_attr {
227+ __u64 fa_xflags; /* xflags field value (get/set) */
228+ __u32 fa_extsize; /* extsize field value (get/set)*/
229+ __u32 fa_nextents; /* nextents field value (get) */
230+ __u32 fa_projid; /* project identifier (get/set) */
231+ __u32 fa_cowextsize; /* CoW extsize field value (get/set) */
232+};
233+
234+#define FILE_ATTR_SIZE_VER0 24
235+#define FILE_ATTR_SIZE_LATEST FILE_ATTR_SIZE_VER0
236+
151237 /*
152238 * Flags for the fsx_xflags field
153239 */
@@ -247,6 +333,8 @@ struct fsxattr { · 93 unmodified lines
247333 * also /sys/kernel/debug/ for filesystems with debugfs exports
248334 */
249335 #define FS_IOC_GETFSSYSFSPATH _IOR(0x15, 1, struct fs_sysfs_path)
336+/* Get logical block metadata capability details */
337+#define FS_IOC_GETLBMD_CAP _IOWR(0x15, 2, struct logical_block_metadata_cap)
250338
251339 /*
252340 * Inode flags (FS_IOC_GETFLAGS / FS_IOC_SETFLAGS)
include/uapi/linux/handshake.h+1−0
@@ -45,6 +45,7 @@ enum { · 44 unmodified lines
4545 HANDSHAKE_A_ACCEPT_PEER_IDENTITY,
4646 HANDSHAKE_A_ACCEPT_CERTIFICATE,
4747 HANDSHAKE_A_ACCEPT_PEERNAME,
48+ HANDSHAKE_A_ACCEPT_KEYRING,
4849
4950 __HANDSHAKE_A_ACCEPT_MAX,
5051 HANDSHAKE_A_ACCEPT_MAX = (__HANDSHAKE_A_ACCEPT_MAX - 1)
include/uapi/linux/i2c.h+2−1
@@ -21,7 +21,8 @@ · 20 unmodified lines
2121 *
2222 * @flags:
2323 * Supported by all adapters:
24− * %I2C_M_RD: read data (from slave to master). Guaranteed to be 0x0001!
24+ * %I2C_M_RD: read data (from slave to master). Guaranteed to be 0x0001! If
25+ * not set, the transaction is interpreted as write.
2526 *
2627 * Optional:
2728 * %I2C_M_DMA_SAFE: the buffer of this message is DMA safe. Makes only sense
include/uapi/linux/if_link.h+2−0
@@ -1398,6 +1398,7 @@ enum { · 1397 unmodified lines
13981398 IFLA_VXLAN_LOCALBYPASS,
13991399 IFLA_VXLAN_LABEL_POLICY, /* IPv6 flow label policy; ifla_vxlan_label_policy */
14001400 IFLA_VXLAN_RESERVED_BITS,
1401+ IFLA_VXLAN_MC_ROUTE,
14011402 __IFLA_VXLAN_MAX
14021403 };
14031404 #define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1)
@@ -1534,6 +1535,7 @@ enum { · 130 unmodified lines
15341535 IFLA_BOND_MISSED_MAX,
15351536 IFLA_BOND_NS_IP6_TARGET,
15361537 IFLA_BOND_COUPLED_CONTROL,
1538+ IFLA_BOND_BROADCAST_NEIGH,
15371539 __IFLA_BOND_MAX,
15381540 };
15391541
include/uapi/linux/if_tun.h+9−0
@@ -93,6 +93,15 @@ · 92 unmodified lines
9393 #define TUN_F_USO4 0x20 /* I can handle USO for IPv4 packets */
9494 #define TUN_F_USO6 0x40 /* I can handle USO for IPv6 packets */
9595
96+/* I can handle TSO/USO for UDP tunneled packets */
97+#define TUN_F_UDP_TUNNEL_GSO 0x080
98+
99+/*
100+ * I can handle TSO/USO for UDP tunneled packets requiring csum offload for
101+ * the outer header
102+ */
103+#define TUN_F_UDP_TUNNEL_GSO_CSUM 0x100
104+
96105 /* Protocol info prepended to the packets (when IFF_NO_PI is not set) */
97106 #define TUN_PKT_STRIP 0x0001
98107 struct tun_pi {
include/uapi/linux/if_xdp.h+1−0
@@ -79,6 +79,7 @@ struct xdp_mmap_offsets { · 78 unmodified lines
7979 #define XDP_UMEM_COMPLETION_RING 6
8080 #define XDP_STATISTICS 7
8181 #define XDP_OPTIONS 8
82+#define XDP_MAX_TX_SKB_BUDGET 9
8283
8384 struct xdp_umem_reg {
8485 __u64 addr; /* Start of packet data area */
include/uapi/linux/in6.h+2−2
@@ -152,7 +152,6 @@ struct in6_flowlabel_req { · 151 unmodified lines
152152 /*
153153 * IPV6 socket options
154154 */
155−#if __UAPI_DEF_IPV6_OPTIONS
156155 #define IPV6_ADDRFORM 1
157156 #define IPV6_2292PKTINFO 2
158157 #define IPV6_2292HOPOPTS 3
@@ -169,8 +168,10 @@ struct in6_flowlabel_req { · 10 unmodified lines
169168 #define IPV6_MULTICAST_IF 17
170169 #define IPV6_MULTICAST_HOPS 18
171170 #define IPV6_MULTICAST_LOOP 19
171+#if __UAPI_DEF_IPV6_OPTIONS
172172 #define IPV6_ADD_MEMBERSHIP 20
173173 #define IPV6_DROP_MEMBERSHIP 21
174+#endif
174175 #define IPV6_ROUTER_ALERT 22
175176 #define IPV6_MTU_DISCOVER 23
176177 #define IPV6_MTU 24
@@ -203,7 +204,6 @@ struct in6_flowlabel_req { · 26 unmodified lines
203204 #define IPV6_IPSEC_POLICY 34
204205 #define IPV6_XFRM_POLICY 35
205206 #define IPV6_HDRINCL 36
206−#endif
207207
208208 /*
209209 * Multicast:
include/uapi/linux/input-event-codes.h+8−0
@@ -601,6 +601,11 @@ · 600 unmodified lines
601601 #define BTN_DPAD_LEFT 0x222
602602 #define BTN_DPAD_RIGHT 0x223
603603
604+#define BTN_GRIPL 0x224
605+#define BTN_GRIPR 0x225
606+#define BTN_GRIPL2 0x226
607+#define BTN_GRIPR2 0x227
608+
604609 #define KEY_ALS_TOGGLE 0x230 /* Ambient light sensor */
605610 #define KEY_ROTATE_LOCK_TOGGLE 0x231 /* Display rotation lock */
606611 #define KEY_REFRESH_RATE_TOGGLE 0x232 /* Display refresh rate toggle */
@@ -765,6 +770,9 @@ · 158 unmodified lines
765770 #define KEY_KBD_LCD_MENU4 0x2bb
766771 #define KEY_KBD_LCD_MENU5 0x2bc
767772
773+/* Performance Boost key (Alienware)/G-Mode key (Dell) */
774+#define KEY_PERFORMANCE 0x2bd
775+
768776 #define BTN_TRIGGER_HAPPY 0x2c0
769777 #define BTN_TRIGGER_HAPPY1 0x2c0
770778 #define BTN_TRIGGER_HAPPY2 0x2c1
include/uapi/linux/input.h+1−0
@@ -275,6 +275,7 @@ struct input_mask { · 274 unmodified lines
275275 #define BUS_CEC 0x1E
276276 #define BUS_INTEL_ISHTP 0x1F
277277 #define BUS_AMD_SFH 0x20
278+#define BUS_SDW 0x21
278279
279280 /*
280281 * MT_TOOL types
include/uapi/linux/io_uring.h+22−1
@@ -50,7 +50,7 @@ struct io_uring_sqe { · 49 unmodified lines
5050 };
5151 __u32 len; /* buffer size or number of iovecs */
5252 union {
53− __kernel_rwf_t rw_flags;
53+ __u32 rw_flags;
5454 __u32 fsync_flags;
5555 __u16 poll_events; /* compatibility */
5656 __u32 poll32_events; /* word-reversed for BE */
@@ -392,12 +392,16 @@ enum io_uring_op { · 335 unmodified lines
392392 * the starting buffer ID in cqe->flags as per
393393 * usual for provided buffer usage. The buffers
394394 * will be contiguous from the starting buffer ID.
395+ *
396+ * IORING_SEND_VECTORIZED If set, SEND[_ZC] will take a pointer to a io_vec
397+ * to allow vectorized send operations.
395398 */
396399 #define IORING_RECVSEND_POLL_FIRST (1U << 0)
397400 #define IORING_RECV_MULTISHOT (1U << 1)
398401 #define IORING_RECVSEND_FIXED_BUF (1U << 2)
399402 #define IORING_SEND_ZC_REPORT_USAGE (1U << 3)
400403 #define IORING_RECVSEND_BUNDLE (1U << 4)
404+#define IORING_SEND_VECTORIZED (1U << 5)
401405
402406 /*
403407 * cqe.res for IORING_CQE_F_NOTIF if
@@ -449,6 +453,7 @@ enum io_uring_msg_ring_flags { · 45 unmodified lines
449453 #define IORING_NOP_FILE (1U << 1)
450454 #define IORING_NOP_FIXED_FILE (1U << 2)
451455 #define IORING_NOP_FIXED_BUFFER (1U << 3)
456+#define IORING_NOP_TW (1U << 4)
452457
453458 /*
454459 * IO completion data structure (Completion Queue Entry)
@@ -968,6 +973,22 @@ enum io_uring_socket_op { · 513 unmodified lines
968973 SOCKET_URING_OP_SIOCOUTQ,
969974 SOCKET_URING_OP_GETSOCKOPT,
970975 SOCKET_URING_OP_SETSOCKOPT,
976+ SOCKET_URING_OP_TX_TIMESTAMP,
977+};
978+
979+/*
980+ * SOCKET_URING_OP_TX_TIMESTAMP definitions
981+ */
982+
983+#define IORING_TIMESTAMP_HW_SHIFT 16
984+/* The cqe->flags bit from which the timestamp type is stored */
985+#define IORING_TIMESTAMP_TYPE_SHIFT (IORING_TIMESTAMP_HW_SHIFT + 1)
986+/* The cqe->flags flag signifying whether it's a hardware timestamp */
987+#define IORING_CQE_F_TSTAMP_HW ((__u32)1 << IORING_TIMESTAMP_HW_SHIFT)
988+
989+struct io_timespec {
990+ __u64 tv_sec;
991+ __u64 tv_nsec;
971992 };
972993
973994 /* Zero copy receive refill queue entry */
include/uapi/linux/io_uring/mock_file.h+47−0
@@ -0,0 +1,47 @@
1+#ifndef LINUX_IO_URING_MOCK_FILE_H
2+#define LINUX_IO_URING_MOCK_FILE_H
3+
4+#include <linux/types.h>
5+
6+enum {
7+ IORING_MOCK_FEAT_CMD_COPY,
8+ IORING_MOCK_FEAT_RW_ZERO,
9+ IORING_MOCK_FEAT_RW_NOWAIT,
10+ IORING_MOCK_FEAT_RW_ASYNC,
11+ IORING_MOCK_FEAT_POLL,
12+
13+ IORING_MOCK_FEAT_END,
14+};
15+
16+struct io_uring_mock_probe {
17+ __u64 features;
18+ __u64 __resv[9];
19+};
20+
21+enum {
22+ IORING_MOCK_CREATE_F_SUPPORT_NOWAIT = 1,
23+ IORING_MOCK_CREATE_F_POLL = 2,
24+};
25+
26+struct io_uring_mock_create {
27+ __u32 out_fd;
28+ __u32 flags;
29+ __u64 file_size;
30+ __u64 rw_delay_ns;
31+ __u64 __resv[13];
32+};
33+
34+enum {
35+ IORING_MOCK_MGR_CMD_PROBE,
36+ IORING_MOCK_MGR_CMD_CREATE,
37+};
38+
39+enum {
40+ IORING_MOCK_CMD_COPY_REGBUF,
41+};
42+
43+enum {
44+ IORING_MOCK_COPY_FROM = 1,
45+};
46+
47+#endif
include/uapi/linux/iommufd.h+151−3
@@ -56,6 +56,7 @@ enum { · 55 unmodified lines
5656 IOMMUFD_CMD_VDEVICE_ALLOC = 0x91,
5757 IOMMUFD_CMD_IOAS_CHANGE_PROCESS = 0x92,
5858 IOMMUFD_CMD_VEVENTQ_ALLOC = 0x93,
59+ IOMMUFD_CMD_HW_QUEUE_ALLOC = 0x94,
5960 };
6061
6162 /**
@@ -590,17 +591,44 @@ struct iommu_hw_info_arm_smmuv3 { · 528 unmodified lines
590591 __u32 aidr;
591592 };
592593
594+/**
595+ * struct iommu_hw_info_tegra241_cmdqv - NVIDIA Tegra241 CMDQV Hardware
596+ * Information (IOMMU_HW_INFO_TYPE_TEGRA241_CMDQV)
597+ *
598+ * @flags: Must be 0
599+ * @version: Version number for the CMDQ-V HW for PARAM bits[03:00]
600+ * @log2vcmdqs: Log2 of the total number of VCMDQs for PARAM bits[07:04]
601+ * @log2vsids: Log2 of the total number of SID replacements for PARAM bits[15:12]
602+ * @__reserved: Must be 0
603+ *
604+ * VMM can use these fields directly in its emulated global PARAM register. Note
605+ * that only one Virtual Interface (VINTF) should be exposed to a VM, i.e. PARAM
606+ * bits[11:08] should be set to 0 for log2 of the total number of VINTFs.
607+ */
608+struct iommu_hw_info_tegra241_cmdqv {
609+ __u32 flags;
610+ __u8 version;
611+ __u8 log2vcmdqs;
612+ __u8 log2vsids;
613+ __u8 __reserved;
614+};
615+
593616 /**
594617 * enum iommu_hw_info_type - IOMMU Hardware Info Types
595− * @IOMMU_HW_INFO_TYPE_NONE: Used by the drivers that do not report hardware
618+ * @IOMMU_HW_INFO_TYPE_NONE: Output by the drivers that do not report hardware
596619 * info
620+ * @IOMMU_HW_INFO_TYPE_DEFAULT: Input to request for a default type
597621 * @IOMMU_HW_INFO_TYPE_INTEL_VTD: Intel VT-d iommu info type
598622 * @IOMMU_HW_INFO_TYPE_ARM_SMMUV3: ARM SMMUv3 iommu info type
623+ * @IOMMU_HW_INFO_TYPE_TEGRA241_CMDQV: NVIDIA Tegra241 CMDQV (extension for ARM
624+ * SMMUv3) info type
599625 */
600626 enum iommu_hw_info_type {
601627 IOMMU_HW_INFO_TYPE_NONE = 0,
628+ IOMMU_HW_INFO_TYPE_DEFAULT = 0,
602629 IOMMU_HW_INFO_TYPE_INTEL_VTD = 1,
603630 IOMMU_HW_INFO_TYPE_ARM_SMMUV3 = 2,
631+ IOMMU_HW_INFO_TYPE_TEGRA241_CMDQV = 3,
604632 };
605633
606634 /**
@@ -625,6 +653,15 @@ enum iommufd_hw_capabilities { · 18 unmodified lines
625653 IOMMU_HW_CAP_PCI_PASID_PRIV = 1 << 2,
626654 };
627655
656+/**
657+ * enum iommufd_hw_info_flags - Flags for iommu_hw_info
658+ * @IOMMU_HW_INFO_FLAG_INPUT_TYPE: If set, @in_data_type carries an input type
659+ * for user space to request for a specific info
660+ */
661+enum iommufd_hw_info_flags {
662+ IOMMU_HW_INFO_FLAG_INPUT_TYPE = 1 << 0,
663+};
664+
628665 /**
629666 * struct iommu_hw_info - ioctl(IOMMU_GET_HW_INFO)
630667 * @size: sizeof(struct iommu_hw_info)
@@ -634,6 +671,12 @@ enum iommufd_hw_capabilities { · 3 unmodified lines
634671 * data that kernel supports
635672 * @data_uptr: User pointer to a user-space buffer used by the kernel to fill
636673 * the iommu type specific hardware information data
674+ * @in_data_type: This shares the same field with @out_data_type, making it be
675+ * a bidirectional field. When IOMMU_HW_INFO_FLAG_INPUT_TYPE is
676+ * set, an input type carried via this @in_data_type field will
677+ * be valid, requesting for the info data to the given type. If
678+ * IOMMU_HW_INFO_FLAG_INPUT_TYPE is unset, any input value will
679+ * be seen as IOMMU_HW_INFO_TYPE_DEFAULT
637680 * @out_data_type: Output the iommu hardware info type as defined in the enum
638681 * iommu_hw_info_type.
639682 * @out_capabilities: Output the generic iommu capability info type as defined
@@ -663,7 +706,10 @@ struct iommu_hw_info { · 23 unmodified lines
663706 __u32 dev_id;
664707 __u32 data_len;
665708 __aligned_u64 data_uptr;
666− __u32 out_data_type;
709+ union {
710+ __u32 in_data_type;
711+ __u32 out_data_type;
712+ };
667713 __u8 out_max_pasid_log2;
668714 __u8 __reserved[3];
669715 __aligned_u64 out_capabilities;
@@ -951,10 +997,29 @@ struct iommu_fault_alloc { · 281 unmodified lines
951997 * enum iommu_viommu_type - Virtual IOMMU Type
952998 * @IOMMU_VIOMMU_TYPE_DEFAULT: Reserved for future use
953999 * @IOMMU_VIOMMU_TYPE_ARM_SMMUV3: ARM SMMUv3 driver specific type
1000+ * @IOMMU_VIOMMU_TYPE_TEGRA241_CMDQV: NVIDIA Tegra241 CMDQV (extension for ARM
1001+ * SMMUv3) enabled ARM SMMUv3 type
9541002 */
9551003 enum iommu_viommu_type {
9561004 IOMMU_VIOMMU_TYPE_DEFAULT = 0,
9571005 IOMMU_VIOMMU_TYPE_ARM_SMMUV3 = 1,
1006+ IOMMU_VIOMMU_TYPE_TEGRA241_CMDQV = 2,
1007+};
1008+
1009+/**
1010+ * struct iommu_viommu_tegra241_cmdqv - NVIDIA Tegra241 CMDQV Virtual Interface
1011+ * (IOMMU_VIOMMU_TYPE_TEGRA241_CMDQV)
1012+ * @out_vintf_mmap_offset: mmap offset argument for VINTF's page0
1013+ * @out_vintf_mmap_length: mmap length argument for VINTF's page0
1014+ *
1015+ * Both @out_vintf_mmap_offset and @out_vintf_mmap_length are reported by kernel
1016+ * for user space to mmap the VINTF page0 from the host physical address space
1017+ * to the guest physical address space so that a guest kernel can directly R/W
1018+ * access to the VINTF page0 in order to control its virtual command queues.
1019+ */
1020+struct iommu_viommu_tegra241_cmdqv {
1021+ __aligned_u64 out_vintf_mmap_offset;
1022+ __aligned_u64 out_vintf_mmap_length;
9581023 };
9591024
9601025 /**
@@ -965,6 +1030,9 @@ enum iommu_viommu_type { · 4 unmodified lines
9651030 * @dev_id: The device's physical IOMMU will be used to back the virtual IOMMU
9661031 * @hwpt_id: ID of a nesting parent HWPT to associate to
9671032 * @out_viommu_id: Output virtual IOMMU ID for the allocated object
1033+ * @data_len: Length of the type specific data
1034+ * @__reserved: Must be 0
1035+ * @data_uptr: User pointer to a driver-specific virtual IOMMU data
9681036 *
9691037 * Allocate a virtual IOMMU object, representing the underlying physical IOMMU's
9701038 * virtualization support that is a security-isolated slice of the real IOMMU HW
@@ -985,6 +1053,9 @@ struct iommu_viommu_alloc { · 14 unmodified lines
9851053 __u32 dev_id;
9861054 __u32 hwpt_id;
9871055 __u32 out_viommu_id;
1056+ __u32 data_len;
1057+ __u32 __reserved;
1058+ __aligned_u64 data_uptr;
9881059 };
9891060 #define IOMMU_VIOMMU_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_VIOMMU_ALLOC)
9901061
@@ -995,10 +1066,15 @@ struct iommu_viommu_alloc { · 4 unmodified lines
9951066 * @dev_id: The physical device to allocate a virtual instance on the vIOMMU
9961067 * @out_vdevice_id: Object handle for the vDevice. Pass to IOMMU_DESTORY
9971068 * @virt_id: Virtual device ID per vIOMMU, e.g. vSID of ARM SMMUv3, vDeviceID
998− * of AMD IOMMU, and vRID of a nested Intel VT-d to a Context Table
1069+ * of AMD IOMMU, and vRID of Intel VT-d
9991070 *
10001071 * Allocate a virtual device instance (for a physical device) against a vIOMMU.
10011072 * This instance holds the device's information (related to its vIOMMU) in a VM.
1073+ * User should use IOMMU_DESTROY to destroy the virtual device before
1074+ * destroying the physical device (by closing vfio_cdev fd). Otherwise the
1075+ * virtual device would be forcibly destroyed on physical device destruction,
1076+ * its vdevice_id would be permanently leaked (unremovable & unreusable) until
1077+ * iommu fd closed.
10021078 */
10031079 struct iommu_vdevice_alloc {
10041080 __u32 size;
@@ -1075,10 +1151,12 @@ struct iommufd_vevent_header { · 70 unmodified lines
10751151 * enum iommu_veventq_type - Virtual Event Queue Type
10761152 * @IOMMU_VEVENTQ_TYPE_DEFAULT: Reserved for future use
10771153 * @IOMMU_VEVENTQ_TYPE_ARM_SMMUV3: ARM SMMUv3 Virtual Event Queue
1154+ * @IOMMU_VEVENTQ_TYPE_TEGRA241_CMDQV: NVIDIA Tegra241 CMDQV Extension IRQ
10781155 */
10791156 enum iommu_veventq_type {
10801157 IOMMU_VEVENTQ_TYPE_DEFAULT = 0,
10811158 IOMMU_VEVENTQ_TYPE_ARM_SMMUV3 = 1,
1159+ IOMMU_VEVENTQ_TYPE_TEGRA241_CMDQV = 2,
10821160 };
10831161
10841162 /**
@@ -1102,6 +1180,19 @@ struct iommu_vevent_arm_smmuv3 { · 17 unmodified lines
11021180 __aligned_le64 evt[4];
11031181 };
11041182
1183+/**
1184+ * struct iommu_vevent_tegra241_cmdqv - Tegra241 CMDQV IRQ
1185+ * (IOMMU_VEVENTQ_TYPE_TEGRA241_CMDQV)
1186+ * @lvcmdq_err_map: 128-bit logical vcmdq error map, little-endian.
1187+ * (Refer to register LVCMDQ_ERR_MAPs per VINTF )
1188+ *
1189+ * The 128-bit register value from HW exclusively reflect the error bits for a
1190+ * Virtual Interface represented by a vIOMMU object. Read and report directly.
1191+ */
1192+struct iommu_vevent_tegra241_cmdqv {
1193+ __aligned_le64 lvcmdq_err_map[2];
1194+};
1195+
11051196 /**
11061197 * struct iommu_veventq_alloc - ioctl(IOMMU_VEVENTQ_ALLOC)
11071198 * @size: sizeof(struct iommu_veventq_alloc)
@@ -1141,4 +1232,61 @@ struct iommu_veventq_alloc { · 33 unmodified lines
11411232 __u32 __reserved;
11421233 };
11431234 #define IOMMU_VEVENTQ_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_VEVENTQ_ALLOC)
1235+
1236+/**
1237+ * enum iommu_hw_queue_type - HW Queue Type
1238+ * @IOMMU_HW_QUEUE_TYPE_DEFAULT: Reserved for future use
1239+ * @IOMMU_HW_QUEUE_TYPE_TEGRA241_CMDQV: NVIDIA Tegra241 CMDQV (extension for ARM
1240+ * SMMUv3) Virtual Command Queue (VCMDQ)
1241+ */
1242+enum iommu_hw_queue_type {
1243+ IOMMU_HW_QUEUE_TYPE_DEFAULT = 0,
1244+ /*
1245+ * TEGRA241_CMDQV requirements (otherwise, allocation will fail)
1246+ * - alloc starts from the lowest @index=0 in ascending order
1247+ * - destroy starts from the last allocated @index in descending order
1248+ * - @base_addr must be aligned to @length in bytes and mapped in IOAS
1249+ * - @length must be a power of 2, with a minimum 32 bytes and a maximum
1250+ * 2 ^ idr[1].CMDQS * 16 bytes (use GET_HW_INFO call to read idr[1]
1251+ * from struct iommu_hw_info_arm_smmuv3)
1252+ * - suggest to back the queue memory with contiguous physical pages or
1253+ * a single huge page with alignment of the queue size, and limit the
1254+ * emulated vSMMU's IDR1.CMDQS to log2(huge page size / 16 bytes)
1255+ */
1256+ IOMMU_HW_QUEUE_TYPE_TEGRA241_CMDQV = 1,
1257+};
1258+
1259+/**
1260+ * struct iommu_hw_queue_alloc - ioctl(IOMMU_HW_QUEUE_ALLOC)
1261+ * @size: sizeof(struct iommu_hw_queue_alloc)
1262+ * @flags: Must be 0
1263+ * @viommu_id: Virtual IOMMU ID to associate the HW queue with
1264+ * @type: One of enum iommu_hw_queue_type
1265+ * @index: The logical index to the HW queue per virtual IOMMU for a multi-queue
1266+ * model
1267+ * @out_hw_queue_id: The ID of the new HW queue
1268+ * @nesting_parent_iova: Base address of the queue memory in the guest physical
1269+ * address space
1270+ * @length: Length of the queue memory
1271+ *
1272+ * Allocate a HW queue object for a vIOMMU-specific HW-accelerated queue, which
1273+ * allows HW to access a guest queue memory described using @nesting_parent_iova
1274+ * and @length.
1275+ *
1276+ * A vIOMMU can allocate multiple queues, but it must use a different @index per
1277+ * type to separate each allocation, e.g::
1278+ *
1279+ * Type1 HW queue0, Type1 HW queue1, Type2 HW queue0, ...
1280+ */
1281+struct iommu_hw_queue_alloc {
1282+ __u32 size;
1283+ __u32 flags;
1284+ __u32 viommu_id;
1285+ __u32 type;
1286+ __u32 index;
1287+ __u32 out_hw_queue_id;
1288+ __aligned_u64 nesting_parent_iova;
1289+ __aligned_u64 length;
1290+};
1291+#define IOMMU_HW_QUEUE_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_HW_QUEUE_ALLOC)
11441292 #endif
include/uapi/linux/ipv6.h+1−0
@@ -199,6 +199,7 @@ enum { · 198 unmodified lines
199199 DEVCONF_NDISC_EVICT_NOCARRIER,
200200 DEVCONF_ACCEPT_UNTRACKED_NA,
201201 DEVCONF_ACCEPT_RA_MIN_LFT,
202+ DEVCONF_FORCE_FORWARDING,
202203 DEVCONF_MAX
203204 };
204205
include/uapi/linux/kexec.h+1−0
@@ -27,6 +27,7 @@ · 26 unmodified lines
2727 #define KEXEC_FILE_ON_CRASH 0x00000002
2828 #define KEXEC_FILE_NO_INITRAMFS 0x00000004
2929 #define KEXEC_FILE_DEBUG 0x00000008
30+#define KEXEC_FILE_NO_CMA 0x00000010
3031
3132 /* These values match the ELF architecture values.
3233 * Unless there is a good reason that should continue to be the case.
include/uapi/linux/kvm.h+28−0
@@ -178,6 +178,7 @@ struct kvm_xen_exit { · 177 unmodified lines
178178 #define KVM_EXIT_NOTIFY 37
179179 #define KVM_EXIT_LOONGARCH_IOCSR 38
180180 #define KVM_EXIT_MEMORY_FAULT 39
181+#define KVM_EXIT_TDX 40
181182
182183 /* For KVM_EXIT_INTERNAL_ERROR */
183184 /* Emulate instruction failed. */
@@ -447,6 +448,31 @@ struct kvm_run { · 263 unmodified lines
447448 __u64 gpa;
448449 __u64 size;
449450 } memory_fault;
451+ /* KVM_EXIT_TDX */
452+ struct {
453+ __u64 flags;
454+ __u64 nr;
455+ union {
456+ struct {
457+ __u64 ret;
458+ __u64 data[5];
459+ } unknown;
460+ struct {
461+ __u64 ret;
462+ __u64 gpa;
463+ __u64 size;
464+ } get_quote;
465+ struct {
466+ __u64 ret;
467+ __u64 leaf;
468+ __u64 r11, r12, r13, r14;
469+ } get_tdvmcall_info;
470+ struct {
471+ __u64 ret;
472+ __u64 vector;
473+ } setup_event_notify;
474+ };
475+ } tdx;
450476 /* Fix the size of the union. */
451477 char padding[256];
452478 };
@@ -618,6 +644,7 @@ struct kvm_ioeventfd { · 165 unmodified lines
618644 #define KVM_X86_DISABLE_EXITS_HLT (1 << 1)
619645 #define KVM_X86_DISABLE_EXITS_PAUSE (1 << 2)
620646 #define KVM_X86_DISABLE_EXITS_CSTATE (1 << 3)
647+#define KVM_X86_DISABLE_EXITS_APERFMPERF (1 << 4)
621648
622649 /* for KVM_ENABLE_CAP */
623650 struct kvm_enable_cap {
@@ -934,6 +961,7 @@ struct kvm_enable_cap { · 310 unmodified lines
934961 #define KVM_CAP_ARM_EL2 240
935962 #define KVM_CAP_ARM_EL2_E2H0 241
936963 #define KVM_CAP_RISCV_MP_STATE_RESET 242
964+#define KVM_CAP_ARM_CACHEABLE_PFNMAP_SUPPORTED 243
937965
938966 struct kvm_irq_routing_irqchip {
939967 __u32 irqchip;
include/uapi/linux/mctp.h+8−0
@@ -37,6 +37,14 @@ struct sockaddr_mctp_ext { · 36 unmodified lines
3737 __u8 smctp_haddr[MAX_ADDR_LEN];
3838 };
3939
40+/* A "fully qualified" MCTP address, which includes the system-local network ID,
41+ * required to uniquely resolve a routable EID.
42+ */
43+struct mctp_fq_addr {
44+ unsigned int net;
45+ mctp_eid_t eid;
46+};
47+
4048 #define MCTP_NET_ANY 0x0
4149
4250 #define MCTP_ADDR_NULL 0x00
include/uapi/linux/media/raspberrypi/pisp_be_config.h+5−4
@@ -21,10 +21,11 @@ · 20 unmodified lines
2121 /* preferred byte alignment for outputs */
2222 #define PISP_BACK_END_OUTPUT_MAX_ALIGN 64u
2323
24−/* minimum allowed tile width anywhere in the pipeline */
25−#define PISP_BACK_END_MIN_TILE_WIDTH 16u
26−/* minimum allowed tile width anywhere in the pipeline */
27−#define PISP_BACK_END_MIN_TILE_HEIGHT 16u
24+/* minimum allowed tile sizes anywhere in the pipeline */
25+#define PISP_BACK_END_MIN_TILE_WIDTH 16u
26+#define PISP_BACK_END_MIN_TILE_HEIGHT 16u
27+#define PISP_BACK_END_MAX_TILE_WIDTH 65536u
28+#define PISP_BACK_END_MAX_TILE_HEIGHT 65536u
2829
2930 #define PISP_BACK_END_NUM_OUTPUTS 2
3031 #define PISP_BACK_END_HOG_OUTPUT 1
include/uapi/linux/mptcp_pm.h+3−3
@@ -27,14 +27,14 @@ · 26 unmodified lines
2727 * token, rem_id.
2828 * @MPTCP_EVENT_SUB_ESTABLISHED: A new subflow has been established. 'error'
2929 * should not be set. Attributes: token, family, loc_id, rem_id, saddr4 |
30− * saddr6, daddr4 | daddr6, sport, dport, backup, if_idx [, error].
30+ * saddr6, daddr4 | daddr6, sport, dport, backup, if-idx [, error].
3131 * @MPTCP_EVENT_SUB_CLOSED: A subflow has been closed. An error (copy of
3232 * sk_err) could be set if an error has been detected for this subflow.
3333 * Attributes: token, family, loc_id, rem_id, saddr4 | saddr6, daddr4 |
34− * daddr6, sport, dport, backup, if_idx [, error].
34+ * daddr6, sport, dport, backup, if-idx [, error].
3535 * @MPTCP_EVENT_SUB_PRIORITY: The priority of a subflow has changed. 'error'
3636 * should not be set. Attributes: token, family, loc_id, rem_id, saddr4 |
37− * saddr6, daddr4 | daddr6, sport, dport, backup, if_idx [, error].
37+ * saddr6, daddr4 | daddr6, sport, dport, backup, if-idx [, error].
3838 * @MPTCP_EVENT_LISTENER_CREATED: A new PM listener is created. Attributes:
3939 * family, sport, saddr4 | saddr6.
4040 * @MPTCP_EVENT_LISTENER_CLOSED: A PM listener is closed. Attributes: family,
include/uapi/linux/neighbour.h+5−0
@@ -54,6 +54,7 @@ enum { · 53 unmodified lines
5454 /* Extended flags under NDA_FLAGS_EXT: */
5555 #define NTF_EXT_MANAGED (1 << 0)
5656 #define NTF_EXT_LOCKED (1 << 1)
57+#define NTF_EXT_EXT_VALIDATED (1 << 2)
5758
5859 /*
5960 * Neighbor Cache Entry States.
@@ -92,6 +93,10 @@ enum { · 32 unmodified lines
9293 * bridge in response to a host trying to communicate via a locked bridge port
9394 * with MAB enabled. Their purpose is to notify user space that a host requires
9495 * authentication.
96+ *
97+ * NTF_EXT_EXT_VALIDATED flagged neighbor entries were externally validated by
98+ * a user space control plane. The kernel will not remove or invalidate them,
99+ * but it can probe them and notify user space when they become reachable.
95100 */
96101
97102 struct nda_cacheinfo {
include/uapi/linux/net_dropmon.h+0−7
@@ -10,13 +10,6 @@ struct net_dm_drop_point { · 9 unmodified lines
1010 __u32 count;
1111 };
1212
13−#define is_drop_point_hw(x) do {\
14− int ____i, ____j;\
15− for (____i = 0; ____i < 8; i ____i++)\
16− ____j |= x[____i];\
17− ____j;\
18−} while (0)
19−
2013 #define NET_DM_CFG_VERSION 0
2114 #define NET_DM_CFG_ALERT_COUNT 1
2215 #define NET_DM_CFG_ALERT_DELAY 2
include/uapi/linux/netconf.h+1−0
@@ -19,6 +19,7 @@ enum { · 18 unmodified lines
1919 NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN,
2020 NETCONFA_INPUT,
2121 NETCONFA_BC_FORWARDING,
22+ NETCONFA_FORCE_FORWARDING,
2223 __NETCONFA_MAX
2324 };
2425 #define NETCONFA_MAX (__NETCONFA_MAX - 1)
include/uapi/linux/netdev.h+6−0
@@ -77,6 +77,11 @@ enum netdev_qstats_scope { · 76 unmodified lines
7777 NETDEV_QSTATS_SCOPE_QUEUE = 1,
7878 };
7979
80+enum netdev_napi_threaded {
81+ NETDEV_NAPI_THREADED_DISABLED,
82+ NETDEV_NAPI_THREADED_ENABLED,
83+};
84+
8085 enum {
8186 NETDEV_A_DEV_IFINDEX = 1,
8287 NETDEV_A_DEV_PAD,
@@ -134,6 +139,7 @@ enum { · 51 unmodified lines
134139 NETDEV_A_NAPI_DEFER_HARD_IRQS,
135140 NETDEV_A_NAPI_GRO_FLUSH_TIMEOUT,
136141 NETDEV_A_NAPI_IRQ_SUSPEND_TIMEOUT,
142+ NETDEV_A_NAPI_THREADED,
137143
138144 __NETDEV_A_NAPI_MAX,
139145 NETDEV_A_NAPI_MAX = (__NETDEV_A_NAPI_MAX - 1)
include/uapi/linux/netfilter/nf_tables.h+0−10
@@ -142,8 +142,6 @@ enum nf_tables_msg_types { · 141 unmodified lines
142142 NFT_MSG_DESTROYOBJ,
143143 NFT_MSG_DESTROYFLOWTABLE,
144144 NFT_MSG_GETSETELEM_RESET,
145− NFT_MSG_NEWDEV,
146− NFT_MSG_DELDEV,
147145 NFT_MSG_MAX,
148146 };
149147
@@ -1786,18 +1784,10 @@ enum nft_synproxy_attributes { · 1636 unmodified lines
17861784 * enum nft_device_attributes - nf_tables device netlink attributes
17871785 *
17881786 * @NFTA_DEVICE_NAME: name of this device (NLA_STRING)
1789− * @NFTA_DEVICE_TABLE: table containing the flowtable or chain hooking into the device (NLA_STRING)
1790− * @NFTA_DEVICE_FLOWTABLE: flowtable hooking into the device (NLA_STRING)
1791− * @NFTA_DEVICE_CHAIN: chain hooking into the device (NLA_STRING)
1792− * @NFTA_DEVICE_SPEC: hook spec matching the device (NLA_STRING)
17931787 */
17941788 enum nft_devices_attributes {
17951789 NFTA_DEVICE_UNSPEC,
17961790 NFTA_DEVICE_NAME,
1797− NFTA_DEVICE_TABLE,
1798− NFTA_DEVICE_FLOWTABLE,
1799− NFTA_DEVICE_CHAIN,
1800− NFTA_DEVICE_SPEC,
18011791 __NFTA_DEVICE_MAX
18021792 };
18031793 #define NFTA_DEVICE_MAX (__NFTA_DEVICE_MAX - 1)
include/uapi/linux/netfilter/nfnetlink.h+0−2
@@ -25,8 +25,6 @@ enum nfnetlink_groups { · 24 unmodified lines
2525 #define NFNLGRP_ACCT_QUOTA NFNLGRP_ACCT_QUOTA
2626 NFNLGRP_NFTRACE,
2727 #define NFNLGRP_NFTRACE NFNLGRP_NFTRACE
28− NFNLGRP_NFT_DEV,
29−#define NFNLGRP_NFT_DEV NFNLGRP_NFT_DEV
3028 __NFNLGRP_MAX,
3129 };
3230 #define NFNLGRP_MAX (__NFNLGRP_MAX - 1)
include/uapi/linux/netfilter/nfnetlink_hook.h+2−0
@@ -61,10 +61,12 @@ enum nfnl_hook_chain_desc_attributes { · 60 unmodified lines
6161 *
6262 * @NFNL_HOOK_TYPE_NFTABLES: nf_tables base chain
6363 * @NFNL_HOOK_TYPE_BPF: bpf program
64+ * @NFNL_HOOK_TYPE_NFT_FLOWTABLE: nf_tables flowtable
6465 */
6566 enum nfnl_hook_chaintype {
6667 NFNL_HOOK_TYPE_NFTABLES = 0x1,
6768 NFNL_HOOK_TYPE_BPF,
69+ NFNL_HOOK_TYPE_NFT_FLOWTABLE,
6870 };
6971
7072 /**
include/uapi/linux/nl80211.h+60−1
@@ -1330,7 +1330,15 @@ · 1329 unmodified lines
13301330 * TID to Link mapping for downlink/uplink traffic.
13311331 *
13321332 * @NL80211_CMD_ASSOC_MLO_RECONF: For a non-AP MLD station, request to
1333− * add/remove links to/from the association.
1333+ * add/remove links to/from the association. To indicate link
1334+ * reconfiguration request results from the driver, this command is also
1335+ * used as an event to notify userspace about the added links information.
1336+ * For notifying the removed links information, the existing
1337+ * %NL80211_CMD_LINKS_REMOVED command is used. This command is also used to
1338+ * notify userspace about newly added links for the current connection in
1339+ * case of AP-initiated link recommendation requests, received via
1340+ * a BTM (BSS Transition Management) request or a link reconfig notify
1341+ * frame, where the driver handles the link recommendation offload.
13341342 *
13351343 * @NL80211_CMD_EPCS_CFG: EPCS configuration for a station. Used by userland to
13361344 * control EPCS configuration. Used to notify userland on the current state
@@ -2899,6 +2907,27 @@ enum nl80211_commands { · 1562 unmodified lines
28992907 * APs Support". Drivers may set additional flags that they support
29002908 * in the kernel or device.
29012909 *
2910+ * @NL80211_ATTR_WIPHY_RADIO_INDEX: (int) Integer attribute denoting the index
2911+ * of the radio in interest. Internally a value of -1 is used to
2912+ * indicate that the radio id is not given in user-space. This means
2913+ * that all the attributes are applicable to all the radios. If there is
2914+ * a radio index provided in user-space, the attributes will be
2915+ * applicable to that specific radio only. If the radio id is greater
2916+ * thank the number of radios, error denoting invalid value is returned.
2917+ *
2918+ * @NL80211_ATTR_S1G_LONG_BEACON_PERIOD: (u8) Integer attribute that represents
2919+ * the number of beacon intervals between each long beacon transmission
2920+ * for an S1G BSS with short beaconing enabled. This is a required
2921+ * attribute for initialising an S1G short beaconing BSS. When updating
2922+ * the short beacon data, this is not required. It has a minimum value of
2923+ * 2 (i.e 2 beacon intervals).
2924+ *
2925+ * @NL80211_ATTR_S1G_SHORT_BEACON: Nested attribute containing the short beacon
2926+ * head and tail used to set or update the short beacon templates. When
2927+ * bringing up a new interface, %NL80211_ATTR_S1G_LONG_BEACON_PERIOD is
2928+ * required alongside this attribute. Refer to
2929+ * @enum nl80211_s1g_short_beacon_attrs for the attribute definitions.
2930+ *
29022931 * @NUM_NL80211_ATTR: total number of nl80211_attrs available
29032932 * @NL80211_ATTR_MAX: highest attribute number currently defined
29042933 * @__NL80211_ATTR_AFTER_LAST: internal use
@@ -3456,6 +3485,11 @@ enum nl80211_attrs { · 551 unmodified lines
34563485
34573486 NL80211_ATTR_ASSOC_MLD_EXT_CAPA_OPS,
34583487
3488+ NL80211_ATTR_WIPHY_RADIO_INDEX,
3489+
3490+ NL80211_ATTR_S1G_LONG_BEACON_PERIOD,
3491+ NL80211_ATTR_S1G_SHORT_BEACON,
3492+
34593493 /* add attributes here, update the policy in nl80211.c */
34603494
34613495 __NL80211_ATTR_AFTER_LAST,
@@ -8088,6 +8122,7 @@ enum nl80211_ap_settings_flags { · 4626 unmodified lines
80888122 * and contains attributes defined in &enum nl80211_if_combination_attrs.
80898123 * @NL80211_WIPHY_RADIO_ATTR_ANTENNA_MASK: bitmask (u32) of antennas
80908124 * connected to this radio.
8125+ * @NL80211_WIPHY_RADIO_ATTR_RTS_THRESHOLD: RTS threshold (u32) of this radio.
80918126 *
80928127 * @__NL80211_WIPHY_RADIO_ATTR_LAST: Internal
80938128 * @NL80211_WIPHY_RADIO_ATTR_MAX: Highest attribute
@@ -8099,6 +8134,7 @@ enum nl80211_wiphy_radio_attrs { · 5 unmodified lines
80998134 NL80211_WIPHY_RADIO_ATTR_FREQ_RANGE,
81008135 NL80211_WIPHY_RADIO_ATTR_INTERFACE_COMBINATION,
81018136 NL80211_WIPHY_RADIO_ATTR_ANTENNA_MASK,
8137+ NL80211_WIPHY_RADIO_ATTR_RTS_THRESHOLD,
81028138
81038139 /* keep last */
81048140 __NL80211_WIPHY_RADIO_ATTR_LAST,
@@ -8128,4 +8164,27 @@ enum nl80211_wiphy_radio_freq_range { · 23 unmodified lines
81288164 NL80211_WIPHY_RADIO_FREQ_ATTR_MAX = __NL80211_WIPHY_RADIO_FREQ_ATTR_LAST - 1,
81298165 };
81308166
8167+/**
8168+ * enum nl80211_s1g_short_beacon_attrs - S1G short beacon data
8169+ *
8170+ * @__NL80211_S1G_SHORT_BEACON_ATTR_INVALID: Invalid
8171+ *
8172+ * @NL80211_S1G_SHORT_BEACON_ATTR_HEAD: Short beacon head (binary).
8173+ * @NL80211_S1G_SHORT_BEACON_ATTR_TAIL: Short beacon tail (binary).
8174+ *
8175+ * @__NL80211_S1G_SHORT_BEACON_ATTR_LAST: Internal
8176+ * @NL80211_S1G_SHORT_BEACON_ATTR_MAX: Highest attribute
8177+ */
8178+enum nl80211_s1g_short_beacon_attrs {
8179+ __NL80211_S1G_SHORT_BEACON_ATTR_INVALID,
8180+
8181+ NL80211_S1G_SHORT_BEACON_ATTR_HEAD,
8182+ NL80211_S1G_SHORT_BEACON_ATTR_TAIL,
8183+
8184+ /* keep last */
8185+ __NL80211_S1G_SHORT_BEACON_ATTR_LAST,
8186+ NL80211_S1G_SHORT_BEACON_ATTR_MAX =
8187+ __NL80211_S1G_SHORT_BEACON_ATTR_LAST - 1
8188+};
8189+
81318190 #endif /* __LINUX_NL80211_H */
include/uapi/linux/nsfs.h+11−0
@@ -42,4 +42,15 @@ struct mnt_ns_info { · 41 unmodified lines
4242 /* Get previous namespace. */
4343 #define NS_MNT_GET_PREV _IOR(NSIO, 12, struct mnt_ns_info)
4444
45+enum init_ns_ino {
46+ IPC_NS_INIT_INO = 0xEFFFFFFFU,
47+ UTS_NS_INIT_INO = 0xEFFFFFFEU,
48+ USER_NS_INIT_INO = 0xEFFFFFFDU,
49+ PID_NS_INIT_INO = 0xEFFFFFFCU,
50+ CGROUP_NS_INIT_INO = 0xEFFFFFFBU,
51+ TIME_NS_INIT_INO = 0xEFFFFFFAU,
52+ NET_NS_INIT_INO = 0xEFFFFFF9U,
53+ MNT_NS_INIT_INO = 0xEFFFFFF8U,
54+};
55+
4556 #endif /* __LINUX_NSFS_H */
include/uapi/linux/openvswitch.h+6−0
@@ -186,6 +186,11 @@ enum ovs_packet_cmd { · 185 unmodified lines
186186 * %OVS_PACKET_ATTR_USERSPACE action specify the Maximum received fragment
187187 * size.
188188 * @OVS_PACKET_ATTR_HASH: Packet hash info (e.g. hash, sw_hash and l4_hash in skb).
189+ * @OVS_PACKET_ATTR_UPCALL_PID: Netlink PID to use for upcalls while
190+ * processing %OVS_PACKET_CMD_EXECUTE. Takes precedence over all other ways
191+ * to determine the Netlink PID including %OVS_USERSPACE_ATTR_PID,
192+ * %OVS_DP_ATTR_UPCALL_PID, %OVS_DP_ATTR_PER_CPU_PIDS and the
193+ * %OVS_VPORT_ATTR_UPCALL_PID.
189194 *
190195 * These attributes follow the &struct ovs_header within the Generic Netlink
191196 * payload for %OVS_PACKET_* commands.
@@ -205,6 +210,7 @@ enum ovs_packet_attr { · 13 unmodified lines
205210 OVS_PACKET_ATTR_MRU, /* Maximum received IP fragment size. */
206211 OVS_PACKET_ATTR_LEN, /* Packet size before truncation. */
207212 OVS_PACKET_ATTR_HASH, /* Packet hash. */
213+ OVS_PACKET_ATTR_UPCALL_PID, /* u32 Netlink PID. */
208214 __OVS_PACKET_ATTR_MAX
209215 };
210216
include/uapi/linux/pci_regs.h+9−0
@@ -745,6 +745,7 @@ · 744 unmodified lines
745745 #define PCI_EXT_CAP_ID_L1SS 0x1E /* L1 PM Substates */
746746 #define PCI_EXT_CAP_ID_PTM 0x1F /* Precision Time Measurement */
747747 #define PCI_EXT_CAP_ID_DVSEC 0x23 /* Designated Vendor-Specific */
748+#define PCI_EXT_CAP_ID_VF_REBAR 0x24 /* VF Resizable BAR */
748749 #define PCI_EXT_CAP_ID_DLF 0x25 /* Data Link Feature */
749750 #define PCI_EXT_CAP_ID_PL_16GT 0x26 /* Physical Layer 16.0 GT/s */
750751 #define PCI_EXT_CAP_ID_NPEM 0x29 /* Native PCIe Enclosure Management */
@@ -1141,6 +1142,14 @@ · 390 unmodified lines
11411142 #define PCI_DVSEC_HEADER2 0x8 /* Designated Vendor-Specific Header2 */
11421143 #define PCI_DVSEC_HEADER2_ID(x) ((x) & 0xffff)
11431144
1145+/* VF Resizable BARs, same layout as PCI_REBAR */
1146+#define PCI_VF_REBAR_CAP PCI_REBAR_CAP
1147+#define PCI_VF_REBAR_CAP_SIZES PCI_REBAR_CAP_SIZES
1148+#define PCI_VF_REBAR_CTRL PCI_REBAR_CTRL
1149+#define PCI_VF_REBAR_CTRL_BAR_IDX PCI_REBAR_CTRL_BAR_IDX
1150+#define PCI_VF_REBAR_CTRL_NBAR_MASK PCI_REBAR_CTRL_NBAR_MASK
1151+#define PCI_VF_REBAR_CTRL_BAR_SIZE PCI_REBAR_CTRL_BAR_SIZE
1152+
11441153 /* Data Link Feature */
11451154 #define PCI_DLF_CAP 0x04 /* Capabilities Register */
11461155 #define PCI_DLF_EXCHANGE_ENABLE 0x80000000 /* Data Link Feature Exchange Enable */
include/uapi/linux/pcitest.h+1−0
@@ -21,6 +21,7 @@ · 20 unmodified lines
2121 #define PCITEST_SET_IRQTYPE _IOW('P', 0x8, int)
2222 #define PCITEST_GET_IRQTYPE _IO('P', 0x9)
2323 #define PCITEST_BARS _IO('P', 0xa)
24+#define PCITEST_DOORBELL _IO('P', 0xb)
2425 #define PCITEST_CLEAR_IRQ _IO('P', 0x10)
2526
2627 #define PCITEST_IRQ_TYPE_UNDEFINED -1
include/uapi/linux/pidfd.h+0−15
@@ -42,21 +42,6 @@ · 41 unmodified lines
4242 #define PIDFD_COREDUMP_USER (1U << 2) /* coredump was done as the user. */
4343 #define PIDFD_COREDUMP_ROOT (1U << 3) /* coredump was done as root. */
4444
45−/*
46− * The concept of process and threads in userland and the kernel is a confusing
47− * one - within the kernel every thread is a 'task' with its own individual PID,
48− * however from userland's point of view threads are grouped by a single PID,
49− * which is that of the 'thread group leader', typically the first thread
50− * spawned.
51− *
52− * To cut the Gideon knot, for internal kernel usage, we refer to
53− * PIDFD_SELF_THREAD to refer to the current thread (or task from a kernel
54− * perspective), and PIDFD_SELF_THREAD_GROUP to refer to the current thread
55− * group leader...
56− */
57−#define PIDFD_SELF_THREAD -10000 /* Current thread. */
58−#define PIDFD_SELF_THREAD_GROUP -20000 /* Current thread group leader. */
59−
6045 /*
6146 * ...and for userland we make life simpler - PIDFD_SELF refers to the current
6247 * thread, PIDFD_SELF_PROCESS refers to the process thread group leader.
include/uapi/linux/pkt_sched.h+68−0
@@ -1211,4 +1211,72 @@ enum { · 1210 unmodified lines
12111211
12121212 #define TCA_ETS_MAX (__TCA_ETS_MAX - 1)
12131213
1214+/* DUALPI2 */
1215+enum tc_dualpi2_drop_overload {
1216+ TC_DUALPI2_DROP_OVERLOAD_OVERFLOW = 0,
1217+ TC_DUALPI2_DROP_OVERLOAD_DROP = 1,
1218+ __TCA_DUALPI2_DROP_OVERLOAD_MAX,
1219+};
1220+#define TCA_DUALPI2_DROP_OVERLOAD_MAX (__TCA_DUALPI2_DROP_OVERLOAD_MAX - 1)
1221+
1222+enum tc_dualpi2_drop_early {
1223+ TC_DUALPI2_DROP_EARLY_DROP_DEQUEUE = 0,
1224+ TC_DUALPI2_DROP_EARLY_DROP_ENQUEUE = 1,
1225+ __TCA_DUALPI2_DROP_EARLY_MAX,
1226+};
1227+#define TCA_DUALPI2_DROP_EARLY_MAX (__TCA_DUALPI2_DROP_EARLY_MAX - 1)
1228+
1229+enum tc_dualpi2_ecn_mask {
1230+ TC_DUALPI2_ECN_MASK_L4S_ECT = 1,
1231+ TC_DUALPI2_ECN_MASK_CLA_ECT = 2,
1232+ TC_DUALPI2_ECN_MASK_ANY_ECT = 3,
1233+ __TCA_DUALPI2_ECN_MASK_MAX,
1234+};
1235+#define TCA_DUALPI2_ECN_MASK_MAX (__TCA_DUALPI2_ECN_MASK_MAX - 1)
1236+
1237+enum tc_dualpi2_split_gso {
1238+ TC_DUALPI2_SPLIT_GSO_NO_SPLIT_GSO = 0,
1239+ TC_DUALPI2_SPLIT_GSO_SPLIT_GSO = 1,
1240+ __TCA_DUALPI2_SPLIT_GSO_MAX,
1241+};
1242+#define TCA_DUALPI2_SPLIT_GSO_MAX (__TCA_DUALPI2_SPLIT_GSO_MAX - 1)
1243+
1244+enum {
1245+ TCA_DUALPI2_UNSPEC,
1246+ TCA_DUALPI2_LIMIT, /* Packets */
1247+ TCA_DUALPI2_MEMORY_LIMIT, /* Bytes */
1248+ TCA_DUALPI2_TARGET, /* us */
1249+ TCA_DUALPI2_TUPDATE, /* us */
1250+ TCA_DUALPI2_ALPHA, /* Hz scaled up by 256 */
1251+ TCA_DUALPI2_BETA, /* Hz scaled up by 256 */
1252+ TCA_DUALPI2_STEP_THRESH_PKTS, /* Step threshold in packets */
1253+ TCA_DUALPI2_STEP_THRESH_US, /* Step threshold in microseconds */
1254+ TCA_DUALPI2_MIN_QLEN_STEP, /* Minimum qlen to apply STEP_THRESH */
1255+ TCA_DUALPI2_COUPLING, /* Coupling factor between queues */
1256+ TCA_DUALPI2_DROP_OVERLOAD, /* Whether to drop on overload */
1257+ TCA_DUALPI2_DROP_EARLY, /* Whether to drop on enqueue */
1258+ TCA_DUALPI2_C_PROTECTION, /* Percentage */
1259+ TCA_DUALPI2_ECN_MASK, /* L4S queue classification mask */
1260+ TCA_DUALPI2_SPLIT_GSO, /* Split GSO packets at enqueue */
1261+ TCA_DUALPI2_PAD,
1262+ __TCA_DUALPI2_MAX
1263+};
1264+
1265+#define TCA_DUALPI2_MAX (__TCA_DUALPI2_MAX - 1)
1266+
1267+struct tc_dualpi2_xstats {
1268+ __u32 prob; /* current probability */
1269+ __u32 delay_c; /* current delay in C queue */
1270+ __u32 delay_l; /* current delay in L queue */
1271+ __u32 packets_in_c; /* number of packets enqueued in C queue */
1272+ __u32 packets_in_l; /* number of packets enqueued in L queue */
1273+ __u32 maxq; /* maximum queue size */
1274+ __u32 ecn_mark; /* packets marked with ecn*/
1275+ __u32 step_marks; /* ECN marks due to the step AQM */
1276+ __s32 credit; /* current c_protection credit */
1277+ __u32 memory_used; /* Memory used by both queues */
1278+ __u32 max_memory_used; /* Maximum used memory */
1279+ __u32 memory_limit; /* Memory limit of both queues */
1280+};
1281+
12141282 #endif
include/uapi/linux/prctl.h+8−3
@@ -244,6 +244,8 @@ struct prctl_mm_map { · 243 unmodified lines
244244 # define PR_MTE_TAG_MASK (0xffffUL << PR_MTE_TAG_SHIFT)
245245 /* Unused; kept only for source compatibility */
246246 # define PR_MTE_TCF_SHIFT 1
247+/* MTE tag check store only */
248+# define PR_MTE_STORE_ONLY (1UL << 19)
247249 /* RISC-V pointer masking tag length */
248250 # define PR_PMLEN_SHIFT 24
249251 # define PR_PMLEN_MASK (0x7fUL << PR_PMLEN_SHIFT)
@@ -255,7 +257,12 @@ struct prctl_mm_map { · 5 unmodified lines
255257 /* Dispatch syscalls to a userspace handler */
256258 #define PR_SET_SYSCALL_USER_DISPATCH 59
257259 # define PR_SYS_DISPATCH_OFF 0
258−# define PR_SYS_DISPATCH_ON 1
260+/* Enable dispatch except for the specified range */
261+# define PR_SYS_DISPATCH_EXCLUSIVE_ON 1
262+/* Enable dispatch for the specified range */
263+# define PR_SYS_DISPATCH_INCLUSIVE_ON 2
264+/* Legacy name for backwards compatibility */
265+# define PR_SYS_DISPATCH_ON PR_SYS_DISPATCH_EXCLUSIVE_ON
259266 /* The control values for the user space selector when dispatch is enabled */
260267 # define SYSCALL_DISPATCH_FILTER_ALLOW 0
261268 # define SYSCALL_DISPATCH_FILTER_BLOCK 1
@@ -367,8 +374,6 @@ struct prctl_mm_map { · 105 unmodified lines
367374 /* FUTEX hash management */
368375 #define PR_FUTEX_HASH 78
369376 # define PR_FUTEX_HASH_SET_SLOTS 1
370−# define FH_FLAG_IMMUTABLE (1ULL << 0)
371377 # define PR_FUTEX_HASH_GET_SLOTS 2
372−# define PR_FUTEX_HASH_GET_IMMUTABLE 3
373378
374379 #endif /* _LINUX_PRCTL_H */
include/uapi/linux/pwm.h+53−0
@@ -0,0 +1,53 @@
1+/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
2+
3+#ifndef _UAPI_PWM_H_
4+#define _UAPI_PWM_H_
5+
6+#include <linux/ioctl.h>
7+#include <linux/types.h>
8+
9+/**
10+ * struct pwmchip_waveform - Describe a PWM waveform for a pwm_chip's PWM channel
11+ * @hwpwm: per-chip relative index of the PWM device
12+ * @__pad: padding, must be zero
13+ * @period_length_ns: duration of the repeating period.
14+ * A value of 0 represents a disabled PWM.
15+ * @duty_length_ns: duration of the active part in each period
16+ * @duty_offset_ns: offset of the rising edge from a period's start
17+ */
18+struct pwmchip_waveform {
19+ __u32 hwpwm;
20+ __u32 __pad;
21+ __u64 period_length_ns;
22+ __u64 duty_length_ns;
23+ __u64 duty_offset_ns;
24+};
25+
26+/* Reserves the passed hwpwm for exclusive control. */
27+#define PWM_IOCTL_REQUEST _IO(0x75, 1)
28+
29+/* counter part to PWM_IOCTL_REQUEST */
30+#define PWM_IOCTL_FREE _IO(0x75, 2)
31+
32+/*
33+ * Modifies the passed wf according to hardware constraints. All parameters are
34+ * rounded down to the next possible value, unless there is no such value, then
35+ * values are rounded up. Note that zero isn't considered for rounding down
36+ * period_length_ns.
37+ */
38+#define PWM_IOCTL_ROUNDWF _IOWR(0x75, 3, struct pwmchip_waveform)
39+
40+/* Get the currently implemented waveform */
41+#define PWM_IOCTL_GETWF _IOWR(0x75, 4, struct pwmchip_waveform)
42+
43+/* Like PWM_IOCTL_ROUNDWF + PWM_IOCTL_SETEXACTWF in one go. */
44+#define PWM_IOCTL_SETROUNDEDWF _IOW(0x75, 5, struct pwmchip_waveform)
45+
46+/*
47+ * Program the PWM to emit exactly the passed waveform, subject only to rounding
48+ * down each value less than 1 ns. Returns 0 on success, -EDOM if the waveform
49+ * cannot be implemented exactly, or other negative error codes.
50+ */
51+#define PWM_IOCTL_SETEXACTWF _IOW(0x75, 6, struct pwmchip_waveform)
52+
53+#endif /* _UAPI_PWM_H_ */
include/uapi/linux/raid/md_p.h+1−1
@@ -173,7 +173,7 @@ typedef struct mdp_superblock_s { · 172 unmodified lines
173173 #else
174174 #error unspecified endianness
175175 #endif
176− __u32 recovery_cp; /* 11 recovery checkpoint sector count */
176+ __u32 resync_offset; /* 11 resync checkpoint sector count */
177177 /* There are only valid for minor_version > 90 */
178178 __u64 reshape_position; /* 12,13 next address in array-space for reshape */
179179 __u32 new_level; /* 14 new level we are reshaping to */
include/uapi/linux/rkisp1-config.h+105−1
@@ -169,6 +169,13 @@ · 168 unmodified lines
169169 */
170170 #define RKISP1_CIF_ISP_COMPAND_NUM_POINTS 64
171171
172+/*
173+ * Wide Dynamic Range
174+ */
175+#define RKISP1_CIF_ISP_WDR_CURVE_NUM_INTERV 32
176+#define RKISP1_CIF_ISP_WDR_CURVE_NUM_COEFF (RKISP1_CIF_ISP_WDR_CURVE_NUM_INTERV + 1)
177+#define RKISP1_CIF_ISP_WDR_CURVE_NUM_DY_REGS 4
178+
172179 /*
173180 * Measurement types
174181 */
@@ -889,6 +896,72 @@ struct rkisp1_cif_isp_compand_curve_config { · 714 unmodified lines
889896 __u32 y[RKISP1_CIF_ISP_COMPAND_NUM_POINTS];
890897 };
891898
899+/**
900+ * struct rkisp1_cif_isp_wdr_tone_curve - Tone mapping curve definition for WDR.
901+ *
902+ * @dY: the dYn increments for horizontal (input) axis of the tone curve.
903+ * each 3-bit dY value represents an increment of 2**(value+3).
904+ * dY[0] bits 0:2 is increment dY1, bit 3 unused
905+ * dY[0] bits 4:6 is increment dY2, bit 7 unused
906+ * ...
907+ * dY[0] bits 28:30 is increment dY8, bit 31 unused
908+ * ... and so on till dY[3] bits 28:30 is increment dY32, bit 31 unused.
909+ * @ym: the Ym values for the vertical (output) axis of the tone curve.
910+ * each value is 13 bit.
911+ */
912+struct rkisp1_cif_isp_wdr_tone_curve {
913+ __u32 dY[RKISP1_CIF_ISP_WDR_CURVE_NUM_DY_REGS];
914+ __u16 ym[RKISP1_CIF_ISP_WDR_CURVE_NUM_COEFF];
915+};
916+
917+/**
918+ * struct rkisp1_cif_isp_wdr_iref_config - Illumination reference config for WDR.
919+ *
920+ * Use illumination reference value as described below, instead of only the
921+ * luminance (Y) value for tone mapping and gain calculations:
922+ * IRef = (rgb_factor * RGBMax_tr + (8 - rgb_factor) * Y)/8
923+ *
924+ * @rgb_factor: defines how much influence the RGBmax approach has in
925+ * comparison to Y (valid values are 0..8).
926+ * @use_y9_8: use Y*9/8 for maximum value calculation along with the
927+ * default of R, G, B for noise reduction.
928+ * @use_rgb7_8: decrease RGBMax by 7/8 for noise reduction.
929+ * @disable_transient: disable transient calculation between Y and RGBY_max.
930+ */
931+struct rkisp1_cif_isp_wdr_iref_config {
932+ __u8 rgb_factor;
933+ __u8 use_y9_8;
934+ __u8 use_rgb7_8;
935+ __u8 disable_transient;
936+};
937+
938+/**
939+ * struct rkisp1_cif_isp_wdr_config - Configuration for wide dynamic range.
940+ *
941+ * @tone_curve: tone mapping curve.
942+ * @iref_config: illumination reference configuration. (when use_iref is true)
943+ * @rgb_offset: RGB offset value for RGB operation mode. (12 bits)
944+ * @luma_offset: luminance offset value for RGB operation mode. (12 bits)
945+ * @dmin_thresh: lower threshold for deltaMin value. (12 bits)
946+ * @dmin_strength: strength factor for deltaMin. (valid range is 0x00..0x10)
947+ * @use_rgb_colorspace: use RGB instead of luminance/chrominance colorspace.
948+ * @bypass_chroma_mapping: disable chrominance mapping (only valid if
949+ * use_rgb_colorspace = 0)
950+ * @use_iref: use illumination reference instead of Y for tone mapping
951+ * and gain calculations.
952+ */
953+struct rkisp1_cif_isp_wdr_config {
954+ struct rkisp1_cif_isp_wdr_tone_curve tone_curve;
955+ struct rkisp1_cif_isp_wdr_iref_config iref_config;
956+ __u16 rgb_offset;
957+ __u16 luma_offset;
958+ __u16 dmin_thresh;
959+ __u8 dmin_strength;
960+ __u8 use_rgb_colorspace;
961+ __u8 bypass_chroma_mapping;
962+ __u8 use_iref;
963+};
964+
892965 /*---------- PART2: Measurement Statistics ------------*/
893966
894967 /**
@@ -1059,6 +1132,7 @@ struct rkisp1_stat_buffer { · 164 unmodified lines
10591132 * @RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_BLS: BLS in the compand block
10601133 * @RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_EXPAND: Companding expand curve
10611134 * @RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_COMPRESS: Companding compress curve
1135+ * @RKISP1_EXT_PARAMS_BLOCK_TYPE_WDR: Wide dynamic range
10621136 */
10631137 enum rkisp1_ext_params_block_type {
10641138 RKISP1_EXT_PARAMS_BLOCK_TYPE_BLS,
@@ -1081,11 +1155,15 @@ enum rkisp1_ext_params_block_type { · 16 unmodified lines
10811155 RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_BLS,
10821156 RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_EXPAND,
10831157 RKISP1_EXT_PARAMS_BLOCK_TYPE_COMPAND_COMPRESS,
1158+ RKISP1_EXT_PARAMS_BLOCK_TYPE_WDR,
10841159 };
10851160
10861161 #define RKISP1_EXT_PARAMS_FL_BLOCK_DISABLE (1U << 0)
10871162 #define RKISP1_EXT_PARAMS_FL_BLOCK_ENABLE (1U << 1)
10881163
1164+/* A bitmask of parameters blocks supported on the current hardware. */
1165+#define RKISP1_CID_SUPPORTED_PARAMS_BLOCKS (V4L2_CID_USER_RKISP1_BASE + 0x01)
1166+
10891167 /**
10901168 * struct rkisp1_ext_params_block_header - RkISP1 extensible parameters block
10911169 * header
@@ -1460,6 +1538,23 @@ struct rkisp1_ext_params_compand_curve_config { · 368 unmodified lines
14601538 struct rkisp1_cif_isp_compand_curve_config config;
14611539 } __attribute__((aligned(8)));
14621540
1541+/**
1542+ * struct rkisp1_ext_params_wdr_config - RkISP1 extensible params
1543+ * Wide dynamic range config
1544+ *
1545+ * RkISP1 extensible parameters WDR block.
1546+ * Identified by :c:type:`RKISP1_EXT_PARAMS_BLOCK_TYPE_WDR`
1547+ *
1548+ * @header: The RkISP1 extensible parameters header, see
1549+ * :c:type:`rkisp1_ext_params_block_header`
1550+ * @config: WDR configuration, see
1551+ * :c:type:`rkisp1_cif_isp_wdr_config`
1552+ */
1553+struct rkisp1_ext_params_wdr_config {
1554+ struct rkisp1_ext_params_block_header header;
1555+ struct rkisp1_cif_isp_wdr_config config;
1556+} __attribute__((aligned(8)));
1557+
14631558 /*
14641559 * The rkisp1_ext_params_compand_curve_config structure is counted twice as it
14651560 * is used for both the COMPAND_EXPAND and COMPAND_COMPRESS block types.
@@ -1484,7 +1579,8 @@ struct rkisp1_ext_params_compand_curve_config { · 18 unmodified lines
14841579 sizeof(struct rkisp1_ext_params_afc_config) +\
14851580 sizeof(struct rkisp1_ext_params_compand_bls_config) +\
14861581 sizeof(struct rkisp1_ext_params_compand_curve_config) +\
1487− sizeof(struct rkisp1_ext_params_compand_curve_config))
1582+ sizeof(struct rkisp1_ext_params_compand_curve_config) +\
1583+ sizeof(struct rkisp1_ext_params_wdr_config))
14881584
14891585 /**
14901586 * enum rksip1_ext_param_buffer_version - RkISP1 extensible parameters version
@@ -1520,6 +1616,14 @@ enum rksip1_ext_param_buffer_version { · 29 unmodified lines
15201616 * V4L2 control. If such control is not available, userspace should assume only
15211617 * RKISP1_EXT_PARAM_BUFFER_V1 is supported by the driver.
15221618 *
1619+ * The read-only V4L2 control ``RKISP1_CID_SUPPORTED_PARAMS_BLOCKS`` can be used
1620+ * to query the blocks supported by the device. It contains a bitmask where each
1621+ * bit represents the availability of the corresponding entry from the
1622+ * :c:type:`rkisp1_ext_params_block_type` enum. The current and default values
1623+ * of the control represents the blocks supported by the device instance, while
1624+ * the maximum value represents the blocks supported by the kernel driver,
1625+ * independently of the device instance.
1626+ *
15231627 * For each ISP block that userspace wants to configure, a block-specific
15241628 * structure is appended to the @data buffer, one after the other without gaps
15251629 * in between nor overlaps. Userspace shall populate the @data_size field with
include/uapi/linux/snmp.h+1−0
@@ -186,6 +186,7 @@ enum · 185 unmodified lines
186186 LINUX_MIB_TIMEWAITKILLED, /* TimeWaitKilled */
187187 LINUX_MIB_PAWSACTIVEREJECTED, /* PAWSActiveRejected */
188188 LINUX_MIB_PAWSESTABREJECTED, /* PAWSEstabRejected */
189+ LINUX_MIB_BEYOND_WINDOW, /* BeyondWindow */
189190 LINUX_MIB_TSECRREJECTED, /* TSEcrRejected */
190191 LINUX_MIB_PAWS_OLD_ACK, /* PAWSOldAck */
191192 LINUX_MIB_PAWS_TW_REJECTED, /* PAWSTimewait */
include/uapi/linux/sysctl.h+1−0
@@ -573,6 +573,7 @@ enum { · 572 unmodified lines
573573 NET_IPV6_ACCEPT_RA_FROM_LOCAL=26,
574574 NET_IPV6_ACCEPT_RA_RT_INFO_MIN_PLEN=27,
575575 NET_IPV6_RA_DEFRTR_METRIC=28,
576+ NET_IPV6_FORCE_FORWARDING=29,
576577 __NET_IPV6_MAX
577578 };
578579
include/uapi/linux/time.h+11−0
@@ -64,6 +64,17 @@ struct timezone { · 63 unmodified lines
6464 #define CLOCK_TAI 11
6565
6666 #define MAX_CLOCKS 16
67+
68+/*
69+ * AUX clock support. AUXiliary clocks are dynamically configured by
70+ * enabling a clock ID. These clock can be steered independently of the
71+ * core timekeeper. The kernel can support up to 8 auxiliary clocks, but
72+ * the actual limit depends on eventual architecture constraints vs. VDSO.
73+ */
74+#define CLOCK_AUX MAX_CLOCKS
75+#define MAX_AUX_CLOCKS 8
76+#define CLOCK_AUX_LAST (CLOCK_AUX + MAX_AUX_CLOCKS - 1)
77+
6778 #define CLOCKS_MASK (CLOCK_REALTIME | CLOCK_MONOTONIC)
6879 #define CLOCKS_MONO CLOCK_MONOTONIC
6980
include/uapi/linux/ublk_cmd.h+36−6
@@ -135,8 +135,28 @@ · 134 unmodified lines
135135 #define UBLKSRV_IO_BUF_TOTAL_SIZE (1ULL << UBLKSRV_IO_BUF_TOTAL_BITS)
136136
137137 /*
138− * zero copy requires 4k block size, and can remap ublk driver's io
139− * request into ublksrv's vm space
138+ * ublk server can register data buffers for incoming I/O requests with a sparse
139+ * io_uring buffer table. The request buffer can then be used as the data buffer
140+ * for io_uring operations via the fixed buffer index.
141+ * Note that the ublk server can never directly access the request data memory.
142+ *
143+ * To use this feature, the ublk server must first register a sparse buffer
144+ * table on an io_uring instance.
145+ * When an incoming ublk request is received, the ublk server submits a
146+ * UBLK_U_IO_REGISTER_IO_BUF command to that io_uring instance. The
147+ * ublksrv_io_cmd's q_id and tag specify the request whose buffer to register
148+ * and addr is the index in the io_uring's buffer table to install the buffer.
149+ * SQEs can now be submitted to the io_uring to read/write the request's buffer
150+ * by enabling fixed buffers (e.g. using IORING_OP_{READ,WRITE}_FIXED or
151+ * IORING_URING_CMD_FIXED) and passing the registered buffer index in buf_index.
152+ * Once the last io_uring operation using the request's buffer has completed,
153+ * the ublk server submits a UBLK_U_IO_UNREGISTER_IO_BUF command with q_id, tag,
154+ * and addr again specifying the request buffer to unregister.
155+ * The ublk request is completed when its buffer is unregistered from all
156+ * io_uring instances and the ublk server issues UBLK_U_IO_COMMIT_AND_FETCH_REQ.
157+ *
158+ * Not available for UBLK_F_UNPRIVILEGED_DEV, as a ublk server can leak
159+ * uninitialized kernel memory by not reading into the full request buffer.
140160 */
141161 #define UBLK_F_SUPPORT_ZERO_COPY (1ULL << 0)
142162
@@ -281,6 +301,16 @@ · 138 unmodified lines
281301 */
282302 #define UBLK_F_PER_IO_DAEMON (1ULL << 13)
283303
304+/*
305+ * If this feature is set, UBLK_U_IO_REGISTER_IO_BUF/UBLK_U_IO_UNREGISTER_IO_BUF
306+ * can be issued for an I/O on any task. q_id and tag are also ignored in
307+ * UBLK_U_IO_UNREGISTER_IO_BUF's ublksrv_io_cmd.
308+ * If it is unset, zero-copy buffers can only be registered and unregistered by
309+ * the I/O's daemon task. The q_id and tag of the registered buffer are required
310+ * in UBLK_U_IO_UNREGISTER_IO_BUF's ublksrv_io_cmd.
311+ */
312+#define UBLK_F_BUF_REG_OFF_DAEMON (1ULL << 14)
313+
284314 /* device state */
285315 #define UBLK_S_DEV_DEAD 0
286316 #define UBLK_S_DEV_LIVE 1
@@ -450,10 +480,10 @@ static inline struct ublk_auto_buf_reg ublk_sqe_addr_to_auto_buf_reg( · 163 unmodified lines
450480 __u64 sqe_addr)
451481 {
452482 struct ublk_auto_buf_reg reg = {
453− .index = sqe_addr & 0xffff,
454− .flags = (sqe_addr >> 16) & 0xff,
455− .reserved0 = (sqe_addr >> 24) & 0xff,
456− .reserved1 = sqe_addr >> 32,
483+ .index = (__u16)sqe_addr,
484+ .flags = (__u8)(sqe_addr >> 16),
485+ .reserved0 = (__u8)(sqe_addr >> 24),
486+ .reserved1 = (__u32)(sqe_addr >> 32),
457487 };
458488
459489 return reg;
include/uapi/linux/v4l2-controls.h+6−0
@@ -222,6 +222,12 @@ enum v4l2_colorfx { · 221 unmodified lines
222222 */
223223 #define V4L2_CID_USER_UVC_BASE (V4L2_CID_USER_BASE + 0x11e0)
224224
225+/*
226+ * The base for Rockchip ISP1 driver controls.
227+ * We reserve 16 controls for this driver.
228+ */
229+#define V4L2_CID_USER_RKISP1_BASE (V4L2_CID_USER_BASE + 0x1220)
230+
225231 /* MPEG-class control IDs */
226232 /* The MPEG controls are applicable to all codec controls
227233 * and the 'MPEG' part of the define is historical */
include/uapi/linux/vfio.h+11−1
@@ -905,10 +905,12 @@ struct vfio_device_feature { · 904 unmodified lines
905905 * VFIO_DEVICE_BIND_IOMMUFD - _IOR(VFIO_TYPE, VFIO_BASE + 18,
906906 * struct vfio_device_bind_iommufd)
907907 * @argsz: User filled size of this data.
908− * @flags: Must be 0.
908+ * @flags: Must be 0 or a bit flags of VFIO_DEVICE_BIND_*
909909 * @iommufd: iommufd to bind.
910910 * @out_devid: The device id generated by this bind. devid is a handle for
911911 * this device/iommufd bond and can be used in IOMMUFD commands.
912+ * @token_uuid_ptr: Valid if VFIO_DEVICE_BIND_FLAG_TOKEN. Points to a 16 byte
913+ * UUID in the same format as VFIO_DEVICE_FEATURE_PCI_VF_TOKEN.
912914 *
913915 * Bind a vfio_device to the specified iommufd.
914916 *
@@ -917,13 +919,21 @@ struct vfio_device_feature { · 2 unmodified lines
917919 *
918920 * Unbind is automatically conducted when device fd is closed.
919921 *
922+ * A token is sometimes required to open the device, unless this is known to be
923+ * needed VFIO_DEVICE_BIND_FLAG_TOKEN should not be set and token_uuid_ptr is
924+ * ignored. The only case today is a PF/VF relationship where the VF bind must
925+ * be provided the same token as VFIO_DEVICE_FEATURE_PCI_VF_TOKEN provided to
926+ * the PF.
927+ *
920928 * Return: 0 on success, -errno on failure.
921929 */
922930 struct vfio_device_bind_iommufd {
923931 __u32 argsz;
924932 __u32 flags;
933+#define VFIO_DEVICE_BIND_FLAG_TOKEN (1 << 0)
925934 __s32 iommufd;
926935 __u32 out_devid;
936+ __aligned_u64 token_uuid_ptr;
927937 };
928938
929939 #define VFIO_DEVICE_BIND_IOMMUFD _IO(VFIO_TYPE, VFIO_BASE + 18)
include/uapi/linux/vhost.h+35−0
@@ -235,4 +235,39 @@ · 234 unmodified lines
235235 */
236236 #define VHOST_VDPA_GET_VRING_SIZE _IOWR(VHOST_VIRTIO, 0x82, \
237237 struct vhost_vring_state)
238+
239+/* Extended features manipulation */
240+#define VHOST_GET_FEATURES_ARRAY _IOR(VHOST_VIRTIO, 0x83, \
241+ struct vhost_features_array)
242+#define VHOST_SET_FEATURES_ARRAY _IOW(VHOST_VIRTIO, 0x83, \
243+ struct vhost_features_array)
244+
245+/* fork_owner values for vhost */
246+#define VHOST_FORK_OWNER_KTHREAD 0
247+#define VHOST_FORK_OWNER_TASK 1
248+
249+/**
250+ * VHOST_SET_FORK_FROM_OWNER - Set the fork_owner flag for the vhost device,
251+ * This ioctl must called before VHOST_SET_OWNER.
252+ * Only available when CONFIG_VHOST_ENABLE_FORK_OWNER_CONTROL=y
253+ *
254+ * @param fork_owner: An 8-bit value that determines the vhost thread mode
255+ *
256+ * When fork_owner is set to VHOST_FORK_OWNER_TASK(default value):
257+ * - Vhost will create vhost worker as tasks forked from the owner,
258+ * inheriting all of the owner's attributes.
259+ *
260+ * When fork_owner is set to VHOST_FORK_OWNER_KTHREAD:
261+ * - Vhost will create vhost workers as kernel threads.
262+ */
263+#define VHOST_SET_FORK_FROM_OWNER _IOW(VHOST_VIRTIO, 0x83, __u8)
264+
265+/**
266+ * VHOST_GET_FORK_OWNER - Get the current fork_owner flag for the vhost device.
267+ * Only available when CONFIG_VHOST_ENABLE_FORK_OWNER_CONTROL=y
268+ *
269+ * @return: An 8-bit value indicating the current thread mode.
270+ */
271+#define VHOST_GET_FORK_FROM_OWNER _IOR(VHOST_VIRTIO, 0x84, __u8)
272+
238273 #endif
include/uapi/linux/vhost_types.h+5−0
@@ -110,6 +110,11 @@ struct vhost_msg_v2 { · 109 unmodified lines
110110 };
111111 };
112112
113+struct vhost_features_array {
114+ __u64 count; /* number of entries present in features array */
115+ __u64 features[] __counted_by(count);
116+};
117+
113118 struct vhost_memory_region {
114119 __u64 guest_phys_addr;
115120 __u64 memory_size; /* bytes */
include/uapi/linux/videodev2.h+8−1
@@ -726,7 +726,7 @@ struct v4l2_pix_format { · 725 unmodified lines
726726 #define V4L2_PIX_FMT_SGBRG12 v4l2_fourcc('G', 'B', '1', '2') /* 12 GBGB.. RGRG.. */
727727 #define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2') /* 12 GRGR.. BGBG.. */
728728 #define V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2') /* 12 RGRG.. GBGB.. */
729− /* 12bit raw bayer packed, 6 bytes for every 4 pixels */
729+ /* 12bit raw bayer packed, 3 bytes for every 2 pixels */
730730 #define V4L2_PIX_FMT_SBGGR12P v4l2_fourcc('p', 'B', 'C', 'C')
731731 #define V4L2_PIX_FMT_SGBRG12P v4l2_fourcc('p', 'G', 'C', 'C')
732732 #define V4L2_PIX_FMT_SGRBG12P v4l2_fourcc('p', 'g', 'C', 'C')
@@ -840,6 +840,12 @@ struct v4l2_pix_format { · 107 unmodified lines
840840 #define V4L2_PIX_FMT_PISP_COMP2_BGGR v4l2_fourcc('P', 'C', '2', 'B') /* PiSP 8-bit mode 2 compressed BGGR bayer */
841841 #define V4L2_PIX_FMT_PISP_COMP2_MONO v4l2_fourcc('P', 'C', '2', 'M') /* PiSP 8-bit mode 2 compressed monochrome */
842842
843+/* Renesas RZ/V2H CRU packed formats. 64-bit units with contiguous pixels */
844+#define V4L2_PIX_FMT_RAW_CRU10 v4l2_fourcc('C', 'R', '1', '0')
845+#define V4L2_PIX_FMT_RAW_CRU12 v4l2_fourcc('C', 'R', '1', '2')
846+#define V4L2_PIX_FMT_RAW_CRU14 v4l2_fourcc('C', 'R', '1', '4')
847+#define V4L2_PIX_FMT_RAW_CRU20 v4l2_fourcc('C', 'R', '2', '0')
848+
843849 /* SDR formats - used only for Software Defined Radio devices */
844850 #define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */
845851 #define V4L2_SDR_FMT_CU16LE v4l2_fourcc('C', 'U', '1', '6') /* IQ u16le */
@@ -861,6 +867,7 @@ struct v4l2_pix_format { · 15 unmodified lines
861867 #define V4L2_META_FMT_VSP1_HGT v4l2_fourcc('V', 'S', 'P', 'T') /* R-Car VSP1 2-D Histogram */
862868 #define V4L2_META_FMT_UVC v4l2_fourcc('U', 'V', 'C', 'H') /* UVC Payload Header metadata */
863869 #define V4L2_META_FMT_D4XX v4l2_fourcc('D', '4', 'X', 'X') /* D4XX Payload Header metadata */
870+#define V4L2_META_FMT_UVC_MSXU_1_5 v4l2_fourcc('U', 'V', 'C', 'M') /* UVC MSXU metadata */
864871 #define V4L2_META_FMT_VIVID v4l2_fourcc('V', 'I', 'V', 'D') /* Vivid Metadata */
865872
866873 /* Vendor specific - used for RK_ISP1 camera sub-system */
include/uapi/linux/virtio_net.h+33−0
@@ -70,6 +70,28 @@ · 69 unmodified lines
7070 * with the same MAC.
7171 */
7272 #define VIRTIO_NET_F_SPEED_DUPLEX 63 /* Device set linkspeed and duplex */
73+#define VIRTIO_NET_F_GUEST_UDP_TUNNEL_GSO 65 /* Driver can receive
74+ * GSO-over-UDP-tunnel packets
75+ */
76+#define VIRTIO_NET_F_GUEST_UDP_TUNNEL_GSO_CSUM 66 /* Driver handles
77+ * GSO-over-UDP-tunnel
78+ * packets with partial csum
79+ * for the outer header
80+ */
81+#define VIRTIO_NET_F_HOST_UDP_TUNNEL_GSO 67 /* Device can receive
82+ * GSO-over-UDP-tunnel packets
83+ */
84+#define VIRTIO_NET_F_HOST_UDP_TUNNEL_GSO_CSUM 68 /* Device handles
85+ * GSO-over-UDP-tunnel
86+ * packets with partial csum
87+ * for the outer header
88+ */
89+
90+/* Offloads bits corresponding to VIRTIO_NET_F_HOST_UDP_TUNNEL_GSO{,_CSUM}
91+ * features
92+ */
93+#define VIRTIO_NET_F_GUEST_UDP_TUNNEL_GSO_MAPPED 46
94+#define VIRTIO_NET_F_GUEST_UDP_TUNNEL_GSO_CSUM_MAPPED 47
7395
7496 #ifndef VIRTIO_NET_NO_LEGACY
7597 #define VIRTIO_NET_F_GSO 6 /* Host handles pkts w/ any GSO type */
@@ -131,12 +153,17 @@ struct virtio_net_hdr_v1 { · 55 unmodified lines
131153 #define VIRTIO_NET_HDR_F_NEEDS_CSUM 1 /* Use csum_start, csum_offset */
132154 #define VIRTIO_NET_HDR_F_DATA_VALID 2 /* Csum is valid */
133155 #define VIRTIO_NET_HDR_F_RSC_INFO 4 /* rsc info in csum_ fields */
156+#define VIRTIO_NET_HDR_F_UDP_TUNNEL_CSUM 8 /* UDP tunnel csum offload */
134157 __u8 flags;
135158 #define VIRTIO_NET_HDR_GSO_NONE 0 /* Not a GSO frame */
136159 #define VIRTIO_NET_HDR_GSO_TCPV4 1 /* GSO frame, IPv4 TCP (TSO) */
137160 #define VIRTIO_NET_HDR_GSO_UDP 3 /* GSO frame, IPv4 UDP (UFO) */
138161 #define VIRTIO_NET_HDR_GSO_TCPV6 4 /* GSO frame, IPv6 TCP */
139162 #define VIRTIO_NET_HDR_GSO_UDP_L4 5 /* GSO frame, IPv4& IPv6 UDP (USO) */
163+#define VIRTIO_NET_HDR_GSO_UDP_TUNNEL_IPV4 0x20 /* UDPv4 tunnel present */
164+#define VIRTIO_NET_HDR_GSO_UDP_TUNNEL_IPV6 0x40 /* UDPv6 tunnel present */
165+#define VIRTIO_NET_HDR_GSO_UDP_TUNNEL (VIRTIO_NET_HDR_GSO_UDP_TUNNEL_IPV4 | \
166+ VIRTIO_NET_HDR_GSO_UDP_TUNNEL_IPV6)
140167 #define VIRTIO_NET_HDR_GSO_ECN 0x80 /* TCP has ECN set */
141168 __u8 gso_type;
142169 __virtio16 hdr_len; /* Ethernet + IP + tcp/udp hdrs */
@@ -181,6 +208,12 @@ struct virtio_net_hdr_v1_hash { · 38 unmodified lines
181208 __le16 padding;
182209 };
183210
211+struct virtio_net_hdr_v1_hash_tunnel {
212+ struct virtio_net_hdr_v1_hash hash_hdr;
213+ __le16 outer_th_offset;
214+ __le16 inner_nh_offset;
215+};
216+
184217 #ifndef VIRTIO_NET_NO_LEGACY
185218 /* This header comes first in the scatter-gather list.
186219 * For legacy virtio, if VIRTIO_F_ANY_LAYOUT is not negotiated, it must
include/uapi/linux/vm_sockets.h+4−0
@@ -17,6 +17,10 @@ · 16 unmodified lines
1717 #ifndef _UAPI_VM_SOCKETS_H
1818 #define _UAPI_VM_SOCKETS_H
1919
20+#ifndef __KERNEL__
21+#include <sys/socket.h> /* for struct sockaddr and sa_family_t */
22+#endif
23+
2024 #include <linux/socket.h>
2125 #include <linux/types.h>
2226
include/uapi/linux/vt.h+22−22
@@ -19,11 +19,11 @@ · 18 unmodified lines
1919 #define VT_OPENQRY 0x5600 /* find available vt */
2020
2121 struct vt_mode {
22− char mode; /* vt mode */
23− char waitv; /* if set, hang on writes if not active */
24− short relsig; /* signal to raise on release req */
25− short acqsig; /* signal to raise on acquisition */
26− short frsig; /* unused (set to 0) */
22+ __u8 mode; /* vt mode */
23+ __u8 waitv; /* if set, hang on writes if not active */
24+ __s16 relsig; /* signal to raise on release req */
25+ __s16 acqsig; /* signal to raise on acquisition */
26+ __s16 frsig; /* unused (set to 0) */
2727 };
2828 #define VT_GETMODE 0x5601 /* get mode of active vt */
2929 #define VT_SETMODE 0x5602 /* set mode of active vt */
@@ -32,9 +32,9 @@ struct vt_mode { · 2 unmodified lines
3232 #define VT_ACKACQ 0x02 /* acknowledge switch */
3333
3434 struct vt_stat {
35− unsigned short v_active; /* active vt */
36− unsigned short v_signal; /* signal to send */
37− unsigned short v_state; /* vt bitmask */
35+ __u16 v_active; /* active vt */
36+ __u16 v_signal; /* signal to send */
37+ __u16 v_state; /* vt bitmask */
3838 };
3939 #define VT_GETSTATE 0x5603 /* get global vt state info */
4040 #define VT_SENDSIG 0x5604 /* signal to send to bitmask of vts */
@@ -46,19 +46,19 @@ struct vt_stat { · 5 unmodified lines
4646 #define VT_DISALLOCATE 0x5608 /* free memory associated to vt */
4747
4848 struct vt_sizes {
49− unsigned short v_rows; /* number of rows */
50− unsigned short v_cols; /* number of columns */
51− unsigned short v_scrollsize; /* number of lines of scrollback */
49+ __u16 v_rows; /* number of rows */
50+ __u16 v_cols; /* number of columns */
51+ __u16 v_scrollsize; /* number of lines of scrollback */
5252 };
5353 #define VT_RESIZE 0x5609 /* set kernel's idea of screensize */
5454
5555 struct vt_consize {
56− unsigned short v_rows; /* number of rows */
57− unsigned short v_cols; /* number of columns */
58− unsigned short v_vlin; /* number of pixel rows on screen */
59− unsigned short v_clin; /* number of pixel rows per character */
60− unsigned short v_vcol; /* number of pixel columns on screen */
61− unsigned short v_ccol; /* number of pixel columns per character */
56+ __u16 v_rows; /* number of rows */
57+ __u16 v_cols; /* number of columns */
58+ __u16 v_vlin; /* number of pixel rows on screen */
59+ __u16 v_clin; /* number of pixel rows per character */
60+ __u16 v_vcol; /* number of pixel columns on screen */
61+ __u16 v_ccol; /* number of pixel columns per character */
6262 };
6363 #define VT_RESIZEX 0x560A /* set kernel's idea of screensize + more */
6464 #define VT_LOCKSWITCH 0x560B /* disallow vt switching */
@@ -66,21 +66,21 @@ struct vt_consize { · 1 unmodified line
6666 #define VT_GETHIFONTMASK 0x560D /* return hi font mask */
6767
6868 struct vt_event {
69− unsigned int event;
69+ __u32 event;
7070 #define VT_EVENT_SWITCH 0x0001 /* Console switch */
7171 #define VT_EVENT_BLANK 0x0002 /* Screen blank */
7272 #define VT_EVENT_UNBLANK 0x0004 /* Screen unblank */
7373 #define VT_EVENT_RESIZE 0x0008 /* Resize display */
7474 #define VT_MAX_EVENT 0x000F
75− unsigned int oldev; /* Old console */
76− unsigned int newev; /* New console (if changing) */
77− unsigned int pad[4]; /* Padding for expansion */
75+ __u32 oldev; /* Old console */
76+ __u32 newev; /* New console (if changing) */
77+ __u32 pad[4]; /* Padding for expansion */
7878 };
7979
8080 #define VT_WAITEVENT 0x560E /* Wait for an event */
8181
8282 struct vt_setactivate {
83− unsigned int console;
83+ __u32 console;
8484 struct vt_mode mode;
8585 };
8686
include/uapi/rdma/efa-abi.h+2−1
@@ -1,6 +1,6 @@
11 /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
22 /*
3− * Copyright 2018-2024 Amazon.com, Inc. or its affiliates. All rights reserved.
3+ * Copyright 2018-2025 Amazon.com, Inc. or its affiliates. All rights reserved.
44 */
55
66 #ifndef EFA_ABI_USER_H
@@ -131,6 +131,7 @@ enum { · 124 unmodified lines
131131 EFA_QUERY_DEVICE_CAPS_DATA_POLLING_128 = 1 << 4,
132132 EFA_QUERY_DEVICE_CAPS_RDMA_WRITE = 1 << 5,
133133 EFA_QUERY_DEVICE_CAPS_UNSOLICITED_WRITE_RECV = 1 << 6,
134+ EFA_QUERY_DEVICE_CAPS_CQ_WITH_EXT_MEM = 1 << 7,
134135 };
135136
136137 struct efa_ibv_ex_query_device_resp {
include/uapi/rdma/ib_user_ioctl_cmds.h+36−0
@@ -55,6 +55,7 @@ enum uverbs_default_objects { · 54 unmodified lines
5555 UVERBS_OBJECT_DM,
5656 UVERBS_OBJECT_COUNTERS,
5757 UVERBS_OBJECT_ASYNC_EVENT,
58+ UVERBS_OBJECT_DMAH,
5859 };
5960
6061 enum {
@@ -105,6 +106,10 @@ enum uverbs_attrs_create_cq_cmd_attr_ids { · 44 unmodified lines
105106 UVERBS_ATTR_CREATE_CQ_FLAGS,
106107 UVERBS_ATTR_CREATE_CQ_RESP_CQE,
107108 UVERBS_ATTR_CREATE_CQ_EVENT_FD,
109+ UVERBS_ATTR_CREATE_CQ_BUFFER_VA,
110+ UVERBS_ATTR_CREATE_CQ_BUFFER_LENGTH,
111+ UVERBS_ATTR_CREATE_CQ_BUFFER_FD,
112+ UVERBS_ATTR_CREATE_CQ_BUFFER_OFFSET,
108113 };
109114
110115 enum uverbs_attrs_destroy_cq_cmd_attr_ids {
@@ -236,6 +241,22 @@ enum uverbs_methods_dm { · 125 unmodified lines
236241 UVERBS_METHOD_DM_FREE,
237242 };
238243
244+enum uverbs_attrs_alloc_dmah_cmd_attr_ids {
245+ UVERBS_ATTR_ALLOC_DMAH_HANDLE,
246+ UVERBS_ATTR_ALLOC_DMAH_CPU_ID,
247+ UVERBS_ATTR_ALLOC_DMAH_TPH_MEM_TYPE,
248+ UVERBS_ATTR_ALLOC_DMAH_PH,
249+};
250+
251+enum uverbs_attrs_free_dmah_cmd_attr_ids {
252+ UVERBS_ATTR_FREE_DMA_HANDLE,
253+};
254+
255+enum uverbs_methods_dmah {
256+ UVERBS_METHOD_DMAH_ALLOC,
257+ UVERBS_METHOD_DMAH_FREE,
258+};
259+
239260 enum uverbs_attrs_reg_dm_mr_cmd_attr_ids {
240261 UVERBS_ATTR_REG_DM_MR_HANDLE,
241262 UVERBS_ATTR_REG_DM_MR_OFFSET,
@@ -253,6 +274,7 @@ enum uverbs_methods_mr { · 11 unmodified lines
253274 UVERBS_METHOD_ADVISE_MR,
254275 UVERBS_METHOD_QUERY_MR,
255276 UVERBS_METHOD_REG_DMABUF_MR,
277+ UVERBS_METHOD_REG_MR,
256278 };
257279
258280 enum uverbs_attrs_mr_destroy_ids {
@@ -286,6 +308,20 @@ enum uverbs_attrs_reg_dmabuf_mr_cmd_attr_ids { · 27 unmodified lines
286308 UVERBS_ATTR_REG_DMABUF_MR_RESP_RKEY,
287309 };
288310
311+enum uverbs_attrs_reg_mr_cmd_attr_ids {
312+ UVERBS_ATTR_REG_MR_HANDLE,
313+ UVERBS_ATTR_REG_MR_PD_HANDLE,
314+ UVERBS_ATTR_REG_MR_DMA_HANDLE,
315+ UVERBS_ATTR_REG_MR_IOVA,
316+ UVERBS_ATTR_REG_MR_ADDR,
317+ UVERBS_ATTR_REG_MR_LENGTH,
318+ UVERBS_ATTR_REG_MR_ACCESS_FLAGS,
319+ UVERBS_ATTR_REG_MR_FD,
320+ UVERBS_ATTR_REG_MR_FD_OFFSET,
321+ UVERBS_ATTR_REG_MR_RESP_LKEY,
322+ UVERBS_ATTR_REG_MR_RESP_RKEY,
323+};
324+
289325 enum uverbs_attrs_create_counters_cmd_attr_ids {
290326 UVERBS_ATTR_CREATE_COUNTERS_HANDLE,
291327 };

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t