History

Merge drm/drm-next into drm-intel-next

Backmerge to get some hwmon dependencies.

Rodrigo Vivi committed 3 years ago

Commit 9c3a9852 parents 86634ba ac9a78613016 files · +774148 −389984Browse files

Showing the changes to include/uapi (71 of 13016 files). Show all

Unified · Split

71 files
  1. include/uapi/asm-generic/fcntl.h +0 −1
  2. include/uapi/drm/habanalabs_accel.h +2 −1
  3. include/uapi/drm/i915_drm.h +24 −1
  4. include/uapi/drm/msm_drm.h +16 −2
  5. include/uapi/drm/qaic_accel.h +397 −0
  6. include/uapi/linux/atmdev.h +0 −4
  7. include/uapi/linux/bpf.h +99 −13
  8. include/uapi/linux/btrfs.h +1 −0
  9. include/uapi/linux/cm4000_cs.h +0 −64
  10. include/uapi/linux/const.h +1 −1
  11. include/uapi/linux/cxl_mem.h +30 −5
  12. include/uapi/linux/dlm.h +1 −0
  13. include/uapi/linux/dlm_netlink.h +0 −60
  14. include/uapi/linux/dlmconstants.h +4 −1
  15. include/uapi/linux/dm-ioctl.h +2 −2
  16. include/uapi/linux/ethtool_netlink.h +2 −0
  17. include/uapi/linux/eventpoll.h +0 −12
  18. include/uapi/linux/ext4.h +117 −0
  19. include/uapi/linux/fou.h +1 −1
  20. include/uapi/linux/gsmmux.h +16 −1
  21. include/uapi/linux/handshake.h +73 −0
  22. include/uapi/linux/hw_breakpoint.h +0 −10
  23. include/uapi/linux/idxd.h +45 −3
  24. include/uapi/linux/if_bridge.h +11 −0
  25. include/uapi/linux/if_link.h +2 −0
  26. include/uapi/linux/if_packet.h +1 −0
  27. include/uapi/linux/io_uring.h +19 −14
  28. include/uapi/linux/ipv6.h +1 −1
  29. include/uapi/linux/isst_if.h +303 −0
  30. include/uapi/linux/kvm.h +11 −3
  31. include/uapi/linux/landlock.h +31 −15
  32. include/uapi/linux/mei.h +1 −1
  33. include/uapi/linux/mei_uuid.h +29 −0
  34. include/uapi/linux/nbd.h +20 −5
  35. include/uapi/linux/netdev.h +3 −1
  36. include/uapi/linux/netfilter/nf_tables.h +6 −4
  37. include/uapi/linux/netfilter/nfnetlink_hook.h +21 −3
  38. include/uapi/linux/netfilter/nfnetlink_queue.h +1 −0
  39. include/uapi/linux/nfsd/export.h +13 −0
  40. include/uapi/linux/nl80211.h +57 −2
  41. include/uapi/linux/parport.h +3 −0
  42. include/uapi/linux/pkt_sched.h +17 −0
  43. include/uapi/linux/pktcdvd.h +0 −11
  44. include/uapi/linux/prctl.h +4 −0
  45. include/uapi/linux/psp-sev.h +7 −0
  46. include/uapi/linux/ptrace.h +30 −0
  47. include/uapi/linux/rtnetlink.h +1 −0
  48. include/uapi/linux/sctp.h +3 −1
  49. include/uapi/linux/sed-opal.h +24 −0
  50. include/uapi/linux/sev-guest.h +16 −2
  51. include/uapi/linux/sync_file.h +15 −22
  52. include/uapi/linux/target_core_user.h +1 −1
  53. include/uapi/linux/taskstats.h +5 −1
  54. include/uapi/linux/tc_act/tc_tunnel_key.h +1 −0
  55. include/uapi/linux/ublk_cmd.h +43 −0
  56. include/uapi/linux/user_events.h +81 −0
  57. include/uapi/linux/userfaultfd.h +16 −1
  58. include/uapi/linux/uuid.h +1 −30
  59. include/uapi/linux/v4l2-subdev.h +21 −0
  60. include/uapi/linux/videodev2.h +13 −0
  61. include/uapi/linux/virtio_blk.h +9 −9
  62. include/uapi/linux/virtio_config.h +6 −0
  63. include/uapi/linux/virtio_net.h +1 −0
  64. include/uapi/rdma/bnxt_re-abi.h +4 −0
  65. include/uapi/rdma/efa-abi.h +3 −1
  66. include/uapi/sound/asoc.h +3 −3
  67. include/uapi/sound/asound.h +10 −4
  68. include/uapi/sound/emu10k1.h +96 −54
  69. include/uapi/sound/sof/abi.h +2 −0
  70. include/uapi/sound/sof/header.h +19 −8
  71. include/uapi/sound/sof/tokens.h +13 −8
