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

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