include/uapi/asm-generic/fcntl.h+0−1
@@ -91,7 +91,6 @@ · 90 unmodified lines
9191
9292 /* a horrid kludge trying to make sure that this will fail on old kernels */
9393 #define O_TMPFILE (__O_TMPFILE | O_DIRECTORY)
94−#define O_TMPFILE_MASK (__O_TMPFILE | O_DIRECTORY | O_CREAT)
9594
9695 #ifndef O_NDELAY
9796 #define O_NDELAY O_NONBLOCK
include/uapi/drm/habanalabs_accel.h+2−1
@@ -708,7 +708,8 @@ enum hl_server_type { · 707 unmodified lines
708708 HL_SERVER_GAUDI_HLS1H = 2,
709709 HL_SERVER_GAUDI_TYPE1 = 3,
710710 HL_SERVER_GAUDI_TYPE2 = 4,
711− HL_SERVER_GAUDI2_HLS2 = 5
711+ HL_SERVER_GAUDI2_HLS2 = 5,
712+ HL_SERVER_GAUDI2_TYPE1 = 7
712713 };
713714
714715 /*
include/uapi/drm/i915_drm.h+24−1
@@ -2491,7 +2491,7 @@ struct i915_context_param_engines { · 2490 unmodified lines
24912491 #define I915_CONTEXT_ENGINES_EXT_LOAD_BALANCE 0 /* see i915_context_engines_load_balance */
24922492 #define I915_CONTEXT_ENGINES_EXT_BOND 1 /* see i915_context_engines_bond */
24932493 #define I915_CONTEXT_ENGINES_EXT_PARALLEL_SUBMIT 2 /* see i915_context_engines_parallel_submit */
2494− struct i915_engine_class_instance engines[0];
2494+ struct i915_engine_class_instance engines[];
24952495 } __attribute__((packed));
24962496
24972497 #define I915_DEFINE_CONTEXT_PARAM_ENGINES(name__, N__) struct { \
@@ -2676,6 +2676,10 @@ enum drm_i915_oa_format { · 178 unmodified lines
26762676 I915_OAR_FORMAT_A32u40_A4u32_B8_C8,
26772677 I915_OA_FORMAT_A24u40_A14u32_B8_C8,
26782678
2679+ /* MTL OAM */
2680+ I915_OAM_FORMAT_MPEC8u64_B8_C8,
2681+ I915_OAM_FORMAT_MPEC8u32_B8_C8,
2682+
26792683 I915_OA_FORMAT_MAX /* non-ABI */
26802684 };
26812685
@@ -2758,6 +2762,25 @@ enum drm_i915_perf_property_id { · 76 unmodified lines
27582762 */
27592763 DRM_I915_PERF_PROP_POLL_OA_PERIOD,
27602764
2765+ /**
2766+ * Multiple engines may be mapped to the same OA unit. The OA unit is
2767+ * identified by class:instance of any engine mapped to it.
2768+ *
2769+ * This parameter specifies the engine class and must be passed along
2770+ * with DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE.
2771+ *
2772+ * This property is available in perf revision 6.
2773+ */
2774+ DRM_I915_PERF_PROP_OA_ENGINE_CLASS,
2775+
2776+ /**
2777+ * This parameter specifies the engine instance and must be passed along
2778+ * with DRM_I915_PERF_PROP_OA_ENGINE_CLASS.
2779+ *
2780+ * This property is available in perf revision 6.
2781+ */
2782+ DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE,
2783+
27612784 DRM_I915_PERF_PROP_MAX /* non-ABI */
27622785 };
27632786
include/uapi/drm/msm_drm.h+16−2
@@ -151,8 +151,13 @@ struct drm_msm_gem_info { · 150 unmodified lines
151151 #define MSM_PREP_READ 0x01
152152 #define MSM_PREP_WRITE 0x02
153153 #define MSM_PREP_NOSYNC 0x04
154+#define MSM_PREP_BOOST 0x08
154155
155−#define MSM_PREP_FLAGS (MSM_PREP_READ | MSM_PREP_WRITE | MSM_PREP_NOSYNC)
156+#define MSM_PREP_FLAGS (MSM_PREP_READ | \
157+ MSM_PREP_WRITE | \
158+ MSM_PREP_NOSYNC | \
159+ MSM_PREP_BOOST | \
160+ 0)
156161
157162 struct drm_msm_gem_cpu_prep {
158163 __u32 handle; /* in */
@@ -181,7 +186,11 @@ struct drm_msm_gem_cpu_fini { · 22 unmodified lines
181186 */
182187 struct drm_msm_gem_submit_reloc {
183188 __u32 submit_offset; /* in, offset from submit_bo */
189+#ifdef __cplusplus
190+ __u32 _or; /* in, value OR'd with result */
191+#else
184192 __u32 or; /* in, value OR'd with result */
193+#endif
185194 __s32 shift; /* in, amount of left shift (can be negative) */
186195 __u32 reloc_idx; /* in, index of reloc_bo buffer */
187196 __u64 reloc_offset; /* in, offset from start of reloc_bo */
@@ -286,6 +295,11 @@ struct drm_msm_gem_submit { · 98 unmodified lines
286295
287296 };
288297
298+#define MSM_WAIT_FENCE_BOOST 0x00000001
299+#define MSM_WAIT_FENCE_FLAGS ( \
300+ MSM_WAIT_FENCE_BOOST | \
301+ 0)
302+
289303 /* The normal way to synchronize with the GPU is just to CPU_PREP on
290304 * a buffer if you need to access it from the CPU (other cmdstream
291305 * submission from same or other contexts, PAGE_FLIP ioctl, etc, all
@@ -295,7 +309,7 @@ struct drm_msm_gem_submit { · 3 unmodified lines
295309 */
296310 struct drm_msm_wait_fence {
297311 __u32 fence; /* in */
298− __u32 pad;
312+ __u32 flags; /* in, bitmask of MSM_WAIT_FENCE_x */
299313 struct drm_msm_timespec timeout; /* in */
300314 __u32 queueid; /* in, submitqueue id */
301315 };
include/uapi/drm/qaic_accel.h+397−0
@@ -0,0 +1,397 @@
1+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
2+ *
3+ * Copyright (c) 2019-2020, The Linux Foundation. All rights reserved.
4+ * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
5+ */
6+
7+#ifndef QAIC_ACCEL_H_
8+#define QAIC_ACCEL_H_
9+
10+#include "drm.h"
11+
12+#if defined(__cplusplus)
13+extern "C" {
14+#endif
15+
16+/* The length(4K) includes len and count fields of qaic_manage_msg */
17+#define QAIC_MANAGE_MAX_MSG_LENGTH SZ_4K
18+
19+/* semaphore flags */
20+#define QAIC_SEM_INSYNCFENCE 2
21+#define QAIC_SEM_OUTSYNCFENCE 1
22+
23+/* Semaphore commands */
24+#define QAIC_SEM_NOP 0
25+#define QAIC_SEM_INIT 1
26+#define QAIC_SEM_INC 2
27+#define QAIC_SEM_DEC 3
28+#define QAIC_SEM_WAIT_EQUAL 4
29+#define QAIC_SEM_WAIT_GT_EQ 5 /* Greater than or equal */
30+#define QAIC_SEM_WAIT_GT_0 6 /* Greater than 0 */
31+
32+#define QAIC_TRANS_UNDEFINED 0
33+#define QAIC_TRANS_PASSTHROUGH_FROM_USR 1
34+#define QAIC_TRANS_PASSTHROUGH_TO_USR 2
35+#define QAIC_TRANS_PASSTHROUGH_FROM_DEV 3
36+#define QAIC_TRANS_PASSTHROUGH_TO_DEV 4
37+#define QAIC_TRANS_DMA_XFER_FROM_USR 5
38+#define QAIC_TRANS_DMA_XFER_TO_DEV 6
39+#define QAIC_TRANS_ACTIVATE_FROM_USR 7
40+#define QAIC_TRANS_ACTIVATE_FROM_DEV 8
41+#define QAIC_TRANS_ACTIVATE_TO_DEV 9
42+#define QAIC_TRANS_DEACTIVATE_FROM_USR 10
43+#define QAIC_TRANS_DEACTIVATE_FROM_DEV 11
44+#define QAIC_TRANS_STATUS_FROM_USR 12
45+#define QAIC_TRANS_STATUS_TO_USR 13
46+#define QAIC_TRANS_STATUS_FROM_DEV 14
47+#define QAIC_TRANS_STATUS_TO_DEV 15
48+#define QAIC_TRANS_TERMINATE_FROM_DEV 16
49+#define QAIC_TRANS_TERMINATE_TO_DEV 17
50+#define QAIC_TRANS_DMA_XFER_CONT 18
51+#define QAIC_TRANS_VALIDATE_PARTITION_FROM_DEV 19
52+#define QAIC_TRANS_VALIDATE_PARTITION_TO_DEV 20
53+
54+/**
55+ * struct qaic_manage_trans_hdr - Header for a transaction in a manage message.
56+ * @type: In. Identifies this transaction. See QAIC_TRANS_* defines.
57+ * @len: In. Length of this transaction, including this header.
58+ */
59+struct qaic_manage_trans_hdr {
60+ __u32 type;
61+ __u32 len;
62+};
63+
64+/**
65+ * struct qaic_manage_trans_passthrough - Defines a passthrough transaction.
66+ * @hdr: In. Header to identify this transaction.
67+ * @data: In. Payload of this ransaction. Opaque to the driver. Userspace must
68+ * encode in little endian and align/pad to 64-bit.
69+ */
70+struct qaic_manage_trans_passthrough {
71+ struct qaic_manage_trans_hdr hdr;
72+ __u8 data[];
73+};
74+
75+/**
76+ * struct qaic_manage_trans_dma_xfer - Defines a DMA transfer transaction.
77+ * @hdr: In. Header to identify this transaction.
78+ * @tag: In. Identified this transfer in other transactions. Opaque to the
79+ * driver.
80+ * @pad: Structure padding.
81+ * @addr: In. Address of the data to DMA to the device.
82+ * @size: In. Length of the data to DMA to the device.
83+ */
84+struct qaic_manage_trans_dma_xfer {
85+ struct qaic_manage_trans_hdr hdr;
86+ __u32 tag;
87+ __u32 pad;
88+ __u64 addr;
89+ __u64 size;
90+};
91+
92+/**
93+ * struct qaic_manage_trans_activate_to_dev - Defines an activate request.
94+ * @hdr: In. Header to identify this transaction.
95+ * @queue_size: In. Number of elements for DBC request and response queues.
96+ * @eventfd: Unused.
97+ * @options: In. Device specific options for this activate.
98+ * @pad: Structure padding. Must be 0.
99+ */
100+struct qaic_manage_trans_activate_to_dev {
101+ struct qaic_manage_trans_hdr hdr;
102+ __u32 queue_size;
103+ __u32 eventfd;
104+ __u32 options;
105+ __u32 pad;
106+};
107+
108+/**
109+ * struct qaic_manage_trans_activate_from_dev - Defines an activate response.
110+ * @hdr: Out. Header to identify this transaction.
111+ * @status: Out. Return code of the request from the device.
112+ * @dbc_id: Out. Id of the assigned DBC for successful request.
113+ * @options: Out. Device specific options for this activate.
114+ */
115+struct qaic_manage_trans_activate_from_dev {
116+ struct qaic_manage_trans_hdr hdr;
117+ __u32 status;
118+ __u32 dbc_id;
119+ __u64 options;
120+};
121+
122+/**
123+ * struct qaic_manage_trans_deactivate - Defines a deactivate request.
124+ * @hdr: In. Header to identify this transaction.
125+ * @dbc_id: In. Id of assigned DBC.
126+ * @pad: Structure padding. Must be 0.
127+ */
128+struct qaic_manage_trans_deactivate {
129+ struct qaic_manage_trans_hdr hdr;
130+ __u32 dbc_id;
131+ __u32 pad;
132+};
133+
134+/**
135+ * struct qaic_manage_trans_status_to_dev - Defines a status request.
136+ * @hdr: In. Header to identify this transaction.
137+ */
138+struct qaic_manage_trans_status_to_dev {
139+ struct qaic_manage_trans_hdr hdr;
140+};
141+
142+/**
143+ * struct qaic_manage_trans_status_from_dev - Defines a status response.
144+ * @hdr: Out. Header to identify this transaction.
145+ * @major: Out. NNC protocol version major number.
146+ * @minor: Out. NNC protocol version minor number.
147+ * @status: Out. Return code from device.
148+ * @status_flags: Out. Flags from device. Bit 0 indicates if CRCs are required.
149+ */
150+struct qaic_manage_trans_status_from_dev {
151+ struct qaic_manage_trans_hdr hdr;
152+ __u16 major;
153+ __u16 minor;
154+ __u32 status;
155+ __u64 status_flags;
156+};
157+
158+/**
159+ * struct qaic_manage_msg - Defines a message to the device.
160+ * @len: In. Length of all the transactions contained within this message.
161+ * @count: In. Number of transactions in this message.
162+ * @data: In. Address to an array where the transactions can be found.
163+ */
164+struct qaic_manage_msg {
165+ __u32 len;
166+ __u32 count;
167+ __u64 data;
168+};
169+
170+/**
171+ * struct qaic_create_bo - Defines a request to create a buffer object.
172+ * @size: In. Size of the buffer in bytes.
173+ * @handle: Out. GEM handle for the BO.
174+ * @pad: Structure padding. Must be 0.
175+ */
176+struct qaic_create_bo {
177+ __u64 size;
178+ __u32 handle;
179+ __u32 pad;
180+};
181+
182+/**
183+ * struct qaic_mmap_bo - Defines a request to prepare a BO for mmap().
184+ * @handle: In. Handle of the GEM BO to prepare for mmap().
185+ * @pad: Structure padding. Must be 0.
186+ * @offset: Out. Offset value to provide to mmap().
187+ */
188+struct qaic_mmap_bo {
189+ __u32 handle;
190+ __u32 pad;
191+ __u64 offset;
192+};
193+
194+/**
195+ * struct qaic_sem - Defines a semaphore command for a BO slice.
196+ * @val: In. Only lower 12 bits are valid.
197+ * @index: In. Only lower 5 bits are valid.
198+ * @presync: In. 1 if presync operation, 0 if postsync.
199+ * @cmd: In. One of QAIC_SEM_*.
200+ * @flags: In. Bitfield. See QAIC_SEM_INSYNCFENCE and QAIC_SEM_OUTSYNCFENCE
201+ * @pad: Structure padding. Must be 0.
202+ */
203+struct qaic_sem {
204+ __u16 val;
205+ __u8 index;
206+ __u8 presync;
207+ __u8 cmd;
208+ __u8 flags;
209+ __u16 pad;
210+};
211+
212+/**
213+ * struct qaic_attach_slice_entry - Defines a single BO slice.
214+ * @size: In. Size of this slice in bytes.
215+ * @sem0: In. Semaphore command 0. Must be 0 is not valid.
216+ * @sem1: In. Semaphore command 1. Must be 0 is not valid.
217+ * @sem2: In. Semaphore command 2. Must be 0 is not valid.
218+ * @sem3: In. Semaphore command 3. Must be 0 is not valid.
219+ * @dev_addr: In. Device address this slice pushes to or pulls from.
220+ * @db_addr: In. Address of the doorbell to ring.
221+ * @db_data: In. Data to write to the doorbell.
222+ * @db_len: In. Size of the doorbell data in bits - 32, 16, or 8. 0 is for
223+ * inactive doorbells.
224+ * @offset: In. Start of this slice as an offset from the start of the BO.
225+ */
226+struct qaic_attach_slice_entry {
227+ __u64 size;
228+ struct qaic_sem sem0;
229+ struct qaic_sem sem1;
230+ struct qaic_sem sem2;
231+ struct qaic_sem sem3;
232+ __u64 dev_addr;
233+ __u64 db_addr;
234+ __u32 db_data;
235+ __u32 db_len;
236+ __u64 offset;
237+};
238+
239+/**
240+ * struct qaic_attach_slice_hdr - Defines metadata for a set of BO slices.
241+ * @count: In. Number of slices for this BO.
242+ * @dbc_id: In. Associate the sliced BO with this DBC.
243+ * @handle: In. GEM handle of the BO to slice.
244+ * @dir: In. Direction of data flow. 1 = DMA_TO_DEVICE, 2 = DMA_FROM_DEVICE
245+ * @size: In. Total length of the BO.
246+ * If BO is imported (DMABUF/PRIME) then this size
247+ * should not exceed the size of DMABUF provided.
248+ * If BO is allocated using DRM_IOCTL_QAIC_CREATE_BO
249+ * then this size should be exactly same as the size
250+ * provided during DRM_IOCTL_QAIC_CREATE_BO.
251+ * @dev_addr: In. Device address this slice pushes to or pulls from.
252+ * @db_addr: In. Address of the doorbell to ring.
253+ * @db_data: In. Data to write to the doorbell.
254+ * @db_len: In. Size of the doorbell data in bits - 32, 16, or 8. 0 is for
255+ * inactive doorbells.
256+ * @offset: In. Start of this slice as an offset from the start of the BO.
257+ */
258+struct qaic_attach_slice_hdr {
259+ __u32 count;
260+ __u32 dbc_id;
261+ __u32 handle;
262+ __u32 dir;
263+ __u64 size;
264+};
265+
266+/**
267+ * struct qaic_attach_slice - Defines a set of BO slices.
268+ * @hdr: In. Metadata of the set of slices.
269+ * @data: In. Pointer to an array containing the slice definitions.
270+ */
271+struct qaic_attach_slice {
272+ struct qaic_attach_slice_hdr hdr;
273+ __u64 data;
274+};
275+
276+/**
277+ * struct qaic_execute_entry - Defines a BO to submit to the device.
278+ * @handle: In. GEM handle of the BO to commit to the device.
279+ * @dir: In. Direction of data. 1 = to device, 2 = from device.
280+ */
281+struct qaic_execute_entry {
282+ __u32 handle;
283+ __u32 dir;
284+};
285+
286+/**
287+ * struct qaic_partial_execute_entry - Defines a BO to resize and submit.
288+ * @handle: In. GEM handle of the BO to commit to the device.
289+ * @dir: In. Direction of data. 1 = to device, 2 = from device.
290+ * @resize: In. New size of the BO. Must be <= the original BO size. 0 is
291+ * short for no resize.
292+ */
293+struct qaic_partial_execute_entry {
294+ __u32 handle;
295+ __u32 dir;
296+ __u64 resize;
297+};
298+
299+/**
300+ * struct qaic_execute_hdr - Defines metadata for BO submission.
301+ * @count: In. Number of BOs to submit.
302+ * @dbc_id: In. DBC to submit the BOs on.
303+ */
304+struct qaic_execute_hdr {
305+ __u32 count;
306+ __u32 dbc_id;
307+};
308+
309+/**
310+ * struct qaic_execute - Defines a list of BOs to submit to the device.
311+ * @hdr: In. BO list metadata.
312+ * @data: In. Pointer to an array of BOs to submit.
313+ */
314+struct qaic_execute {
315+ struct qaic_execute_hdr hdr;
316+ __u64 data;
317+};
318+
319+/**
320+ * struct qaic_wait - Defines a blocking wait for BO execution.
321+ * @handle: In. GEM handle of the BO to wait on.
322+ * @timeout: In. Maximum time in ms to wait for the BO.
323+ * @dbc_id: In. DBC the BO is submitted to.
324+ * @pad: Structure padding. Must be 0.
325+ */
326+struct qaic_wait {
327+ __u32 handle;
328+ __u32 timeout;
329+ __u32 dbc_id;
330+ __u32 pad;
331+};
332+
333+/**
334+ * struct qaic_perf_stats_hdr - Defines metadata for getting BO perf info.
335+ * @count: In. Number of BOs requested.
336+ * @pad: Structure padding. Must be 0.
337+ * @dbc_id: In. DBC the BO are associated with.
338+ */
339+struct qaic_perf_stats_hdr {
340+ __u16 count;
341+ __u16 pad;
342+ __u32 dbc_id;
343+};
344+
345+/**
346+ * struct qaic_perf_stats - Defines a request for getting BO perf info.
347+ * @hdr: In. Request metadata
348+ * @data: In. Pointer to array of stats structures that will receive the data.
349+ */
350+struct qaic_perf_stats {
351+ struct qaic_perf_stats_hdr hdr;
352+ __u64 data;
353+};
354+
355+/**
356+ * struct qaic_perf_stats_entry - Defines a BO perf info.
357+ * @handle: In. GEM handle of the BO to get perf stats for.
358+ * @queue_level_before: Out. Number of elements in the queue before this BO
359+ * was submitted.
360+ * @num_queue_element: Out. Number of elements added to the queue to submit
361+ * this BO.
362+ * @submit_latency_us: Out. Time taken by the driver to submit this BO.
363+ * @device_latency_us: Out. Time taken by the device to execute this BO.
364+ * @pad: Structure padding. Must be 0.
365+ */
366+struct qaic_perf_stats_entry {
367+ __u32 handle;
368+ __u32 queue_level_before;
369+ __u32 num_queue_element;
370+ __u32 submit_latency_us;
371+ __u32 device_latency_us;
372+ __u32 pad;
373+};
374+
375+#define DRM_QAIC_MANAGE 0x00
376+#define DRM_QAIC_CREATE_BO 0x01
377+#define DRM_QAIC_MMAP_BO 0x02
378+#define DRM_QAIC_ATTACH_SLICE_BO 0x03
379+#define DRM_QAIC_EXECUTE_BO 0x04
380+#define DRM_QAIC_PARTIAL_EXECUTE_BO 0x05
381+#define DRM_QAIC_WAIT_BO 0x06
382+#define DRM_QAIC_PERF_STATS_BO 0x07
383+
384+#define DRM_IOCTL_QAIC_MANAGE DRM_IOWR(DRM_COMMAND_BASE + DRM_QAIC_MANAGE, struct qaic_manage_msg)
385+#define DRM_IOCTL_QAIC_CREATE_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_QAIC_CREATE_BO, struct qaic_create_bo)
386+#define DRM_IOCTL_QAIC_MMAP_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_QAIC_MMAP_BO, struct qaic_mmap_bo)
387+#define DRM_IOCTL_QAIC_ATTACH_SLICE_BO DRM_IOW(DRM_COMMAND_BASE + DRM_QAIC_ATTACH_SLICE_BO, struct qaic_attach_slice)
388+#define DRM_IOCTL_QAIC_EXECUTE_BO DRM_IOW(DRM_COMMAND_BASE + DRM_QAIC_EXECUTE_BO, struct qaic_execute)
389+#define DRM_IOCTL_QAIC_PARTIAL_EXECUTE_BO DRM_IOW(DRM_COMMAND_BASE + DRM_QAIC_PARTIAL_EXECUTE_BO, struct qaic_execute)
390+#define DRM_IOCTL_QAIC_WAIT_BO DRM_IOW(DRM_COMMAND_BASE + DRM_QAIC_WAIT_BO, struct qaic_wait)
391+#define DRM_IOCTL_QAIC_PERF_STATS_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_QAIC_PERF_STATS_BO, struct qaic_perf_stats)
392+
393+#if defined(__cplusplus)
394+}
395+#endif
396+
397+#endif /* QAIC_ACCEL_H_ */
include/uapi/linux/atmdev.h+0−4
@@ -101,10 +101,6 @@ struct atm_dev_stats { · 100 unmodified lines
101101 /* use backend to make new if */
102102 #define ATM_ADDPARTY _IOW('a', ATMIOC_SPECIAL+4,struct atm_iobuf)
103103 /* add party to p2mp call */
104−#ifdef CONFIG_COMPAT
105−/* It actually takes struct sockaddr_atmsvc, not struct atm_iobuf */
106−#define COMPAT_ATM_ADDPARTY _IOW('a', ATMIOC_SPECIAL+4,struct compat_atm_iobuf)
107−#endif
108104 #define ATM_DROPPARTY _IOW('a', ATMIOC_SPECIAL+5,int)
109105 /* drop party from p2mp call */
110106
include/uapi/linux/bpf.h+99−13
@@ -986,6 +986,7 @@ enum bpf_prog_type { · 985 unmodified lines
986986 BPF_PROG_TYPE_LSM,
987987 BPF_PROG_TYPE_SK_LOOKUP,
988988 BPF_PROG_TYPE_SYSCALL, /* a program that can execute syscalls */
989+ BPF_PROG_TYPE_NETFILTER,
989990 };
990991
991992 enum bpf_attach_type {
@@ -1033,6 +1034,7 @@ enum bpf_attach_type { · 41 unmodified lines
10331034 BPF_PERF_EVENT,
10341035 BPF_TRACE_KPROBE_MULTI,
10351036 BPF_LSM_CGROUP,
1037+ BPF_STRUCT_OPS,
10361038 __MAX_BPF_ATTACH_TYPE
10371039 };
10381040
@@ -1049,6 +1051,7 @@ enum bpf_link_type { · 10 unmodified lines
10491051 BPF_LINK_TYPE_PERF_EVENT = 7,
10501052 BPF_LINK_TYPE_KPROBE_MULTI = 8,
10511053 BPF_LINK_TYPE_STRUCT_OPS = 9,
1054+ BPF_LINK_TYPE_NETFILTER = 10,
10521055
10531056 MAX_BPF_LINK_TYPE,
10541057 };
@@ -1108,7 +1111,7 @@ enum bpf_link_type { · 53 unmodified lines
11081111 */
11091112 #define BPF_F_STRICT_ALIGNMENT (1U << 0)
11101113
1111−/* If BPF_F_ANY_ALIGNMENT is used in BPF_PROF_LOAD command, the
1114+/* If BPF_F_ANY_ALIGNMENT is used in BPF_PROG_LOAD command, the
11121115 * verifier will allow any alignment whatsoever. On platforms
11131116 * with strict alignment requirements for loads ands stores (such
11141117 * as sparc and mips) the verifier validates that all loads and
@@ -1266,6 +1269,9 @@ enum { · 151 unmodified lines
12661269
12671270 /* Create a map that is suitable to be an inner map with dynamic max entries */
12681271 BPF_F_INNER_MAP = (1U << 12),
1272+
1273+/* Create a map that will be registered/unregesitered by the backed bpf_link */
1274+ BPF_F_LINK = (1U << 13),
12691275 };
12701276
12711277 /* Flags for BPF_PROG_QUERY. */
@@ -1403,6 +1409,11 @@ union bpf_attr { · 131 unmodified lines
14031409 __aligned_u64 fd_array; /* array of FDs */
14041410 __aligned_u64 core_relos;
14051411 __u32 core_relo_rec_size; /* sizeof(struct bpf_core_relo) */
1412+ /* output: actual total log contents size (including termintaing zero).
1413+ * It could be both larger than original log_size (if log was
1414+ * truncated), or smaller (if log buffer wasn't filled completely).
1415+ */
1416+ __u32 log_true_size;
14061417 };
14071418
14081419 struct { /* anonymous struct used by BPF_OBJ_* commands */
@@ -1488,6 +1499,11 @@ union bpf_attr { · 79 unmodified lines
14881499 __u32 btf_size;
14891500 __u32 btf_log_size;
14901501 __u32 btf_log_level;
1502+ /* output: actual total log contents size (including termintaing zero).
1503+ * It could be both larger than original log_size (if log was
1504+ * truncated), or smaller (if log buffer wasn't filled completely).
1505+ */
1506+ __u32 btf_log_true_size;
14911507 };
14921508
14931509 struct {
@@ -1507,7 +1523,10 @@ union bpf_attr { · 13 unmodified lines
15071523 } task_fd_query;
15081524
15091525 struct { /* struct used by BPF_LINK_CREATE command */
1510− __u32 prog_fd; /* eBPF program to attach */
1526+ union {
1527+ __u32 prog_fd; /* eBPF program to attach */
1528+ __u32 map_fd; /* struct_ops to attach */
1529+ };
15111530 union {
15121531 __u32 target_fd; /* object to attach to */
15131532 __u32 target_ifindex; /* target ifindex */
@@ -1543,17 +1562,34 @@ union bpf_attr { · 29 unmodified lines
15431562 */
15441563 __u64 cookie;
15451564 } tracing;
1565+ struct {
1566+ __u32 pf;
1567+ __u32 hooknum;
1568+ __s32 priority;
1569+ __u32 flags;
1570+ } netfilter;
15461571 };
15471572 } link_create;
15481573
15491574 struct { /* struct used by BPF_LINK_UPDATE command */
15501575 __u32 link_fd; /* link fd */
1551− /* new program fd to update link with */
1552− __u32 new_prog_fd;
1576+ union {
1577+ /* new program fd to update link with */
1578+ __u32 new_prog_fd;
1579+ /* new struct_ops map fd to update link with */
1580+ __u32 new_map_fd;
1581+ };
15531582 __u32 flags; /* extra flags */
1554− /* expected link's program fd; is specified only if
1555− * BPF_F_REPLACE flag is set in flags */
1556− __u32 old_prog_fd;
1583+ union {
1584+ /* expected link's program fd; is specified only if
1585+ * BPF_F_REPLACE flag is set in flags.
1586+ */
1587+ __u32 old_prog_fd;
1588+ /* expected link's map fd; is specified only
1589+ * if BPF_F_REPLACE flag is set.
1590+ */
1591+ __u32 old_map_fd;
1592+ };
15571593 } link_update;
15581594
15591595 struct {
@@ -1647,17 +1683,17 @@ union bpf_attr { · 87 unmodified lines
16471683 * Description
16481684 * This helper is a "printk()-like" facility for debugging. It
16491685 * prints a message defined by format *fmt* (of size *fmt_size*)
1650− * to file *\/sys/kernel/debug/tracing/trace* from DebugFS, if
1686+ * to file *\/sys/kernel/tracing/trace* from TraceFS, if
16511687 * available. It can take up to three additional **u64**
16521688 * arguments (as an eBPF helpers, the total number of arguments is
16531689 * limited to five).
16541690 *
16551691 * Each time the helper is called, it appends a line to the trace.
1656− * Lines are discarded while *\/sys/kernel/debug/tracing/trace* is
1657− * open, use *\/sys/kernel/debug/tracing/trace_pipe* to avoid this.
1692+ * Lines are discarded while *\/sys/kernel/tracing/trace* is
1693+ * open, use *\/sys/kernel/tracing/trace_pipe* to avoid this.
16581694 * The format of the trace is customizable, and the exact output
16591695 * one will get depends on the options set in
1660− * *\/sys/kernel/debug/tracing/trace_options* (see also the
1696+ * *\/sys/kernel/tracing/trace_options* (see also the
16611697 * *README* file under the same directory). However, it usually
16621698 * defaults to something like:
16631699 *
@@ -4969,6 +5005,12 @@ union bpf_attr { · 3305 unmodified lines
49695005 * different maps if key/value layout matches across maps.
49705006 * Every bpf_timer_set_callback() can have different callback_fn.
49715007 *
5008+ * *flags* can be one of:
5009+ *
5010+ * **BPF_F_TIMER_ABS**
5011+ * Start the timer in absolute expire value instead of the
5012+ * default relative one.
5013+ *
49725014 * Return
49735015 * 0 on success.
49745016 * **-EINVAL** if *timer* was not initialized with bpf_timer_init() earlier
@@ -5325,11 +5367,22 @@ union bpf_attr { · 350 unmodified lines
53255367 * Description
53265368 * Write *len* bytes from *src* into *dst*, starting from *offset*
53275369 * into *dst*.
5328− * *flags* is currently unused.
5370+ *
5371+ * *flags* must be 0 except for skb-type dynptrs.
5372+ *
5373+ * For skb-type dynptrs:
5374+ * * All data slices of the dynptr are automatically
5375+ * invalidated after **bpf_dynptr_write**\ (). This is
5376+ * because writing may pull the skb and change the
5377+ * underlying packet buffer.
5378+ *
5379+ * * For *flags*, please see the flags accepted by
5380+ * **bpf_skb_store_bytes**\ ().
53295381 * Return
53305382 * 0 on success, -E2BIG if *offset* + *len* exceeds the length
53315383 * of *dst*'s data, -EINVAL if *dst* is an invalid dynptr or if *dst*
5332− * is a read-only dynptr or if *flags* is not 0.
5384+ * is a read-only dynptr or if *flags* is not correct. For skb-type dynptrs,
5385+ * other errors correspond to errors returned by **bpf_skb_store_bytes**\ ().
53335386 *
53345387 * void *bpf_dynptr_data(const struct bpf_dynptr *ptr, u32 offset, u32 len)
53355388 * Description
@@ -5337,6 +5390,9 @@ union bpf_attr { · 1 unmodified line
53375390 *
53385391 * *len* must be a statically known value. The returned data slice
53395392 * is invalidated whenever the dynptr is invalidated.
5393+ *
5394+ * skb and xdp type dynptrs may not use bpf_dynptr_data. They should
5395+ * instead use bpf_dynptr_slice and bpf_dynptr_slice_rdwr.
53405396 * Return
53415397 * Pointer to the underlying dynptr data, NULL if the dynptr is
53425398 * read-only, if the dynptr is invalid, or if the offset and length
@@ -6359,6 +6415,15 @@ struct bpf_link_info { · 1016 unmodified lines
63596415 struct {
63606416 __u32 ifindex;
63616417 } xdp;
6418+ struct {
6419+ __u32 map_id;
6420+ } struct_ops;
6421+ struct {
6422+ __u32 pf;
6423+ __u32 hooknum;
6424+ __s32 priority;
6425+ __u32 flags;
6426+ } netfilter;
63626427 };
63636428 } __attribute__((aligned(8)));
63646429
@@ -6934,6 +6999,10 @@ struct bpf_rb_node { · 569 unmodified lines
69346999 __u64 :64;
69357000 } __attribute__((aligned(8)));
69367001
7002+struct bpf_refcount {
7003+ __u32 :32;
7004+} __attribute__((aligned(4)));
7005+
69377006 struct bpf_sysctl {
69387007 __u32 write; /* Sysctl is being read (= 0) or written (= 1).
69397008 * Allows 1,2,4-byte read, but no write.
@@ -7083,4 +7152,21 @@ struct bpf_core_relo { · 143 unmodified lines
70837152 enum bpf_core_relo_kind kind;
70847153 };
70857154
7155+/*
7156+ * Flags to control bpf_timer_start() behaviour.
7157+ * - BPF_F_TIMER_ABS: Timeout passed is absolute time, by default it is
7158+ * relative to current time.
7159+ */
7160+enum {
7161+ BPF_F_TIMER_ABS = (1ULL << 0),
7162+};
7163+
7164+/* BPF numbers iterator state */
7165+struct bpf_iter_num {
7166+ /* opaque iterator state; having __u64 here allows to preserve correct
7167+ * alignment requirements in vmlinux.h, generated from BTF
7168+ */
7169+ __u64 __opaque[1];
7170+} __attribute__((aligned(8)));
7171+
70867172 #endif /* _UAPI__LINUX_BPF_H__ */
include/uapi/linux/btrfs.h+1−0
@@ -187,6 +187,7 @@ struct btrfs_scrub_progress { · 186 unmodified lines
187187 };
188188
189189 #define BTRFS_SCRUB_READONLY 1
190+#define BTRFS_SCRUB_SUPPORTED_FLAGS (BTRFS_SCRUB_READONLY)
190191 struct btrfs_ioctl_scrub_args {
191192 __u64 devid; /* in */
192193 __u64 start; /* in */
include/uapi/linux/cm4000_cs.h+0−64
@@ -1,64 +0,0 @@
1−/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2−#ifndef _UAPI_CM4000_H_
3−#define _UAPI_CM4000_H_
4−
5−#include <linux/types.h>
6−#include <linux/ioctl.h>
7−
8−#define MAX_ATR 33
9−
10−#define CM4000_MAX_DEV 4
11−
12−/* those two structures are passed via ioctl() from/to userspace. They are
13− * used by existing userspace programs, so I kepth the awkward "bIFSD" naming
14− * not to break compilation of userspace apps. -HW */
15−
16−typedef struct atreq {
17− __s32 atr_len;
18− unsigned char atr[64];
19− __s32 power_act;
20− unsigned char bIFSD;
21− unsigned char bIFSC;
22−} atreq_t;
23−
24−
25−/* what is particularly stupid in the original driver is the arch-dependent
26− * member sizes. This leads to CONFIG_COMPAT breakage, since 32bit userspace
27− * will lay out the structure members differently than the 64bit kernel.
28− *
29− * I've changed "ptsreq.protocol" from "unsigned long" to "__u32".
30− * On 32bit this will make no difference. With 64bit kernels, it will make
31− * 32bit apps work, too.
32− */
33−
34−typedef struct ptsreq {
35− __u32 protocol; /*T=0: 2^0, T=1: 2^1*/
36− unsigned char flags;
37− unsigned char pts1;
38− unsigned char pts2;
39− unsigned char pts3;
40−} ptsreq_t;
41−
42−#define CM_IOC_MAGIC 'c'
43−#define CM_IOC_MAXNR 255
44−
45−#define CM_IOCGSTATUS _IOR (CM_IOC_MAGIC, 0, unsigned char *)
46−#define CM_IOCGATR _IOWR(CM_IOC_MAGIC, 1, atreq_t *)
47−#define CM_IOCSPTS _IOW (CM_IOC_MAGIC, 2, ptsreq_t *)
48−#define CM_IOCSRDR _IO (CM_IOC_MAGIC, 3)
49−#define CM_IOCARDOFF _IO (CM_IOC_MAGIC, 4)
50−
51−#define CM_IOSDBGLVL _IOW(CM_IOC_MAGIC, 250, int*)
52−
53−/* card and device states */
54−#define CM_CARD_INSERTED 0x01
55−#define CM_CARD_POWERED 0x02
56−#define CM_ATR_PRESENT 0x04
57−#define CM_ATR_VALID 0x08
58−#define CM_STATE_VALID 0x0f
59−/* extra info only from CM4000 */
60−#define CM_NO_READER 0x10
61−#define CM_BAD_CARD 0x20
62−
63−
64−#endif /* _UAPI_CM4000_H_ */
include/uapi/linux/const.h+1−1
@@ -28,7 +28,7 @@ · 27 unmodified lines
2828 #define _BITUL(x) (_UL(1) << (x))
2929 #define _BITULL(x) (_ULL(1) << (x))
3030
31−#define __ALIGN_KERNEL(x, a) __ALIGN_KERNEL_MASK(x, (typeof(x))(a) - 1)
31+#define __ALIGN_KERNEL(x, a) __ALIGN_KERNEL_MASK(x, (__typeof__(x))(a) - 1)
3232 #define __ALIGN_KERNEL_MASK(x, mask) (((x) + (mask)) & ~(mask))
3333
3434 #define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
include/uapi/linux/cxl_mem.h+30−5
@@ -40,19 +40,22 @@ · 39 unmodified lines
4040 ___C(SET_ALERT_CONFIG, "Set Alert Configuration"), \
4141 ___C(GET_SHUTDOWN_STATE, "Get Shutdown State"), \
4242 ___C(SET_SHUTDOWN_STATE, "Set Shutdown State"), \
43− ___C(GET_POISON, "Get Poison List"), \
44− ___C(INJECT_POISON, "Inject Poison"), \
45− ___C(CLEAR_POISON, "Clear Poison"), \
43+ ___DEPRECATED(GET_POISON, "Get Poison List"), \
44+ ___DEPRECATED(INJECT_POISON, "Inject Poison"), \
45+ ___DEPRECATED(CLEAR_POISON, "Clear Poison"), \
4646 ___C(GET_SCAN_MEDIA_CAPS, "Get Scan Media Capabilities"), \
47− ___C(SCAN_MEDIA, "Scan Media"), \
48− ___C(GET_SCAN_MEDIA, "Get Scan Media Results"), \
47+ ___DEPRECATED(SCAN_MEDIA, "Scan Media"), \
48+ ___DEPRECATED(GET_SCAN_MEDIA, "Get Scan Media Results"), \
4949 ___C(MAX, "invalid / last command")
5050
5151 #define ___C(a, b) CXL_MEM_COMMAND_ID_##a
52+#define ___DEPRECATED(a, b) CXL_MEM_DEPRECATED_ID_##a
5253 enum { CXL_CMDS };
5354
5455 #undef ___C
56+#undef ___DEPRECATED
5557 #define ___C(a, b) { b }
58+#define ___DEPRECATED(a, b) { "Deprecated " b }
5659 static const struct {
5760 const char *name;
5861 } cxl_command_names[] __attribute__((__unused__)) = { CXL_CMDS };
@@ -68,6 +71,28 @@ static const struct { · 9 unmodified lines
6871 */
6972
7073 #undef ___C
74+#undef ___DEPRECATED
75+#define ___C(a, b) (0)
76+#define ___DEPRECATED(a, b) (1)
77+
78+static const __u8 cxl_deprecated_commands[]
79+ __attribute__((__unused__)) = { CXL_CMDS };
80+
81+/*
82+ * Here's how this actually breaks out:
83+ * cxl_deprecated_commands[] = {
84+ * [CXL_MEM_COMMAND_ID_INVALID] = 0,
85+ * [CXL_MEM_COMMAND_ID_IDENTIFY] = 0,
86+ * ...
87+ * [CXL_MEM_DEPRECATED_ID_GET_POISON] = 1,
88+ * [CXL_MEM_DEPRECATED_ID_INJECT_POISON] = 1,
89+ * [CXL_MEM_DEPRECATED_ID_CLEAR_POISON] = 1,
90+ * ...
91+ * };
92+ */
93+
94+#undef ___C
95+#undef ___DEPRECATED
7196
7297 /**
7398 * struct cxl_command_info - Command information returned from a query.
include/uapi/linux/dlm.h+1−0
@@ -68,6 +68,7 @@ struct dlm_lksb { · 67 unmodified lines
6868
6969 /* dlm_new_lockspace() flags */
7070
71+/* DLM_LSFL_TIMEWARN is deprecated and reserved. DO NOT USE! */
7172 #define DLM_LSFL_TIMEWARN 0x00000002
7273 #define DLM_LSFL_NEWEXCL 0x00000008
7374
include/uapi/linux/dlm_netlink.h+0−60
@@ -1,60 +0,0 @@
1−/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2−/*
3− * Copyright (C) 2007 Red Hat, Inc. All rights reserved.
4− *
5− * This copyrighted material is made available to anyone wishing to use,
6− * modify, copy, or redistribute it subject to the terms and conditions
7− * of the GNU General Public License v.2.
8− */
9−
10−#ifndef _DLM_NETLINK_H
11−#define _DLM_NETLINK_H
12−
13−#include <linux/types.h>
14−#include <linux/dlmconstants.h>
15−
16−enum {
17− DLM_STATUS_WAITING = 1,
18− DLM_STATUS_GRANTED = 2,
19− DLM_STATUS_CONVERT = 3,
20−};
21−
22−#define DLM_LOCK_DATA_VERSION 1
23−
24−struct dlm_lock_data {
25− __u16 version;
26− __u32 lockspace_id;
27− int nodeid;
28− int ownpid;
29− __u32 id;
30− __u32 remid;
31− __u64 xid;
32− __s8 status;
33− __s8 grmode;
34− __s8 rqmode;
35− unsigned long timestamp;
36− int resource_namelen;
37− char resource_name[DLM_RESNAME_MAXLEN];
38−};
39−
40−enum {
41− DLM_CMD_UNSPEC = 0,
42− DLM_CMD_HELLO, /* user->kernel */
43− DLM_CMD_TIMEOUT, /* kernel->user */
44− __DLM_CMD_MAX,
45−};
46−
47−#define DLM_CMD_MAX (__DLM_CMD_MAX - 1)
48−
49−enum {
50− DLM_TYPE_UNSPEC = 0,
51− DLM_TYPE_LOCK,
52− __DLM_TYPE_MAX,
53−};
54−
55−#define DLM_TYPE_MAX (__DLM_TYPE_MAX - 1)
56−
57−#define DLM_GENL_VERSION 0x1
58−#define DLM_GENL_NAME "DLM"
59−
60−#endif /* _DLM_NETLINK_H */
include/uapi/linux/dlmconstants.h+4−1
@@ -87,7 +87,6 @@ · 86 unmodified lines
8787 * DLM_LKF_NODLCKWT
8888 *
8989 * Do not cancel the lock if it gets into conversion deadlock.
90− * Exclude this lock from being monitored due to DLM_LSFL_TIMEWARN.
9190 *
9291 * DLM_LKF_NODLCKBLK
9392 *
@@ -132,6 +131,10 @@ · 38 unmodified lines
132131 * Unlock the lock even if it is converting or waiting or has sublocks.
133132 * Only really for use by the userland device.c code.
134133 *
134+ * DLM_LKF_TIMEOUT
135+ *
136+ * This value is deprecated and reserved. DO NOT USE!
137+ *
135138 */
136139
137140 #define DLM_LKF_NOQUEUE 0x00000001
include/uapi/linux/dm-ioctl.h+2−2
@@ -286,9 +286,9 @@ enum { · 285 unmodified lines
286286 #define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)
287287
288288 #define DM_VERSION_MAJOR 4
289−#define DM_VERSION_MINOR 47
289+#define DM_VERSION_MINOR 48
290290 #define DM_VERSION_PATCHLEVEL 0
291−#define DM_VERSION_EXTRA "-ioctl (2022-07-28)"
291+#define DM_VERSION_EXTRA "-ioctl (2023-03-01)"
292292
293293 /* Status bits */
294294 #define DM_READONLY_FLAG (1 << 0) /* In/Out */
include/uapi/linux/ethtool_netlink.h+2−0
@@ -357,6 +357,8 @@ enum { · 356 unmodified lines
357357 ETHTOOL_A_RINGS_CQE_SIZE, /* u32 */
358358 ETHTOOL_A_RINGS_TX_PUSH, /* u8 */
359359 ETHTOOL_A_RINGS_RX_PUSH, /* u8 */
360+ ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN, /* u32 */
361+ ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAX, /* u32 */
360362
361363 /* add new constants above here */
362364 __ETHTOOL_A_RINGS_CNT,
include/uapi/linux/eventpoll.h+0−12
@@ -85,16 +85,4 @@ struct epoll_event { · 84 unmodified lines
8585 __u64 data;
8686 } EPOLL_PACKED;
8787
88−#ifdef CONFIG_PM_SLEEP
89−static inline void ep_take_care_of_epollwakeup(struct epoll_event *epev)
90−{
91− if ((epev->events & EPOLLWAKEUP) && !capable(CAP_BLOCK_SUSPEND))
92− epev->events &= ~EPOLLWAKEUP;
93−}
94−#else
95−static inline void ep_take_care_of_epollwakeup(struct epoll_event *epev)
96−{
97− epev->events &= ~EPOLLWAKEUP;
98−}
99−#endif
10088 #endif /* _UAPI_LINUX_EVENTPOLL_H */
include/uapi/linux/ext4.h+117−0
@@ -0,0 +1,117 @@
1+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2+
3+#ifndef _UAPI_LINUX_EXT4_H
4+#define _UAPI_LINUX_EXT4_H
5+#include <linux/fiemap.h>
6+#include <linux/fs.h>
7+#include <linux/ioctl.h>
8+#include <linux/types.h>
9+
10+/*
11+ * ext4-specific ioctl commands
12+ */
13+#define EXT4_IOC_GETVERSION _IOR('f', 3, long)
14+#define EXT4_IOC_SETVERSION _IOW('f', 4, long)
15+#define EXT4_IOC_GETVERSION_OLD FS_IOC_GETVERSION
16+#define EXT4_IOC_SETVERSION_OLD FS_IOC_SETVERSION
17+#define EXT4_IOC_GETRSVSZ _IOR('f', 5, long)
18+#define EXT4_IOC_SETRSVSZ _IOW('f', 6, long)
19+#define EXT4_IOC_GROUP_EXTEND _IOW('f', 7, unsigned long)
20+#define EXT4_IOC_GROUP_ADD _IOW('f', 8, struct ext4_new_group_input)
21+#define EXT4_IOC_MIGRATE _IO('f', 9)
22+ /* note ioctl 10 reserved for an early version of the FIEMAP ioctl */
23+ /* note ioctl 11 reserved for filesystem-independent FIEMAP ioctl */
24+#define EXT4_IOC_ALLOC_DA_BLKS _IO('f', 12)
25+#define EXT4_IOC_MOVE_EXT _IOWR('f', 15, struct move_extent)
26+#define EXT4_IOC_RESIZE_FS _IOW('f', 16, __u64)
27+#define EXT4_IOC_SWAP_BOOT _IO('f', 17)
28+#define EXT4_IOC_PRECACHE_EXTENTS _IO('f', 18)
29+/* ioctl codes 19--39 are reserved for fscrypt */
30+#define EXT4_IOC_CLEAR_ES_CACHE _IO('f', 40)
31+#define EXT4_IOC_GETSTATE _IOW('f', 41, __u32)
32+#define EXT4_IOC_GET_ES_CACHE _IOWR('f', 42, struct fiemap)
33+#define EXT4_IOC_CHECKPOINT _IOW('f', 43, __u32)
34+#define EXT4_IOC_GETFSUUID _IOR('f', 44, struct fsuuid)
35+#define EXT4_IOC_SETFSUUID _IOW('f', 44, struct fsuuid)
36+
37+#define EXT4_IOC_SHUTDOWN _IOR('X', 125, __u32)
38+
39+/*
40+ * ioctl commands in 32 bit emulation
41+ */
42+#define EXT4_IOC32_GETVERSION _IOR('f', 3, int)
43+#define EXT4_IOC32_SETVERSION _IOW('f', 4, int)
44+#define EXT4_IOC32_GETRSVSZ _IOR('f', 5, int)
45+#define EXT4_IOC32_SETRSVSZ _IOW('f', 6, int)
46+#define EXT4_IOC32_GROUP_EXTEND _IOW('f', 7, unsigned int)
47+#define EXT4_IOC32_GROUP_ADD _IOW('f', 8, struct compat_ext4_new_group_input)
48+#define EXT4_IOC32_GETVERSION_OLD FS_IOC32_GETVERSION
49+#define EXT4_IOC32_SETVERSION_OLD FS_IOC32_SETVERSION
50+
51+/*
52+ * Flags returned by EXT4_IOC_GETSTATE
53+ *
54+ * We only expose to userspace a subset of the state flags in
55+ * i_state_flags
56+ */
57+#define EXT4_STATE_FLAG_EXT_PRECACHED 0x00000001
58+#define EXT4_STATE_FLAG_NEW 0x00000002
59+#define EXT4_STATE_FLAG_NEWENTRY 0x00000004
60+#define EXT4_STATE_FLAG_DA_ALLOC_CLOSE 0x00000008
61+
62+/*
63+ * Flags for ioctl EXT4_IOC_CHECKPOINT
64+ */
65+#define EXT4_IOC_CHECKPOINT_FLAG_DISCARD 0x1
66+#define EXT4_IOC_CHECKPOINT_FLAG_ZEROOUT 0x2
67+#define EXT4_IOC_CHECKPOINT_FLAG_DRY_RUN 0x4
68+#define EXT4_IOC_CHECKPOINT_FLAG_VALID (EXT4_IOC_CHECKPOINT_FLAG_DISCARD | \
69+ EXT4_IOC_CHECKPOINT_FLAG_ZEROOUT | \
70+ EXT4_IOC_CHECKPOINT_FLAG_DRY_RUN)
71+
72+/*
73+ * Structure for EXT4_IOC_GETFSUUID/EXT4_IOC_SETFSUUID
74+ */
75+struct fsuuid {
76+ __u32 fsu_len;
77+ __u32 fsu_flags;
78+ __u8 fsu_uuid[];
79+};
80+
81+/*
82+ * Structure for EXT4_IOC_MOVE_EXT
83+ */
84+struct move_extent {
85+ __u32 reserved; /* should be zero */
86+ __u32 donor_fd; /* donor file descriptor */
87+ __u64 orig_start; /* logical start offset in block for orig */
88+ __u64 donor_start; /* logical start offset in block for donor */
89+ __u64 len; /* block length to be moved */
90+ __u64 moved_len; /* moved block length */
91+};
92+
93+/*
94+ * Flags used by EXT4_IOC_SHUTDOWN
95+ */
96+#define EXT4_GOING_FLAGS_DEFAULT 0x0 /* going down */
97+#define EXT4_GOING_FLAGS_LOGFLUSH 0x1 /* flush log but not data */
98+#define EXT4_GOING_FLAGS_NOLOGFLUSH 0x2 /* don't flush log nor data */
99+
100+/* Used to pass group descriptor data when online resize is done */
101+struct ext4_new_group_input {
102+ __u32 group; /* Group number for this data */
103+ __u64 block_bitmap; /* Absolute block number of block bitmap */
104+ __u64 inode_bitmap; /* Absolute block number of inode bitmap */
105+ __u64 inode_table; /* Absolute block number of inode table start */
106+ __u32 blocks_count; /* Total number of blocks in this group */
107+ __u16 reserved_blocks; /* Number of reserved blocks in this group */
108+ __u16 unused;
109+};
110+
111+/*
112+ * Returned by EXT4_IOC_GET_ES_CACHE as an additional possible flag.
113+ * It indicates that the entry in extent status cache is for a hole.
114+ */
115+#define EXT4_FIEMAP_EXTENT_HOLE 0x08000000
116+
117+#endif /* _UAPI_LINUX_EXT4_H */
include/uapi/linux/fou.h+1−1
@@ -1,4 +1,4 @@
1−/* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause */
1+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
22 /* Do not edit directly, auto-generated from: */
33 /* Documentation/netlink/specs/fou.yaml */
44 /* YNL-GEN uapi header */
include/uapi/linux/gsmmux.h+16−1
@@ -43,10 +43,25 @@ struct gsm_config_ext { · 42 unmodified lines
4343 __u32 keep_alive; /* Control channel keep-alive in 1/100th of a
4444 * second (0 to disable)
4545 */
46− __u32 reserved[7]; /* For future use, must be initialized to zero */
46+ __u32 wait_config; /* Wait for DLCI config before opening virtual link? */
47+ __u32 reserved[6]; /* For future use, must be initialized to zero */
4748 };
4849
4950 #define GSMIOC_GETCONF_EXT _IOR('G', 5, struct gsm_config_ext)
5051 #define GSMIOC_SETCONF_EXT _IOW('G', 6, struct gsm_config_ext)
5152
53+/* Set channel accordingly before calling GSMIOC_GETCONF_DLCI. */
54+struct gsm_dlci_config {
55+ __u32 channel; /* DLCI (0 for the associated DLCI) */
56+ __u32 adaption; /* Convergence layer type */
57+ __u32 mtu; /* Maximum transfer unit */
58+ __u32 priority; /* Priority (0 for default value) */
59+ __u32 i; /* Frame type (1 = UIH, 2 = UI) */
60+ __u32 k; /* Window size (0 for default value) */
61+ __u32 reserved[8]; /* For future use, must be initialized to zero */
62+};
63+
64+#define GSMIOC_GETCONF_DLCI _IOWR('G', 7, struct gsm_dlci_config)
65+#define GSMIOC_SETCONF_DLCI _IOW('G', 8, struct gsm_dlci_config)
66+
5267 #endif
include/uapi/linux/handshake.h+73−0
@@ -0,0 +1,73 @@
1+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
2+/* Do not edit directly, auto-generated from: */
3+/* Documentation/netlink/specs/handshake.yaml */
4+/* YNL-GEN uapi header */
5+
6+#ifndef _UAPI_LINUX_HANDSHAKE_H
7+#define _UAPI_LINUX_HANDSHAKE_H
8+
9+#define HANDSHAKE_FAMILY_NAME "handshake"
10+#define HANDSHAKE_FAMILY_VERSION 1
11+
12+enum handshake_handler_class {
13+ HANDSHAKE_HANDLER_CLASS_NONE,
14+ HANDSHAKE_HANDLER_CLASS_TLSHD,
15+ HANDSHAKE_HANDLER_CLASS_MAX,
16+};
17+
18+enum handshake_msg_type {
19+ HANDSHAKE_MSG_TYPE_UNSPEC,
20+ HANDSHAKE_MSG_TYPE_CLIENTHELLO,
21+ HANDSHAKE_MSG_TYPE_SERVERHELLO,
22+};
23+
24+enum handshake_auth {
25+ HANDSHAKE_AUTH_UNSPEC,
26+ HANDSHAKE_AUTH_UNAUTH,
27+ HANDSHAKE_AUTH_PSK,
28+ HANDSHAKE_AUTH_X509,
29+};
30+
31+enum {
32+ HANDSHAKE_A_X509_CERT = 1,
33+ HANDSHAKE_A_X509_PRIVKEY,
34+
35+ __HANDSHAKE_A_X509_MAX,
36+ HANDSHAKE_A_X509_MAX = (__HANDSHAKE_A_X509_MAX - 1)
37+};
38+
39+enum {
40+ HANDSHAKE_A_ACCEPT_SOCKFD = 1,
41+ HANDSHAKE_A_ACCEPT_HANDLER_CLASS,
42+ HANDSHAKE_A_ACCEPT_MESSAGE_TYPE,
43+ HANDSHAKE_A_ACCEPT_TIMEOUT,
44+ HANDSHAKE_A_ACCEPT_AUTH_MODE,
45+ HANDSHAKE_A_ACCEPT_PEER_IDENTITY,
46+ HANDSHAKE_A_ACCEPT_CERTIFICATE,
47+
48+ __HANDSHAKE_A_ACCEPT_MAX,
49+ HANDSHAKE_A_ACCEPT_MAX = (__HANDSHAKE_A_ACCEPT_MAX - 1)
50+};
51+
52+enum {
53+ HANDSHAKE_A_DONE_STATUS = 1,
54+ HANDSHAKE_A_DONE_SOCKFD,
55+ HANDSHAKE_A_DONE_REMOTE_AUTH,
56+
57+ __HANDSHAKE_A_DONE_MAX,
58+ HANDSHAKE_A_DONE_MAX = (__HANDSHAKE_A_DONE_MAX - 1)
59+};
60+
61+enum {
62+ HANDSHAKE_CMD_READY = 1,
63+ HANDSHAKE_CMD_ACCEPT,
64+ HANDSHAKE_CMD_DONE,
65+
66+ __HANDSHAKE_CMD_MAX,
67+ HANDSHAKE_CMD_MAX = (__HANDSHAKE_CMD_MAX - 1)
68+};
69+
70+#define HANDSHAKE_MCGRP_NONE "none"
71+#define HANDSHAKE_MCGRP_TLSHD "tlshd"
72+
73+#endif /* _UAPI_LINUX_HANDSHAKE_H */
include/uapi/linux/hw_breakpoint.h+0−10
@@ -22,14 +22,4 @@ enum { · 21 unmodified lines
2222 HW_BREAKPOINT_INVALID = HW_BREAKPOINT_RW | HW_BREAKPOINT_X,
2323 };
2424
25−enum bp_type_idx {
26− TYPE_INST = 0,
27−#ifdef CONFIG_HAVE_MIXED_BREAKPOINTS_REGS
28− TYPE_DATA = 0,
29−#else
30− TYPE_DATA = 1,
31−#endif
32− TYPE_MAX
33−};
34−
3525 #endif /* _UAPI_LINUX_HW_BREAKPOINT_H */
include/uapi/linux/idxd.h+45−3
@@ -30,6 +30,7 @@ enum idxd_scmd_stat { · 29 unmodified lines
3030 IDXD_SCMD_WQ_NO_PRIV = 0x800f0000,
3131 IDXD_SCMD_WQ_IRQ_ERR = 0x80100000,
3232 IDXD_SCMD_WQ_USER_NO_IOMMU = 0x80110000,
33+ IDXD_SCMD_DEV_EVL_ERR = 0x80120000,
3334 };
3435
3536 #define IDXD_SCMD_SOFTERR_MASK 0x80000000
@@ -72,12 +73,14 @@ enum dsa_opcode { · 36 unmodified lines
7273 DSA_OPCODE_CR_DELTA,
7374 DSA_OPCODE_AP_DELTA,
7475 DSA_OPCODE_DUALCAST,
76+ DSA_OPCODE_TRANSL_FETCH,
7577 DSA_OPCODE_CRCGEN = 0x10,
7678 DSA_OPCODE_COPY_CRC,
7779 DSA_OPCODE_DIF_CHECK,
7880 DSA_OPCODE_DIF_INS,
7981 DSA_OPCODE_DIF_STRP,
8082 DSA_OPCODE_DIF_UPDT,
83+ DSA_OPCODE_DIX_GEN = 0x17,
8184 DSA_OPCODE_CFLUSH = 0x20,
8285 };
8386
@@ -132,6 +135,8 @@ enum dsa_completion_status { · 48 unmodified lines
132135 DSA_COMP_HW_ERR1,
133136 DSA_COMP_HW_ERR_DRB,
134137 DSA_COMP_TRANSLATION_FAIL,
138+ DSA_COMP_DRAIN_EVL = 0x26,
139+ DSA_COMP_BATCH_EVL_ERR,
135140 };
136141
137142 enum iax_completion_status {
@@ -167,6 +172,7 @@ enum iax_completion_status { · 29 unmodified lines
167172
168173 #define DSA_COMP_STATUS_MASK 0x7f
169174 #define DSA_COMP_STATUS_WRITE 0x80
175+#define DSA_COMP_STATUS(status) ((status) & DSA_COMP_STATUS_MASK)
170176
171177 struct dsa_hw_desc {
172178 uint32_t pasid:20;
@@ -180,6 +186,8 @@ struct dsa_hw_desc { · 7 unmodified lines
180186 uint64_t rdback_addr;
181187 uint64_t pattern;
182188 uint64_t desc_list_addr;
189+ uint64_t pattern_lower;
190+ uint64_t transl_fetch_addr;
183191 };
184192 union {
185193 uint64_t dst_addr;
@@ -190,6 +198,7 @@ struct dsa_hw_desc { · 4 unmodified lines
190198 union {
191199 uint32_t xfer_size;
192200 uint32_t desc_count;
201+ uint32_t region_size;
193202 };
194203 uint16_t int_handle;
195204 uint16_t rsvd1;
@@ -244,6 +253,26 @@ struct dsa_hw_desc { · 48 unmodified lines
244253 uint16_t dest_app_tag_seed;
245254 };
246255
256+ /* Fill */
257+ uint64_t pattern_upper;
258+
259+ /* Translation fetch */
260+ struct {
261+ uint64_t transl_fetch_res;
262+ uint32_t region_stride;
263+ };
264+
265+ /* DIX generate */
266+ struct {
267+ uint8_t dix_gen_res;
268+ uint8_t dest_dif_flags;
269+ uint8_t dif_flags;
270+ uint8_t dix_gen_res2[13];
271+ uint32_t ref_tag_seed;
272+ uint16_t app_tag_mask;
273+ uint16_t app_tag_seed;
274+ };
275+
247276 uint8_t op_specific[24];
248277 };
249278 } __attribute__((packed));
@@ -284,8 +313,12 @@ struct dsa_completion_record { · 34 unmodified lines
284313 uint8_t result;
285314 uint8_t dif_status;
286315 };
287− uint16_t rsvd;
288− uint32_t bytes_completed;
316+ uint8_t fault_info;
317+ uint8_t rsvd;
318+ union {
319+ uint32_t bytes_completed;
320+ uint32_t descs_completed;
321+ };
289322 uint64_t fault_addr;
290323 union {
291324 /* common record */
@@ -322,6 +355,14 @@ struct dsa_completion_record { · 30 unmodified lines
322355 uint16_t dif_upd_dest_app_tag;
323356 };
324357
358+ /* DIX generate */
359+ struct {
360+ uint64_t dix_gen_res;
361+ uint32_t dix_ref_tag;
362+ uint16_t dix_app_tag_mask;
363+ uint16_t dix_app_tag;
364+ };
365+
325366 uint8_t op_specific[16];
326367 };
327368 } __attribute__((packed));
@@ -333,7 +374,8 @@ struct dsa_raw_completion_record { · 5 unmodified lines
333374 struct iax_completion_record {
334375 volatile uint8_t status;
335376 uint8_t error_code;
336− uint16_t rsvd;
377+ uint8_t fault_info;
378+ uint8_t rsvd;
337379 uint32_t bytes_completed;
338380 uint64_t fault_addr;
339381 uint32_t invalid_flags;
include/uapi/linux/if_bridge.h+11−0
@@ -525,6 +525,7 @@ enum { · 524 unmodified lines
525525 BRIDGE_VLANDB_ENTRY_MCAST_ROUTER,
526526 BRIDGE_VLANDB_ENTRY_MCAST_N_GROUPS,
527527 BRIDGE_VLANDB_ENTRY_MCAST_MAX_GROUPS,
528+ BRIDGE_VLANDB_ENTRY_NEIGH_SUPPRESS,
528529 __BRIDGE_VLANDB_ENTRY_MAX,
529530 };
530531 #define BRIDGE_VLANDB_ENTRY_MAX (__BRIDGE_VLANDB_ENTRY_MAX - 1)
@@ -633,6 +634,11 @@ enum { · 102 unmodified lines
633634 MDBA_MDB_EATTR_GROUP_MODE,
634635 MDBA_MDB_EATTR_SOURCE,
635636 MDBA_MDB_EATTR_RTPROT,
637+ MDBA_MDB_EATTR_DST,
638+ MDBA_MDB_EATTR_DST_PORT,
639+ MDBA_MDB_EATTR_VNI,
640+ MDBA_MDB_EATTR_IFINDEX,
641+ MDBA_MDB_EATTR_SRC_VNI,
636642 __MDBA_MDB_EATTR_MAX
637643 };
638644 #define MDBA_MDB_EATTR_MAX (__MDBA_MDB_EATTR_MAX - 1)
@@ -728,6 +734,11 @@ enum { · 89 unmodified lines
728734 MDBE_ATTR_SRC_LIST,
729735 MDBE_ATTR_GROUP_MODE,
730736 MDBE_ATTR_RTPROT,
737+ MDBE_ATTR_DST,
738+ MDBE_ATTR_DST_PORT,
739+ MDBE_ATTR_VNI,
740+ MDBE_ATTR_IFINDEX,
741+ MDBE_ATTR_SRC_VNI,
731742 __MDBE_ATTR_MAX,
732743 };
733744 #define MDBE_ATTR_MAX (__MDBE_ATTR_MAX - 1)
include/uapi/linux/if_link.h+2−0
@@ -569,6 +569,7 @@ enum { · 568 unmodified lines
569569 IFLA_BRPORT_MAB,
570570 IFLA_BRPORT_MCAST_N_GROUPS,
571571 IFLA_BRPORT_MCAST_MAX_GROUPS,
572+ IFLA_BRPORT_NEIGH_VLAN_SUPPRESS,
572573 __IFLA_BRPORT_MAX
573574 };
574575 #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
@@ -635,6 +636,7 @@ enum { · 60 unmodified lines
635636 IFLA_MACVLAN_MACADDR_COUNT,
636637 IFLA_MACVLAN_BC_QUEUE_LEN,
637638 IFLA_MACVLAN_BC_QUEUE_LEN_USED,
639+ IFLA_MACVLAN_BC_CUTOFF,
638640 __IFLA_MACVLAN_MAX,
639641 };
640642
include/uapi/linux/if_packet.h+1−0
@@ -59,6 +59,7 @@ struct sockaddr_ll { · 58 unmodified lines
5959 #define PACKET_ROLLOVER_STATS 21
6060 #define PACKET_FANOUT_DATA 22
6161 #define PACKET_IGNORE_OUTGOING 23
62+#define PACKET_VNET_HDR_SZ 24
6263
6364 #define PACKET_FANOUT_HASH 0
6465 #define PACKET_FANOUT_LB 1
include/uapi/linux/io_uring.h+19−14
@@ -250,6 +250,7 @@ enum io_uring_op { · 249 unmodified lines
250250 #define IORING_TIMEOUT_REALTIME (1U << 3)
251251 #define IORING_LINK_TIMEOUT_UPDATE (1U << 4)
252252 #define IORING_TIMEOUT_ETIME_SUCCESS (1U << 5)
253+#define IORING_TIMEOUT_MULTISHOT (1U << 6)
253254 #define IORING_TIMEOUT_CLOCK_MASK (IORING_TIMEOUT_BOOTTIME | IORING_TIMEOUT_REALTIME)
254255 #define IORING_TIMEOUT_UPDATE_MASK (IORING_TIMEOUT_UPDATE | IORING_LINK_TIMEOUT_UPDATE)
255256 /*
@@ -389,6 +390,9 @@ enum { · 133 unmodified lines
389390 #define IORING_OFF_SQ_RING 0ULL
390391 #define IORING_OFF_CQ_RING 0x8000000ULL
391392 #define IORING_OFF_SQES 0x10000000ULL
393+#define IORING_OFF_PBUF_RING 0x80000000ULL
394+#define IORING_OFF_PBUF_SHIFT 16
395+#define IORING_OFF_MMAP_MASK 0xf8000000ULL
392396
393397 /*
394398 * Filled with the offset for mmap(2)
@@ -568,19 +572,6 @@ struct io_uring_rsrc_update2 { · 173 unmodified lines
568572 __u32 resv2;
569573 };
570574
571−struct io_uring_notification_slot {
572− __u64 tag;
573− __u64 resv[3];
574−};
575−
576−struct io_uring_notification_register {
577− __u32 nr_slots;
578− __u32 resv;
579− __u64 resv2;
580− __u64 data;
581− __u64 resv3;
582−};
583−
584575 /* Skip updating fd indexes set to this value in the fd table */
585576 #define IORING_REGISTER_FILES_SKIP (-2)
586577
@@ -635,12 +626,26 @@ struct io_uring_buf_ring { · 48 unmodified lines
635626 };
636627 };
637628
629+/*
630+ * Flags for IORING_REGISTER_PBUF_RING.
631+ *
632+ * IOU_PBUF_RING_MMAP: If set, kernel will allocate the memory for the ring.
633+ * The application must not set a ring_addr in struct
634+ * io_uring_buf_reg, instead it must subsequently call
635+ * mmap(2) with the offset set as:
636+ * IORING_OFF_PBUF_RING | (bgid << IORING_OFF_PBUF_SHIFT)
637+ * to get a virtual mapping for the ring.
638+ */
639+enum {
640+ IOU_PBUF_RING_MMAP = 1,
641+};
642+
638643 /* argument for IORING_(UN)REGISTER_PBUF_RING */
639644 struct io_uring_buf_reg {
640645 __u64 ring_addr;
641646 __u32 ring_entries;
642647 __u16 bgid;
643− __u16 pad;
648+ __u16 flags;
644649 __u64 resv[3];
645650 };
646651
include/uapi/linux/ipv6.h+1−1
@@ -81,7 +81,7 @@ struct ipv6_opt_hdr { · 80 unmodified lines
8181 struct rt0_hdr {
8282 struct ipv6_rt_hdr rt_hdr;
8383 __u32 reserved;
84− struct in6_addr addr[0];
84+ struct in6_addr addr[];
8585
8686 #define rt0_type rt_hdr.type
8787 };
include/uapi/linux/isst_if.h+303−0
@@ -163,10 +163,313 @@ struct isst_if_msr_cmds { · 162 unmodified lines
163163 struct isst_if_msr_cmd msr_cmd[1];
164164 };
165165
166+/**
167+ * struct isst_core_power - Structure to get/set core_power feature
168+ * @get_set: 0: Get, 1: Set
169+ * @socket_id: Socket/package id
170+ * @power_domain: Power Domain id
171+ * @enable: Feature enable status
172+ * @priority_type: Priority type for the feature (ordered/proportional)
173+ *
174+ * Structure to get/set core_power feature state using IOCTL
175+ * ISST_IF_CORE_POWER_STATE.
176+ */
177+struct isst_core_power {
178+ __u8 get_set;
179+ __u8 socket_id;
180+ __u8 power_domain_id;
181+ __u8 enable;
182+ __u8 supported;
183+ __u8 priority_type;
184+};
185+
186+/**
187+ * struct isst_clos_param - Structure to get/set clos praram
188+ * @get_set: 0: Get, 1: Set
189+ * @socket_id: Socket/package id
190+ * @power_domain: Power Domain id
191+ * clos: Clos ID for the parameters
192+ * min_freq_mhz: Minimum frequency in MHz
193+ * max_freq_mhz: Maximum frequency in MHz
194+ * prop_prio: Proportional priority from 0-15
195+ *
196+ * Structure to get/set per clos property using IOCTL
197+ * ISST_IF_CLOS_PARAM.
198+ */
199+struct isst_clos_param {
200+ __u8 get_set;
201+ __u8 socket_id;
202+ __u8 power_domain_id;
203+ __u8 clos;
204+ __u16 min_freq_mhz;
205+ __u16 max_freq_mhz;
206+ __u8 prop_prio;
207+};
208+
209+/**
210+ * struct isst_if_clos_assoc - Structure to assign clos to a CPU
211+ * @socket_id: Socket/package id
212+ * @power_domain: Power Domain id
213+ * @logical_cpu: CPU number
214+ * @clos: Clos ID to assign to the logical CPU
215+ *
216+ * Structure to get/set core_power feature.
217+ */
218+struct isst_if_clos_assoc {
219+ __u8 socket_id;
220+ __u8 power_domain_id;
221+ __u16 logical_cpu;
222+ __u16 clos;
223+};
224+
225+/**
226+ * struct isst_if_clos_assoc_cmds - Structure to assign clos to CPUs
227+ * @cmd_count: Number of cmds (cpus) in this request
228+ * @get_set: Request is for get or set
229+ * @punit_cpu_map: Set to 1 if the CPU number is punit numbering not
230+ * Linux CPU number
231+ *
232+ * Structure used to get/set associate CPUs to clos using IOCTL
233+ * ISST_IF_CLOS_ASSOC.
234+ */
235+struct isst_if_clos_assoc_cmds {
236+ __u16 cmd_count;
237+ __u16 get_set;
238+ __u16 punit_cpu_map;
239+ struct isst_if_clos_assoc assoc_info[1];
240+};
241+
242+/**
243+ * struct isst_tpmi_instance_count - Get number of TPMI instances per socket
244+ * @socket_id: Socket/package id
245+ * @count: Number of instances
246+ * @valid_mask: Mask of instances as there can be holes
247+ *
248+ * Structure used to get TPMI instances information using
249+ * IOCTL ISST_IF_COUNT_TPMI_INSTANCES.
250+ */
251+struct isst_tpmi_instance_count {
252+ __u8 socket_id;
253+ __u8 count;
254+ __u16 valid_mask;
255+};
256+
257+/**
258+ * struct isst_perf_level_info - Structure to get information on SST-PP levels
259+ * @socket_id: Socket/package id
260+ * @power_domain: Power Domain id
261+ * @logical_cpu: CPU number
262+ * @clos: Clos ID to assign to the logical CPU
263+ * @max_level: Maximum performance level supported by the platform
264+ * @feature_rev: The feature revision for SST-PP supported by the platform
265+ * @level_mask: Mask of supported performance levels
266+ * @current_level: Current performance level
267+ * @feature_state: SST-BF and SST-TF (enabled/disabled) status at current level
268+ * @locked: SST-PP performance level change is locked/unlocked
269+ * @enabled: SST-PP feature is enabled or not
270+ * @sst-tf_support: SST-TF support status at this level
271+ * @sst-bf_support: SST-BF support status at this level
272+ *
273+ * Structure to get SST-PP details using IOCTL ISST_IF_PERF_LEVELS.
274+ */
275+struct isst_perf_level_info {
276+ __u8 socket_id;
277+ __u8 power_domain_id;
278+ __u8 max_level;
279+ __u8 feature_rev;
280+ __u8 level_mask;
281+ __u8 current_level;
282+ __u8 feature_state;
283+ __u8 locked;
284+ __u8 enabled;
285+ __u8 sst_tf_support;
286+ __u8 sst_bf_support;
287+};
288+
289+/**
290+ * struct isst_perf_level_control - Structure to set SST-PP level
291+ * @socket_id: Socket/package id
292+ * @power_domain: Power Domain id
293+ * @level: level to set
294+ *
295+ * Structure used change SST-PP level using IOCTL ISST_IF_PERF_SET_LEVEL.
296+ */
297+struct isst_perf_level_control {
298+ __u8 socket_id;
299+ __u8 power_domain_id;
300+ __u8 level;
301+};
302+
303+/**
304+ * struct isst_perf_feature_control - Structure to activate SST-BF/SST-TF
305+ * @socket_id: Socket/package id
306+ * @power_domain: Power Domain id
307+ * @feature: bit 0 = SST-BF state, bit 1 = SST-TF state
308+ *
309+ * Structure used to enable SST-BF/SST-TF using IOCTL ISST_IF_PERF_SET_FEATURE.
310+ */
311+struct isst_perf_feature_control {
312+ __u8 socket_id;
313+ __u8 power_domain_id;
314+ __u8 feature;
315+};
316+
317+#define TRL_MAX_BUCKETS 8
318+#define TRL_MAX_LEVELS 6
319+
320+/**
321+ * struct isst_perf_level_data_info - Structure to get SST-PP level details
322+ * @socket_id: Socket/package id
323+ * @power_domain: Power Domain id
324+ * @level: SST-PP level for which caller wants to get information
325+ * @tdp_ratio: TDP Ratio
326+ * @base_freq_mhz: Base frequency in MHz
327+ * @base_freq_avx2_mhz: AVX2 Base frequency in MHz
328+ * @base_freq_avx512_mhz: AVX512 base frequency in MHz
329+ * @base_freq_amx_mhz: AMX base frequency in MHz
330+ * @thermal_design_power_w: Thermal design (TDP) power
331+ * @tjunction_max_c: Max junction temperature
332+ * @max_memory_freq_mhz: Max memory frequency in MHz
333+ * @cooling_type: Type of cooling is used
334+ * @p0_freq_mhz: core maximum frequency
335+ * @p1_freq_mhz: Core TDP frequency
336+ * @pn_freq_mhz: Core maximum efficiency frequency
337+ * @pm_freq_mhz: Core minimum frequency
338+ * @p0_fabric_freq_mhz: Fabric (Uncore) maximum frequency
339+ * @p1_fabric_freq_mhz: Fabric (Uncore) TDP frequency
340+ * @pn_fabric_freq_mhz: Fabric (Uncore) minimum efficiency frequency
341+ * @pm_fabric_freq_mhz: Fabric (Uncore) minimum frequency
342+ * @max_buckets: Maximum trl buckets
343+ * @max_trl_levels: Maximum trl levels
344+ * @bucket_core_counts[TRL_MAX_BUCKETS]: Number of cores per bucket
345+ * @trl_freq_mhz[TRL_MAX_LEVELS][TRL_MAX_BUCKETS]: maximum frequency
346+ * for a bucket and trl level
347+ *
348+ * Structure used to get information on frequencies and TDP for a SST-PP
349+ * level using ISST_IF_GET_PERF_LEVEL_INFO.
350+ */
351+struct isst_perf_level_data_info {
352+ __u8 socket_id;
353+ __u8 power_domain_id;
354+ __u16 level;
355+ __u16 tdp_ratio;
356+ __u16 base_freq_mhz;
357+ __u16 base_freq_avx2_mhz;
358+ __u16 base_freq_avx512_mhz;
359+ __u16 base_freq_amx_mhz;
360+ __u16 thermal_design_power_w;
361+ __u16 tjunction_max_c;
362+ __u16 max_memory_freq_mhz;
363+ __u16 cooling_type;
364+ __u16 p0_freq_mhz;
365+ __u16 p1_freq_mhz;
366+ __u16 pn_freq_mhz;
367+ __u16 pm_freq_mhz;
368+ __u16 p0_fabric_freq_mhz;
369+ __u16 p1_fabric_freq_mhz;
370+ __u16 pn_fabric_freq_mhz;
371+ __u16 pm_fabric_freq_mhz;
372+ __u16 max_buckets;
373+ __u16 max_trl_levels;
374+ __u16 bucket_core_counts[TRL_MAX_BUCKETS];
375+ __u16 trl_freq_mhz[TRL_MAX_LEVELS][TRL_MAX_BUCKETS];
376+};
377+
378+/**
379+ * struct isst_perf_level_cpu_mask - Structure to get SST-PP level CPU mask
380+ * @socket_id: Socket/package id
381+ * @power_domain: Power Domain id
382+ * @level: SST-PP level for which caller wants to get information
383+ * @punit_cpu_map: Set to 1 if the CPU number is punit numbering not
384+ * Linux CPU number. If 0 CPU buffer is copied to user space
385+ * supplied cpu_buffer of size cpu_buffer_size. Punit
386+ * cpu mask is copied to "mask" field.
387+ * @mask: cpu mask for this PP level (punit CPU numbering)
388+ * @cpu_buffer_size: size of cpu_buffer also used to return the copied CPU
389+ * buffer size.
390+ * @cpu_buffer: Buffer to copy CPU mask when punit_cpu_map is 0
391+ *
392+ * Structure used to get cpumask for a SST-PP level using
393+ * IOCTL ISST_IF_GET_PERF_LEVEL_CPU_MASK. Also used to get CPU mask for
394+ * IOCTL ISST_IF_GET_BASE_FREQ_CPU_MASK for SST-BF.
395+ */
396+struct isst_perf_level_cpu_mask {
397+ __u8 socket_id;
398+ __u8 power_domain_id;
399+ __u8 level;
400+ __u8 punit_cpu_map;
401+ __u64 mask;
402+ __u16 cpu_buffer_size;
403+ __s8 cpu_buffer[1];
404+};
405+
406+/**
407+ * struct isst_base_freq_info - Structure to get SST-BF frequencies
408+ * @socket_id: Socket/package id
409+ * @power_domain: Power Domain id
410+ * @level: SST-PP level for which caller wants to get information
411+ * @high_base_freq_mhz: High priority CPU base frequency
412+ * @low_base_freq_mhz: Low priority CPU base frequency
413+ * @tjunction_max_c: Max junction temperature
414+ * @thermal_design_power_w: Thermal design power in watts
415+ *
416+ * Structure used to get SST-BF information using
417+ * IOCTL ISST_IF_GET_BASE_FREQ_INFO.
418+ */
419+struct isst_base_freq_info {
420+ __u8 socket_id;
421+ __u8 power_domain_id;
422+ __u16 level;
423+ __u16 high_base_freq_mhz;
424+ __u16 low_base_freq_mhz;
425+ __u16 tjunction_max_c;
426+ __u16 thermal_design_power_w;
427+};
428+
429+/**
430+ * struct isst_turbo_freq_info - Structure to get SST-TF frequencies
431+ * @socket_id: Socket/package id
432+ * @power_domain: Power Domain id
433+ * @level: SST-PP level for which caller wants to get information
434+ * @max_clip_freqs: Maximum number of low priority core clipping frequencies
435+ * @lp_clip_freq_mhz: Clip frequencies per trl level
436+ * @bucket_core_counts: Maximum number of cores for a bucket
437+ * @trl_freq_mhz: Frequencies per trl level for each bucket
438+ *
439+ * Structure used to get SST-TF information using
440+ * IOCTL ISST_IF_GET_TURBO_FREQ_INFO.
441+ */
442+struct isst_turbo_freq_info {
443+ __u8 socket_id;
444+ __u8 power_domain_id;
445+ __u16 level;
446+ __u16 max_clip_freqs;
447+ __u16 max_buckets;
448+ __u16 max_trl_levels;
449+ __u16 lp_clip_freq_mhz[TRL_MAX_LEVELS];
450+ __u16 bucket_core_counts[TRL_MAX_BUCKETS];
451+ __u16 trl_freq_mhz[TRL_MAX_LEVELS][TRL_MAX_BUCKETS];
452+};
453+
166454 #define ISST_IF_MAGIC 0xFE
167455 #define ISST_IF_GET_PLATFORM_INFO _IOR(ISST_IF_MAGIC, 0, struct isst_if_platform_info *)
168456 #define ISST_IF_GET_PHY_ID _IOWR(ISST_IF_MAGIC, 1, struct isst_if_cpu_map *)
169457 #define ISST_IF_IO_CMD _IOW(ISST_IF_MAGIC, 2, struct isst_if_io_regs *)
170458 #define ISST_IF_MBOX_COMMAND _IOWR(ISST_IF_MAGIC, 3, struct isst_if_mbox_cmds *)
171459 #define ISST_IF_MSR_COMMAND _IOWR(ISST_IF_MAGIC, 4, struct isst_if_msr_cmds *)
460+
461+#define ISST_IF_COUNT_TPMI_INSTANCES _IOR(ISST_IF_MAGIC, 5, struct isst_tpmi_instance_count *)
462+#define ISST_IF_CORE_POWER_STATE _IOWR(ISST_IF_MAGIC, 6, struct isst_core_power *)
463+#define ISST_IF_CLOS_PARAM _IOWR(ISST_IF_MAGIC, 7, struct isst_clos_param *)
464+#define ISST_IF_CLOS_ASSOC _IOWR(ISST_IF_MAGIC, 8, struct isst_if_clos_assoc_cmds *)
465+
466+#define ISST_IF_PERF_LEVELS _IOWR(ISST_IF_MAGIC, 9, struct isst_perf_level_info *)
467+#define ISST_IF_PERF_SET_LEVEL _IOW(ISST_IF_MAGIC, 10, struct isst_perf_level_control *)
468+#define ISST_IF_PERF_SET_FEATURE _IOW(ISST_IF_MAGIC, 11, struct isst_perf_feature_control *)
469+#define ISST_IF_GET_PERF_LEVEL_INFO _IOR(ISST_IF_MAGIC, 12, struct isst_perf_level_data_info *)
470+#define ISST_IF_GET_PERF_LEVEL_CPU_MASK _IOR(ISST_IF_MAGIC, 13, struct isst_perf_level_cpu_mask *)
471+#define ISST_IF_GET_BASE_FREQ_INFO _IOR(ISST_IF_MAGIC, 14, struct isst_base_freq_info *)
472+#define ISST_IF_GET_BASE_FREQ_CPU_MASK _IOR(ISST_IF_MAGIC, 15, struct isst_perf_level_cpu_mask *)
473+#define ISST_IF_GET_TURBO_FREQ_INFO _IOR(ISST_IF_MAGIC, 16, struct isst_turbo_freq_info *)
474+
172475 #endif
include/uapi/linux/kvm.h+11−3
@@ -341,8 +341,13 @@ struct kvm_run { · 340 unmodified lines
341341 __u64 nr;
342342 __u64 args[6];
343343 __u64 ret;
344− __u32 longmode;
345− __u32 pad;
344+
345+ union {
346+#ifndef __KERNEL__
347+ __u32 longmode;
348+#endif
349+ __u64 flags;
350+ };
346351 } hypercall;
347352 /* KVM_EXIT_TPR_ACCESS */
348353 struct {
@@ -1184,6 +1189,7 @@ struct kvm_ppc_resize_hpt { · 835 unmodified lines
11841189 #define KVM_CAP_S390_PROTECTED_ASYNC_DISABLE 224
11851190 #define KVM_CAP_DIRTY_LOG_RING_WITH_BITMAP 225
11861191 #define KVM_CAP_PMU_EVENT_MASKED_EVENTS 226
1192+#define KVM_CAP_COUNTER_OFFSET 227
11871193
11881194 #ifdef KVM_CAP_IRQ_ROUTING
11891195
@@ -1451,7 +1457,7 @@ struct kvm_vfio_spapr_tce { · 261 unmodified lines
14511457 #define KVM_CREATE_VCPU _IO(KVMIO, 0x41)
14521458 #define KVM_GET_DIRTY_LOG _IOW(KVMIO, 0x42, struct kvm_dirty_log)
14531459 #define KVM_SET_NR_MMU_PAGES _IO(KVMIO, 0x44)
1454−#define KVM_GET_NR_MMU_PAGES _IO(KVMIO, 0x45)
1460+#define KVM_GET_NR_MMU_PAGES _IO(KVMIO, 0x45) /* deprecated */
14551461 #define KVM_SET_USER_MEMORY_REGION _IOW(KVMIO, 0x46, \
14561462 struct kvm_userspace_memory_region)
14571463 #define KVM_SET_TSS_ADDR _IO(KVMIO, 0x47)
@@ -1543,6 +1549,8 @@ struct kvm_s390_ucas_mapping { · 85 unmodified lines
15431549 #define KVM_SET_PMU_EVENT_FILTER _IOW(KVMIO, 0xb2, struct kvm_pmu_event_filter)
15441550 #define KVM_PPC_SVM_OFF _IO(KVMIO, 0xb3)
15451551 #define KVM_ARM_MTE_COPY_TAGS _IOR(KVMIO, 0xb4, struct kvm_arm_copy_mte_tags)
1552+/* Available with KVM_CAP_COUNTER_OFFSET */
1553+#define KVM_ARM_SET_COUNTER_OFFSET _IOW(KVMIO, 0xb5, struct kvm_arm_counter_offset)
15461554
15471555 /* ioctl for vm fd */
15481556 #define KVM_CREATE_DEVICE _IOWR(KVMIO, 0xe0, struct kvm_create_device)
include/uapi/linux/landlock.h+31−15
@@ -130,21 +130,37 @@ struct landlock_path_beneath_attr { · 129 unmodified lines
130130 * - %LANDLOCK_ACCESS_FS_MAKE_BLOCK: Create (or rename or link) a block device.
131131 * - %LANDLOCK_ACCESS_FS_MAKE_SYM: Create (or rename or link) a symbolic link.
132132 * - %LANDLOCK_ACCESS_FS_REFER: Link or rename a file from or to a different
133− * directory (i.e. reparent a file hierarchy). This access right is
134− * available since the second version of the Landlock ABI. This is also the
135− * only access right which is always considered handled by any ruleset in
136− * such a way that reparenting a file hierarchy is always denied by default.
137− * To avoid privilege escalation, it is not enough to add a rule with this
138− * access right. When linking or renaming a file, the destination directory
139− * hierarchy must also always have the same or a superset of restrictions of
140− * the source hierarchy. If it is not the case, or if the domain doesn't
141− * handle this access right, such actions are denied by default with errno
142− * set to ``EXDEV``. Linking also requires a ``LANDLOCK_ACCESS_FS_MAKE_*``
143− * access right on the destination directory, and renaming also requires a
144− * ``LANDLOCK_ACCESS_FS_REMOVE_*`` access right on the source's (file or
145− * directory) parent. Otherwise, such actions are denied with errno set to
146− * ``EACCES``. The ``EACCES`` errno prevails over ``EXDEV`` to let user space
147− * efficiently deal with an unrecoverable error.
133+ * directory (i.e. reparent a file hierarchy).
134+ *
135+ * This access right is available since the second version of the Landlock
136+ * ABI.
137+ *
138+ * This is the only access right which is denied by default by any ruleset,
139+ * even if the right is not specified as handled at ruleset creation time.
140+ * The only way to make a ruleset grant this right is to explicitly allow it
141+ * for a specific directory by adding a matching rule to the ruleset.
142+ *
143+ * In particular, when using the first Landlock ABI version, Landlock will
144+ * always deny attempts to reparent files between different directories.
145+ *
146+ * In addition to the source and destination directories having the
147+ * %LANDLOCK_ACCESS_FS_REFER access right, the attempted link or rename
148+ * operation must meet the following constraints:
149+ *
150+ * * The reparented file may not gain more access rights in the destination
151+ * directory than it previously had in the source directory. If this is
152+ * attempted, the operation results in an ``EXDEV`` error.
153+ *
154+ * * When linking or renaming, the ``LANDLOCK_ACCESS_FS_MAKE_*`` right for the
155+ * respective file type must be granted for the destination directory.
156+ * Otherwise, the operation results in an ``EACCES`` error.
157+ *
158+ * * When renaming, the ``LANDLOCK_ACCESS_FS_REMOVE_*`` right for the
159+ * respective file type must be granted for the source directory. Otherwise,
160+ * the operation results in an ``EACCES`` error.
161+ *
162+ * If multiple requirements are not met, the ``EACCES`` error code takes
163+ * precedence over ``EXDEV``.
148164 *
149165 * .. warning::
150166 *
include/uapi/linux/mei.h+1−1
@@ -7,7 +7,7 @@ · 6 unmodified lines
77 #ifndef _LINUX_MEI_H
88 #define _LINUX_MEI_H
99
10−#include <linux/uuid.h>
10+#include <linux/mei_uuid.h>
1111
1212 /*
1313 * This IOCTL is used to associate the current file descriptor with a
include/uapi/linux/mei_uuid.h+29−0
@@ -0,0 +1,29 @@
1+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2+/*
3+ * MEI UUID definition
4+ *
5+ * Copyright (C) 2010, Intel Corp.
6+ * Huang Ying <ying.huang@intel.com>
7+ */
8+
9+#ifndef _UAPI_LINUX_MEI_UUID_H_
10+#define _UAPI_LINUX_MEI_UUID_H_
11+
12+#include <linux/types.h>
13+
14+typedef struct {
15+ __u8 b[16];
16+} uuid_le;
17+
18+#define UUID_LE(a, b, c, d0, d1, d2, d3, d4, d5, d6, d7) \
19+((uuid_le) \
20+{{ (a) & 0xff, ((a) >> 8) & 0xff, ((a) >> 16) & 0xff, ((a) >> 24) & 0xff, \
21+ (b) & 0xff, ((b) >> 8) & 0xff, \
22+ (c) & 0xff, ((c) >> 8) & 0xff, \
23+ (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) }})
24+
25+#define NULL_UUID_LE \
26+ UUID_LE(0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, \
27+ 0x00, 0x00, 0x00, 0x00)
28+
29+#endif /* _UAPI_LINUX_MEI_UUID_H_ */
include/uapi/linux/nbd.h+20−5
@@ -11,6 +11,8 @@ · 10 unmodified lines
1111 * Cleanup PARANOIA usage & code.
1212 * 2004/02/19 Paul Clements
1313 * Removed PARANOIA, plus various cleanup and comments
14+ * 2023 Copyright Red Hat
15+ * Link to userspace extensions, favor cookie over handle.
1416 */
1517
1618 #ifndef _UAPILINUX_NBD_H
@@ -30,12 +32,18 @@ · 13 unmodified lines
3032 #define NBD_SET_TIMEOUT _IO( 0xab, 9 )
3133 #define NBD_SET_FLAGS _IO( 0xab, 10)
3234
35+/*
36+ * See also https://github.com/NetworkBlockDevice/nbd/blob/master/doc/proto.md
37+ * for additional userspace extensions not yet utilized in the kernel module.
38+ */
39+
3340 enum {
3441 NBD_CMD_READ = 0,
3542 NBD_CMD_WRITE = 1,
3643 NBD_CMD_DISC = 2,
3744 NBD_CMD_FLUSH = 3,
3845 NBD_CMD_TRIM = 4
46+ /* userspace defines additional extension commands */
3947 };
4048
4149 /* values for flags field, these are server interaction specific. */
@@ -64,15 +72,19 @@ enum { · 22 unmodified lines
6472 #define NBD_REQUEST_MAGIC 0x25609513
6573 #define NBD_REPLY_MAGIC 0x67446698
6674 /* Do *not* use magics: 0x12560953 0x96744668. */
75+/* magic 0x668e33ef for structured reply not supported by kernel yet */
6776
6877 /*
6978 * This is the packet used for communication between client and
7079 * server. All data are in network byte order.
7180 */
7281 struct nbd_request {
73− __be32 magic;
74− __be32 type; /* == READ || == WRITE */
75− char handle[8];
82+ __be32 magic; /* NBD_REQUEST_MAGIC */
83+ __be32 type; /* See NBD_CMD_* */
84+ union {
85+ __be64 cookie; /* Opaque identifier for request */
86+ char handle[8]; /* older spelling of cookie */
87+ };
7688 __be64 from;
7789 __be32 len;
7890 } __attribute__((packed));
@@ -82,8 +94,11 @@ struct nbd_request { · 3 unmodified lines
8294 * it has completed an I/O request (or an error occurs).
8395 */
8496 struct nbd_reply {
85− __be32 magic;
97+ __be32 magic; /* NBD_REPLY_MAGIC */
8698 __be32 error; /* 0 = ok, else error */
87− char handle[8]; /* handle you got from request */
99+ union {
100+ __be64 cookie; /* Opaque identifier from request */
101+ char handle[8]; /* older spelling of cookie */
102+ };
88103 };
89104 #endif /* _UAPILINUX_NBD_H */
include/uapi/linux/netdev.h+3−1
@@ -1,4 +1,4 @@
1−/* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause */
1+/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
22 /* Do not edit directly, auto-generated from: */
33 /* Documentation/netlink/specs/netdev.yaml */
44 /* YNL-GEN uapi header */
@@ -33,6 +33,8 @@ enum netdev_xdp_act { · 28 unmodified lines
3333 NETDEV_XDP_ACT_HW_OFFLOAD = 16,
3434 NETDEV_XDP_ACT_RX_SG = 32,
3535 NETDEV_XDP_ACT_NDO_XMIT_SG = 64,
36+
37+ NETDEV_XDP_ACT_MASK = 127,
3638 };
3739
3840 enum {
include/uapi/linux/netfilter/nf_tables.h+6−4
@@ -685,7 +685,7 @@ enum nft_range_ops { · 684 unmodified lines
685685 * enum nft_range_attributes - nf_tables range expression netlink attributes
686686 *
687687 * @NFTA_RANGE_SREG: source register of data to compare (NLA_U32: nft_registers)
688− * @NFTA_RANGE_OP: cmp operation (NLA_U32: nft_cmp_ops)
688+ * @NFTA_RANGE_OP: cmp operation (NLA_U32: nft_range_ops)
689689 * @NFTA_RANGE_FROM_DATA: data range from (NLA_NESTED: nft_data_attributes)
690690 * @NFTA_RANGE_TO_DATA: data range to (NLA_NESTED: nft_data_attributes)
691691 */
@@ -878,7 +878,7 @@ enum nft_exthdr_op { · 186 unmodified lines
878878 * @NFTA_EXTHDR_LEN: extension header length (NLA_U32)
879879 * @NFTA_EXTHDR_FLAGS: extension header flags (NLA_U32)
880880 * @NFTA_EXTHDR_OP: option match type (NLA_U32)
881− * @NFTA_EXTHDR_SREG: option match type (NLA_U32)
881+ * @NFTA_EXTHDR_SREG: source register (NLA_U32: nft_registers)
882882 */
883883 enum nft_exthdr_attributes {
884884 NFTA_EXTHDR_UNSPEC,
@@ -931,6 +931,7 @@ enum nft_exthdr_attributes { · 46 unmodified lines
931931 * @NFT_META_TIME_HOUR: hour of day (in seconds)
932932 * @NFT_META_SDIF: slave device interface index
933933 * @NFT_META_SDIFNAME: slave device interface name
934+ * @NFT_META_BRI_BROUTE: packet br_netfilter_broute bit
934935 */
935936 enum nft_meta_keys {
936937 NFT_META_LEN,
@@ -969,6 +970,7 @@ enum nft_meta_keys { · 32 unmodified lines
969970 NFT_META_TIME_HOUR,
970971 NFT_META_SDIF,
971972 NFT_META_SDIFNAME,
973+ NFT_META_BRI_BROUTE,
972974 __NFT_META_IIFTYPE,
973975 };
974976
@@ -1260,10 +1262,10 @@ enum nft_last_attributes { · 285 unmodified lines
12601262 /**
12611263 * enum nft_log_attributes - nf_tables log expression netlink attributes
12621264 *
1263− * @NFTA_LOG_GROUP: netlink group to send messages to (NLA_U32)
1265+ * @NFTA_LOG_GROUP: netlink group to send messages to (NLA_U16)
12641266 * @NFTA_LOG_PREFIX: prefix to prepend to log messages (NLA_STRING)
12651267 * @NFTA_LOG_SNAPLEN: length of payload to include in netlink message (NLA_U32)
1266− * @NFTA_LOG_QTHRESHOLD: queue threshold (NLA_U32)
1268+ * @NFTA_LOG_QTHRESHOLD: queue threshold (NLA_U16)
12671269 * @NFTA_LOG_LEVEL: log level (NLA_U32)
12681270 * @NFTA_LOG_FLAGS: logging flags (NLA_U32)
12691271 */
include/uapi/linux/netfilter/nfnetlink_hook.h+21−3
@@ -32,8 +32,12 @@ enum nfnl_hook_attributes { · 31 unmodified lines
3232 /**
3333 * enum nfnl_hook_chain_info_attributes - chain description
3434 *
35− * NFNLA_HOOK_INFO_DESC: nft chain and table name (enum nft_table_attributes) (NLA_NESTED)
36− * NFNLA_HOOK_INFO_TYPE: chain type (enum nfnl_hook_chaintype) (NLA_U32)
35+ * @NFNLA_HOOK_INFO_DESC: nft chain and table name (NLA_NESTED)
36+ * @NFNLA_HOOK_INFO_TYPE: chain type (enum nfnl_hook_chaintype) (NLA_U32)
37+ *
38+ * NFNLA_HOOK_INFO_DESC depends on NFNLA_HOOK_INFO_TYPE value:
39+ * NFNL_HOOK_TYPE_NFTABLES: enum nft_table_attributes
40+ * NFNL_HOOK_TYPE_BPF: enum nfnl_hook_bpf_attributes
3741 */
3842 enum nfnl_hook_chain_info_attributes {
3943 NFNLA_HOOK_INFO_UNSPEC,
@@ -55,10 +59,24 @@ enum nfnl_hook_chain_desc_attributes { · 15 unmodified lines
5559 /**
5660 * enum nfnl_hook_chaintype - chain type
5761 *
58− * @NFNL_HOOK_TYPE_NFTABLES nf_tables base chain
62+ * @NFNL_HOOK_TYPE_NFTABLES: nf_tables base chain
63+ * @NFNL_HOOK_TYPE_BPF: bpf program
5964 */
6065 enum nfnl_hook_chaintype {
6166 NFNL_HOOK_TYPE_NFTABLES = 0x1,
67+ NFNL_HOOK_TYPE_BPF,
68+};
69+
70+/**
71+ * enum nfnl_hook_bpf_attributes - bpf prog description
72+ *
73+ * @NFNLA_HOOK_BPF_ID: bpf program id (NLA_U32)
74+ */
75+enum nfnl_hook_bpf_attributes {
76+ NFNLA_HOOK_BPF_UNSPEC,
77+ NFNLA_HOOK_BPF_ID,
78+ __NFNLA_HOOK_BPF_MAX,
6279 };
80+#define NFNLA_HOOK_BPF_MAX (__NFNLA_HOOK_BPF_MAX - 1)
6381
6482 #endif /* _NFNL_HOOK_H */
include/uapi/linux/netfilter/nfnetlink_queue.h+1−0
@@ -62,6 +62,7 @@ enum nfqnl_attr_type { · 61 unmodified lines
6262 NFQA_VLAN, /* nested attribute: packet vlan info */
6363 NFQA_L2HDR, /* full L2 header */
6464 NFQA_PRIORITY, /* skb->priority */
65+ NFQA_CGROUP_CLASSID, /* __u32 cgroup classid */
6566
6667 __NFQA_MAX
6768 };
include/uapi/linux/nfsd/export.h+13−0
@@ -62,5 +62,18 @@ · 61 unmodified lines
6262 | NFSEXP_ALLSQUASH \
6363 | NFSEXP_INSECURE_PORT)
6464
65+/*
66+ * Transport layer security policies that are permitted to access
67+ * an export
68+ */
69+#define NFSEXP_XPRTSEC_NONE 0x0001
70+#define NFSEXP_XPRTSEC_TLS 0x0002
71+#define NFSEXP_XPRTSEC_MTLS 0x0004
72+
73+#define NFSEXP_XPRTSEC_NUM (3)
74+
75+#define NFSEXP_XPRTSEC_ALL (NFSEXP_XPRTSEC_NONE | \
76+ NFSEXP_XPRTSEC_TLS | \
77+ NFSEXP_XPRTSEC_MTLS)
6578
6679 #endif /* _UAPINFSD_EXPORT_H */
include/uapi/linux/nl80211.h+57−2
@@ -1299,6 +1299,16 @@ · 1298 unmodified lines
12991299 * @NL80211_CMD_MODIFY_LINK_STA: Modify a link of an MLD station
13001300 * @NL80211_CMD_REMOVE_LINK_STA: Remove a link of an MLD station
13011301 *
1302+ * @NL80211_CMD_SET_HW_TIMESTAMP: Enable/disable HW timestamping of Timing
1303+ * measurement and Fine timing measurement frames. If %NL80211_ATTR_MAC
1304+ * is included, enable/disable HW timestamping only for frames to/from the
1305+ * specified MAC address. Otherwise enable/disable HW timestamping for
1306+ * all TM/FTM frames (including ones that were enabled with specific MAC
1307+ * address). If %NL80211_ATTR_HW_TIMESTAMP_ENABLED is not included, disable
1308+ * HW timestamping.
1309+ * The number of peers that HW timestamping can be enabled for concurrently
1310+ * is indicated by %NL80211_ATTR_MAX_HW_TIMESTAMP_PEERS.
1311+ *
13021312 * @NL80211_CMD_MAX: highest used command number
13031313 * @__NL80211_CMD_AFTER_LAST: internal use
13041314 */
@@ -1550,6 +1560,8 @@ enum nl80211_commands { · 245 unmodified lines
15501560 NL80211_CMD_MODIFY_LINK_STA,
15511561 NL80211_CMD_REMOVE_LINK_STA,
15521562
1563+ NL80211_CMD_SET_HW_TIMESTAMP,
1564+
15531565 /* add new commands above here */
15541566
15551567 /* used to define NL80211_CMD_MAX below */
@@ -2775,6 +2787,24 @@ enum nl80211_commands { · 1219 unmodified lines
27752787 * indicates that the sub-channel is punctured. Higher 16 bits are
27762788 * reserved.
27772789 *
2790+ * @NL80211_ATTR_MAX_HW_TIMESTAMP_PEERS: Maximum number of peers that HW
2791+ * timestamping can be enabled for concurrently (u16), a wiphy attribute.
2792+ * A value of 0xffff indicates setting for all peers (i.e. not specifying
2793+ * an address with %NL80211_CMD_SET_HW_TIMESTAMP) is supported.
2794+ * @NL80211_ATTR_HW_TIMESTAMP_ENABLED: Indicates whether HW timestamping should
2795+ * be enabled or not (flag attribute).
2796+ *
2797+ * @NL80211_ATTR_EMA_RNR_ELEMS: Optional nested attribute for
2798+ * reduced neighbor report (RNR) elements. This attribute can be used
2799+ * only when NL80211_MBSSID_CONFIG_ATTR_EMA is enabled.
2800+ * Userspace is responsible for splitting the RNR into multiple
2801+ * elements such that each element excludes the non-transmitting
2802+ * profiles already included in the MBSSID element
2803+ * (%NL80211_ATTR_MBSSID_ELEMS) at the same index. Each EMA beacon
2804+ * will be generated by adding MBSSID and RNR elements at the same
2805+ * index. If the userspace includes more RNR elements than number of
2806+ * MBSSID elements then these will be added in every EMA beacon.
2807+ *
27782808 * @NUM_NL80211_ATTR: total number of nl80211_attrs available
27792809 * @NL80211_ATTR_MAX: highest attribute number currently defined
27802810 * @__NL80211_ATTR_AFTER_LAST: internal use
@@ -3306,6 +3336,11 @@ enum nl80211_attrs { · 525 unmodified lines
33063336
33073337 NL80211_ATTR_PUNCT_BITMAP,
33083338
3339+ NL80211_ATTR_MAX_HW_TIMESTAMP_PEERS,
3340+ NL80211_ATTR_HW_TIMESTAMP_ENABLED,
3341+
3342+ NL80211_ATTR_EMA_RNR_ELEMS,
3343+
33093344 /* add attributes here, update the policy in nl80211.c */
33103345
33113346 __NL80211_ATTR_AFTER_LAST,
@@ -4026,6 +4061,10 @@ enum nl80211_band_iftype_attr { · 714 unmodified lines
40264061 * @NL80211_BAND_ATTR_EDMG_BW_CONFIG: Channel BW Configuration subfield encodes
40274062 * the allowed channel bandwidth configurations.
40284063 * Defined by IEEE P802.11ay/D4.0 section 9.4.2.251, Table 13.
4064+ * @NL80211_BAND_ATTR_S1G_MCS_NSS_SET: S1G capabilities, supported S1G-MCS and NSS
4065+ * set subfield, as in the S1G information IE, 5 bytes
4066+ * @NL80211_BAND_ATTR_S1G_CAPA: S1G capabilities information subfield as in the
4067+ * S1G information IE, 10 bytes
40294068 * @NL80211_BAND_ATTR_MAX: highest band attribute currently defined
40304069 * @__NL80211_BAND_ATTR_AFTER_LAST: internal use
40314070 */
@@ -4046,6 +4085,9 @@ enum nl80211_band_attr { · 14 unmodified lines
40464085 NL80211_BAND_ATTR_EDMG_CHANNELS,
40474086 NL80211_BAND_ATTR_EDMG_BW_CONFIG,
40484087
4088+ NL80211_BAND_ATTR_S1G_MCS_NSS_SET,
4089+ NL80211_BAND_ATTR_S1G_CAPA,
4090+
40494091 /* keep last */
40504092 __NL80211_BAND_ATTR_AFTER_LAST,
40514093 NL80211_BAND_ATTR_MAX = __NL80211_BAND_ATTR_AFTER_LAST - 1
@@ -6326,6 +6368,10 @@ enum nl80211_feature_flags { · 2274 unmodified lines
63266368 * @NL80211_EXT_FEATURE_SECURE_NAN: Device supports NAN Pairing which enables
63276369 * authentication, data encryption and message integrity.
63286370 *
6371+ * @NL80211_EXT_FEATURE_AUTH_AND_DEAUTH_RANDOM_TA: Device supports randomized TA
6372+ * in authentication and deauthentication frames sent to unassociated peer
6373+ * using @NL80211_CMD_FRAME.
6374+ *
63296375 * @NUM_NL80211_EXT_FEATURES: number of extended features.
63306376 * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
63316377 */
@@ -6396,6 +6442,7 @@ enum nl80211_ext_feature_index { · 64 unmodified lines
63966442 NL80211_EXT_FEATURE_POWERED_ADDR_CHANGE,
63976443 NL80211_EXT_FEATURE_PUNCT,
63986444 NL80211_EXT_FEATURE_SECURE_NAN,
6445+ NL80211_EXT_FEATURE_AUTH_AND_DEAUTH_RANDOM_TA,
63996446
64006447 /* add new features before the definition below */
64016448 NUM_NL80211_EXT_FEATURES,
@@ -6510,8 +6557,16 @@ enum nl80211_timeout_reason { · 108 unmodified lines
65106557 * @NL80211_SCAN_FLAG_FREQ_KHZ: report scan results with
65116558 * %NL80211_ATTR_SCAN_FREQ_KHZ. This also means
65126559 * %NL80211_ATTR_SCAN_FREQUENCIES will not be included.
6513− * @NL80211_SCAN_FLAG_COLOCATED_6GHZ: scan for colocated APs reported by
6514− * 2.4/5 GHz APs
6560+ * @NL80211_SCAN_FLAG_COLOCATED_6GHZ: scan for collocated APs reported by
6561+ * 2.4/5 GHz APs. When the flag is set, the scan logic will use the
6562+ * information from the RNR element found in beacons/probe responses
6563+ * received on the 2.4/5 GHz channels to actively scan only the 6GHz
6564+ * channels on which APs are expected to be found. Note that when not set,
6565+ * the scan logic would scan all 6GHz channels, but since transmission of
6566+ * probe requests on non PSC channels is limited, it is highly likely that
6567+ * these channels would passively be scanned. Also note that when the flag
6568+ * is set, in addition to the colocated APs, PSC channels would also be
6569+ * scanned if the user space has asked for it.
65156570 */
65166571 enum nl80211_scan_flags {
65176572 NL80211_SCAN_FLAG_LOW_PRIORITY = 1<<0,
include/uapi/linux/parport.h+3−0
@@ -90,6 +90,9 @@ typedef enum { · 89 unmodified lines
9090 /* Flags for block transfer operations. */
9191 #define PARPORT_EPP_FAST (1<<0) /* Unreliable counts. */
9292 #define PARPORT_W91284PIC (1<<1) /* have a Warp9 w91284pic in the device */
93+#define PARPORT_EPP_FAST_32 PARPORT_EPP_FAST /* 32-bit EPP transfers */
94+#define PARPORT_EPP_FAST_16 (1<<2) /* 16-bit EPP transfers */
95+#define PARPORT_EPP_FAST_8 (1<<3) /* 8-bit EPP transfers */
9396
9497 /* The rest is for the kernel only */
9598 #endif /* _UAPI_PARPORT_H_ */
include/uapi/linux/pkt_sched.h+17−0
@@ -719,6 +719,11 @@ enum { · 718 unmodified lines
719719
720720 #define __TC_MQPRIO_SHAPER_MAX (__TC_MQPRIO_SHAPER_MAX - 1)
721721
722+enum {
723+ TC_FP_EXPRESS = 1,
724+ TC_FP_PREEMPTIBLE = 2,
725+};
726+
722727 struct tc_mqprio_qopt {
723728 __u8 num_tc;
724729 __u8 prio_tc_map[TC_QOPT_BITMASK + 1];
@@ -732,12 +737,23 @@ struct tc_mqprio_qopt { · 7 unmodified lines
732737 #define TC_MQPRIO_F_MIN_RATE 0x4
733738 #define TC_MQPRIO_F_MAX_RATE 0x8
734739
740+enum {
741+ TCA_MQPRIO_TC_ENTRY_UNSPEC,
742+ TCA_MQPRIO_TC_ENTRY_INDEX, /* u32 */
743+ TCA_MQPRIO_TC_ENTRY_FP, /* u32 */
744+
745+ /* add new constants above here */
746+ __TCA_MQPRIO_TC_ENTRY_CNT,
747+ TCA_MQPRIO_TC_ENTRY_MAX = (__TCA_MQPRIO_TC_ENTRY_CNT - 1)
748+};
749+
735750 enum {
736751 TCA_MQPRIO_UNSPEC,
737752 TCA_MQPRIO_MODE,
738753 TCA_MQPRIO_SHAPER,
739754 TCA_MQPRIO_MIN_RATE64,
740755 TCA_MQPRIO_MAX_RATE64,
756+ TCA_MQPRIO_TC_ENTRY,
741757 __TCA_MQPRIO_MAX,
742758 };
743759
@@ -1236,6 +1252,7 @@ enum { · 492 unmodified lines
12361252 TCA_TAPRIO_TC_ENTRY_UNSPEC,
12371253 TCA_TAPRIO_TC_ENTRY_INDEX, /* u32 */
12381254 TCA_TAPRIO_TC_ENTRY_MAX_SDU, /* u32 */
1255+ TCA_TAPRIO_TC_ENTRY_FP, /* u32 */
12391256
12401257 /* add new constants above here */
12411258 __TCA_TAPRIO_TC_ENTRY_CNT,
include/uapi/linux/pktcdvd.h+0−11
@@ -29,17 +29,6 @@ · 28 unmodified lines
2929 */
3030 #define PACKET_WAIT_TIME (HZ * 5 / 1000)
3131
32−/*
33− * use drive write caching -- we need deferred error handling to be
34− * able to successfully recover with this option (drive will return good
35− * status as soon as the cdb is validated).
36− */
37−#if defined(CONFIG_CDROM_PKTCDVD_WCACHE)
38−#define USE_WCACHING 1
39−#else
40−#define USE_WCACHING 0
41−#endif
42−
4332 /*
4433 * No user-servicable parts beyond this point ->
4534 */
include/uapi/linux/prctl.h+4−0
@@ -290,4 +290,8 @@ struct prctl_mm_map { · 289 unmodified lines
290290 #define PR_SET_VMA 0x53564d41
291291 # define PR_SET_VMA_ANON_NAME 0
292292
293+#define PR_GET_AUXV 0x41555856
294+
295+#define PR_SET_MEMORY_MERGE 67
296+#define PR_GET_MEMORY_MERGE 68
293297 #endif /* _LINUX_PRCTL_H */
include/uapi/linux/psp-sev.h+7−0
@@ -36,6 +36,13 @@ enum { · 35 unmodified lines
3636 * SEV Firmware status code
3737 */
3838 typedef enum {
39+ /*
40+ * This error code is not in the SEV spec. Its purpose is to convey that
41+ * there was an error that prevented the SEV firmware from being called.
42+ * The SEV API error codes are 16 bits, so the -1 value will not overlap
43+ * with possible values from the specification.
44+ */
45+ SEV_RET_NO_FW_CALL = -1,
3946 SEV_RET_SUCCESS = 0,
4047 SEV_RET_INVALID_PLATFORM_STATE,
4148 SEV_RET_INVALID_GUEST_STATE,
include/uapi/linux/ptrace.h+30−0
@@ -112,6 +112,36 @@ struct ptrace_rseq_configuration { · 111 unmodified lines
112112 __u32 pad;
113113 };
114114
115+#define PTRACE_SET_SYSCALL_USER_DISPATCH_CONFIG 0x4210
116+#define PTRACE_GET_SYSCALL_USER_DISPATCH_CONFIG 0x4211
117+
118+/*
119+ * struct ptrace_sud_config - Per-task configuration for Syscall User Dispatch
120+ * @mode: One of PR_SYS_DISPATCH_ON or PR_SYS_DISPATCH_OFF
121+ * @selector: Tracees user virtual address of SUD selector
122+ * @offset: SUD exclusion area (virtual address)
123+ * @len: Length of SUD exclusion area
124+ *
125+ * Used to get/set the syscall user dispatch configuration for a tracee.
126+ * Selector is optional (may be NULL), and if invalid will produce
127+ * a SIGSEGV in the tracee upon first access.
128+ *
129+ * If mode is PR_SYS_DISPATCH_ON, syscall dispatch will be enabled. If
130+ * PR_SYS_DISPATCH_OFF, syscall dispatch will be disabled and all other
131+ * parameters must be 0. The value in *selector (if not null), also determines
132+ * whether syscall dispatch will occur.
133+ *
134+ * The Syscall User Dispatch Exclusion area described by offset/len is the
135+ * virtual address space from which syscalls will not produce a user
136+ * dispatch.
137+ */
138+struct ptrace_sud_config {
139+ __u64 mode;
140+ __u64 selector;
141+ __u64 offset;
142+ __u64 len;
143+};
144+
115145 /*
116146 * These values are stored in task->ptrace_message
117147 * by ptrace_stop to describe the current syscall-stop.
include/uapi/linux/rtnetlink.h+1−0
@@ -789,6 +789,7 @@ enum { · 788 unmodified lines
789789 TCA_ROOT_FLAGS,
790790 TCA_ROOT_COUNT,
791791 TCA_ROOT_TIME_DELTA, /* in msecs */
792+ TCA_ROOT_EXT_WARN_MSG,
792793 __TCA_ROOT_MAX,
793794 #define TCA_ROOT_MAX (__TCA_ROOT_MAX - 1)
794795 };
include/uapi/linux/sctp.h+3−1
@@ -1211,7 +1211,9 @@ enum sctp_sched_type { · 1210 unmodified lines
12111211 SCTP_SS_DEFAULT = SCTP_SS_FCFS,
12121212 SCTP_SS_PRIO,
12131213 SCTP_SS_RR,
1214− SCTP_SS_MAX = SCTP_SS_RR
1214+ SCTP_SS_FC,
1215+ SCTP_SS_WFQ,
1216+ SCTP_SS_MAX = SCTP_SS_WFQ
12151217 };
12161218
12171219 /* Probe Interval socket option */
include/uapi/linux/sed-opal.h+24−0
@@ -78,6 +78,16 @@ struct opal_user_lr_setup { · 77 unmodified lines
7878 struct opal_session_info session;
7979 };
8080
81+struct opal_lr_status {
82+ struct opal_session_info session;
83+ __u64 range_start;
84+ __u64 range_length;
85+ __u32 RLE; /* Read Lock enabled */
86+ __u32 WLE; /* Write Lock Enabled */
87+ __u32 l_state;
88+ __u8 align[4];
89+};
90+
8191 struct opal_lock_unlock {
8292 struct opal_session_info session;
8393 __u32 l_state;
@@ -151,6 +161,18 @@ struct opal_status { · 67 unmodified lines
151161 __u32 reserved;
152162 };
153163
164+/*
165+ * Geometry Reporting per TCG Storage OPAL SSC
166+ * section 3.1.1.4
167+ */
168+struct opal_geometry {
169+ __u8 align;
170+ __u32 logical_block_size;
171+ __u64 alignment_granularity;
172+ __u64 lowest_aligned_lba;
173+ __u8 __align[3];
174+};
175+
154176 #define IOC_OPAL_SAVE _IOW('p', 220, struct opal_lock_unlock)
155177 #define IOC_OPAL_LOCK_UNLOCK _IOW('p', 221, struct opal_lock_unlock)
156178 #define IOC_OPAL_TAKE_OWNERSHIP _IOW('p', 222, struct opal_key)
@@ -168,5 +190,7 @@ struct opal_status { · 11 unmodified lines
168190 #define IOC_OPAL_WRITE_SHADOW_MBR _IOW('p', 234, struct opal_shadow_mbr)
169191 #define IOC_OPAL_GENERIC_TABLE_RW _IOW('p', 235, struct opal_read_write_table)
170192 #define IOC_OPAL_GET_STATUS _IOR('p', 236, struct opal_status)
193+#define IOC_OPAL_GET_LR_STATUS _IOW('p', 237, struct opal_lr_status)
194+#define IOC_OPAL_GET_GEOMETRY _IOR('p', 238, struct opal_geometry)
171195
172196 #endif /* _UAPI_SED_OPAL_H */
include/uapi/linux/sev-guest.h+16−2
@@ -52,8 +52,14 @@ struct snp_guest_request_ioctl { · 51 unmodified lines
5252 __u64 req_data;
5353 __u64 resp_data;
5454
55− /* firmware error code on failure (see psp-sev.h) */
56− __u64 fw_err;
55+ /* bits[63:32]: VMM error code, bits[31:0] firmware error code (see psp-sev.h) */
56+ union {
57+ __u64 exitinfo2;
58+ struct {
59+ __u32 fw_error;
60+ __u32 vmm_error;
61+ };
62+ };
5763 };
5864
5965 struct snp_ext_report_req {
@@ -77,4 +83,12 @@ struct snp_ext_report_req { · 17 unmodified lines
7783 /* Get SNP extended report as defined in the GHCB specification version 2. */
7884 #define SNP_GET_EXT_REPORT _IOWR(SNP_GUEST_REQ_IOC_TYPE, 0x2, struct snp_guest_request_ioctl)
7985
86+/* Guest message request EXIT_INFO_2 constants */
87+#define SNP_GUEST_FW_ERR_MASK GENMASK_ULL(31, 0)
88+#define SNP_GUEST_VMM_ERR_SHIFT 32
89+#define SNP_GUEST_VMM_ERR(x) (((u64)x) << SNP_GUEST_VMM_ERR_SHIFT)
90+
91+#define SNP_GUEST_VMM_ERR_INVALID_LEN 1
92+#define SNP_GUEST_VMM_ERR_BUSY 2
93+
8094 #endif /* __UAPI_LINUX_SEV_GUEST_H_ */
include/uapi/linux/sync_file.h+15−22
@@ -16,12 +16,16 @@ · 15 unmodified lines
1616 #include <linux/types.h>
1717
1818 /**
19− * struct sync_merge_data - data passed to merge ioctl
19+ * struct sync_merge_data - SYNC_IOC_MERGE: merge two fences
2020 * @name: name of new fence
2121 * @fd2: file descriptor of second fence
2222 * @fence: returns the fd of the new fence to userspace
2323 * @flags: merge_data flags
2424 * @pad: padding for 64-bit alignment, should always be zero
25+ *
26+ * Creates a new fence containing copies of the sync_pts in both
27+ * the calling fd and sync_merge_data.fd2. Returns the new fence's
28+ * fd in sync_merge_data.fence
2529 */
2630 struct sync_merge_data {
2731 char name[32];
@@ -34,8 +38,8 @@ struct sync_merge_data { · 6 unmodified lines
3438 /**
3539 * struct sync_fence_info - detailed fence information
3640 * @obj_name: name of parent sync_timeline
37−* @driver_name: name of driver implementing the parent
38−* @status: status of the fence 0:active 1:signaled <0:error
41+ * @driver_name: name of driver implementing the parent
42+ * @status: status of the fence 0:active 1:signaled <0:error
3943 * @flags: fence_info flags
4044 * @timestamp_ns: timestamp of status change in nanoseconds
4145 */
@@ -48,14 +52,19 @@ struct sync_fence_info { · 6 unmodified lines
4852 };
4953
5054 /**
51− * struct sync_file_info - data returned from fence info ioctl
55+ * struct sync_file_info - SYNC_IOC_FILE_INFO: get detailed information on a sync_file
5256 * @name: name of fence
5357 * @status: status of fence. 1: signaled 0:active <0:error
5458 * @flags: sync_file_info flags
5559 * @num_fences number of fences in the sync_file
5660 * @pad: padding for 64-bit alignment, should always be zero
57− * @sync_fence_info: pointer to array of structs sync_fence_info with all
61+ * @sync_fence_info: pointer to array of struct &sync_fence_info with all
5862 * fences in the sync_file
63+ *
64+ * Takes a struct sync_file_info. If num_fences is 0, the field is updated
65+ * with the actual number of fences. If num_fences is > 0, the system will
66+ * use the pointer provided on sync_fence_info to return up to num_fences of
67+ * struct sync_fence_info, with detailed fence information.
5968 */
6069 struct sync_file_info {
6170 char name[32];
@@ -69,30 +78,14 @@ struct sync_file_info { · 7 unmodified lines
6978
7079 #define SYNC_IOC_MAGIC '>'
7180
72−/**
81+/*
7382 * Opcodes 0, 1 and 2 were burned during a API change to avoid users of the
7483 * old API to get weird errors when trying to handling sync_files. The API
7584 * change happened during the de-stage of the Sync Framework when there was
7685 * no upstream users available.
7786 */
7887
79−/**
80− * DOC: SYNC_IOC_MERGE - merge two fences
81− *
82− * Takes a struct sync_merge_data. Creates a new fence containing copies of
83− * the sync_pts in both the calling fd and sync_merge_data.fd2. Returns the
84− * new fence's fd in sync_merge_data.fence
85− */
8688 #define SYNC_IOC_MERGE _IOWR(SYNC_IOC_MAGIC, 3, struct sync_merge_data)
87−
88−/**
89− * DOC: SYNC_IOC_FILE_INFO - get detailed information on a sync_file
90− *
91− * Takes a struct sync_file_info. If num_fences is 0, the field is updated
92− * with the actual number of fences. If num_fences is > 0, the system will
93− * use the pointer provided on sync_fence_info to return up to num_fences of
94− * struct sync_fence_info, with detailed fence information.
95− */
9689 #define SYNC_IOC_FILE_INFO _IOWR(SYNC_IOC_MAGIC, 4, struct sync_file_info)
9790
9891 #endif /* _UAPI_LINUX_SYNC_H */
include/uapi/linux/target_core_user.h+1−1
@@ -119,7 +119,7 @@ struct tcmu_cmd_entry { · 118 unmodified lines
119119 __u64 cdb_off;
120120 __u64 __pad1;
121121 __u64 __pad2;
122− struct iovec iov[0];
122+ __DECLARE_FLEX_ARRAY(struct iovec, iov);
123123 } req;
124124 struct {
125125 __u8 scsi_status;
include/uapi/linux/taskstats.h+5−1
@@ -34,7 +34,7 @@ · 33 unmodified lines
3434 */
3535
3636
37−#define TASKSTATS_VERSION 13
37+#define TASKSTATS_VERSION 14
3838 #define TS_COMM_LEN 32 /* should be >= TASK_COMM_LEN
3939 * in linux/sched.h */
4040
@@ -198,6 +198,10 @@ struct taskstats { · 157 unmodified lines
198198 /* v13: Delay waiting for write-protect copy */
199199 __u64 wpcopy_count;
200200 __u64 wpcopy_delay_total;
201+
202+ /* v14: Delay waiting for IRQ/SOFTIRQ */
203+ __u64 irq_count;
204+ __u64 irq_delay_total;
201205 };
202206
203207
include/uapi/linux/tc_act/tc_tunnel_key.h+1−0
@@ -34,6 +34,7 @@ enum { · 33 unmodified lines
3434 */
3535 TCA_TUNNEL_KEY_ENC_TOS, /* u8 */
3636 TCA_TUNNEL_KEY_ENC_TTL, /* u8 */
37+ TCA_TUNNEL_KEY_NO_FRAG, /* flag */
3738 __TCA_TUNNEL_KEY_MAX,
3839 };
3940
include/uapi/linux/ublk_cmd.h+43−0
@@ -8,6 +8,9 @@ · 7 unmodified lines
88
99 /*
1010 * Admin commands, issued by ublk server, and handled by ublk driver.
11+ *
12+ * Legacy command definition, don't use in new application, and don't
13+ * add new such definition any more
1114 */
1215 #define UBLK_CMD_GET_QUEUE_AFFINITY 0x01
1316 #define UBLK_CMD_GET_DEV_INFO 0x02
@@ -21,6 +24,30 @@ · 7 unmodified lines
2124 #define UBLK_CMD_END_USER_RECOVERY 0x11
2225 #define UBLK_CMD_GET_DEV_INFO2 0x12
2326
27+/* Any new ctrl command should encode by __IO*() */
28+#define UBLK_U_CMD_GET_QUEUE_AFFINITY \
29+ _IOR('u', UBLK_CMD_GET_QUEUE_AFFINITY, struct ublksrv_ctrl_cmd)
30+#define UBLK_U_CMD_GET_DEV_INFO \
31+ _IOR('u', UBLK_CMD_GET_DEV_INFO, struct ublksrv_ctrl_cmd)
32+#define UBLK_U_CMD_ADD_DEV \
33+ _IOWR('u', UBLK_CMD_ADD_DEV, struct ublksrv_ctrl_cmd)
34+#define UBLK_U_CMD_DEL_DEV \
35+ _IOWR('u', UBLK_CMD_DEL_DEV, struct ublksrv_ctrl_cmd)
36+#define UBLK_U_CMD_START_DEV \
37+ _IOWR('u', UBLK_CMD_START_DEV, struct ublksrv_ctrl_cmd)
38+#define UBLK_U_CMD_STOP_DEV \
39+ _IOWR('u', UBLK_CMD_STOP_DEV, struct ublksrv_ctrl_cmd)
40+#define UBLK_U_CMD_SET_PARAMS \
41+ _IOWR('u', UBLK_CMD_SET_PARAMS, struct ublksrv_ctrl_cmd)
42+#define UBLK_U_CMD_GET_PARAMS \
43+ _IOR('u', UBLK_CMD_GET_PARAMS, struct ublksrv_ctrl_cmd)
44+#define UBLK_U_CMD_START_USER_RECOVERY \
45+ _IOWR('u', UBLK_CMD_START_USER_RECOVERY, struct ublksrv_ctrl_cmd)
46+#define UBLK_U_CMD_END_USER_RECOVERY \
47+ _IOWR('u', UBLK_CMD_END_USER_RECOVERY, struct ublksrv_ctrl_cmd)
48+#define UBLK_U_CMD_GET_DEV_INFO2 \
49+ _IOR('u', UBLK_CMD_GET_DEV_INFO2, struct ublksrv_ctrl_cmd)
50+
2451 /*
2552 * IO commands, issued by ublk server, and handled by ublk driver.
2653 *
@@ -41,10 +68,23 @@ · 14 unmodified lines
4168 * It is only used if ublksrv set UBLK_F_NEED_GET_DATA flag
4269 * while starting a ublk device.
4370 */
71+
72+/*
73+ * Legacy IO command definition, don't use in new application, and don't
74+ * add new such definition any more
75+ */
4476 #define UBLK_IO_FETCH_REQ 0x20
4577 #define UBLK_IO_COMMIT_AND_FETCH_REQ 0x21
4678 #define UBLK_IO_NEED_GET_DATA 0x22
4779
80+/* Any new IO command should encode by __IOWR() */
81+#define UBLK_U_IO_FETCH_REQ \
82+ _IOWR('u', UBLK_IO_FETCH_REQ, struct ublksrv_io_cmd)
83+#define UBLK_U_IO_COMMIT_AND_FETCH_REQ \
84+ _IOWR('u', UBLK_IO_COMMIT_AND_FETCH_REQ, struct ublksrv_io_cmd)
85+#define UBLK_U_IO_NEED_GET_DATA \
86+ _IOWR('u', UBLK_IO_NEED_GET_DATA, struct ublksrv_io_cmd)
87+
4888 /* only ABORT means that no re-fetch */
4989 #define UBLK_IO_RES_OK 0
5090 #define UBLK_IO_RES_NEED_GET_DATA 1
@@ -102,6 +142,9 @@ · 51 unmodified lines
102142 */
103143 #define UBLK_F_UNPRIVILEGED_DEV (1UL << 5)
104144
145+/* use ioctl encoding for uring command */
146+#define UBLK_F_CMD_IOCTL_ENCODE (1UL << 6)
147+
105148 /* device state */
106149 #define UBLK_S_DEV_DEAD 0
107150 #define UBLK_S_DEV_LIVE 1
include/uapi/linux/user_events.h+81−0
@@ -0,0 +1,81 @@
1+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2+/*
3+ * Copyright (c) 2021-2022, Microsoft Corporation.
4+ *
5+ * Authors:
6+ * Beau Belgrave <beaub@linux.microsoft.com>
7+ */
8+#ifndef _UAPI_LINUX_USER_EVENTS_H
9+#define _UAPI_LINUX_USER_EVENTS_H
10+
11+#include <linux/types.h>
12+#include <linux/ioctl.h>
13+
14+#define USER_EVENTS_SYSTEM "user_events"
15+#define USER_EVENTS_PREFIX "u:"
16+
17+/* Create dynamic location entry within a 32-bit value */
18+#define DYN_LOC(offset, size) ((size) << 16 | (offset))
19+
20+/*
21+ * Describes an event registration and stores the results of the registration.
22+ * This structure is passed to the DIAG_IOCSREG ioctl, callers at a minimum
23+ * must set the size and name_args before invocation.
24+ */
25+struct user_reg {
26+
27+ /* Input: Size of the user_reg structure being used */
28+ __u32 size;
29+
30+ /* Input: Bit in enable address to use */
31+ __u8 enable_bit;
32+
33+ /* Input: Enable size in bytes at address */
34+ __u8 enable_size;
35+
36+ /* Input: Flags for future use, set to 0 */
37+ __u16 flags;
38+
39+ /* Input: Address to update when enabled */
40+ __u64 enable_addr;
41+
42+ /* Input: Pointer to string with event name, description and flags */
43+ __u64 name_args;
44+
45+ /* Output: Index of the event to use when writing data */
46+ __u32 write_index;
47+} __attribute__((__packed__));
48+
49+/*
50+ * Describes an event unregister, callers must set the size, address and bit.
51+ * This structure is passed to the DIAG_IOCSUNREG ioctl to disable bit updates.
52+ */
53+struct user_unreg {
54+ /* Input: Size of the user_unreg structure being used */
55+ __u32 size;
56+
57+ /* Input: Bit to unregister */
58+ __u8 disable_bit;
59+
60+ /* Input: Reserved, set to 0 */
61+ __u8 __reserved;
62+
63+ /* Input: Reserved, set to 0 */
64+ __u16 __reserved2;
65+
66+ /* Input: Address to unregister */
67+ __u64 disable_addr;
68+} __attribute__((__packed__));
69+
70+#define DIAG_IOC_MAGIC '*'
71+
72+/* Request to register a user_event */
73+#define DIAG_IOCSREG _IOWR(DIAG_IOC_MAGIC, 0, struct user_reg *)
74+
75+/* Request to delete a user_event */
76+#define DIAG_IOCSDEL _IOW(DIAG_IOC_MAGIC, 1, char *)
77+
78+/* Requests to unregister a user_event */
79+#define DIAG_IOCSUNREG _IOW(DIAG_IOC_MAGIC, 2, struct user_unreg*)
80+
81+#endif /* _UAPI_LINUX_USER_EVENTS_H */
include/uapi/linux/userfaultfd.h+16−1
@@ -38,7 +38,8 @@ · 37 unmodified lines
3838 UFFD_FEATURE_MINOR_HUGETLBFS | \
3939 UFFD_FEATURE_MINOR_SHMEM | \
4040 UFFD_FEATURE_EXACT_ADDRESS | \
41− UFFD_FEATURE_WP_HUGETLBFS_SHMEM)
41+ UFFD_FEATURE_WP_HUGETLBFS_SHMEM | \
42+ UFFD_FEATURE_WP_UNPOPULATED)
4243 #define UFFD_API_IOCTLS \
4344 ((__u64)1 << _UFFDIO_REGISTER | \
4445 (__u64)1 << _UFFDIO_UNREGISTER | \
@@ -203,6 +204,12 @@ struct uffdio_api { · 158 unmodified lines
203204 *
204205 * UFFD_FEATURE_WP_HUGETLBFS_SHMEM indicates that userfaultfd
205206 * write-protection mode is supported on both shmem and hugetlbfs.
207+ *
208+ * UFFD_FEATURE_WP_UNPOPULATED indicates that userfaultfd
209+ * write-protection mode will always apply to unpopulated pages
210+ * (i.e. empty ptes). This will be the default behavior for shmem
211+ * & hugetlbfs, so this flag only affects anonymous memory behavior
212+ * when userfault write-protection mode is registered.
206213 */
207214 #define UFFD_FEATURE_PAGEFAULT_FLAG_WP (1<<0)
208215 #define UFFD_FEATURE_EVENT_FORK (1<<1)
@@ -217,6 +224,7 @@ struct uffdio_api { · 8 unmodified lines
217224 #define UFFD_FEATURE_MINOR_SHMEM (1<<10)
218225 #define UFFD_FEATURE_EXACT_ADDRESS (1<<11)
219226 #define UFFD_FEATURE_WP_HUGETLBFS_SHMEM (1<<12)
227+#define UFFD_FEATURE_WP_UNPOPULATED (1<<13)
220228 __u64 features;
221229
222230 __u64 ioctls;
@@ -297,6 +305,13 @@ struct uffdio_writeprotect { · 74 unmodified lines
297305 struct uffdio_continue {
298306 struct uffdio_range range;
299307 #define UFFDIO_CONTINUE_MODE_DONTWAKE ((__u64)1<<0)
308+ /*
309+ * UFFDIO_CONTINUE_MODE_WP will map the page write protected on
310+ * the fly. UFFDIO_CONTINUE_MODE_WP is available only if the
311+ * write protected ioctl is implemented for the range
312+ * according to the uffdio_register.ioctls.
313+ */
314+#define UFFDIO_CONTINUE_MODE_WP ((__u64)1<<1)
300315 __u64 mode;
301316
302317 /*
include/uapi/linux/uuid.h+1−30
@@ -1,30 +1 @@
1−/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2−/* DO NOT USE in new code! This is solely for MEI due to legacy reasons */
3−/*
4− * MEI UUID definition
5− *
6− * Copyright (C) 2010, Intel Corp.
7− * Huang Ying <ying.huang@intel.com>
8− */
9−
10−#ifndef _UAPI_LINUX_UUID_H_
11−#define _UAPI_LINUX_UUID_H_
12−
13−#include <linux/types.h>
14−
15−typedef struct {
16− __u8 b[16];
17−} uuid_le;
18−
19−#define UUID_LE(a, b, c, d0, d1, d2, d3, d4, d5, d6, d7) \
20−((uuid_le) \
21−{{ (a) & 0xff, ((a) >> 8) & 0xff, ((a) >> 16) & 0xff, ((a) >> 24) & 0xff, \
22− (b) & 0xff, ((b) >> 8) & 0xff, \
23− (c) & 0xff, ((c) >> 8) & 0xff, \
24− (d0), (d1), (d2), (d3), (d4), (d5), (d6), (d7) }})
25−
26−#define NULL_UUID_LE \
27− UUID_LE(0x00000000, 0x0000, 0x0000, 0x00, 0x00, 0x00, 0x00, \
28− 0x00, 0x00, 0x00, 0x00)
29−
30−#endif /* _UAPI_LINUX_UUID_H_ */
1+#include <linux/mei_uuid.h>
include/uapi/linux/v4l2-subdev.h+21−0
@@ -233,6 +233,24 @@ struct v4l2_subdev_routing { · 232 unmodified lines
233233 __u32 reserved[6];
234234 };
235235
236+/*
237+ * The client is aware of streams. Setting this flag enables the use of 'stream'
238+ * fields (referring to the stream number) with various ioctls. If this is not
239+ * set (which is the default), the 'stream' fields will be forced to 0 by the
240+ * kernel.
241+ */
242+ #define V4L2_SUBDEV_CLIENT_CAP_STREAMS (1U << 0)
243+
244+/**
245+ * struct v4l2_subdev_client_capability - Capabilities of the client accessing
246+ * the subdev
247+ *
248+ * @capabilities: A bitmask of V4L2_SUBDEV_CLIENT_CAP_* flags.
249+ */
250+struct v4l2_subdev_client_capability {
251+ __u64 capabilities;
252+};
253+
236254 /* Backwards compatibility define --- to be removed */
237255 #define v4l2_subdev_edid v4l2_edid
238256
@@ -250,6 +268,9 @@ struct v4l2_subdev_routing { · 11 unmodified lines
250268 #define VIDIOC_SUBDEV_S_SELECTION _IOWR('V', 62, struct v4l2_subdev_selection)
251269 #define VIDIOC_SUBDEV_G_ROUTING _IOWR('V', 38, struct v4l2_subdev_routing)
252270 #define VIDIOC_SUBDEV_S_ROUTING _IOWR('V', 39, struct v4l2_subdev_routing)
271+#define VIDIOC_SUBDEV_G_CLIENT_CAP _IOR('V', 101, struct v4l2_subdev_client_capability)
272+#define VIDIOC_SUBDEV_S_CLIENT_CAP _IOWR('V', 102, struct v4l2_subdev_client_capability)
273+
253274 /* The following ioctls are identical to the ioctls in videodev2.h */
254275 #define VIDIOC_SUBDEV_G_STD _IOR('V', 23, v4l2_std_id)
255276 #define VIDIOC_SUBDEV_S_STD _IOW('V', 24, v4l2_std_id)
include/uapi/linux/videodev2.h+13−0
@@ -580,12 +580,17 @@ struct v4l2_pix_format { · 579 unmodified lines
580580 #define V4L2_PIX_FMT_RGBA1010102 v4l2_fourcc('R', 'A', '3', '0') /* 32 RGBA-10-10-10-2 */
581581 #define V4L2_PIX_FMT_ARGB2101010 v4l2_fourcc('A', 'R', '3', '0') /* 32 ARGB-2-10-10-10 */
582582
583+/* RGB formats (6 or 8 bytes per pixel) */
584+#define V4L2_PIX_FMT_BGR48_12 v4l2_fourcc('B', '3', '1', '2') /* 48 BGR 12-bit per component */
585+#define V4L2_PIX_FMT_ABGR64_12 v4l2_fourcc('B', '4', '1', '2') /* 64 BGRA 12-bit per component */
586+
583587 /* Grey formats */
584588 #define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */
585589 #define V4L2_PIX_FMT_Y4 v4l2_fourcc('Y', '0', '4', ' ') /* 4 Greyscale */
586590 #define V4L2_PIX_FMT_Y6 v4l2_fourcc('Y', '0', '6', ' ') /* 6 Greyscale */
587591 #define V4L2_PIX_FMT_Y10 v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */
588592 #define V4L2_PIX_FMT_Y12 v4l2_fourcc('Y', '1', '2', ' ') /* 12 Greyscale */
593+#define V4L2_PIX_FMT_Y012 v4l2_fourcc('Y', '0', '1', '2') /* 12 Greyscale */
589594 #define V4L2_PIX_FMT_Y14 v4l2_fourcc('Y', '1', '4', ' ') /* 14 Greyscale */
590595 #define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */
591596 #define V4L2_PIX_FMT_Y16_BE v4l2_fourcc_be('Y', '1', '6', ' ') /* 16 Greyscale BE */
@@ -620,6 +625,7 @@ struct v4l2_pix_format { · 28 unmodified lines
620625 #define V4L2_PIX_FMT_YUVA32 v4l2_fourcc('Y', 'U', 'V', 'A') /* 32 YUVA-8-8-8-8 */
621626 #define V4L2_PIX_FMT_YUVX32 v4l2_fourcc('Y', 'U', 'V', 'X') /* 32 YUVX-8-8-8-8 */
622627 #define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0') /* 12 YUV 4:2:0 2 lines y, 1 line uv interleaved */
628+#define V4L2_PIX_FMT_YUV48_12 v4l2_fourcc('Y', '3', '1', '2') /* 48 YUV 4:4:4 12-bit per component */
623629
624630 /*
625631 * YCbCr packed format. For each Y2xx format, xx bits of valid data occupy the MSBs
@@ -637,12 +643,14 @@ struct v4l2_pix_format { · 11 unmodified lines
637643 #define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */
638644 #define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */
639645 #define V4L2_PIX_FMT_P010 v4l2_fourcc('P', '0', '1', '0') /* 24 Y/CbCr 4:2:0 10-bit per component */
646+#define V4L2_PIX_FMT_P012 v4l2_fourcc('P', '0', '1', '2') /* 24 Y/CbCr 4:2:0 12-bit per component */
640647
641648 /* two non contiguous planes - one Y, one Cr + Cb interleaved */
642649 #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */
643650 #define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1') /* 21 Y/CrCb 4:2:0 */
644651 #define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6') /* 16 Y/CbCr 4:2:2 */
645652 #define V4L2_PIX_FMT_NV61M v4l2_fourcc('N', 'M', '6', '1') /* 16 Y/CrCb 4:2:2 */
653+#define V4L2_PIX_FMT_P012M v4l2_fourcc('P', 'M', '1', '2') /* 24 Y/CbCr 4:2:0 12-bit per component */
646654
647655 /* three planes - Y Cb, Cr */
648656 #define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9') /* 9 YUV 4:1:0 */
@@ -750,6 +758,9 @@ struct v4l2_pix_format { · 101 unmodified lines
750758 #define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H') /* Stateless FWHT (vicodec) */
751759 #define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4') /* H264 parsed slices */
752760 #define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5') /* HEVC parsed slices */
761+#define V4L2_PIX_FMT_SPK v4l2_fourcc('S', 'P', 'K', '0') /* Sorenson Spark */
762+#define V4L2_PIX_FMT_RV30 v4l2_fourcc('R', 'V', '3', '0') /* RealVideo 8 */
763+#define V4L2_PIX_FMT_RV40 v4l2_fourcc('R', 'V', '4', '0') /* RealVideo 9 & 10 */
753764
754765 /* Vendor-specific formats */
755766 #define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */
@@ -1224,8 +1235,10 @@ struct v4l2_framebuffer { · 468 unmodified lines
12241235 /* Flags for the 'capability' field. Read only */
12251236 #define V4L2_FBUF_CAP_EXTERNOVERLAY 0x0001
12261237 #define V4L2_FBUF_CAP_CHROMAKEY 0x0002
1238+#ifndef __KERNEL__
12271239 #define V4L2_FBUF_CAP_LIST_CLIPPING 0x0004
12281240 #define V4L2_FBUF_CAP_BITMAP_CLIPPING 0x0008
1241+#endif
12291242 #define V4L2_FBUF_CAP_LOCAL_ALPHA 0x0010
12301243 #define V4L2_FBUF_CAP_GLOBAL_ALPHA 0x0020
12311244 #define V4L2_FBUF_CAP_LOCAL_INV_ALPHA 0x0040
include/uapi/linux/virtio_blk.h+9−9
@@ -140,11 +140,11 @@ struct virtio_blk_config { · 139 unmodified lines
140140
141141 /* Zoned block device characteristics (if VIRTIO_BLK_F_ZONED) */
142142 struct virtio_blk_zoned_characteristics {
143− __le32 zone_sectors;
144− __le32 max_open_zones;
145− __le32 max_active_zones;
146− __le32 max_append_sectors;
147− __le32 write_granularity;
143+ __virtio32 zone_sectors;
144+ __virtio32 max_open_zones;
145+ __virtio32 max_active_zones;
146+ __virtio32 max_append_sectors;
147+ __virtio32 write_granularity;
148148 __u8 model;
149149 __u8 unused2[3];
150150 } zoned;
@@ -241,11 +241,11 @@ struct virtio_blk_outhdr { · 90 unmodified lines
241241 */
242242 struct virtio_blk_zone_descriptor {
243243 /* Zone capacity */
244− __le64 z_cap;
244+ __virtio64 z_cap;
245245 /* The starting sector of the zone */
246− __le64 z_start;
246+ __virtio64 z_start;
247247 /* Zone write pointer position in sectors */
248− __le64 z_wp;
248+ __virtio64 z_wp;
249249 /* Zone type */
250250 __u8 z_type;
251251 /* Zone state */
@@ -254,7 +254,7 @@ struct virtio_blk_zone_descriptor { · 2 unmodified lines
254254 };
255255
256256 struct virtio_blk_zone_report {
257− __le64 nr_zones;
257+ __virtio64 nr_zones;
258258 __u8 reserved[56];
259259 struct virtio_blk_zone_descriptor zones[];
260260 };
include/uapi/linux/virtio_config.h+6−0
@@ -99,6 +99,12 @@ · 98 unmodified lines
9999 */
100100 #define VIRTIO_F_SR_IOV 37
101101
102+/*
103+ * This feature indicates that the driver passes extra data (besides
104+ * identifying the virtqueue) in its device notifications.
105+ */
106+#define VIRTIO_F_NOTIFICATION_DATA 38
107+
102108 /*
103109 * This feature indicates that the driver can reset a queue individually.
104110 */
include/uapi/linux/virtio_net.h+1−0
@@ -61,6 +61,7 @@ · 60 unmodified lines
6161 #define VIRTIO_NET_F_GUEST_USO6 55 /* Guest can handle USOv6 in. */
6262 #define VIRTIO_NET_F_HOST_USO 56 /* Host can handle USO in. */
6363 #define VIRTIO_NET_F_HASH_REPORT 57 /* Supports hash report */
64+#define VIRTIO_NET_F_GUEST_HDRLEN 59 /* Guest provides the exact hdr_len value. */
6465 #define VIRTIO_NET_F_RSS 60 /* Supports RSS RX steering */
6566 #define VIRTIO_NET_F_RSC_EXT 61 /* extended coalescing info */
6667 #define VIRTIO_NET_F_STANDBY 62 /* Act as standby for another device
include/uapi/rdma/bnxt_re-abi.h+4−0
@@ -96,6 +96,10 @@ struct bnxt_re_cq_resp { · 95 unmodified lines
9696 __u32 rsvd;
9797 };
9898
99+struct bnxt_re_resize_cq_req {
100+ __aligned_u64 cq_va;
101+};
102+
99103 struct bnxt_re_qp_req {
100104 __aligned_u64 qpsva;
101105 __aligned_u64 qprva;
include/uapi/rdma/efa-abi.h+3−1
@@ -1,6 +1,6 @@
11 /* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
22 /*
3− * Copyright 2018-2022 Amazon.com, Inc. or its affiliates. All rights reserved.
3+ * Copyright 2018-2023 Amazon.com, Inc. or its affiliates. All rights reserved.
44 */
55
66 #ifndef EFA_ABI_USER_H
@@ -120,6 +120,8 @@ enum { · 113 unmodified lines
120120 EFA_QUERY_DEVICE_CAPS_RNR_RETRY = 1 << 1,
121121 EFA_QUERY_DEVICE_CAPS_CQ_NOTIFICATIONS = 1 << 2,
122122 EFA_QUERY_DEVICE_CAPS_CQ_WITH_SGID = 1 << 3,
123+ EFA_QUERY_DEVICE_CAPS_DATA_POLLING_128 = 1 << 4,
124+ EFA_QUERY_DEVICE_CAPS_RDMA_WRITE = 1 << 5,
123125 };
124126
125127 struct efa_ibv_ex_query_device_resp {
include/uapi/sound/asoc.h+3−3
@@ -222,9 +222,9 @@ struct snd_soc_tplg_vendor_array { · 221 unmodified lines
222222 __le32 type; /* SND_SOC_TPLG_TUPLE_TYPE_ */
223223 __le32 num_elems; /* number of elements in array */
224224 union {
225− struct snd_soc_tplg_vendor_uuid_elem uuid[0];
226− struct snd_soc_tplg_vendor_value_elem value[0];
227− struct snd_soc_tplg_vendor_string_elem string[0];
225+ __DECLARE_FLEX_ARRAY(struct snd_soc_tplg_vendor_uuid_elem, uuid);
226+ __DECLARE_FLEX_ARRAY(struct snd_soc_tplg_vendor_value_elem, value);
227+ __DECLARE_FLEX_ARRAY(struct snd_soc_tplg_vendor_string_elem, string);
228228 };
229229 } __attribute__((packed));
230230
include/uapi/sound/asound.h+10−4
@@ -429,9 +429,14 @@ struct snd_pcm_sw_params { · 428 unmodified lines
429429 snd_pcm_uframes_t avail_min; /* min avail frames for wakeup */
430430 snd_pcm_uframes_t xfer_align; /* obsolete: xfer size need to be a multiple */
431431 snd_pcm_uframes_t start_threshold; /* min hw_avail frames for automatic start */
432− snd_pcm_uframes_t stop_threshold; /* min avail frames for automatic stop */
433− snd_pcm_uframes_t silence_threshold; /* min distance from noise for silence filling */
434− snd_pcm_uframes_t silence_size; /* silence block size */
432+ /*
433+ * The following two thresholds alleviate playback buffer underruns; when
434+ * hw_avail drops below the threshold, the respective action is triggered:
435+ */
436+ snd_pcm_uframes_t stop_threshold; /* - stop playback */
437+ snd_pcm_uframes_t silence_threshold; /* - pre-fill buffer with silence */
438+ snd_pcm_uframes_t silence_size; /* max size of silence pre-fill; when >= boundary,
439+ * fill played area with silence immediately */
435440 snd_pcm_uframes_t boundary; /* pointers wrap point */
436441 unsigned int proto; /* protocol version */
437442 unsigned int tstamp_type; /* timestamp type (req. proto >= 2.0.12) */
@@ -570,7 +575,8 @@ struct __snd_pcm_mmap_status64 { · 132 unmodified lines
570575 struct __snd_pcm_mmap_control64 {
571576 __pad_before_uframe __pad1;
572577 snd_pcm_uframes_t appl_ptr; /* RW: appl ptr (0...boundary-1) */
573− __pad_before_uframe __pad2;
578+ __pad_before_uframe __pad2; // This should be __pad_after_uframe, but binary
579+ // backwards compatibility constraints prevent a fix.
574580
575581 __pad_before_uframe __pad3;
576582 snd_pcm_uframes_t avail_min; /* RW: min available frames for wakeup */
include/uapi/sound/emu10k1.h+96−54
@@ -15,9 +15,6 @@ · 14 unmodified lines
1515 * ---- FX8010 ----
1616 */
1717
18−#define EMU10K1_CARD_CREATIVE 0x00000000
19−#define EMU10K1_CARD_EMUAPS 0x00000001
20−
2118 #define EMU10K1_FX8010_PCM_COUNT 8
2219
2320 /*
@@ -46,6 +43,19 @@ · 22 unmodified lines
4643 #define iINTERP 0x0e /* R = A + (X * (Y - A) >> 31) ; saturation */
4744 #define iSKIP 0x0f /* R = A (cc_reg), X (count), Y (cc_test) */
4845
46+#define LOWORD_OPX_MASK 0x000ffc00 /* Instruction operand X */
47+#define LOWORD_OPY_MASK 0x000003ff /* Instruction operand Y */
48+#define HIWORD_OPCODE_MASK 0x00f00000 /* Instruction opcode */
49+#define HIWORD_RESULT_MASK 0x000ffc00 /* Instruction result */
50+#define HIWORD_OPA_MASK 0x000003ff /* Instruction operand A */
51+
52+/* Audigy Soundcards have a different instruction format */
53+#define A_LOWORD_OPX_MASK 0x007ff000
54+#define A_LOWORD_OPY_MASK 0x000007ff
55+#define A_HIWORD_OPCODE_MASK 0x0f000000
56+#define A_HIWORD_RESULT_MASK 0x007ff000
57+#define A_HIWORD_OPA_MASK 0x000007ff
58+
4959 /* GPRs */
5060 #define FXBUS(x) (0x00 + (x)) /* x = 0x00 - 0x0f */
5161 #define EXTIN(x) (0x10 + (x)) /* x = 0x00 - 0x0f */
@@ -53,6 +63,16 @@ · 1 unmodified line
5363 #define FXBUS2(x) (0x30 + (x)) /* x = 0x00 - 0x0f copies of fx buses for capture -> FXWC high 16 bits */
5464 /* NB: 0x31 and 0x32 are shared with Center/LFE on SB live 5.1 */
5565
66+#define A_FXBUS(x) (0x00 + (x)) /* x = 0x00 - 0x3f FX buses */
67+#define A_EXTIN(x) (0x40 + (x)) /* x = 0x00 - 0x0f physical ins */
68+#define A_P16VIN(x) (0x50 + (x)) /* x = 0x00 - 0x0f p16v ins (A2 only) "EMU32 inputs" */
69+#define A_EXTOUT(x) (0x60 + (x)) /* x = 0x00 - 0x1f physical outs -> A_FXWC1 0x79-7f unknown */
70+#define A_FXBUS2(x) (0x80 + (x)) /* x = 0x00 - 0x1f extra outs used for EFX capture -> A_FXWC2 */
71+#define A_EMU32OUTH(x) (0xa0 + (x)) /* x = 0x00 - 0x0f "EMU32_OUT_10 - _1F" */
72+#define A_EMU32OUTL(x) (0xb0 + (x)) /* x = 0x00 - 0x0f "EMU32_OUT_01 - _0F" */
73+#define A3_EMU32IN(x) (0x160 + (x)) /* x = 0x00 - 0x1f "EMU32_IN_00 - _1F" - Only when .device = 0x0008 */
74+#define A3_EMU32OUT(x) (0x1E0 + (x)) /* x = 0x00 - 0x1f "EMU32_OUT_00 - _1F" - Only when .device = 0x0008 */
75+
5676 #define C_00000000 0x40
5777 #define C_00000001 0x41
5878 #define C_00000002 0x42
@@ -81,12 +101,66 @@ · 22 unmodified lines
81101 #define GPR_NOISE1 0x59 /* noise source */
82102 #define GPR_IRQ 0x5a /* IRQ register */
83103 #define GPR_DBAC 0x5b /* TRAM Delay Base Address Counter */
104+
105+/* Audigy constants */
106+#define A_C_00000000 0xc0
107+#define A_C_00000001 0xc1
108+#define A_C_00000002 0xc2
109+#define A_C_00000003 0xc3
110+#define A_C_00000004 0xc4
111+#define A_C_00000008 0xc5
112+#define A_C_00000010 0xc6
113+#define A_C_00000020 0xc7
114+#define A_C_00000100 0xc8
115+#define A_C_00010000 0xc9
116+#define A_C_00000800 0xca
117+#define A_C_10000000 0xcb
118+#define A_C_20000000 0xcc
119+#define A_C_40000000 0xcd
120+#define A_C_80000000 0xce
121+#define A_C_7fffffff 0xcf
122+#define A_C_ffffffff 0xd0
123+#define A_C_fffffffe 0xd1
124+#define A_C_c0000000 0xd2
125+#define A_C_4f1bbcdc 0xd3
126+#define A_C_5a7ef9db 0xd4
127+#define A_C_00100000 0xd5
128+#define A_GPR_ACCU 0xd6 /* ACCUM, accumulator */
129+#define A_GPR_COND 0xd7 /* CCR, condition register */
130+#define A_GPR_NOISE0 0xd8 /* noise source */
131+#define A_GPR_NOISE1 0xd9 /* noise source */
132+#define A_GPR_IRQ 0xda /* IRQ register */
133+#define A_GPR_DBAC 0xdb /* TRAM Delay Base Address Counter - internal */
134+#define A_GPR_DBACE 0xde /* TRAM Delay Base Address Counter - external */
135+
136+/* Each FX general purpose register is 32 bits in length, all bits are used */
137+#define FXGPREGBASE 0x100 /* FX general purpose registers base */
138+#define A_FXGPREGBASE 0x400 /* Audigy GPRs, 0x400 to 0x5ff */
139+
140+#define A_TANKMEMCTLREGBASE 0x100 /* Tank memory control registers base - only for Audigy */
141+#define A_TANKMEMCTLREG_MASK 0x1f /* only 5 bits used - only for Audigy */
142+
143+/* Tank audio data is logarithmically compressed down to 16 bits before writing to TRAM and is */
144+/* decompressed back to 20 bits on a read. There are a total of 160 locations, the last 32 */
145+/* locations are for external TRAM. */
146+#define TANKMEMDATAREGBASE 0x200 /* Tank memory data registers base */
147+#define TANKMEMDATAREG_MASK 0x000fffff /* 20 bit tank audio data field */
148+
149+/* Combined address field and memory opcode or flag field. 160 locations, last 32 are external */
150+#define TANKMEMADDRREGBASE 0x300 /* Tank memory address registers base */
151+#define TANKMEMADDRREG_ADDR_MASK 0x000fffff /* 20 bit tank address field */
152+#define TANKMEMADDRREG_CLEAR 0x00800000 /* Clear tank memory */
153+#define TANKMEMADDRREG_ALIGN 0x00400000 /* Align read or write relative to tank access */
154+#define TANKMEMADDRREG_WRITE 0x00200000 /* Write to tank memory */
155+#define TANKMEMADDRREG_READ 0x00100000 /* Read from tank memory */
156+
84157 #define GPR(x) (FXGPREGBASE + (x)) /* free GPRs: x = 0x00 - 0xff */
85158 #define ITRAM_DATA(x) (TANKMEMDATAREGBASE + 0x00 + (x)) /* x = 0x00 - 0x7f */
86159 #define ETRAM_DATA(x) (TANKMEMDATAREGBASE + 0x80 + (x)) /* x = 0x00 - 0x1f */
87160 #define ITRAM_ADDR(x) (TANKMEMADDRREGBASE + 0x00 + (x)) /* x = 0x00 - 0x7f */
88161 #define ETRAM_ADDR(x) (TANKMEMADDRREGBASE + 0x80 + (x)) /* x = 0x00 - 0x1f */
89162
163+#define A_GPR(x) (A_FXGPREGBASE + (x))
90164 #define A_ITRAM_DATA(x) (TANKMEMDATAREGBASE + 0x00 + (x)) /* x = 0x00 - 0xbf */
91165 #define A_ETRAM_DATA(x) (TANKMEMDATAREGBASE + 0xc0 + (x)) /* x = 0x00 - 0x3f */
92166 #define A_ITRAM_ADDR(x) (TANKMEMADDRREGBASE + 0x00 + (x)) /* x = 0x00 - 0xbf */
@@ -94,17 +168,6 @@ · 1 unmodified line
94168 #define A_ITRAM_CTL(x) (A_TANKMEMCTLREGBASE + 0x00 + (x)) /* x = 0x00 - 0xbf */
95169 #define A_ETRAM_CTL(x) (A_TANKMEMCTLREGBASE + 0xc0 + (x)) /* x = 0x00 - 0x3f */
96170
97−#define A_FXBUS(x) (0x00 + (x)) /* x = 0x00 - 0x3f FX buses */
98−#define A_EXTIN(x) (0x40 + (x)) /* x = 0x00 - 0x0f physical ins */
99−#define A_P16VIN(x) (0x50 + (x)) /* x = 0x00 - 0x0f p16v ins (A2 only) "EMU32 inputs" */
100−#define A_EXTOUT(x) (0x60 + (x)) /* x = 0x00 - 0x1f physical outs -> A_FXWC1 0x79-7f unknown */
101−#define A_FXBUS2(x) (0x80 + (x)) /* x = 0x00 - 0x1f extra outs used for EFX capture -> A_FXWC2 */
102−#define A_EMU32OUTH(x) (0xa0 + (x)) /* x = 0x00 - 0x0f "EMU32_OUT_10 - _1F" - ??? */
103−#define A_EMU32OUTL(x) (0xb0 + (x)) /* x = 0x00 - 0x0f "EMU32_OUT_1 - _F" - ??? */
104−#define A3_EMU32IN(x) (0x160 + (x)) /* x = 0x00 - 0x3f "EMU32_IN_00 - _3F" - Only when .device = 0x0008 */
105−#define A3_EMU32OUT(x) (0x1E0 + (x)) /* x = 0x00 - 0x0f "EMU32_OUT_00 - _3F" - Only when .device = 0x0008 */
106−#define A_GPR(x) (A_FXGPREGBASE + (x))
107−
108171 /* cc_reg constants */
109172 #define CC_REG_NORMALIZED C_00000001
110173 #define CC_REG_BORROW C_00000002
@@ -113,7 +176,17 @@ · 2 unmodified lines
113176 #define CC_REG_SATURATE C_00000010
114177 #define CC_REG_NONZERO C_00000100
115178
179+#define A_CC_REG_NORMALIZED A_C_00000001
180+#define A_CC_REG_BORROW A_C_00000002
181+#define A_CC_REG_MINUS A_C_00000004
182+#define A_CC_REG_ZERO A_C_00000008
183+#define A_CC_REG_SATURATE A_C_00000010
184+#define A_CC_REG_NONZERO A_C_00000100
185+
116186 /* FX buses */
187+// These are arbitrary mappings; our DSP code simply expects
188+// the config files to route the channels this way.
189+// The numbers are documented in {audigy,sb-live}-mixer.rst.
117190 #define FXBUS_PCM_LEFT 0x00
118191 #define FXBUS_PCM_RIGHT 0x01
119192 #define FXBUS_PCM_LEFT_REAR 0x02
@@ -203,38 +276,7 @@ · 83 unmodified lines
203276 #define A_EXTOUT_ADC_CAP_R 0x17 /* right */
204277 #define A_EXTOUT_MIC_CAP 0x18 /* Mic capture buffer */
205278
206−/* Audigy constants */
207−#define A_C_00000000 0xc0
208−#define A_C_00000001 0xc1
209−#define A_C_00000002 0xc2
210−#define A_C_00000003 0xc3
211−#define A_C_00000004 0xc4
212−#define A_C_00000008 0xc5
213−#define A_C_00000010 0xc6
214−#define A_C_00000020 0xc7
215−#define A_C_00000100 0xc8
216−#define A_C_00010000 0xc9
217−#define A_C_00000800 0xca
218−#define A_C_10000000 0xcb
219−#define A_C_20000000 0xcc
220−#define A_C_40000000 0xcd
221−#define A_C_80000000 0xce
222−#define A_C_7fffffff 0xcf
223−#define A_C_ffffffff 0xd0
224−#define A_C_fffffffe 0xd1
225−#define A_C_c0000000 0xd2
226−#define A_C_4f1bbcdc 0xd3
227−#define A_C_5a7ef9db 0xd4
228−#define A_C_00100000 0xd5
229−#define A_GPR_ACCU 0xd6 /* ACCUM, accumulator */
230−#define A_GPR_COND 0xd7 /* CCR, condition register */
231−#define A_GPR_NOISE0 0xd8 /* noise source */
232−#define A_GPR_NOISE1 0xd9 /* noise source */
233−#define A_GPR_IRQ 0xda /* IRQ register */
234−#define A_GPR_DBAC 0xdb /* TRAM Delay Base Address Counter - internal */
235−#define A_GPR_DBACE 0xde /* TRAM Delay Base Address Counter - external */
236−
237−/* definitions for debug register */
279+/* Definitions for debug register. Note that these are for emu10k1 ONLY. */
238280 #define EMU10K1_DBG_ZC 0x80000000 /* zero tram counter */
239281 #define EMU10K1_DBG_SATURATION_OCCURED 0x02000000 /* saturation control */
240282 #define EMU10K1_DBG_SATURATION_ADDR 0x01ff0000 /* saturation address */
@@ -243,14 +285,14 @@ · 2 unmodified lines
243285 #define EMU10K1_DBG_CONDITION_CODE 0x00003e00 /* condition code */
244286 #define EMU10K1_DBG_SINGLE_STEP_ADDR 0x000001ff /* single step address */
245287
246−/* tank memory address line */
247−#ifndef __KERNEL__
248−#define TANKMEMADDRREG_ADDR_MASK 0x000fffff /* 20 bit tank address field */
249−#define TANKMEMADDRREG_CLEAR 0x00800000 /* Clear tank memory */
250−#define TANKMEMADDRREG_ALIGN 0x00400000 /* Align read or write relative to tank access */
251−#define TANKMEMADDRREG_WRITE 0x00200000 /* Write to tank memory */
252−#define TANKMEMADDRREG_READ 0x00100000 /* Read from tank memory */
253−#endif
288+/* Definitions for emu10k2 debug register. */
289+#define A_DBG_ZC 0x40000000 /* zero tram counter */
290+#define A_DBG_SATURATION_OCCURED 0x20000000
291+#define A_DBG_SATURATION_ADDR 0x0ffc0000
292+#define A_DBG_SINGLE_STEP 0x00020000 /* Set to zero to start dsp */
293+#define A_DBG_STEP 0x00010000
294+#define A_DBG_CONDITION_CODE 0x0000f800
295+#define A_DBG_STEP_ADDR 0x000003ff
254296
255297 struct snd_emu10k1_fx8010_info {
256298 unsigned int internal_tram_size; /* in samples */
include/uapi/sound/sof/abi.h+2−0
@@ -60,5 +60,7 @@ · 59 unmodified lines
6060
6161 /* SOF ABI magic number "SOF\0". */
6262 #define SOF_ABI_MAGIC 0x00464F53
63+/* SOF IPC4 ABI magic number "SOF4". */
64+#define SOF_IPC4_ABI_MAGIC 0x34464F53
6365
6466 #endif
include/uapi/sound/sof/header.h+19−8
@@ -11,19 +11,30 @@ · 10 unmodified lines
1111
1212 #include <linux/types.h>
1313
14−/*
15− * Header for all non IPC ABI data.
14+/**
15+ * struct sof_abi_hdr - Header for all non IPC ABI data.
16+ * @magic: Magic number for validation
17+ * for IPC3 data: 0x00464F53 ('S', 'O', 'F', '\0')
18+ * for IPC4 data: 0x34464F53 ('S', 'O', 'F', '4')
19+ * @type: module specific parameter
20+ * for IPC3: Component specific type
21+ * for IPC4: parameter ID (param_id) of the data
22+ * @size: The size in bytes of the data, excluding this struct
23+ * @abi: SOF ABI version. The version is valid in scope of the 'magic', IPC3 and
24+ * IPC4 ABI version numbers have no relationship.
25+ * @reserved: Reserved for future use
26+ * @data: Component data - opaque to core
1627 *
1728 * Identifies data type, size and ABI.
1829 * Used by any bespoke component data structures or binary blobs.
1930 */
2031 struct sof_abi_hdr {
21− __u32 magic; /**< 'S', 'O', 'F', '\0' */
22− __u32 type; /**< component specific type */
23− __u32 size; /**< size in bytes of data excl. this struct */
24− __u32 abi; /**< SOF ABI version */
25− __u32 reserved[4]; /**< reserved for future use */
26− __u32 data[]; /**< Component data - opaque to core */
32+ __u32 magic;
33+ __u32 type;
34+ __u32 size;
35+ __u32 abi;
36+ __u32 reserved[4];
37+ __u32 data[];
2738 } __packed;
2839
2940 #define SOF_MANIFEST_DATA_TYPE_NHLT 1
include/uapi/sound/sof/tokens.h+13−8
@@ -54,6 +54,7 @@ · 53 unmodified lines
5454 #define SOF_TKN_SCHED_DYNAMIC_PIPELINE 206
5555 #define SOF_TKN_SCHED_LP_MODE 207
5656 #define SOF_TKN_SCHED_MEM_USAGE 208
57+#define SOF_TKN_SCHED_USE_CHAIN_DMA 209
5758
5859 /* volume */
5960 #define SOF_TKN_VOLUME_RAMP_STEP_TYPE 250
@@ -88,14 +89,16 @@ · 28 unmodified lines
8889 #define SOF_TKN_COMP_CPC 406
8990 #define SOF_TKN_COMP_IS_PAGES 409
9091 #define SOF_TKN_COMP_NUM_AUDIO_FORMATS 410
91−#define SOF_TKN_COMP_NUM_SINK_PINS 411
92−#define SOF_TKN_COMP_NUM_SOURCE_PINS 412
92+#define SOF_TKN_COMP_NUM_INPUT_PINS 411
93+#define SOF_TKN_COMP_NUM_OUTPUT_PINS 412
9394 /*
94− * The token for sink/source pin binding, it specifies the widget
95− * name that the sink/source pin is connected from/to.
95+ * The token for input/output pin binding, it specifies the widget
96+ * name that the input/output pin is connected from/to.
9697 */
97−#define SOF_TKN_COMP_SINK_PIN_BINDING_WNAME 413
98−#define SOF_TKN_COMP_SRC_PIN_BINDING_WNAME 414
98+#define SOF_TKN_COMP_INPUT_PIN_BINDING_WNAME 413
99+#define SOF_TKN_COMP_OUTPUT_PIN_BINDING_WNAME 414
100+#define SOF_TKN_COMP_NUM_INPUT_AUDIO_FORMATS 415
101+#define SOF_TKN_COMP_NUM_OUTPUT_AUDIO_FORMATS 416
99102
100103
101104 /* SSP */
@@ -173,17 +176,18 @@ · 71 unmodified lines
173176 /* CAVS AUDIO FORMAT */
174177 #define SOF_TKN_CAVS_AUDIO_FORMAT_IN_RATE 1900
175178 #define SOF_TKN_CAVS_AUDIO_FORMAT_IN_BIT_DEPTH 1901
176−#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_VALID_BIT 1902
179+#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_VALID_BIT_DEPTH 1902
177180 #define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CHANNELS 1903
178181 #define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CH_MAP 1904
179182 #define SOF_TKN_CAVS_AUDIO_FORMAT_IN_CH_CFG 1905
180183 #define SOF_TKN_CAVS_AUDIO_FORMAT_IN_INTERLEAVING_STYLE 1906
181184 #define SOF_TKN_CAVS_AUDIO_FORMAT_IN_FMT_CFG 1907
182185 #define SOF_TKN_CAVS_AUDIO_FORMAT_IN_SAMPLE_TYPE 1908
186+#define SOF_TKN_CAVS_AUDIO_FORMAT_PIN_INDEX 1909
183187 /* intentional token numbering discontinuity, reserved for future use */
184188 #define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_RATE 1930
185189 #define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_BIT_DEPTH 1931
186−#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_VALID_BIT 1932
190+#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_VALID_BIT_DEPTH 1932
187191 #define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CHANNELS 1933
188192 #define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CH_MAP 1934
189193 #define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_CH_CFG 1935
@@ -197,6 +201,7 @@ · 7 unmodified lines
197201
198202 /* COPIER */
199203 #define SOF_TKN_INTEL_COPIER_NODE_TYPE 1980
204+#define SOF_TKN_INTEL_COPIER_DEEP_BUFFER_DMA_MS 1981
200205
201206 /* ACP I2S */
202207 #define SOF_TKN_AMD_ACPI2S_RATE 1700

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