History

Merge drm/drm-next into drm-misc-next

Updating drm-misc-next to the state of v6.18-rc1.

Thomas Zimmermann committed 1 year ago

Commit 9b966ae2 parents 5385871 3a8660811830 files · +517196 −301965Browse files

Showing the changes to include/uapi (62 of 11830 files). Show all

Unified · Split

62 files
  1. include/uapi/drm/amdgpu_drm.h +11 −6
  2. include/uapi/linux/android/binder.h +1 −1
  3. include/uapi/linux/android/binder_netlink.h +37 −0
  4. include/uapi/linux/aspeed-video.h +7 −0
  5. include/uapi/linux/audit.h +2 −0
  6. include/uapi/linux/bpf.h +23 −1
  7. include/uapi/linux/can/netlink.h +7 −7
  8. include/uapi/linux/devlink.h +2 −0
  9. include/uapi/linux/dpll.h +1 −0
  10. include/uapi/linux/ethtool.h +1 −0
  11. include/uapi/linux/ethtool_netlink_generated.h +12 −0
  12. include/uapi/linux/ext4.h +53 −0
  13. include/uapi/linux/fcntl.h +1 −0
  14. include/uapi/linux/fs.h +4 −1
  15. include/uapi/linux/fuse.h +20 −2
  16. include/uapi/linux/hidraw.h +2 −0
  17. include/uapi/linux/i8k.h +2 −0
  18. include/uapi/linux/if_bridge.h +3 −0
  19. include/uapi/linux/if_link.h +3 −0
  20. include/uapi/linux/iio/types.h +5 −0
  21. include/uapi/linux/input-event-codes.h +1 −0
  22. include/uapi/linux/input.h +21 −1
  23. include/uapi/linux/io_uring.h +38 −2
  24. include/uapi/linux/io_uring/query.h +41 −0
  25. include/uapi/linux/ivtv.h +1 −1
  26. include/uapi/linux/kexec.h +4 −0
  27. include/uapi/linux/kfd_ioctl.h +2 −2
  28. include/uapi/linux/kvm.h +2 −0
  29. include/uapi/linux/mempolicy.h +9 −3
  30. include/uapi/linux/mptcp.h +18 −6
  31. include/uapi/linux/mptcp_pm.h +2 −2
  32. include/uapi/linux/netfilter/nf_tables.h +2 −0
  33. include/uapi/linux/nl80211.h +250 −5
  34. include/uapi/linux/nsfs.h +16 −2
  35. include/uapi/linux/pci_regs.h +10 −0
  36. include/uapi/linux/prctl.h +10 −0
  37. include/uapi/linux/psp-sev.h +9 −1
  38. include/uapi/linux/psp-sfs.h +87 −0
  39. include/uapi/linux/psp.h +66 −0
  40. include/uapi/linux/ptp_clock.h +7 −0
  41. include/uapi/linux/stddef.h +2 −0
  42. include/uapi/linux/tcp.h +9 −0
  43. include/uapi/linux/tee.h +79 −8
  44. include/uapi/linux/v4l2-controls.h +60 −61
  45. include/uapi/linux/v4l2-dv-timings.h +1 −1
  46. include/uapi/linux/vduse.h +1 −1
  47. include/uapi/linux/videodev2.h +10 −10
  48. include/uapi/linux/virtio_ids.h +1 −0
  49. include/uapi/linux/virtio_spi.h +181 −0
  50. include/uapi/misc/fastrpc.h +1 −1
  51. include/uapi/misc/uacce/hisi_qm.h +1 −0
  52. include/uapi/rdma/ib_user_ioctl_verbs.h +1 −0
  53. include/uapi/rdma/ib_user_sa.h +14 −0
  54. include/uapi/rdma/ionic-abi.h +115 −0
  55. include/uapi/rdma/irdma-abi.h +15 −1
  56. include/uapi/rdma/rdma_user_cm.h +40 −2
  57. include/uapi/scsi/fc/fc_els.h +39 −19
  58. include/uapi/sound/compress_offload.h +33 −2
  59. include/uapi/sound/compress_params.h +40 −1
  60. include/uapi/sound/intel/avs/tokens.h +15 −0
  61. include/uapi/sound/snd_ar_tokens.h +18 −2
  62. include/uapi/sound/sof/tokens.h +2 −0
include/uapi/drm/amdgpu_drm.h+11−6
@@ -105,6 +105,8 @@ extern "C" { · 104 unmodified lines
105105 *
106106 * %AMDGPU_GEM_DOMAIN_DOORBELL Doorbell. It is an MMIO region for
107107 * signalling user mode queues.
108+ *
109+ * %AMDGPU_GEM_DOMAIN_MMIO_REMAP MMIO remap page (special mapping for HDP flushing).
108110 */
109111 #define AMDGPU_GEM_DOMAIN_CPU 0x1
110112 #define AMDGPU_GEM_DOMAIN_GTT 0x2
@@ -113,13 +115,15 @@ extern "C" { · 2 unmodified lines
113115 #define AMDGPU_GEM_DOMAIN_GWS 0x10
114116 #define AMDGPU_GEM_DOMAIN_OA 0x20
115117 #define AMDGPU_GEM_DOMAIN_DOORBELL 0x40
118+#define AMDGPU_GEM_DOMAIN_MMIO_REMAP 0x80
116119 #define AMDGPU_GEM_DOMAIN_MASK (AMDGPU_GEM_DOMAIN_CPU | \
117120 AMDGPU_GEM_DOMAIN_GTT | \
118121 AMDGPU_GEM_DOMAIN_VRAM | \
119122 AMDGPU_GEM_DOMAIN_GDS | \
120123 AMDGPU_GEM_DOMAIN_GWS | \
121− AMDGPU_GEM_DOMAIN_OA | \
122− AMDGPU_GEM_DOMAIN_DOORBELL)
124+ AMDGPU_GEM_DOMAIN_OA | \
125+ AMDGPU_GEM_DOMAIN_DOORBELL | \
126+ AMDGPU_GEM_DOMAIN_MMIO_REMAP)
123127
124128 /* Flag that CPU access will be required for the case of VRAM domain */
125129 #define AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED (1 << 0)
@@ -1084,10 +1088,11 @@ struct drm_amdgpu_cs_chunk_cp_gfx_shadow { · 958 unmodified lines
10841088 * Query h/w info: Flag that this is integrated (a.h.a. fusion) GPU
10851089 *
10861090 */
1087−#define AMDGPU_IDS_FLAGS_FUSION 0x1
1088−#define AMDGPU_IDS_FLAGS_PREEMPTION 0x2
1089−#define AMDGPU_IDS_FLAGS_TMZ 0x4
1090−#define AMDGPU_IDS_FLAGS_CONFORMANT_TRUNC_COORD 0x8
1091+#define AMDGPU_IDS_FLAGS_FUSION 0x01
1092+#define AMDGPU_IDS_FLAGS_PREEMPTION 0x02
1093+#define AMDGPU_IDS_FLAGS_TMZ 0x04
1094+#define AMDGPU_IDS_FLAGS_CONFORMANT_TRUNC_COORD 0x08
1095+#define AMDGPU_IDS_FLAGS_GANG_SUBMIT 0x10
10911096
10921097 /*
10931098 * Query h/w info: Flag identifying VF/PF/PT mode
include/uapi/linux/android/binder.h+1−1
@@ -38,7 +38,7 @@ enum { · 37 unmodified lines
3838 BINDER_TYPE_PTR = B_PACK_CHARS('p', 't', '*', B_TYPE_LARGE),
3939 };
4040
41−enum {
41+enum flat_binder_object_flags {
4242 FLAT_BINDER_FLAG_PRIORITY_MASK = 0xff,
4343 FLAT_BINDER_FLAG_ACCEPTS_FDS = 0x100,
4444
include/uapi/linux/android/binder_netlink.h+37−0
@@ -0,0 +1,37 @@
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/binder.yaml */
4+/* YNL-GEN uapi header */
5+
6+#ifndef _UAPI_LINUX_ANDROID_BINDER_NETLINK_H
7+#define _UAPI_LINUX_ANDROID_BINDER_NETLINK_H
8+
9+#define BINDER_FAMILY_NAME "binder"
10+#define BINDER_FAMILY_VERSION 1
11+
12+enum {
13+ BINDER_A_REPORT_ERROR = 1,
14+ BINDER_A_REPORT_CONTEXT,
15+ BINDER_A_REPORT_FROM_PID,
16+ BINDER_A_REPORT_FROM_TID,
17+ BINDER_A_REPORT_TO_PID,
18+ BINDER_A_REPORT_TO_TID,
19+ BINDER_A_REPORT_IS_REPLY,
20+ BINDER_A_REPORT_FLAGS,
21+ BINDER_A_REPORT_CODE,
22+ BINDER_A_REPORT_DATA_SIZE,
23+
24+ __BINDER_A_REPORT_MAX,
25+ BINDER_A_REPORT_MAX = (__BINDER_A_REPORT_MAX - 1)
26+};
27+
28+enum {
29+ BINDER_CMD_REPORT = 1,
30+
31+ __BINDER_CMD_MAX,
32+ BINDER_CMD_MAX = (__BINDER_CMD_MAX - 1)
33+};
34+
35+#define BINDER_MCGRP_REPORT "report"
36+
37+#endif /* _UAPI_LINUX_ANDROID_BINDER_NETLINK_H */
include/uapi/linux/aspeed-video.h+7−0
@@ -8,6 +8,13 @@ · 7 unmodified lines
88
99 #include <linux/v4l2-controls.h>
1010
11+/* aspeed video's input types */
12+enum aspeed_video_input {
13+ VIDEO_INPUT_VGA = 0,
14+ VIDEO_INPUT_GFX,
15+ VIDEO_INPUT_MAX
16+};
17+
1118 #define V4L2_CID_ASPEED_HQ_MODE (V4L2_CID_USER_ASPEED_BASE + 1)
1219 #define V4L2_CID_ASPEED_HQ_JPEG_QUALITY (V4L2_CID_USER_ASPEED_BASE + 2)
1320
include/uapi/linux/audit.h+2−0
@@ -148,6 +148,8 @@ · 147 unmodified lines
148148 #define AUDIT_IPE_POLICY_LOAD 1422 /* IPE policy load */
149149 #define AUDIT_LANDLOCK_ACCESS 1423 /* Landlock denial */
150150 #define AUDIT_LANDLOCK_DOMAIN 1424 /* Landlock domain status */
151+#define AUDIT_MAC_TASK_CONTEXTS 1425 /* Multiple LSM task contexts */
152+#define AUDIT_MAC_OBJ_CONTEXTS 1426 /* Multiple LSM objext contexts */
151153
152154 #define AUDIT_FIRST_KERN_ANOM_MSG 1700
153155 #define AUDIT_LAST_KERN_ANOM_MSG 1799
include/uapi/linux/bpf.h+23−1
@@ -1522,6 +1522,12 @@ union bpf_attr { · 1521 unmodified lines
15221522 * If provided, map_flags should have BPF_F_TOKEN_FD flag set.
15231523 */
15241524 __s32 map_token_fd;
1525+
1526+ /* Hash of the program that has exclusive access to the map.
1527+ */
1528+ __aligned_u64 excl_prog_hash;
1529+ /* Size of the passed excl_prog_hash. */
1530+ __u32 excl_prog_hash_size;
15251531 };
15261532
15271533 struct { /* anonymous struct used by BPF_MAP_*_ELEM and BPF_MAP_FREEZE commands */
@@ -1605,6 +1611,16 @@ union bpf_attr { · 77 unmodified lines
16051611 * continuous.
16061612 */
16071613 __u32 fd_array_cnt;
1614+ /* Pointer to a buffer containing the signature of the BPF
1615+ * program.
1616+ */
1617+ __aligned_u64 signature;
1618+ /* Size of the signature buffer in bytes. */
1619+ __u32 signature_size;
1620+ /* ID of the kernel keyring to be used for signature
1621+ * verification.
1622+ */
1623+ __s32 keyring_id;
16081624 };
16091625
16101626 struct { /* anonymous struct used by BPF_OBJ_* commands */
@@ -4875,7 +4891,7 @@ union bpf_attr { · 3264 unmodified lines
48754891 *
48764892 * **-ENOENT** if the bpf_local_storage cannot be found.
48774893 *
4878− * long bpf_d_path(struct path *path, char *buf, u32 sz)
4894+ * long bpf_d_path(const struct path *path, char *buf, u32 sz)
48794895 * Description
48804896 * Return full path for given **struct path** object, which
48814897 * needs to be the kernel BTF *path* object. The path is
@@ -6666,6 +6682,8 @@ struct bpf_map_info { · 1784 unmodified lines
66666682 __u32 btf_value_type_id;
66676683 __u32 btf_vmlinux_id;
66686684 __u64 map_extra;
6685+ __aligned_u64 hash;
6686+ __u32 hash_size;
66696687 } __attribute__((aligned(8)));
66706688
66716689 struct bpf_btf_info {
@@ -7418,6 +7436,10 @@ struct bpf_timer { · 746 unmodified lines
74187436 __u64 __opaque[2];
74197437 } __attribute__((aligned(8)));
74207438
7439+struct bpf_task_work {
7440+ __u64 __opaque;
7441+} __attribute__((aligned(8)));
7442+
74217443 struct bpf_wq {
74227444 __u64 __opaque[2];
74237445 } __attribute__((aligned(8)));
include/uapi/linux/can/netlink.h+7−7
@@ -101,8 +101,8 @@ struct can_ctrlmode { · 100 unmodified lines
101101 #define CAN_CTRLMODE_PRESUME_ACK 0x40 /* Ignore missing CAN ACKs */
102102 #define CAN_CTRLMODE_FD_NON_ISO 0x80 /* CAN FD in non-ISO mode */
103103 #define CAN_CTRLMODE_CC_LEN8_DLC 0x100 /* Classic CAN DLC option */
104−#define CAN_CTRLMODE_TDC_AUTO 0x200 /* CAN transiver automatically calculates TDCV */
105−#define CAN_CTRLMODE_TDC_MANUAL 0x400 /* TDCV is manually set up by user */
104+#define CAN_CTRLMODE_TDC_AUTO 0x200 /* FD transceiver automatically calculates TDCV */
105+#define CAN_CTRLMODE_TDC_MANUAL 0x400 /* FD TDCV is manually set up by user */
106106
107107 /*
108108 * CAN device statistics
@@ -129,14 +129,14 @@ enum { · 20 unmodified lines
129129 IFLA_CAN_RESTART_MS,
130130 IFLA_CAN_RESTART,
131131 IFLA_CAN_BERR_COUNTER,
132− IFLA_CAN_DATA_BITTIMING,
133− IFLA_CAN_DATA_BITTIMING_CONST,
132+ IFLA_CAN_DATA_BITTIMING, /* FD */
133+ IFLA_CAN_DATA_BITTIMING_CONST, /* FD */
134134 IFLA_CAN_TERMINATION,
135135 IFLA_CAN_TERMINATION_CONST,
136136 IFLA_CAN_BITRATE_CONST,
137− IFLA_CAN_DATA_BITRATE_CONST,
137+ IFLA_CAN_DATA_BITRATE_CONST, /* FD */
138138 IFLA_CAN_BITRATE_MAX,
139− IFLA_CAN_TDC,
139+ IFLA_CAN_TDC, /* FD */
140140 IFLA_CAN_CTRLMODE_EXT,
141141
142142 /* add new constants above here */
@@ -145,7 +145,7 @@ enum { · 2 unmodified lines
145145 };
146146
147147 /*
148− * CAN FD Transmitter Delay Compensation (TDC)
148+ * CAN FD/XL Transmitter Delay Compensation (TDC)
149149 *
150150 * Please refer to struct can_tdc_const and can_tdc in
151151 * include/linux/can/bittiming.h for further details.
include/uapi/linux/devlink.h+2−0
@@ -636,6 +636,8 @@ enum devlink_attr { · 635 unmodified lines
636636
637637 DEVLINK_ATTR_RATE_TC_BWS, /* nested */
638638
639+ DEVLINK_ATTR_HEALTH_REPORTER_BURST_PERIOD, /* u64 */
640+
639641 /* Add new attributes above here, update the spec in
640642 * Documentation/netlink/specs/devlink.yaml and re-generate
641643 * net/devlink/netlink_gen.c.
include/uapi/linux/dpll.h+1−0
@@ -216,6 +216,7 @@ enum dpll_a { · 215 unmodified lines
216216 DPLL_A_LOCK_STATUS_ERROR,
217217 DPLL_A_CLOCK_QUALITY_LEVEL,
218218 DPLL_A_PHASE_OFFSET_MONITOR,
219+ DPLL_A_PHASE_OFFSET_AVG_FACTOR,
219220
220221 __DPLL_A_MAX,
221222 DPLL_A_MAX = (__DPLL_A_MAX - 1)
include/uapi/linux/ethtool.h+1−0
@@ -2380,6 +2380,7 @@ enum { · 2379 unmodified lines
23802380 #define RXH_L4_B_0_1 (1 << 6) /* src port in case of TCP/UDP/SCTP */
23812381 #define RXH_L4_B_2_3 (1 << 7) /* dst port in case of TCP/UDP/SCTP */
23822382 #define RXH_GTP_TEID (1 << 8) /* teid in case of GTP */
2383+#define RXH_IP6_FL (1 << 9) /* IPv6 flow label */
23832384 #define RXH_DISCARD (1 << 31)
23842385
23852386 #define RX_CLS_FLOW_DISC 0xffffffffffffffffULL
include/uapi/linux/ethtool_netlink_generated.h+12−0
@@ -561,12 +561,24 @@ enum { · 560 unmodified lines
561561 ETHTOOL_A_TUNNEL_INFO_MAX = (__ETHTOOL_A_TUNNEL_INFO_CNT - 1)
562562 };
563563
564+enum {
565+ ETHTOOL_A_FEC_HIST_PAD = 1,
566+ ETHTOOL_A_FEC_HIST_BIN_LOW,
567+ ETHTOOL_A_FEC_HIST_BIN_HIGH,
568+ ETHTOOL_A_FEC_HIST_BIN_VAL,
569+ ETHTOOL_A_FEC_HIST_BIN_VAL_PER_LANE,
570+
571+ __ETHTOOL_A_FEC_HIST_CNT,
572+ ETHTOOL_A_FEC_HIST_MAX = (__ETHTOOL_A_FEC_HIST_CNT - 1)
573+};
574+
564575 enum {
565576 ETHTOOL_A_FEC_STAT_UNSPEC,
566577 ETHTOOL_A_FEC_STAT_PAD,
567578 ETHTOOL_A_FEC_STAT_CORRECTED,
568579 ETHTOOL_A_FEC_STAT_UNCORR,
569580 ETHTOOL_A_FEC_STAT_CORR_BITS,
581+ ETHTOOL_A_FEC_STAT_HIST,
570582
571583 __ETHTOOL_A_FEC_STAT_CNT,
572584 ETHTOOL_A_FEC_STAT_MAX = (__ETHTOOL_A_FEC_STAT_CNT - 1)
include/uapi/linux/ext4.h+53−0
@@ -33,6 +33,8 @@ · 32 unmodified lines
3333 #define EXT4_IOC_CHECKPOINT _IOW('f', 43, __u32)
3434 #define EXT4_IOC_GETFSUUID _IOR('f', 44, struct fsuuid)
3535 #define EXT4_IOC_SETFSUUID _IOW('f', 44, struct fsuuid)
36+#define EXT4_IOC_GET_TUNE_SB_PARAM _IOR('f', 45, struct ext4_tune_sb_params)
37+#define EXT4_IOC_SET_TUNE_SB_PARAM _IOW('f', 46, struct ext4_tune_sb_params)
3638
3739 #define EXT4_IOC_SHUTDOWN _IOR('X', 125, __u32)
3840
@@ -108,6 +110,57 @@ struct ext4_new_group_input { · 69 unmodified lines
108110 __u16 unused;
109111 };
110112
113+struct ext4_tune_sb_params {
114+ __u32 set_flags;
115+ __u32 checkinterval;
116+ __u16 errors_behavior;
117+ __u16 mnt_count;
118+ __u16 max_mnt_count;
119+ __u16 raid_stride;
120+ __u64 last_check_time;
121+ __u64 reserved_blocks;
122+ __u64 blocks_count;
123+ __u32 default_mnt_opts;
124+ __u32 reserved_uid;
125+ __u32 reserved_gid;
126+ __u32 raid_stripe_width;
127+ __u16 encoding;
128+ __u16 encoding_flags;
129+ __u8 def_hash_alg;
130+ __u8 pad_1;
131+ __u16 pad_2;
132+ __u32 feature_compat;
133+ __u32 feature_incompat;
134+ __u32 feature_ro_compat;
135+ __u32 set_feature_compat_mask;
136+ __u32 set_feature_incompat_mask;
137+ __u32 set_feature_ro_compat_mask;
138+ __u32 clear_feature_compat_mask;
139+ __u32 clear_feature_incompat_mask;
140+ __u32 clear_feature_ro_compat_mask;
141+ __u8 mount_opts[64];
142+ __u8 pad[64];
143+};
144+
145+#define EXT4_TUNE_FL_ERRORS_BEHAVIOR 0x00000001
146+#define EXT4_TUNE_FL_MNT_COUNT 0x00000002
147+#define EXT4_TUNE_FL_MAX_MNT_COUNT 0x00000004
148+#define EXT4_TUNE_FL_CHECKINTRVAL 0x00000008
149+#define EXT4_TUNE_FL_LAST_CHECK_TIME 0x00000010
150+#define EXT4_TUNE_FL_RESERVED_BLOCKS 0x00000020
151+#define EXT4_TUNE_FL_RESERVED_UID 0x00000040
152+#define EXT4_TUNE_FL_RESERVED_GID 0x00000080
153+#define EXT4_TUNE_FL_DEFAULT_MNT_OPTS 0x00000100
154+#define EXT4_TUNE_FL_DEF_HASH_ALG 0x00000200
155+#define EXT4_TUNE_FL_RAID_STRIDE 0x00000400
156+#define EXT4_TUNE_FL_RAID_STRIPE_WIDTH 0x00000800
157+#define EXT4_TUNE_FL_MOUNT_OPTS 0x00001000
158+#define EXT4_TUNE_FL_FEATURES 0x00002000
159+#define EXT4_TUNE_FL_EDIT_FEATURES 0x00004000
160+#define EXT4_TUNE_FL_FORCE_FSCK 0x00008000
161+#define EXT4_TUNE_FL_ENCODING 0x00010000
162+#define EXT4_TUNE_FL_ENCODING_FLAGS 0x00020000
163+
111164 /*
112165 * Returned by EXT4_IOC_GET_ES_CACHE as an additional possible flag.
113166 * It indicates that the entry in extent status cache is for a hole.
include/uapi/linux/fcntl.h+1−0
@@ -111,6 +111,7 @@ · 110 unmodified lines
111111 #define PIDFD_SELF_THREAD_GROUP -10001 /* Current thread group leader. */
112112
113113 #define FD_PIDFS_ROOT -10002 /* Root of the pidfs filesystem */
114+#define FD_NSFS_ROOT -10003 /* Root of the nsfs filesystem */
114115 #define FD_INVALID -10009 /* Invalid file descriptor: -10000 - EBADF = -10009 */
115116
116117 /* Generic flags for the *at(2) family of syscalls. */
include/uapi/linux/fs.h+4−1
@@ -430,10 +430,13 @@ typedef int __bitwise __kernel_rwf_t; · 429 unmodified lines
430430 /* buffered IO that drops the cache after reading or writing data */
431431 #define RWF_DONTCACHE ((__force __kernel_rwf_t)0x00000080)
432432
433+/* prevent pipe and socket writes from raising SIGPIPE */
434+#define RWF_NOSIGNAL ((__force __kernel_rwf_t)0x00000100)
435+
433436 /* mask of flags supported by the kernel */
434437 #define RWF_SUPPORTED (RWF_HIPRI | RWF_DSYNC | RWF_SYNC | RWF_NOWAIT |\
435438 RWF_APPEND | RWF_NOAPPEND | RWF_ATOMIC |\
436− RWF_DONTCACHE)
439+ RWF_DONTCACHE | RWF_NOSIGNAL)
437440
438441 #define PROCFS_IOCTL_MAGIC 'f'
439442
include/uapi/linux/fuse.h+20−2
@@ -235,6 +235,11 @@ · 234 unmodified lines
235235 *
236236 * 7.44
237237 * - add FUSE_NOTIFY_INC_EPOCH
238+ *
239+ * 7.45
240+ * - add FUSE_COPY_FILE_RANGE_64
241+ * - add struct fuse_copy_file_range_out
242+ * - add FUSE_NOTIFY_PRUNE
238243 */
239244
240245 #ifndef _LINUX_FUSE_H
@@ -270,7 +275,7 @@ · 29 unmodified lines
270275 #define FUSE_KERNEL_VERSION 7
271276
272277 /** Minor version number of this interface */
273−#define FUSE_KERNEL_MINOR_VERSION 44
278+#define FUSE_KERNEL_MINOR_VERSION 45
274279
275280 /** The node ID of the root inode */
276281 #define FUSE_ROOT_ID 1
@@ -657,6 +662,7 @@ enum fuse_opcode { · 380 unmodified lines
657662 FUSE_SYNCFS = 50,
658663 FUSE_TMPFILE = 51,
659664 FUSE_STATX = 52,
665+ FUSE_COPY_FILE_RANGE_64 = 53,
660666
661667 /* CUSE specific operations */
662668 CUSE_INIT = 4096,
@@ -675,7 +681,7 @@ enum fuse_notify_code { · 12 unmodified lines
675681 FUSE_NOTIFY_DELETE = 6,
676682 FUSE_NOTIFY_RESEND = 7,
677683 FUSE_NOTIFY_INC_EPOCH = 8,
678− FUSE_NOTIFY_CODE_MAX,
684+ FUSE_NOTIFY_PRUNE = 9,
679685 };
680686
681687 /* The read buffer is required to be at least 8k, but may be much larger */
@@ -1114,6 +1120,12 @@ struct fuse_notify_retrieve_in { · 432 unmodified lines
11141120 uint64_t dummy4;
11151121 };
11161122
1123+struct fuse_notify_prune_out {
1124+ uint32_t count;
1125+ uint32_t padding;
1126+ uint64_t spare;
1127+};
1128+
11171129 struct fuse_backing_map {
11181130 int32_t fd;
11191131 uint32_t flags;
@@ -1126,6 +1138,7 @@ struct fuse_backing_map { · 6 unmodified lines
11261138 #define FUSE_DEV_IOC_BACKING_OPEN _IOW(FUSE_DEV_IOC_MAGIC, 1, \
11271139 struct fuse_backing_map)
11281140 #define FUSE_DEV_IOC_BACKING_CLOSE _IOW(FUSE_DEV_IOC_MAGIC, 2, uint32_t)
1141+#define FUSE_DEV_IOC_SYNC_INIT _IO(FUSE_DEV_IOC_MAGIC, 3)
11291142
11301143 struct fuse_lseek_in {
11311144 uint64_t fh;
@@ -1148,6 +1161,11 @@ struct fuse_copy_file_range_in { · 16 unmodified lines
11481161 uint64_t flags;
11491162 };
11501163
1164+/* For FUSE_COPY_FILE_RANGE_64 */
1165+struct fuse_copy_file_range_out {
1166+ uint64_t bytes_copied;
1167+};
1168+
11511169 #define FUSE_SETUPMAPPING_FLAG_WRITE (1ull << 0)
11521170 #define FUSE_SETUPMAPPING_FLAG_READ (1ull << 1)
11531171 struct fuse_setupmapping_in {
include/uapi/linux/hidraw.h+2−0
@@ -48,6 +48,8 @@ struct hidraw_devinfo { · 47 unmodified lines
4848 #define HIDIOCGOUTPUT(len) _IOC(_IOC_WRITE|_IOC_READ, 'H', 0x0C, len)
4949 #define HIDIOCREVOKE _IOW('H', 0x0D, int) /* Revoke device access */
5050
51+#define HIDIOCTL_LAST _IOC_NR(HIDIOCREVOKE)
52+
5153 #define HIDRAW_FIRST_MINOR 0
5254 #define HIDRAW_MAX_DEVICES 64
5355 /* number of reports to buffer */
include/uapi/linux/i8k.h+2−0
@@ -36,6 +36,8 @@ · 35 unmodified lines
3636 #define I8K_FAN_LOW 1
3737 #define I8K_FAN_HIGH 2
3838 #define I8K_FAN_TURBO 3
39+/* Many machines treat this mode as some sort of automatic mode */
40+#define I8K_FAN_AUTO 3
3941 #define I8K_FAN_MAX I8K_FAN_TURBO
4042
4143 #define I8K_VOL_UP 1
include/uapi/linux/if_bridge.h+3−0
@@ -823,6 +823,8 @@ struct br_mcast_stats { · 822 unmodified lines
823823 /* bridge boolean options
824824 * BR_BOOLOPT_NO_LL_LEARN - disable learning from link-local packets
825825 * BR_BOOLOPT_MCAST_VLAN_SNOOPING - control vlan multicast snooping
826+ * BR_BOOLOPT_FDB_LOCAL_VLAN_0 - local FDB entries installed by the bridge
827+ * driver itself should only be added on VLAN 0
826828 *
827829 * IMPORTANT: if adding a new option do not forget to handle
828830 * it in br_boolopt_toggle/get and bridge sysfs
@@ -832,6 +834,7 @@ enum br_boolopt_id { · 3 unmodified lines
832834 BR_BOOLOPT_MCAST_VLAN_SNOOPING,
833835 BR_BOOLOPT_MST_ENABLE,
834836 BR_BOOLOPT_MDB_OFFLOAD_FAIL_NOTIFICATION,
837+ BR_BOOLOPT_FDB_LOCAL_VLAN_0,
835838 BR_BOOLOPT_MAX
836839 };
837840
include/uapi/linux/if_link.h+3−0
@@ -379,6 +379,8 @@ enum { · 378 unmodified lines
379379 IFLA_DPLL_PIN,
380380 IFLA_MAX_PACING_OFFLOAD_HORIZON,
381381 IFLA_NETNS_IMMUTABLE,
382+ IFLA_HEADROOM,
383+ IFLA_TAILROOM,
382384 __IFLA_MAX
383385 };
384386
@@ -1564,6 +1566,7 @@ enum { · 1179 unmodified lines
15641566 IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE,
15651567 IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE,
15661568 IFLA_BOND_SLAVE_PRIO,
1569+ IFLA_BOND_SLAVE_ACTOR_PORT_PRIO,
15671570 __IFLA_BOND_SLAVE_MAX,
15681571 };
15691572
include/uapi/linux/iio/types.h+5−0
@@ -52,6 +52,7 @@ enum iio_chan_type { · 51 unmodified lines
5252 IIO_COLORTEMP,
5353 IIO_CHROMATICITY,
5454 IIO_ATTENTION,
55+ IIO_ALTCURRENT,
5556 };
5657
5758 enum iio_modifier {
@@ -108,6 +109,10 @@ enum iio_modifier { · 50 unmodified lines
108109 IIO_MOD_ROLL,
109110 IIO_MOD_LIGHT_UVA,
110111 IIO_MOD_LIGHT_UVB,
112+ IIO_MOD_RMS,
113+ IIO_MOD_ACTIVE,
114+ IIO_MOD_REACTIVE,
115+ IIO_MOD_APPARENT,
111116 };
112117
113118 enum iio_event_type {
include/uapi/linux/input-event-codes.h+1−0
@@ -27,6 +27,7 @@ · 26 unmodified lines
2727 #define INPUT_PROP_TOPBUTTONPAD 0x04 /* softbuttons at top of pad */
2828 #define INPUT_PROP_POINTING_STICK 0x05 /* is a pointing stick */
2929 #define INPUT_PROP_ACCELEROMETER 0x06 /* has accelerometer */
30+#define INPUT_PROP_HAPTIC_TOUCHPAD 0x07 /* is a haptic touchpad */
3031
3132 #define INPUT_PROP_MAX 0x1f
3233 #define INPUT_PROP_CNT (INPUT_PROP_MAX + 1)
include/uapi/linux/input.h+21−1
@@ -429,6 +429,24 @@ struct ff_rumble_effect { · 428 unmodified lines
429429 __u16 weak_magnitude;
430430 };
431431
432+/**
433+ * struct ff_haptic_effect
434+ * @hid_usage: hid_usage according to Haptics page (WAVEFORM_CLICK, etc.)
435+ * @vendor_id: the waveform vendor ID if hid_usage is in the vendor-defined range
436+ * @vendor_waveform_page: the vendor waveform page if hid_usage is in the vendor-defined range
437+ * @intensity: strength of the effect as percentage
438+ * @repeat_count: number of times to retrigger effect
439+ * @retrigger_period: time before effect is retriggered (in ms)
440+ */
441+struct ff_haptic_effect {
442+ __u16 hid_usage;
443+ __u16 vendor_id;
444+ __u8 vendor_waveform_page;
445+ __u16 intensity;
446+ __u16 repeat_count;
447+ __u16 retrigger_period;
448+};
449+
432450 /**
433451 * struct ff_effect - defines force feedback effect
434452 * @type: type of the effect (FF_CONSTANT, FF_PERIODIC, FF_RAMP, FF_SPRING,
@@ -465,6 +483,7 @@ struct ff_effect { · 30 unmodified lines
465483 struct ff_periodic_effect periodic;
466484 struct ff_condition_effect condition[2]; /* One for each axis */
467485 struct ff_rumble_effect rumble;
486+ struct ff_haptic_effect haptic;
468487 } u;
469488 };
470489
@@ -472,6 +491,7 @@ struct ff_effect { · 1 unmodified line
472491 * Force feedback effect types
473492 */
474493
494+#define FF_HAPTIC 0x4f
475495 #define FF_RUMBLE 0x50
476496 #define FF_PERIODIC 0x51
477497 #define FF_CONSTANT 0x52
@@ -481,7 +501,7 @@ struct ff_effect { · 3 unmodified lines
481501 #define FF_INERTIA 0x56
482502 #define FF_RAMP 0x57
483503
484−#define FF_EFFECT_MIN FF_RUMBLE
504+#define FF_EFFECT_MIN FF_HAPTIC
485505 #define FF_EFFECT_MAX FF_RAMP
486506
487507 /*
include/uapi/linux/io_uring.h+38−2
@@ -225,6 +225,12 @@ enum io_uring_sqe_flags_bit { · 224 unmodified lines
225225 /* Use hybrid poll in iopoll process */
226226 #define IORING_SETUP_HYBRID_IOPOLL (1U << 17)
227227
228+/*
229+ * Allow both 16b and 32b CQEs. If a 32b CQE is posted, it will have
230+ * IORING_CQE_F_32 set in cqe->flags.
231+ */
232+#define IORING_SETUP_CQE_MIXED (1U << 18)
233+
228234 enum io_uring_op {
229235 IORING_OP_NOP,
230236 IORING_OP_READV,
@@ -298,9 +304,13 @@ enum io_uring_op { · 67 unmodified lines
298304 * sqe->uring_cmd_flags top 8bits aren't available for userspace
299305 * IORING_URING_CMD_FIXED use registered buffer; pass this flag
300306 * along with setting sqe->buf_index.
307+ * IORING_URING_CMD_MULTISHOT must be used with buffer select, like other
308+ * multishot commands. Not compatible with
309+ * IORING_URING_CMD_FIXED, for now.
301310 */
302311 #define IORING_URING_CMD_FIXED (1U << 0)
303−#define IORING_URING_CMD_MASK IORING_URING_CMD_FIXED
312+#define IORING_URING_CMD_MULTISHOT (1U << 1)
313+#define IORING_URING_CMD_MASK (IORING_URING_CMD_FIXED | IORING_URING_CMD_MULTISHOT)
304314
305315
306316 /*
@@ -394,7 +404,7 @@ enum io_uring_op { · 87 unmodified lines
394404 * will be contiguous from the starting buffer ID.
395405 *
396406 * IORING_SEND_VECTORIZED If set, SEND[_ZC] will take a pointer to a io_vec
397− * to allow vectorized send operations.
407+ * to allow vectorized send operations.
398408 */
399409 #define IORING_RECVSEND_POLL_FIRST (1U << 0)
400410 #define IORING_RECV_MULTISHOT (1U << 1)
@@ -454,6 +464,7 @@ enum io_uring_msg_ring_flags { · 53 unmodified lines
454464 #define IORING_NOP_FIXED_FILE (1U << 2)
455465 #define IORING_NOP_FIXED_BUFFER (1U << 3)
456466 #define IORING_NOP_TW (1U << 4)
467+#define IORING_NOP_CQE32 (1U << 5)
457468
458469 /*
459470 * IO completion data structure (Completion Queue Entry)
@@ -487,12 +498,22 @@ struct io_uring_cqe { · 27 unmodified lines
487498 * other provided buffer type, all completions with a
488499 * buffer passed back is automatically returned to the
489500 * application.
501+ * IORING_CQE_F_SKIP If set, then the application/liburing must ignore this
502+ * CQE. It's only purpose is to fill a gap in the ring,
503+ * if a large CQE is attempted posted when the ring has
504+ * just a single small CQE worth of space left before
505+ * wrapping.
506+ * IORING_CQE_F_32 If set, this is a 32b/big-cqe posting. Use with rings
507+ * setup in a mixed CQE mode, where both 16b and 32b
508+ * CQEs may be posted to the CQ ring.
490509 */
491510 #define IORING_CQE_F_BUFFER (1U << 0)
492511 #define IORING_CQE_F_MORE (1U << 1)
493512 #define IORING_CQE_F_SOCK_NONEMPTY (1U << 2)
494513 #define IORING_CQE_F_NOTIF (1U << 3)
495514 #define IORING_CQE_F_BUF_MORE (1U << 4)
515+#define IORING_CQE_F_SKIP (1U << 5)
516+#define IORING_CQE_F_32 (1U << 15)
496517
497518 #define IORING_CQE_BUFFER_SHIFT 16
498519
@@ -665,6 +686,12 @@ enum io_uring_register_op { · 166 unmodified lines
665686
666687 IORING_REGISTER_MEM_REGION = 34,
667688
689+ /* query various aspects of io_uring, see linux/io_uring/query.h */
690+ IORING_REGISTER_QUERY = 35,
691+
692+ /* return zcrx buffers back into circulation */
693+ IORING_REGISTER_ZCRX_REFILL = 36,
694+
668695 /* this goes last */
669696 IORING_REGISTER_LAST,
670697
@@ -1046,6 +1073,15 @@ struct io_uring_zcrx_ifq_reg { · 375 unmodified lines
10461073 __u64 __resv[3];
10471074 };
10481075
1076+struct io_uring_zcrx_sync_refill {
1077+ __u32 zcrx_id;
1078+ /* the number of entries to return */
1079+ __u32 nr_entries;
1080+ /* pointer to an array of struct io_uring_zcrx_rqe */
1081+ __u64 rqes;
1082+ __u64 __resv[2];
1083+};
1084+
10491085 #ifdef __cplusplus
10501086 }
10511087 #endif
include/uapi/linux/io_uring/query.h+41−0
@@ -0,0 +1,41 @@
1+/* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR MIT */
2+/*
3+ * Header file for the io_uring query interface.
4+ */
5+#ifndef LINUX_IO_URING_QUERY_H
6+#define LINUX_IO_URING_QUERY_H
7+
8+#include <linux/types.h>
9+
10+struct io_uring_query_hdr {
11+ __u64 next_entry;
12+ __u64 query_data;
13+ __u32 query_op;
14+ __u32 size;
15+ __s32 result;
16+ __u32 __resv[3];
17+};
18+
19+enum {
20+ IO_URING_QUERY_OPCODES = 0,
21+
22+ __IO_URING_QUERY_MAX,
23+};
24+
25+/* Doesn't require a ring */
26+struct io_uring_query_opcode {
27+ /* The number of supported IORING_OP_* opcodes */
28+ __u32 nr_request_opcodes;
29+ /* The number of supported IORING_[UN]REGISTER_* opcodes */
30+ __u32 nr_register_opcodes;
31+ /* Bitmask of all supported IORING_FEAT_* flags */
32+ __u64 feature_flags;
33+ /* Bitmask of all supported IORING_SETUP_* flags */
34+ __u64 ring_setup_flags;
35+ /* Bitmask of all supported IORING_ENTER_** flags */
36+ __u64 enter_flags;
37+ /* Bitmask of all supported IOSQE_* flags */
38+ __u64 sqe_flags;
39+};
40+
41+#endif
include/uapi/linux/ivtv.h+1−1
@@ -2,7 +2,7 @@ · 1 unmodified line
22 /*
33 Public ivtv API header
44 Copyright (C) 2003-2004 Kevin Thayer <nufan_wfk at yahoo.com>
5− Copyright (C) 2004-2007 Hans Verkuil <hverkuil@xs4all.nl>
5+ Copyright (C) 2004-2007 Hans Verkuil <hverkuil@kernel.org>
66
77 This program is free software; you can redistribute it and/or modify
88 it under the terms of the GNU General Public License as published by
include/uapi/linux/kexec.h+4−0
@@ -22,12 +22,16 @@ · 21 unmodified lines
2222 * KEXEC_FILE_ON_CRASH : Load/unload operation belongs to kdump image.
2323 * KEXEC_FILE_NO_INITRAMFS : No initramfs is being loaded. Ignore the initrd
2424 * fd field.
25+ * KEXEC_FILE_FORCE_DTB : Force carrying over the current boot's DTB to the new
26+ * kernel on x86. This is already the default behavior on
27+ * some other architectures, like ARM64 and PowerPC.
2528 */
2629 #define KEXEC_FILE_UNLOAD 0x00000001
2730 #define KEXEC_FILE_ON_CRASH 0x00000002
2831 #define KEXEC_FILE_NO_INITRAMFS 0x00000004
2932 #define KEXEC_FILE_DEBUG 0x00000008
3033 #define KEXEC_FILE_NO_CMA 0x00000010
34+#define KEXEC_FILE_FORCE_DTB 0x00000020
3135
3236 /* These values match the ELF architecture values.
3337 * Unless there is a good reason that should continue to be the case.
include/uapi/linux/kfd_ioctl.h+2−2
@@ -67,8 +67,8 @@ struct kfd_ioctl_get_version_args { · 66 unmodified lines
6767
6868 struct kfd_ioctl_create_queue_args {
6969 __u64 ring_base_address; /* to KFD */
70− __u64 write_pointer_address; /* from KFD */
71− __u64 read_pointer_address; /* from KFD */
70+ __u64 write_pointer_address; /* to KFD */
71+ __u64 read_pointer_address; /* to KFD */
7272 __u64 doorbell_offset; /* from KFD */
7373
7474 __u32 ring_size; /* to KFD */
include/uapi/linux/kvm.h+2−0
@@ -962,6 +962,7 @@ struct kvm_enable_cap { · 961 unmodified lines
962962 #define KVM_CAP_ARM_EL2_E2H0 241
963963 #define KVM_CAP_RISCV_MP_STATE_RESET 242
964964 #define KVM_CAP_ARM_CACHEABLE_PFNMAP_SUPPORTED 243
965+#define KVM_CAP_GUEST_MEMFD_MMAP 244
965966
966967 struct kvm_irq_routing_irqchip {
967968 __u32 irqchip;
@@ -1598,6 +1599,7 @@ struct kvm_memory_attributes { · 630 unmodified lines
15981599 #define KVM_MEMORY_ATTRIBUTE_PRIVATE (1ULL << 3)
15991600
16001601 #define KVM_CREATE_GUEST_MEMFD _IOWR(KVMIO, 0xd4, struct kvm_create_guest_memfd)
1602+#define GUEST_MEMFD_FLAG_MMAP (1ULL << 0)
16011603
16021604 struct kvm_create_guest_memfd {
16031605 __u64 size;
include/uapi/linux/mempolicy.h+9−3
@@ -66,10 +66,16 @@ enum { · 65 unmodified lines
6666 #define MPOL_F_MORON (1 << 4) /* Migrate On protnone Reference On Node */
6767
6868 /*
69− * These bit locations are exposed in the vm.zone_reclaim_mode sysctl
70− * ABI. New bits are OK, but existing bits can never change.
69+ * Enabling zone reclaim means the page allocator will attempt to fulfill
70+ * the allocation request on the current node by triggering reclaim and
71+ * trying to shrink the current node.
72+ * Fallback allocations on the next candidates in the zonelist are considered
73+ * when reclaim fails to free up enough memory in the current node/zone.
74+ *
75+ * These bit locations are exposed in the vm.zone_reclaim_mode sysctl.
76+ * New bits are OK, but existing bits should not be changed.
7177 */
72−#define RECLAIM_ZONE (1<<0) /* Run shrink_inactive_list on the zone */
78+#define RECLAIM_ZONE (1<<0) /* Enable zone reclaim */
7379 #define RECLAIM_WRITE (1<<1) /* Writeout pages during reclaim */
7480 #define RECLAIM_UNMAP (1<<2) /* Unmap pages during reclaim */
7581
include/uapi/linux/mptcp.h+18−6
@@ -31,19 +31,28 @@ · 30 unmodified lines
3131 #define MPTCP_INFO_FLAG_FALLBACK _BITUL(0)
3232 #define MPTCP_INFO_FLAG_REMOTE_KEY_RECEIVED _BITUL(1)
3333
34−#define MPTCP_PM_ADDR_FLAG_SIGNAL (1 << 0)
35−#define MPTCP_PM_ADDR_FLAG_SUBFLOW (1 << 1)
36−#define MPTCP_PM_ADDR_FLAG_BACKUP (1 << 2)
37−#define MPTCP_PM_ADDR_FLAG_FULLMESH (1 << 3)
38−#define MPTCP_PM_ADDR_FLAG_IMPLICIT (1 << 4)
34+#define MPTCP_PM_EV_FLAG_DENY_JOIN_ID0 _BITUL(0)
35+#define MPTCP_PM_EV_FLAG_SERVER_SIDE _BITUL(1)
36+
37+#define MPTCP_PM_ADDR_FLAG_SIGNAL _BITUL(0)
38+#define MPTCP_PM_ADDR_FLAG_SUBFLOW _BITUL(1)
39+#define MPTCP_PM_ADDR_FLAG_BACKUP _BITUL(2)
40+#define MPTCP_PM_ADDR_FLAG_FULLMESH _BITUL(3)
41+#define MPTCP_PM_ADDR_FLAG_IMPLICIT _BITUL(4)
42+#define MPTCP_PM_ADDR_FLAG_LAMINAR _BITUL(5)
3943
4044 struct mptcp_info {
4145 __u8 mptcpi_subflows;
46+ #define mptcpi_extra_subflows mptcpi_subflows
4247 __u8 mptcpi_add_addr_signal;
4348 __u8 mptcpi_add_addr_accepted;
4449 __u8 mptcpi_subflows_max;
50+ #define mptcpi_limit_extra_subflows mptcpi_subflows_max
4551 __u8 mptcpi_add_addr_signal_max;
52+ #define mptcpi_endp_signal_max mptcpi_add_addr_signal_max
4653 __u8 mptcpi_add_addr_accepted_max;
54+ #define mptcpi_limit_add_addr_accepted mptcpi_add_addr_accepted_max
55+ /* 16-bit hole that can no longer be filled */
4756 __u32 mptcpi_flags;
4857 __u32 mptcpi_token;
4958 __u64 mptcpi_write_seq;
@@ -51,14 +60,17 @@ struct mptcp_info { · 1 unmodified line
5160 __u64 mptcpi_rcv_nxt;
5261 __u8 mptcpi_local_addr_used;
5362 __u8 mptcpi_local_addr_max;
63+ #define mptcpi_endp_subflow_max mptcpi_local_addr_max
5464 __u8 mptcpi_csum_enabled;
65+ /* 8-bit hole that can no longer be filled */
5566 __u32 mptcpi_retransmits;
5667 __u64 mptcpi_bytes_retrans;
5768 __u64 mptcpi_bytes_sent;
5869 __u64 mptcpi_bytes_received;
5970 __u64 mptcpi_bytes_acked;
6071 __u8 mptcpi_subflows_total;
61− __u8 reserved[3];
72+ __u8 mptcpi_endp_laminar_max;
73+ __u8 reserved[2];
6274 __u32 mptcpi_last_data_sent;
6375 __u32 mptcpi_last_data_recv;
6476 __u32 mptcpi_last_ack_recv;
include/uapi/linux/mptcp_pm.h+2−2
@@ -16,10 +16,10 @@ · 15 unmodified lines
1616 * good time to allocate memory and send ADD_ADDR if needed. Depending on the
1717 * traffic-patterns it can take a long time until the MPTCP_EVENT_ESTABLISHED
1818 * is sent. Attributes: token, family, saddr4 | saddr6, daddr4 | daddr6,
19− * sport, dport, server-side.
19+ * sport, dport, [server-side], [flags].
2020 * @MPTCP_EVENT_ESTABLISHED: A MPTCP connection is established (can start new
2121 * subflows). Attributes: token, family, saddr4 | saddr6, daddr4 | daddr6,
22− * sport, dport, server-side.
22+ * sport, dport, [server-side], [flags].
2323 * @MPTCP_EVENT_CLOSED: A MPTCP connection has stopped. Attribute: token.
2424 * @MPTCP_EVENT_ANNOUNCED: A new address has been announced by the peer.
2525 * Attributes: token, rem_id, family, daddr4 | daddr6 [, dport].
include/uapi/linux/netfilter/nf_tables.h+2−0
@@ -959,6 +959,7 @@ enum nft_exthdr_attributes { · 958 unmodified lines
959959 * @NFT_META_SDIF: slave device interface index
960960 * @NFT_META_SDIFNAME: slave device interface name
961961 * @NFT_META_BRI_BROUTE: packet br_netfilter_broute bit
962+ * @NFT_META_BRI_IIFHWADDR: packet input bridge interface ethernet address
962963 */
963964 enum nft_meta_keys {
964965 NFT_META_LEN,
@@ -999,6 +1000,7 @@ enum nft_meta_keys { · 34 unmodified lines
9991000 NFT_META_SDIFNAME,
10001001 NFT_META_BRI_BROUTE,
10011002 __NFT_META_IIFTYPE,
1003+ NFT_META_BRI_IIFHWADDR,
10021004 };
10031005
10041006 /**
include/uapi/linux/nl80211.h+250−5
@@ -1085,8 +1085,9 @@ · 1084 unmodified lines
10851085 * %NL80211_ATTR_NAN_MASTER_PREF attribute and optional
10861086 * %NL80211_ATTR_BANDS attributes. If %NL80211_ATTR_BANDS is
10871087 * omitted or set to 0, it means don't-care and the device will
1088− * decide what to use. After this command NAN functions can be
1089− * added.
1088+ * decide what to use. Additional cluster configuration may be
1089+ * optionally provided with %NL80211_ATTR_NAN_CONFIG.
1090+ * After this command NAN functions can be added.
10901091 * @NL80211_CMD_STOP_NAN: Stop the NAN operation, identified by
10911092 * its %NL80211_ATTR_WDEV interface.
10921093 * @NL80211_CMD_ADD_NAN_FUNCTION: Add a NAN function. The function is defined
@@ -1115,6 +1116,10 @@ · 22 unmodified lines
11151116 * current configuration is not changed. If it is present but
11161117 * set to zero, the configuration is changed to don't-care
11171118 * (i.e. the device can decide what to do).
1119+ * Additional parameters may be provided with
1120+ * %NL80211_ATTR_NAN_CONFIG. User space should provide all previously
1121+ * configured nested attributes under %NL80211_ATTR_NAN_CONFIG, even if
1122+ * only a subset was changed.
11181123 * @NL80211_CMD_NAN_MATCH: Notification sent when a match is reported.
11191124 * This will contain a %NL80211_ATTR_NAN_MATCH nested attribute and
11201125 * %NL80211_ATTR_COOKIE.
@@ -1344,6 +1349,18 @@ · 223 unmodified lines
13441349 * control EPCS configuration. Used to notify userland on the current state
13451350 * of EPCS.
13461351 *
1352+ * @NL80211_CMD_NAN_NEXT_DW_NOTIFICATION: This command is used to notify
1353+ * user space about the next NAN Discovery Window (DW). User space may use
1354+ * it to prepare frames to be sent in the next DW.
1355+ * %NL80211_ATTR_WIPHY_FREQ is used to indicate the frequency of the next
1356+ * DW. SDF transmission should be requested with %NL80211_CMD_FRAME and
1357+ * the device/driver shall take care of the actual transmission timing.
1358+ * This notification is only sent to the NAN interface owning socket
1359+ * (see %NL80211_ATTR_SOCKET_OWNER flag).
1360+ * @NL80211_CMD_NAN_CLUSTER_JOINED: This command is used to notify
1361+ * user space that the NAN new cluster has been joined. The cluster ID is
1362+ * indicated by %NL80211_ATTR_MAC.
1363+ *
13471364 * @NL80211_CMD_MAX: highest used command number
13481365 * @__NL80211_CMD_AFTER_LAST: internal use
13491366 */
@@ -1604,6 +1621,9 @@ enum nl80211_commands { · 254 unmodified lines
16041621 NL80211_CMD_ASSOC_MLO_RECONF,
16051622 NL80211_CMD_EPCS_CFG,
16061623
1624+ NL80211_CMD_NAN_NEXT_DW_NOTIFICATION,
1625+ NL80211_CMD_NAN_CLUSTER_JOINED,
1626+
16071627 /* add new commands above here */
16081628
16091629 /* used to define NL80211_CMD_MAX below */
@@ -1943,8 +1963,9 @@ enum nl80211_commands { · 333 unmodified lines
19431963 * The driver must also specify support for this with the extended
19441964 * features NL80211_EXT_FEATURE_BEACON_RATE_LEGACY,
19451965 * NL80211_EXT_FEATURE_BEACON_RATE_HT,
1946− * NL80211_EXT_FEATURE_BEACON_RATE_VHT and
1947− * NL80211_EXT_FEATURE_BEACON_RATE_HE.
1966+ * NL80211_EXT_FEATURE_BEACON_RATE_VHT,
1967+ * NL80211_EXT_FEATURE_BEACON_RATE_HE and
1968+ * NL80211_EXT_FEATURE_BEACON_RATE_EHT.
19481969 *
19491970 * @NL80211_ATTR_FRAME_MATCH: A binary attribute which typically must contain
19501971 * at least one byte, currently used with @NL80211_CMD_REGISTER_FRAME.
@@ -2283,7 +2304,8 @@ enum nl80211_commands { · 332 unmodified lines
22832304 * @NL80211_ATTR_PEER_AID: Association ID for the peer TDLS station (u16).
22842305 * This is similar to @NL80211_ATTR_STA_AID but with a difference of being
22852306 * allowed to be used with the first @NL80211_CMD_SET_STATION command to
2286− * update a TDLS peer STA entry.
2307+ * update a TDLS peer STA entry. For S1G interfaces, this is limited to
2308+ * 1600 for the current mac80211 implementation.
22872309 *
22882310 * @NL80211_ATTR_COALESCE_RULE: Coalesce rule information.
22892311 *
@@ -2928,6 +2950,29 @@ enum nl80211_commands { · 638 unmodified lines
29282950 * required alongside this attribute. Refer to
29292951 * @enum nl80211_s1g_short_beacon_attrs for the attribute definitions.
29302952 *
2953+ * @NL80211_ATTR_BSS_PARAM: nested attribute used with %NL80211_CMD_GET_WIPHY
2954+ * which indicates which BSS parameters can be modified. The attribute can
2955+ * also be used as flag attribute by user-space in %NL80211_CMD_SET_BSS to
2956+ * indicate that it wants strict checking on the BSS parameters to be
2957+ * modified.
2958+ *
2959+ * @NL80211_ATTR_NAN_CONFIG: Nested attribute for
2960+ * extended NAN cluster configuration. This is used with
2961+ * %NL80211_CMD_START_NAN and %NL80211_CMD_CHANGE_NAN_CONFIG.
2962+ * See &enum nl80211_nan_conf_attributes for details.
2963+ * This attribute is optional.
2964+ * @NL80211_ATTR_NAN_NEW_CLUSTER: Flag attribute indicating that a new
2965+ * NAN cluster has been created. This is used with
2966+ * %NL80211_CMD_NAN_CLUSTER_JOINED
2967+ * @NL80211_ATTR_NAN_CAPABILITIES: Nested attribute for NAN capabilities.
2968+ * This is used with %NL80211_CMD_GET_WIPHY to indicate the NAN
2969+ * capabilities supported by the driver. See &enum nl80211_nan_capabilities
2970+ * for details.
2971+ *
2972+ * @NL80211_ATTR_S1G_PRIMARY_2MHZ: flag attribute indicating that the S1G
2973+ * primary channel is 2 MHz wide, and the control channel designates
2974+ * the 1 MHz primary subchannel within that 2 MHz primary.
2975+ *
29312976 * @NUM_NL80211_ATTR: total number of nl80211_attrs available
29322977 * @NL80211_ATTR_MAX: highest attribute number currently defined
29332978 * @__NL80211_ATTR_AFTER_LAST: internal use
@@ -3489,6 +3534,12 @@ enum nl80211_attrs { · 555 unmodified lines
34893534
34903535 NL80211_ATTR_S1G_LONG_BEACON_PERIOD,
34913536 NL80211_ATTR_S1G_SHORT_BEACON,
3537+ NL80211_ATTR_BSS_PARAM,
3538+ NL80211_ATTR_NAN_CONFIG,
3539+ NL80211_ATTR_NAN_NEW_CLUSTER,
3540+ NL80211_ATTR_NAN_CAPABILITIES,
3541+
3542+ NL80211_ATTR_S1G_PRIMARY_2MHZ,
34923543
34933544 /* add attributes here, update the policy in nl80211.c */
34943545
@@ -3735,6 +3786,22 @@ enum nl80211_eht_gi { · 240 unmodified lines
37353786 NL80211_RATE_INFO_EHT_GI_3_2,
37363787 };
37373788
3789+/**
3790+ * enum nl80211_eht_ltf - EHT long training field
3791+ * @NL80211_RATE_INFO_EHT_1XLTF: 3.2 usec
3792+ * @NL80211_RATE_INFO_EHT_2XLTF: 6.4 usec
3793+ * @NL80211_RATE_INFO_EHT_4XLTF: 12.8 usec
3794+ * @NL80211_RATE_INFO_EHT_6XLTF: 19.2 usec
3795+ * @NL80211_RATE_INFO_EHT_8XLTF: 25.6 usec
3796+ */
3797+enum nl80211_eht_ltf {
3798+ NL80211_RATE_INFO_EHT_1XLTF,
3799+ NL80211_RATE_INFO_EHT_2XLTF,
3800+ NL80211_RATE_INFO_EHT_4XLTF,
3801+ NL80211_RATE_INFO_EHT_6XLTF,
3802+ NL80211_RATE_INFO_EHT_8XLTF,
3803+};
3804+
37383805 /**
37393806 * enum nl80211_eht_ru_alloc - EHT RU allocation values
37403807 * @NL80211_RATE_INFO_EHT_RU_ALLOC_26: 26-tone RU allocation
@@ -4371,6 +4438,12 @@ enum nl80211_wmm_rule { · 630 unmodified lines
43714438 * very low power (VLP) AP, despite being NO_IR.
43724439 * @NL80211_FREQUENCY_ATTR_ALLOW_20MHZ_ACTIVITY: This channel can be active in
43734440 * 20 MHz bandwidth, despite being NO_IR.
4441+ * @NL80211_FREQUENCY_ATTR_NO_4MHZ: 4 MHz operation is not allowed on this
4442+ * channel in current regulatory domain.
4443+ * @NL80211_FREQUENCY_ATTR_NO_8MHZ: 8 MHz operation is not allowed on this
4444+ * channel in current regulatory domain.
4445+ * @NL80211_FREQUENCY_ATTR_NO_16MHZ: 16 MHz operation is not allowed on this
4446+ * channel in current regulatory domain.
43744447 * @NL80211_FREQUENCY_ATTR_MAX: highest frequency attribute number
43754448 * currently defined
43764449 * @__NL80211_FREQUENCY_ATTR_AFTER_LAST: internal use
@@ -4416,6 +4489,9 @@ enum nl80211_frequency_attr { · 39 unmodified lines
44164489 NL80211_FREQUENCY_ATTR_CAN_MONITOR,
44174490 NL80211_FREQUENCY_ATTR_ALLOW_6GHZ_VLP_AP,
44184491 NL80211_FREQUENCY_ATTR_ALLOW_20MHZ_ACTIVITY,
4492+ NL80211_FREQUENCY_ATTR_NO_4MHZ,
4493+ NL80211_FREQUENCY_ATTR_NO_8MHZ,
4494+ NL80211_FREQUENCY_ATTR_NO_16MHZ,
44194495
44204496 /* keep last */
44214497 __NL80211_FREQUENCY_ATTR_AFTER_LAST,
@@ -5481,6 +5557,10 @@ enum nl80211_key_attributes { · 1059 unmodified lines
54815557 * see &struct nl80211_txrate_he
54825558 * @NL80211_TXRATE_HE_GI: configure HE GI, 0.8us, 1.6us and 3.2us.
54835559 * @NL80211_TXRATE_HE_LTF: configure HE LTF, 1XLTF, 2XLTF and 4XLTF.
5560+ * @NL80211_TXRATE_EHT: EHT rates allowed for TX rate selection,
5561+ * see &struct nl80211_txrate_eht
5562+ * @NL80211_TXRATE_EHT_GI: configure EHT GI, (u8, see &enum nl80211_eht_gi)
5563+ * @NL80211_TXRATE_EHT_LTF: configure EHT LTF, (u8, see &enum nl80211_eht_ltf)
54845564 * @__NL80211_TXRATE_AFTER_LAST: internal
54855565 * @NL80211_TXRATE_MAX: highest TX rate attribute
54865566 */
@@ -5493,6 +5573,9 @@ enum nl80211_tx_rate_attributes { · 6 unmodified lines
54935573 NL80211_TXRATE_HE,
54945574 NL80211_TXRATE_HE_GI,
54955575 NL80211_TXRATE_HE_LTF,
5576+ NL80211_TXRATE_EHT,
5577+ NL80211_TXRATE_EHT_GI,
5578+ NL80211_TXRATE_EHT_LTF,
54965579
54975580 /* keep last */
54985581 __NL80211_TXRATE_AFTER_LAST,
@@ -5525,6 +5608,15 @@ enum nl80211_txrate_gi { · 26 unmodified lines
55255608 NL80211_TXRATE_FORCE_LGI,
55265609 };
55275610
5611+#define NL80211_EHT_NSS_MAX 16
5612+/**
5613+ * struct nl80211_txrate_eht - EHT MCS/NSS txrate bitmap
5614+ * @mcs: MCS bitmap table for each NSS (array index 0 for 1 stream, etc.)
5615+ */
5616+struct nl80211_txrate_eht {
5617+ __u16 mcs[NL80211_EHT_NSS_MAX];
5618+};
5619+
55285620 /**
55295621 * enum nl80211_band - Frequency band
55305622 * @NL80211_BAND_2GHZ: 2.4 GHz ISM band
@@ -6649,6 +6741,9 @@ enum nl80211_feature_flags { · 1118 unmodified lines
66496741 * (signaling and payload protected) A-MSDUs and this shall be advertised
66506742 * in the RSNXE.
66516743 *
6744+ * @NL80211_EXT_FEATURE_BEACON_RATE_EHT: Driver supports beacon rate
6745+ * configuration (AP/mesh) with EHT rates.
6746+ *
66526747 * @NUM_NL80211_EXT_FEATURES: number of extended features.
66536748 * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
66546749 */
@@ -6724,6 +6819,7 @@ enum nl80211_ext_feature_index { · 69 unmodified lines
67246819 NL80211_EXT_FEATURE_OWE_OFFLOAD_AP,
67256820 NL80211_EXT_FEATURE_DFS_CONCURRENT,
67266821 NL80211_EXT_FEATURE_SPP_AMSDU_SUPPORT,
6822+ NL80211_EXT_FEATURE_BEACON_RATE_EHT,
67276823
67286824 /* add new features before the definition below */
67296825 NUM_NL80211_EXT_FEATURES,
@@ -7278,6 +7374,105 @@ enum nl80211_nan_match_attributes { · 548 unmodified lines
72787374 NL80211_NAN_MATCH_ATTR_MAX = NUM_NL80211_NAN_MATCH_ATTR - 1
72797375 };
72807376
7377+/**
7378+ * enum nl80211_nan_band_conf_attributes - NAN band configuration attributes
7379+ * @__NL80211_NAN_BAND_CONF_INVALID: Invalid.
7380+ * @NL80211_NAN_BAND_CONF_BAND: Band for which the configuration is
7381+ * being set. The value is according to &enum nl80211_band (u8).
7382+ * @NL80211_NAN_BAND_CONF_FREQ: Discovery frequency. This attribute shall not
7383+ * be present on 2.4 GHZ band. On 5 GHz band its presence is optional.
7384+ * The allowed values are 5220 (channel 44) or 5745 (channel 149).
7385+ * If not present, channel 149 is used if allowed, otherwise channel 44
7386+ * will be selected. The value is in MHz (u16).
7387+ * @NL80211_NAN_BAND_CONF_RSSI_CLOSE: RSSI close threshold used for NAN state
7388+ * transition algorithm as described in chapters 3.3.6 and 3.3.7 "NAN
7389+ * Device Role and State Transition" of Wi-Fi Aware (TM) Specification
7390+ * v4.0. If not specified, default device value is used. The value should
7391+ * be greater than -60 dBm (s8).
7392+ * @NL80211_NAN_BAND_CONF_RSSI_MIDDLE: RSSI middle threshold used for NAN state
7393+ * transition algorithm as described in chapters 3.3.6 and 3.3.7 "NAN
7394+ * Device Role and State Transition" of Wi-Fi Aware (TM) Specification
7395+ * v4.0. If not present, default device value is used. The value should be
7396+ * greater than -75 dBm and less than %NL80211_NAN_BAND_CONF_RSSI_CLOSE
7397+ * (s8).
7398+ * @NL80211_NAN_BAND_CONF_WAKE_DW: Committed DW information (values 0-5).
7399+ * Value 0 means that the device will not wake up during the
7400+ * discovery window. Values 1-5 mean that the device will wake up
7401+ * during each 2^(n - 1) discovery window, where n is the value of
7402+ * this attribute. Setting this attribute to 0 is not allowed on
7403+ * 2.4 GHz band (u8). This is an optional parameter (default is 1).
7404+ * @NL80211_NAN_BAND_CONF_DISABLE_SCAN: Optional flag attribute to disable
7405+ * scanning (for cluster merge) on the band. If set, the device will not
7406+ * scan on this band anymore. Disabling scanning on 2.4 GHz band is not
7407+ * allowed.
7408+ * @NUM_NL80211_NAN_BAND_CONF_ATTR: Internal.
7409+ * @NL80211_NAN_BAND_CONF_ATTR_MAX: Highest NAN band configuration attribute.
7410+ *
7411+ * These attributes are used to configure NAN band-specific parameters. Note,
7412+ * that both RSSI attributes should be configured (or both left unset).
7413+ */
7414+enum nl80211_nan_band_conf_attributes {
7415+ __NL80211_NAN_BAND_CONF_INVALID,
7416+ NL80211_NAN_BAND_CONF_BAND,
7417+ NL80211_NAN_BAND_CONF_FREQ,
7418+ NL80211_NAN_BAND_CONF_RSSI_CLOSE,
7419+ NL80211_NAN_BAND_CONF_RSSI_MIDDLE,
7420+ NL80211_NAN_BAND_CONF_WAKE_DW,
7421+ NL80211_NAN_BAND_CONF_DISABLE_SCAN,
7422+
7423+ /* keep last */
7424+ NUM_NL80211_NAN_BAND_CONF_ATTR,
7425+ NL80211_NAN_BAND_CONF_ATTR_MAX = NUM_NL80211_NAN_BAND_CONF_ATTR - 1,
7426+};
7427+
7428+/**
7429+ * enum nl80211_nan_conf_attributes - NAN configuration attributes
7430+ * @__NL80211_NAN_CONF_INVALID: Invalid attribute, used for validation.
7431+ * @NL80211_NAN_CONF_CLUSTER_ID: ID for the NAN cluster. This is a MAC
7432+ * address that can take values from 50-6F-9A-01-00-00 to
7433+ * 50-6F-9A-01-FF-FF. This attribute is optional. If not present,
7434+ * a random Cluster ID will be chosen.
7435+ * @NL80211_NAN_CONF_EXTRA_ATTRS: Additional NAN attributes to be
7436+ * published in the beacons. This is an optional byte array.
7437+ * @NL80211_NAN_CONF_VENDOR_ELEMS: Vendor-specific elements that will
7438+ * be published in the beacons. This is an optional byte array.
7439+ * @NL80211_NAN_CONF_BAND_CONFIGS: This is a nested array attribute,
7440+ * containing multiple entries for each supported band. Each band
7441+ * configuration consists of &enum nl80211_nan_band_conf_attributes.
7442+ * @NL80211_NAN_CONF_SCAN_PERIOD: Scan period in seconds. If not configured,
7443+ * device default is used. Zero value will disable scanning.
7444+ * This is u16 (optional).
7445+ * @NL80211_NAN_CONF_SCAN_DWELL_TIME: Scan dwell time in TUs per channel.
7446+ * Only non-zero values are valid. If not configured the device default
7447+ * value is used. This is u16 (optional)
7448+ * @NL80211_NAN_CONF_DISCOVERY_BEACON_INTERVAL: Discovery beacon interval
7449+ * in TUs. Valid range is 50-200 TUs. If not configured the device default
7450+ * value is used. This is u8 (optional)
7451+ * @NL80211_NAN_CONF_NOTIFY_DW: If set, the driver will notify userspace about
7452+ * the upcoming discovery window with
7453+ * %NL80211_CMD_NAN_NEXT_DW_NOTIFICATION.
7454+ * This is a flag attribute.
7455+ * @NUM_NL80211_NAN_CONF_ATTR: Internal.
7456+ * @NL80211_NAN_CONF_ATTR_MAX: Highest NAN configuration attribute.
7457+ *
7458+ * These attributes are used to configure NAN-specific parameters.
7459+ */
7460+enum nl80211_nan_conf_attributes {
7461+ __NL80211_NAN_CONF_INVALID,
7462+ NL80211_NAN_CONF_CLUSTER_ID,
7463+ NL80211_NAN_CONF_EXTRA_ATTRS,
7464+ NL80211_NAN_CONF_VENDOR_ELEMS,
7465+ NL80211_NAN_CONF_BAND_CONFIGS,
7466+ NL80211_NAN_CONF_SCAN_PERIOD,
7467+ NL80211_NAN_CONF_SCAN_DWELL_TIME,
7468+ NL80211_NAN_CONF_DISCOVERY_BEACON_INTERVAL,
7469+ NL80211_NAN_CONF_NOTIFY_DW,
7470+
7471+ /* keep last */
7472+ NUM_NL80211_NAN_CONF_ATTR,
7473+ NL80211_NAN_CONF_ATTR_MAX = NUM_NL80211_NAN_CONF_ATTR - 1,
7474+};
7475+
72817476 /**
72827477 * enum nl80211_external_auth_action - Action to perform with external
72837478 * authentication request. Used by NL80211_ATTR_EXTERNAL_AUTH_ACTION.
@@ -8187,4 +8382,54 @@ enum nl80211_s1g_short_beacon_attrs { · 903 unmodified lines
81878382 __NL80211_S1G_SHORT_BEACON_ATTR_LAST - 1
81888383 };
81898384
8385+/**
8386+ * enum nl80211_nan_capabilities - NAN (Neighbor Aware Networking)
8387+ * capabilities.
8388+ *
8389+ * @__NL80211_NAN_CAPABILITIES_INVALID: Invalid.
8390+ * @NL80211_NAN_CAPA_CONFIGURABLE_SYNC: Flag attribute indicating that
8391+ * the device supports configurable synchronization. If set, the device
8392+ * should be able to handle %NL80211_ATTR_NAN_CONFIG
8393+ * attribute in the %NL80211_CMD_START_NAN (and change) command.
8394+ * @NL80211_NAN_CAPA_USERSPACE_DE: Flag attribute indicating that
8395+ * NAN Discovery Engine (DE) is not offloaded and the driver assumes
8396+ * user space DE implementation. When set, %NL80211_CMD_ADD_NAN_FUNCTION,
8397+ * %NL80211_CMD_DEL_NAN_FUNCTION and %NL80211_CMD_NAN_MATCH commands
8398+ * should not be used. In addition, the device/driver should support
8399+ * sending discovery window (DW) notifications using
8400+ * %NL80211_CMD_NAN_NEXT_DW_NOTIFICATION and handling transmission and
8401+ * reception of NAN SDF frames on NAN device interface during DW windows.
8402+ * (%NL80211_CMD_FRAME is used to transmit SDFs)
8403+ * @NL80211_NAN_CAPA_OP_MODE: u8 attribute indicating the supported operation
8404+ * modes as defined in Wi-Fi Aware (TM) specification Table 81 (Operation
8405+ * Mode field format).
8406+ * @NL80211_NAN_CAPA_NUM_ANTENNAS: u8 attribute indicating the number of
8407+ * TX and RX antennas supported by the device. Lower nibble indicates
8408+ * the number of TX antennas and upper nibble indicates the number of RX
8409+ * antennas. Value 0 indicates the information is not available.
8410+ * See table 79 of Wi-Fi Aware (TM) specification (Number of
8411+ * Antennas field).
8412+ * @NL80211_NAN_CAPA_MAX_CHANNEL_SWITCH_TIME: u16 attribute indicating the
8413+ * maximum time in microseconds that the device requires to switch
8414+ * channels.
8415+ * @NL80211_NAN_CAPA_CAPABILITIES: u8 attribute containing the
8416+ * capabilities of the device as defined in Wi-Fi Aware (TM)
8417+ * specification Table 79 (Capabilities field).
8418+ * @__NL80211_NAN_CAPABILITIES_LAST: Internal
8419+ * @NL80211_NAN_CAPABILITIES_MAX: Highest NAN capability attribute.
8420+ */
8421+enum nl80211_nan_capabilities {
8422+ __NL80211_NAN_CAPABILITIES_INVALID,
8423+
8424+ NL80211_NAN_CAPA_CONFIGURABLE_SYNC,
8425+ NL80211_NAN_CAPA_USERSPACE_DE,
8426+ NL80211_NAN_CAPA_OP_MODE,
8427+ NL80211_NAN_CAPA_NUM_ANTENNAS,
8428+ NL80211_NAN_CAPA_MAX_CHANNEL_SWITCH_TIME,
8429+ NL80211_NAN_CAPA_CAPABILITIES,
8430+ /* keep last */
8431+ __NL80211_NAN_CAPABILITIES_LAST,
8432+ NL80211_NAN_CAPABILITIES_MAX = __NL80211_NAN_CAPABILITIES_LAST - 1,
8433+};
8434+
81908435 #endif /* __LINUX_NL80211_H */
include/uapi/linux/nsfs.h+16−2
@@ -16,8 +16,6 @@ · 15 unmodified lines
1616 #define NS_GET_NSTYPE _IO(NSIO, 0x3)
1717 /* Get owner UID (in the caller's user namespace) for a user namespace */
1818 #define NS_GET_OWNER_UID _IO(NSIO, 0x4)
19−/* Get the id for a mount namespace */
20−#define NS_GET_MNTNS_ID _IOR(NSIO, 0x5, __u64)
2119 /* Translate pid from target pid namespace into the caller's pid namespace. */
2220 #define NS_GET_PID_FROM_PIDNS _IOR(NSIO, 0x6, int)
2321 /* Return thread-group leader id of pid in the callers pid namespace. */
@@ -42,6 +40,10 @@ struct mnt_ns_info { · 18 unmodified lines
4240 /* Get previous namespace. */
4341 #define NS_MNT_GET_PREV _IOR(NSIO, 12, struct mnt_ns_info)
4442
43+/* Retrieve namespace identifiers. */
44+#define NS_GET_MNTNS_ID _IOR(NSIO, 5, __u64)
45+#define NS_GET_ID _IOR(NSIO, 13, __u64)
46+
4547 enum init_ns_ino {
4648 IPC_NS_INIT_INO = 0xEFFFFFFFU,
4749 UTS_NS_INIT_INO = 0xEFFFFFFEU,
@@ -51,6 +53,18 @@ enum init_ns_ino { · 3 unmodified lines
5153 TIME_NS_INIT_INO = 0xEFFFFFFAU,
5254 NET_NS_INIT_INO = 0xEFFFFFF9U,
5355 MNT_NS_INIT_INO = 0xEFFFFFF8U,
56+#ifdef __KERNEL__
57+ MNT_NS_ANON_INO = 0xEFFFFFF7U,
58+#endif
59+};
60+
61+struct nsfs_file_handle {
62+ __u64 ns_id;
63+ __u32 ns_type;
64+ __u32 ns_inum;
5465 };
5566
67+#define NSFS_FILE_HANDLE_SIZE_VER0 16 /* sizeof first published struct */
68+#define NSFS_FILE_HANDLE_SIZE_LATEST sizeof(struct nsfs_file_handle) /* sizeof latest published struct */
69+
5670 #endif /* __LINUX_NSFS_H */
include/uapi/linux/pci_regs.h+10−0
@@ -207,6 +207,9 @@ · 206 unmodified lines
207207
208208 /* Capability lists */
209209
210+#define PCI_CAP_ID_MASK 0x00ff /* Capability ID mask */
211+#define PCI_CAP_LIST_NEXT_MASK 0xff00 /* Next Capability Pointer mask */
212+
210213 #define PCI_CAP_LIST_ID 0 /* Capability ID */
211214 #define PCI_CAP_ID_PM 0x01 /* Power Management */
212215 #define PCI_CAP_ID_AGP 0x02 /* Accelerated Graphics Port */
@@ -776,6 +779,12 @@ · 563 unmodified lines
776779 #define PCI_ERR_UNC_MCBTLP 0x00800000 /* MC blocked TLP */
777780 #define PCI_ERR_UNC_ATOMEG 0x01000000 /* Atomic egress blocked */
778781 #define PCI_ERR_UNC_TLPPRE 0x02000000 /* TLP prefix blocked */
782+#define PCI_ERR_UNC_POISON_BLK 0x04000000 /* Poisoned TLP Egress Blocked */
783+#define PCI_ERR_UNC_DMWR_BLK 0x08000000 /* DMWr Request Egress Blocked */
784+#define PCI_ERR_UNC_IDE_CHECK 0x10000000 /* IDE Check Failed */
785+#define PCI_ERR_UNC_MISR_IDE 0x20000000 /* Misrouted IDE TLP */
786+#define PCI_ERR_UNC_PCRC_CHECK 0x40000000 /* PCRC Check Failed */
787+#define PCI_ERR_UNC_XLAT_BLK 0x80000000 /* TLP Translation Egress Blocked */
779788 #define PCI_ERR_UNCOR_MASK 0x08 /* Uncorrectable Error Mask */
780789 /* Same bits as above */
781790 #define PCI_ERR_UNCOR_SEVER 0x0c /* Uncorrectable Error Severity */
@@ -798,6 +807,7 @@ · 16 unmodified lines
798807 #define PCI_ERR_CAP_ECRC_CHKC 0x00000080 /* ECRC Check Capable */
799808 #define PCI_ERR_CAP_ECRC_CHKE 0x00000100 /* ECRC Check Enable */
800809 #define PCI_ERR_CAP_PREFIX_LOG_PRESENT 0x00000800 /* TLP Prefix Log Present */
810+#define PCI_ERR_CAP_COMP_TIME_LOG 0x00001000 /* Completion Timeout Prefix/Header Log Capable */
801811 #define PCI_ERR_CAP_TLP_LOG_FLIT 0x00040000 /* TLP was logged in Flit Mode */
802812 #define PCI_ERR_CAP_TLP_LOG_SIZE 0x00f80000 /* Logged TLP Size (only in Flit mode) */
803813 #define PCI_ERR_HEADER_LOG 0x1c /* Header Log Register (16 bytes) */
include/uapi/linux/prctl.h+10−0
@@ -177,7 +177,17 @@ struct prctl_mm_map { · 176 unmodified lines
177177
178178 #define PR_GET_TID_ADDRESS 40
179179
180+/*
181+ * Flags for PR_SET_THP_DISABLE are only applicable when disabling. Bit 0
182+ * is reserved, so PR_GET_THP_DISABLE can return "1 | flags", to effectively
183+ * return "1" when no flags were specified for PR_SET_THP_DISABLE.
184+ */
180185 #define PR_SET_THP_DISABLE 41
186+/*
187+ * Don't disable THPs when explicitly advised (e.g., MADV_HUGEPAGE /
188+ * VM_HUGEPAGE, MADV_COLLAPSE).
189+ */
190+# define PR_THP_DISABLE_EXCEPT_ADVISED (1 << 1)
181191 #define PR_GET_THP_DISABLE 42
182192
183193 /*
include/uapi/linux/psp-sev.h+9−1
@@ -185,6 +185,10 @@ struct sev_user_data_get_id2 { · 184 unmodified lines
185185 * @mask_chip_id: whether chip id is present in attestation reports or not
186186 * @mask_chip_key: whether attestation reports are signed or not
187187 * @vlek_en: VLEK (Version Loaded Endorsement Key) hashstick is loaded
188+ * @feature_info: whether SNP_FEATURE_INFO command is available
189+ * @rapl_dis: whether RAPL is disabled
190+ * @ciphertext_hiding_cap: whether platform has ciphertext hiding capability
191+ * @ciphertext_hiding_en: whether ciphertext hiding is enabled
188192 * @rsvd1: reserved
189193 * @guest_count: the number of guest currently managed by the firmware
190194 * @current_tcb_version: current TCB version
@@ -200,7 +204,11 @@ struct sev_user_data_snp_status { · 9 unmodified lines
200204 __u32 mask_chip_id:1; /* Out */
201205 __u32 mask_chip_key:1; /* Out */
202206 __u32 vlek_en:1; /* Out */
203− __u32 rsvd1:29;
207+ __u32 feature_info:1; /* Out */
208+ __u32 rapl_dis:1; /* Out */
209+ __u32 ciphertext_hiding_cap:1; /* Out */
210+ __u32 ciphertext_hiding_en:1; /* Out */
211+ __u32 rsvd1:25;
204212 __u32 guest_count; /* Out */
205213 __u64 current_tcb_version; /* Out */
206214 __u64 reported_tcb_version; /* Out */
include/uapi/linux/psp-sfs.h+87−0
@@ -0,0 +1,87 @@
1+/* SPDX-License-Identifier: GPL-2.0-only WITH Linux-syscall-note */
2+/*
3+ * Userspace interface for AMD Seamless Firmware Servicing (SFS)
4+ *
5+ * Copyright (C) 2025 Advanced Micro Devices, Inc.
6+ *
7+ * Author: Ashish Kalra <ashish.kalra@amd.com>
8+ */
9+
10+#ifndef __PSP_SFS_USER_H__
11+#define __PSP_SFS_USER_H__
12+
13+#include <linux/types.h>
14+
15+/**
16+ * SFS: AMD Seamless Firmware Support (SFS) interface
17+ */
18+
19+#define PAYLOAD_NAME_SIZE 64
20+#define TEE_EXT_CMD_BUFFER_SIZE 4096
21+
22+/**
23+ * struct sfs_user_get_fw_versions - get current level of base firmware (output).
24+ * @blob: current level of base firmware for ASP and patch levels (input/output).
25+ * @sfs_status: 32-bit SFS status value (output).
26+ * @sfs_extended_status: 32-bit SFS extended status value (output).
27+ */
28+struct sfs_user_get_fw_versions {
29+ __u8 blob[TEE_EXT_CMD_BUFFER_SIZE];
30+ __u32 sfs_status;
31+ __u32 sfs_extended_status;
32+} __packed;
33+
34+/**
35+ * struct sfs_user_update_package - update SFS package (input).
36+ * @payload_name: name of SFS package to load, verify and execute (input).
37+ * @sfs_status: 32-bit SFS status value (output).
38+ * @sfs_extended_status: 32-bit SFS extended status value (output).
39+ */
40+struct sfs_user_update_package {
41+ char payload_name[PAYLOAD_NAME_SIZE];
42+ __u32 sfs_status;
43+ __u32 sfs_extended_status;
44+} __packed;
45+
46+/**
47+ * Seamless Firmware Support (SFS) IOC
48+ *
49+ * possible return codes for all SFS IOCTLs:
50+ * 0: success
51+ * -EINVAL: invalid input
52+ * -E2BIG: excess data passed
53+ * -EFAULT: failed to copy to/from userspace
54+ * -EBUSY: mailbox in recovery or in use
55+ * -ENODEV: driver not bound with PSP device
56+ * -EACCES: request isn't authorized
57+ * -EINVAL: invalid parameter
58+ * -ETIMEDOUT: request timed out
59+ * -EAGAIN: invalid request for state machine
60+ * -ENOENT: not implemented
61+ * -ENFILE: overflow
62+ * -EPERM: invalid signature
63+ * -EIO: PSP I/O error
64+ */
65+#define SFS_IOC_TYPE 'S'
66+
67+/**
68+ * SFSIOCFWVERS - returns blob containing FW versions
69+ * ASP provides the current level of Base Firmware for the ASP
70+ * and the other microprocessors as well as current patch
71+ * level(s).
72+ */
73+#define SFSIOCFWVERS _IOWR(SFS_IOC_TYPE, 0x1, struct sfs_user_get_fw_versions)
74+
75+/**
76+ * SFSIOCUPDATEPKG - updates package/payload
77+ * ASP loads, verifies and executes the SFS package.
78+ * By default, the SFS package/payload is loaded from
79+ * /lib/firmware/amd, but alternative firmware loading
80+ * path can be specified using kernel parameter
81+ * firmware_class.path or the firmware loading path
82+ * can be customized using sysfs file:
83+ * /sys/module/firmware_class/parameters/path.
84+ */
85+#define SFSIOCUPDATEPKG _IOWR(SFS_IOC_TYPE, 0x2, struct sfs_user_update_package)
86+
87+#endif /* __PSP_SFS_USER_H__ */
include/uapi/linux/psp.h+66−0
@@ -0,0 +1,66 @@
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/psp.yaml */
4+/* YNL-GEN uapi header */
5+
6+#ifndef _UAPI_LINUX_PSP_H
7+#define _UAPI_LINUX_PSP_H
8+
9+#define PSP_FAMILY_NAME "psp"
10+#define PSP_FAMILY_VERSION 1
11+
12+enum psp_version {
13+ PSP_VERSION_HDR0_AES_GCM_128,
14+ PSP_VERSION_HDR0_AES_GCM_256,
15+ PSP_VERSION_HDR0_AES_GMAC_128,
16+ PSP_VERSION_HDR0_AES_GMAC_256,
17+};
18+
19+enum {
20+ PSP_A_DEV_ID = 1,
21+ PSP_A_DEV_IFINDEX,
22+ PSP_A_DEV_PSP_VERSIONS_CAP,
23+ PSP_A_DEV_PSP_VERSIONS_ENA,
24+
25+ __PSP_A_DEV_MAX,
26+ PSP_A_DEV_MAX = (__PSP_A_DEV_MAX - 1)
27+};
28+
29+enum {
30+ PSP_A_ASSOC_DEV_ID = 1,
31+ PSP_A_ASSOC_VERSION,
32+ PSP_A_ASSOC_RX_KEY,
33+ PSP_A_ASSOC_TX_KEY,
34+ PSP_A_ASSOC_SOCK_FD,
35+
36+ __PSP_A_ASSOC_MAX,
37+ PSP_A_ASSOC_MAX = (__PSP_A_ASSOC_MAX - 1)
38+};
39+
40+enum {
41+ PSP_A_KEYS_KEY = 1,
42+ PSP_A_KEYS_SPI,
43+
44+ __PSP_A_KEYS_MAX,
45+ PSP_A_KEYS_MAX = (__PSP_A_KEYS_MAX - 1)
46+};
47+
48+enum {
49+ PSP_CMD_DEV_GET = 1,
50+ PSP_CMD_DEV_ADD_NTF,
51+ PSP_CMD_DEV_DEL_NTF,
52+ PSP_CMD_DEV_SET,
53+ PSP_CMD_DEV_CHANGE_NTF,
54+ PSP_CMD_KEY_ROTATE,
55+ PSP_CMD_KEY_ROTATE_NTF,
56+ PSP_CMD_RX_ASSOC,
57+ PSP_CMD_TX_ASSOC,
58+
59+ __PSP_CMD_MAX,
60+ PSP_CMD_MAX = (__PSP_CMD_MAX - 1)
61+};
62+
63+#define PSP_MCGRP_MGMT "mgmt"
64+#define PSP_MCGRP_USE "use"
65+
66+#endif /* _UAPI_LINUX_PSP_H */
include/uapi/linux/ptp_clock.h+7−0
@@ -37,6 +37,9 @@ · 36 unmodified lines
3737
3838 /*
3939 * flag fields valid for the new PTP_EXTTS_REQUEST2 ioctl.
40+ *
41+ * Note: PTP_STRICT_FLAGS is always enabled by the kernel for
42+ * PTP_EXTTS_REQUEST2 regardless of whether it is set by userspace.
4043 */
4144 #define PTP_EXTTS_VALID_FLAGS (PTP_ENABLE_FEATURE | \
4245 PTP_RISING_EDGE | \
@@ -245,6 +248,10 @@ struct ptp_pin_desc { · 202 unmodified lines
245248 _IOWR(PTP_CLK_MAGIC, 18, struct ptp_sys_offset_extended)
246249 #define PTP_MASK_CLEAR_ALL _IO(PTP_CLK_MAGIC, 19)
247250 #define PTP_MASK_EN_SINGLE _IOW(PTP_CLK_MAGIC, 20, unsigned int)
251+#define PTP_SYS_OFFSET_PRECISE_CYCLES \
252+ _IOWR(PTP_CLK_MAGIC, 21, struct ptp_sys_offset_precise)
253+#define PTP_SYS_OFFSET_EXTENDED_CYCLES \
254+ _IOWR(PTP_CLK_MAGIC, 22, struct ptp_sys_offset_extended)
248255
249256 struct ptp_extts_event {
250257 struct ptp_clock_time t; /* Time event occurred. */
include/uapi/linux/stddef.h+2−0
@@ -2,7 +2,9 @@ · 1 unmodified line
22 #ifndef _UAPI_LINUX_STDDEF_H
33 #define _UAPI_LINUX_STDDEF_H
44
5+#ifdef __KERNEL__
56 #include <linux/compiler_types.h>
7+#endif
68
79 #ifndef __always_inline
810 #define __always_inline inline
include/uapi/linux/tcp.h+9−0
@@ -316,6 +316,15 @@ struct tcp_info { · 315 unmodified lines
316316 * in milliseconds, including any
317317 * unfinished recovery.
318318 */
319+ __u32 tcpi_received_ce; /* # of CE marks received */
320+ __u32 tcpi_delivered_e1_bytes; /* Accurate ECN byte counters */
321+ __u32 tcpi_delivered_e0_bytes;
322+ __u32 tcpi_delivered_ce_bytes;
323+ __u32 tcpi_received_e1_bytes;
324+ __u32 tcpi_received_e0_bytes;
325+ __u32 tcpi_received_ce_bytes;
326+ __u16 tcpi_accecn_fail_mode;
327+ __u16 tcpi_accecn_opt_seen;
319328 };
320329
321330 /* netlink attributes types for SCM_TIMESTAMPING_OPT_STATS */
include/uapi/linux/tee.h+79−8
@@ -42,14 +42,16 @@ · 41 unmodified lines
4242 #define TEE_IOC_MAGIC 0xa4
4343 #define TEE_IOC_BASE 0
4444
45−#define TEE_MAX_ARG_SIZE 1024
45+#define TEE_MAX_ARG_SIZE 4096
4646
4747 #define TEE_GEN_CAP_GP (1 << 0)/* GlobalPlatform compliant TEE */
4848 #define TEE_GEN_CAP_PRIVILEGED (1 << 1)/* Privileged device (for supplicant) */
4949 #define TEE_GEN_CAP_REG_MEM (1 << 2)/* Supports registering shared memory */
5050 #define TEE_GEN_CAP_MEMREF_NULL (1 << 3)/* NULL MemRef support */
51+#define TEE_GEN_CAP_OBJREF (1 << 4)/* Supports generic object reference */
5152
52−#define TEE_MEMREF_NULL (__u64)(-1) /* NULL MemRef Buffer */
53+#define TEE_MEMREF_NULL ((__u64)(-1)) /* NULL MemRef Buffer */
54+#define TEE_OBJREF_NULL ((__u64)(-1)) /* NULL ObjRef Object */
5355
5456 /*
5557 * TEE Implementation ID
@@ -57,6 +59,7 @@ · 1 unmodified line
5759 #define TEE_IMPL_ID_OPTEE 1
5860 #define TEE_IMPL_ID_AMDTEE 2
5961 #define TEE_IMPL_ID_TSTEE 3
62+#define TEE_IMPL_ID_QTEE 4
6063
6164 /*
6265 * OP-TEE specific capabilities
@@ -151,6 +154,20 @@ struct tee_ioctl_buf_data { · 88 unmodified lines
151154 #define TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT 6
152155 #define TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT 7 /* input and output */
153156
157+/*
158+ * These defines userspace buffer parameters.
159+ */
160+#define TEE_IOCTL_PARAM_ATTR_TYPE_UBUF_INPUT 8
161+#define TEE_IOCTL_PARAM_ATTR_TYPE_UBUF_OUTPUT 9
162+#define TEE_IOCTL_PARAM_ATTR_TYPE_UBUF_INOUT 10 /* input and output */
163+
164+/*
165+ * These defines object reference parameters.
166+ */
167+#define TEE_IOCTL_PARAM_ATTR_TYPE_OBJREF_INPUT 11
168+#define TEE_IOCTL_PARAM_ATTR_TYPE_OBJREF_OUTPUT 12
169+#define TEE_IOCTL_PARAM_ATTR_TYPE_OBJREF_INOUT 13
170+
154171 /*
155172 * Mask for the type part of the attribute, leaves room for more types
156173 */
@@ -186,14 +203,18 @@ struct tee_ioctl_buf_data { · 29 unmodified lines
186203 /**
187204 * struct tee_ioctl_param - parameter
188205 * @attr: attributes
189− * @a: if a memref, offset into the shared memory object, else a value parameter
190− * @b: if a memref, size of the buffer, else a value parameter
206+ * @a: if a memref, offset into the shared memory object,
207+ * else if a ubuf, address of the user buffer,
208+ * else if an objref, object identifier, else a value parameter
209+ * @b: if a memref or ubuf, size of the buffer,
210+ * else if objref, flags for the object, else a value parameter
191211 * @c: if a memref, shared memory identifier, else a value parameter
192212 *
193− * @attr & TEE_PARAM_ATTR_TYPE_MASK indicates if memref or value is used in
194− * the union. TEE_PARAM_ATTR_TYPE_VALUE_* indicates value and
195− * TEE_PARAM_ATTR_TYPE_MEMREF_* indicates memref. TEE_PARAM_ATTR_TYPE_NONE
196− * indicates that none of the members are used.
213+ * @attr & TEE_PARAM_ATTR_TYPE_MASK indicates if memref, ubuf, or value is
214+ * used in the union. TEE_PARAM_ATTR_TYPE_VALUE_* indicates value,
215+ * TEE_PARAM_ATTR_TYPE_MEMREF_* indicates memref, TEE_PARAM_ATTR_TYPE_UBUF_*
216+ * indicates ubuf, and TEE_PARAM_ATTR_TYPE_OBJREF_* indicates objref.
217+ * TEE_PARAM_ATTR_TYPE_NONE indicates that none of the members are used.
197218 *
198219 * Shared memory is allocated with TEE_IOC_SHM_ALLOC which returns an
199220 * identifier representing the shared memory object. A memref can reference
@@ -378,6 +399,37 @@ struct tee_ioctl_shm_register_data { · 178 unmodified lines
378399 __s32 id;
379400 };
380401
402+/**
403+ * struct tee_ioctl_shm_register_fd_data - Shared memory registering argument
404+ * @fd: [in] File descriptor identifying dmabuf reference
405+ * @size: [out] Size of referenced memory
406+ * @flags: [in] Flags to/from allocation.
407+ * @id: [out] Identifier of the shared memory
408+ *
409+ * The flags field should currently be zero as input. Updated by the call
410+ * with actual flags as defined by TEE_IOCTL_SHM_* above.
411+ * This structure is used as argument for TEE_IOC_SHM_REGISTER_FD below.
412+ */
413+struct tee_ioctl_shm_register_fd_data {
414+ __s64 fd;
415+ __u64 size;
416+ __u32 flags;
417+ __s32 id;
418+};
419+
420+/**
421+ * TEE_IOC_SHM_REGISTER_FD - register a shared memory from a file descriptor
422+ *
423+ * Returns a file descriptor on success or < 0 on failure
424+ *
425+ * The returned file descriptor refers to the shared memory object in the
426+ * kernel. The supplied file deccriptor can be closed if it's not needed
427+ * for other purposes. The shared memory is freed when the descriptor is
428+ * closed.
429+ */
430+#define TEE_IOC_SHM_REGISTER_FD _IOWR(TEE_IOC_MAGIC, TEE_IOC_BASE + 8, \
431+ struct tee_ioctl_shm_register_fd_data)
432+
381433 /**
382434 * TEE_IOC_SHM_REGISTER - Register shared memory argument
383435 *
@@ -401,4 +453,23 @@ struct tee_ioctl_shm_register_data { · 17 unmodified lines
401453 * munmap(): unmaps previously shared memory
402454 */
403455
456+/**
457+ * struct tee_ioctl_invoke_func_arg - Invokes an object in a Trusted Application
458+ * @id: [in] Object id
459+ * @op: [in] Object operation, specific to the object
460+ * @ret: [out] return value
461+ * @num_params: [in] number of parameters following this struct
462+ */
463+struct tee_ioctl_object_invoke_arg {
464+ __u64 id;
465+ __u32 op;
466+ __u32 ret;
467+ __u32 num_params;
468+ /* num_params tells the actual number of element in params */
469+ struct tee_ioctl_param params[];
470+};
471+
472+#define TEE_IOC_OBJECT_INVOKE _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 10, \
473+ struct tee_ioctl_buf_data)
474+
404475 #endif /*__TEE_H*/
include/uapi/linux/v4l2-controls.h+60−61
@@ -1193,7 +1193,7 @@ enum v4l2_flash_strobe_source { · 1192 unmodified lines
11931193 #define V4L2_CID_JPEG_CLASS_BASE (V4L2_CTRL_CLASS_JPEG | 0x900)
11941194 #define V4L2_CID_JPEG_CLASS (V4L2_CTRL_CLASS_JPEG | 1)
11951195
1196−#define V4L2_CID_JPEG_CHROMA_SUBSAMPLING (V4L2_CID_JPEG_CLASS_BASE + 1)
1196+#define V4L2_CID_JPEG_CHROMA_SUBSAMPLING (V4L2_CID_JPEG_CLASS_BASE + 1)
11971197 enum v4l2_jpeg_chroma_subsampling {
11981198 V4L2_JPEG_CHROMA_SUBSAMPLING_444 = 0,
11991199 V4L2_JPEG_CHROMA_SUBSAMPLING_422 = 1,
@@ -1202,15 +1202,15 @@ enum v4l2_jpeg_chroma_subsampling { · 2 unmodified lines
12021202 V4L2_JPEG_CHROMA_SUBSAMPLING_410 = 4,
12031203 V4L2_JPEG_CHROMA_SUBSAMPLING_GRAY = 5,
12041204 };
1205−#define V4L2_CID_JPEG_RESTART_INTERVAL (V4L2_CID_JPEG_CLASS_BASE + 2)
1206−#define V4L2_CID_JPEG_COMPRESSION_QUALITY (V4L2_CID_JPEG_CLASS_BASE + 3)
1205+#define V4L2_CID_JPEG_RESTART_INTERVAL (V4L2_CID_JPEG_CLASS_BASE + 2)
1206+#define V4L2_CID_JPEG_COMPRESSION_QUALITY (V4L2_CID_JPEG_CLASS_BASE + 3)
12071207
1208−#define V4L2_CID_JPEG_ACTIVE_MARKER (V4L2_CID_JPEG_CLASS_BASE + 4)
1209−#define V4L2_JPEG_ACTIVE_MARKER_APP0 (1 << 0)
1210−#define V4L2_JPEG_ACTIVE_MARKER_APP1 (1 << 1)
1211−#define V4L2_JPEG_ACTIVE_MARKER_COM (1 << 16)
1212−#define V4L2_JPEG_ACTIVE_MARKER_DQT (1 << 17)
1213−#define V4L2_JPEG_ACTIVE_MARKER_DHT (1 << 18)
1208+#define V4L2_CID_JPEG_ACTIVE_MARKER (V4L2_CID_JPEG_CLASS_BASE + 4)
1209+#define V4L2_JPEG_ACTIVE_MARKER_APP0 (1 << 0)
1210+#define V4L2_JPEG_ACTIVE_MARKER_APP1 (1 << 1)
1211+#define V4L2_JPEG_ACTIVE_MARKER_COM (1 << 16)
1212+#define V4L2_JPEG_ACTIVE_MARKER_DQT (1 << 17)
1213+#define V4L2_JPEG_ACTIVE_MARKER_DHT (1 << 18)
12141214
12151215
12161216 /* Image source controls */
@@ -1243,10 +1243,10 @@ enum v4l2_jpeg_chroma_subsampling { · 26 unmodified lines
12431243 #define V4L2_CID_DV_CLASS_BASE (V4L2_CTRL_CLASS_DV | 0x900)
12441244 #define V4L2_CID_DV_CLASS (V4L2_CTRL_CLASS_DV | 1)
12451245
1246−#define V4L2_CID_DV_TX_HOTPLUG (V4L2_CID_DV_CLASS_BASE + 1)
1247−#define V4L2_CID_DV_TX_RXSENSE (V4L2_CID_DV_CLASS_BASE + 2)
1248−#define V4L2_CID_DV_TX_EDID_PRESENT (V4L2_CID_DV_CLASS_BASE + 3)
1249−#define V4L2_CID_DV_TX_MODE (V4L2_CID_DV_CLASS_BASE + 4)
1246+#define V4L2_CID_DV_TX_HOTPLUG (V4L2_CID_DV_CLASS_BASE + 1)
1247+#define V4L2_CID_DV_TX_RXSENSE (V4L2_CID_DV_CLASS_BASE + 2)
1248+#define V4L2_CID_DV_TX_EDID_PRESENT (V4L2_CID_DV_CLASS_BASE + 3)
1249+#define V4L2_CID_DV_TX_MODE (V4L2_CID_DV_CLASS_BASE + 4)
12501250 enum v4l2_dv_tx_mode {
12511251 V4L2_DV_TX_MODE_DVI_D = 0,
12521252 V4L2_DV_TX_MODE_HDMI = 1,
@@ -1267,7 +1267,7 @@ enum v4l2_dv_it_content_type { · 14 unmodified lines
12671267 V4L2_DV_IT_CONTENT_TYPE_NO_ITC = 4,
12681268 };
12691269
1270−#define V4L2_CID_DV_RX_POWER_PRESENT (V4L2_CID_DV_CLASS_BASE + 100)
1270+#define V4L2_CID_DV_RX_POWER_PRESENT (V4L2_CID_DV_CLASS_BASE + 100)
12711271 #define V4L2_CID_DV_RX_RGB_RANGE (V4L2_CID_DV_CLASS_BASE + 101)
12721272 #define V4L2_CID_DV_RX_IT_CONTENT_TYPE (V4L2_CID_DV_CLASS_BASE + 102)
12731273
@@ -1537,15 +1537,6 @@ struct v4l2_ctrl_h264_pred_weights { · 263 unmodified lines
15371537 struct v4l2_h264_weight_factors weight_factors[2];
15381538 };
15391539
1540−#define V4L2_H264_SLICE_TYPE_P 0
1541−#define V4L2_H264_SLICE_TYPE_B 1
1542−#define V4L2_H264_SLICE_TYPE_I 2
1543−#define V4L2_H264_SLICE_TYPE_SP 3
1544−#define V4L2_H264_SLICE_TYPE_SI 4
1545−
1546−#define V4L2_H264_SLICE_FLAG_DIRECT_SPATIAL_MV_PRED 0x01
1547−#define V4L2_H264_SLICE_FLAG_SP_FOR_SWITCH 0x02
1548−
15491540 #define V4L2_H264_TOP_FIELD_REF 0x1
15501541 #define V4L2_H264_BOTTOM_FIELD_REF 0x2
15511542 #define V4L2_H264_FRAME_REF 0x3
@@ -1566,8 +1557,17 @@ struct v4l2_h264_reference { · 14 unmodified lines
15661557 * Maximum DPB size, as specified by section 'A.3.1 Level limits
15671558 * common to the Baseline, Main, and Extended profiles'.
15681559 */
1569−#define V4L2_H264_NUM_DPB_ENTRIES 16
1570−#define V4L2_H264_REF_LIST_LEN (2 * V4L2_H264_NUM_DPB_ENTRIES)
1560+#define V4L2_H264_NUM_DPB_ENTRIES 16
1561+#define V4L2_H264_REF_LIST_LEN (2 * V4L2_H264_NUM_DPB_ENTRIES)
1562+
1563+#define V4L2_H264_SLICE_TYPE_P 0
1564+#define V4L2_H264_SLICE_TYPE_B 1
1565+#define V4L2_H264_SLICE_TYPE_I 2
1566+#define V4L2_H264_SLICE_TYPE_SP 3
1567+#define V4L2_H264_SLICE_TYPE_SI 4
1568+
1569+#define V4L2_H264_SLICE_FLAG_DIRECT_SPATIAL_MV_PRED 0x01
1570+#define V4L2_H264_SLICE_FLAG_SP_FOR_SWITCH 0x02
15711571
15721572 #define V4L2_CID_STATELESS_H264_SLICE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 6)
15731573 /**
@@ -1707,7 +1707,6 @@ struct v4l2_ctrl_h264_decode_params { · 133 unmodified lines
17071707 __u32 flags;
17081708 };
17091709
1710−
17111710 /* Stateless FWHT control, used by the vicodec driver */
17121711
17131712 /* Current FWHT version */
@@ -2549,44 +2548,10 @@ struct v4l2_ctrl_hevc_scaling_matrix { · 835 unmodified lines
25492548 __u8 scaling_list_dc_coef_32x32[2];
25502549 };
25512550
2552−#define V4L2_CID_COLORIMETRY_CLASS_BASE (V4L2_CTRL_CLASS_COLORIMETRY | 0x900)
2553−#define V4L2_CID_COLORIMETRY_CLASS (V4L2_CTRL_CLASS_COLORIMETRY | 1)
2554−
2555−#define V4L2_CID_COLORIMETRY_HDR10_CLL_INFO (V4L2_CID_COLORIMETRY_CLASS_BASE + 0)
2556−
2557−struct v4l2_ctrl_hdr10_cll_info {
2558− __u16 max_content_light_level;
2559− __u16 max_pic_average_light_level;
2560−};
2561−
2562−#define V4L2_CID_COLORIMETRY_HDR10_MASTERING_DISPLAY (V4L2_CID_COLORIMETRY_CLASS_BASE + 1)
2563−
2564−#define V4L2_HDR10_MASTERING_PRIMARIES_X_LOW 5
2565−#define V4L2_HDR10_MASTERING_PRIMARIES_X_HIGH 37000
2566−#define V4L2_HDR10_MASTERING_PRIMARIES_Y_LOW 5
2567−#define V4L2_HDR10_MASTERING_PRIMARIES_Y_HIGH 42000
2568−#define V4L2_HDR10_MASTERING_WHITE_POINT_X_LOW 5
2569−#define V4L2_HDR10_MASTERING_WHITE_POINT_X_HIGH 37000
2570−#define V4L2_HDR10_MASTERING_WHITE_POINT_Y_LOW 5
2571−#define V4L2_HDR10_MASTERING_WHITE_POINT_Y_HIGH 42000
2572−#define V4L2_HDR10_MASTERING_MAX_LUMA_LOW 50000
2573−#define V4L2_HDR10_MASTERING_MAX_LUMA_HIGH 100000000
2574−#define V4L2_HDR10_MASTERING_MIN_LUMA_LOW 1
2575−#define V4L2_HDR10_MASTERING_MIN_LUMA_HIGH 50000
2576−
2577−struct v4l2_ctrl_hdr10_mastering_display {
2578− __u16 display_primaries_x[3];
2579− __u16 display_primaries_y[3];
2580− __u16 white_point_x;
2581− __u16 white_point_y;
2582− __u32 max_display_mastering_luminance;
2583− __u32 min_display_mastering_luminance;
2584−};
2585−
25862551 /* Stateless VP9 controls */
25872552
25882553 #define V4L2_VP9_LOOP_FILTER_FLAG_DELTA_ENABLED 0x1
2589−#define V4L2_VP9_LOOP_FILTER_FLAG_DELTA_UPDATE 0x2
2554+#define V4L2_VP9_LOOP_FILTER_FLAG_DELTA_UPDATE 0x2
25902555
25912556 /**
25922557 * struct v4l2_vp9_loop_filter - VP9 loop filter parameters
@@ -3515,4 +3480,38 @@ struct v4l2_ctrl_av1_film_grain { · 922 unmodified lines
35153480 #define V4L2_CID_MPEG_MFC51_BASE V4L2_CID_CODEC_MFC51_BASE
35163481 #endif
35173482
3483+#define V4L2_CID_COLORIMETRY_CLASS_BASE (V4L2_CTRL_CLASS_COLORIMETRY | 0x900)
3484+#define V4L2_CID_COLORIMETRY_CLASS (V4L2_CTRL_CLASS_COLORIMETRY | 1)
3485+
3486+#define V4L2_CID_COLORIMETRY_HDR10_CLL_INFO (V4L2_CID_COLORIMETRY_CLASS_BASE + 0)
3487+
3488+struct v4l2_ctrl_hdr10_cll_info {
3489+ __u16 max_content_light_level;
3490+ __u16 max_pic_average_light_level;
3491+};
3492+
3493+#define V4L2_CID_COLORIMETRY_HDR10_MASTERING_DISPLAY (V4L2_CID_COLORIMETRY_CLASS_BASE + 1)
3494+
3495+#define V4L2_HDR10_MASTERING_PRIMARIES_X_LOW 5
3496+#define V4L2_HDR10_MASTERING_PRIMARIES_X_HIGH 37000
3497+#define V4L2_HDR10_MASTERING_PRIMARIES_Y_LOW 5
3498+#define V4L2_HDR10_MASTERING_PRIMARIES_Y_HIGH 42000
3499+#define V4L2_HDR10_MASTERING_WHITE_POINT_X_LOW 5
3500+#define V4L2_HDR10_MASTERING_WHITE_POINT_X_HIGH 37000
3501+#define V4L2_HDR10_MASTERING_WHITE_POINT_Y_LOW 5
3502+#define V4L2_HDR10_MASTERING_WHITE_POINT_Y_HIGH 42000
3503+#define V4L2_HDR10_MASTERING_MAX_LUMA_LOW 50000
3504+#define V4L2_HDR10_MASTERING_MAX_LUMA_HIGH 100000000
3505+#define V4L2_HDR10_MASTERING_MIN_LUMA_LOW 1
3506+#define V4L2_HDR10_MASTERING_MIN_LUMA_HIGH 50000
3507+
3508+struct v4l2_ctrl_hdr10_mastering_display {
3509+ __u16 display_primaries_x[3];
3510+ __u16 display_primaries_y[3];
3511+ __u16 white_point_x;
3512+ __u16 white_point_y;
3513+ __u32 max_display_mastering_luminance;
3514+ __u32 min_display_mastering_luminance;
3515+};
3516+
35183517 #endif
include/uapi/linux/v4l2-dv-timings.h+1−1
@@ -2,7 +2,7 @@ · 1 unmodified line
22 /*
33 * V4L2 DV timings header.
44 *
5− * Copyright (C) 2012-2016 Hans Verkuil <hansverk@cisco.com>
5+ * Copyright (C) 2012-2016 Hans Verkuil <hverkuil@kernel.org>
66 */
77
88 #ifndef _V4L2_DV_TIMINGS_H
include/uapi/linux/vduse.h+1−1
@@ -237,7 +237,7 @@ struct vduse_iova_umem { · 236 unmodified lines
237237 * struct vduse_iova_info - information of one IOVA region
238238 * @start: start of the IOVA region
239239 * @last: last of the IOVA region
240− * @capability: capability of the IOVA regsion
240+ * @capability: capability of the IOVA region
241241 * @reserved: for future use, needs to be initialized to zero
242242 *
243243 * Structure used by VDUSE_IOTLB_GET_INFO ioctl to get information of
include/uapi/linux/videodev2.h+10−10
@@ -51,7 +51,7 @@ · 50 unmodified lines
5151 *
5252 * Author: Bill Dirks <bill@thedirks.org>
5353 * Justin Schoeman
54− * Hans Verkuil <hverkuil@xs4all.nl>
54+ * Hans Verkuil <hverkuil@kernel.org>
5555 * et al.
5656 */
5757 #ifndef _UAPI__LINUX_VIDEODEV2_H
@@ -1607,8 +1607,8 @@ struct v4l2_bt_timings { · 1549 unmodified lines
16071607 } __attribute__ ((packed));
16081608
16091609 /* Interlaced or progressive format */
1610−#define V4L2_DV_PROGRESSIVE 0
1611−#define V4L2_DV_INTERLACED 1
1610+#define V4L2_DV_PROGRESSIVE 0
1611+#define V4L2_DV_INTERLACED 1
16121612
16131613 /* Polarities. If bit is not set, it is assumed to be negative polarity */
16141614 #define V4L2_DV_VSYNC_POS_POL 0x00000001
@@ -2788,15 +2788,15 @@ struct v4l2_remove_buffers { · 1173 unmodified lines
27882788 * Only implemented if CONFIG_VIDEO_ADV_DEBUG is defined.
27892789 * You must be root to use these ioctls. Never use these in applications!
27902790 */
2791−#define VIDIOC_DBG_S_REGISTER _IOW('V', 79, struct v4l2_dbg_register)
2792−#define VIDIOC_DBG_G_REGISTER _IOWR('V', 80, struct v4l2_dbg_register)
2791+#define VIDIOC_DBG_S_REGISTER _IOW('V', 79, struct v4l2_dbg_register)
2792+#define VIDIOC_DBG_G_REGISTER _IOWR('V', 80, struct v4l2_dbg_register)
27932793
27942794 #define VIDIOC_S_HW_FREQ_SEEK _IOW('V', 82, struct v4l2_hw_freq_seek)
2795−#define VIDIOC_S_DV_TIMINGS _IOWR('V', 87, struct v4l2_dv_timings)
2796−#define VIDIOC_G_DV_TIMINGS _IOWR('V', 88, struct v4l2_dv_timings)
2797−#define VIDIOC_DQEVENT _IOR('V', 89, struct v4l2_event)
2798−#define VIDIOC_SUBSCRIBE_EVENT _IOW('V', 90, struct v4l2_event_subscription)
2799−#define VIDIOC_UNSUBSCRIBE_EVENT _IOW('V', 91, struct v4l2_event_subscription)
2795+#define VIDIOC_S_DV_TIMINGS _IOWR('V', 87, struct v4l2_dv_timings)
2796+#define VIDIOC_G_DV_TIMINGS _IOWR('V', 88, struct v4l2_dv_timings)
2797+#define VIDIOC_DQEVENT _IOR('V', 89, struct v4l2_event)
2798+#define VIDIOC_SUBSCRIBE_EVENT _IOW('V', 90, struct v4l2_event_subscription)
2799+#define VIDIOC_UNSUBSCRIBE_EVENT _IOW('V', 91, struct v4l2_event_subscription)
28002800 #define VIDIOC_CREATE_BUFS _IOWR('V', 92, struct v4l2_create_buffers)
28012801 #define VIDIOC_PREPARE_BUF _IOWR('V', 93, struct v4l2_buffer)
28022802 #define VIDIOC_G_SELECTION _IOWR('V', 94, struct v4l2_selection)
include/uapi/linux/virtio_ids.h+1−0
@@ -68,6 +68,7 @@ · 67 unmodified lines
6868 #define VIRTIO_ID_AUDIO_POLICY 39 /* virtio audio policy */
6969 #define VIRTIO_ID_BT 40 /* virtio bluetooth */
7070 #define VIRTIO_ID_GPIO 41 /* virtio gpio */
71+#define VIRTIO_ID_SPI 45 /* virtio spi */
7172
7273 /*
7374 * Virtio Transitional IDs
include/uapi/linux/virtio_spi.h+181−0
@@ -0,0 +1,181 @@
1+/* SPDX-License-Identifier: BSD-3-Clause */
2+/*
3+ * Copyright (C) 2023 OpenSynergy GmbH
4+ * Copyright (C) 2025 Qualcomm Innovation Center, Inc. All rights reserved.
5+ */
6+#ifndef _LINUX_VIRTIO_VIRTIO_SPI_H
7+#define _LINUX_VIRTIO_VIRTIO_SPI_H
8+
9+#include <linux/types.h>
10+#include <linux/virtio_config.h>
11+#include <linux/virtio_ids.h>
12+#include <linux/virtio_types.h>
13+
14+/* Sample data on trailing clock edge */
15+#define VIRTIO_SPI_CPHA _BITUL(0)
16+/* Clock is high when IDLE */
17+#define VIRTIO_SPI_CPOL _BITUL(1)
18+/* Chip Select is active high */
19+#define VIRTIO_SPI_CS_HIGH _BITUL(2)
20+/* Transmit LSB first */
21+#define VIRTIO_SPI_MODE_LSB_FIRST _BITUL(3)
22+/* Loopback mode */
23+#define VIRTIO_SPI_MODE_LOOP _BITUL(4)
24+
25+/**
26+ * struct virtio_spi_config - All config fields are read-only for the
27+ * Virtio SPI driver
28+ * @cs_max_number: maximum number of chipselect the host SPI controller
29+ * supports.
30+ * @cs_change_supported: indicates if the host SPI controller supports to toggle
31+ * chipselect after each transfer in one message:
32+ * 0: unsupported, chipselect will be kept in active state throughout the
33+ * message transaction;
34+ * 1: supported.
35+ * Note: Message here contains a sequence of SPI transfers.
36+ * @tx_nbits_supported: indicates the supported number of bit for writing:
37+ * bit 0: DUAL (2-bit transfer), 1 for supported
38+ * bit 1: QUAD (4-bit transfer), 1 for supported
39+ * bit 2: OCTAL (8-bit transfer), 1 for supported
40+ * other bits are reserved as 0, 1-bit transfer is always supported.
41+ * @rx_nbits_supported: indicates the supported number of bit for reading:
42+ * bit 0: DUAL (2-bit transfer), 1 for supported
43+ * bit 1: QUAD (4-bit transfer), 1 for supported
44+ * bit 2: OCTAL (8-bit transfer), 1 for supported
45+ * other bits are reserved as 0, 1-bit transfer is always supported.
46+ * @bits_per_word_mask: mask indicating which values of bits_per_word are
47+ * supported. If not set, no limitation for bits_per_word.
48+ * @mode_func_supported: indicates the following features are supported or not:
49+ * bit 0-1: CPHA feature
50+ * 0b00: invalid, should support as least one CPHA setting
51+ * 0b01: supports CPHA=0 only
52+ * 0b10: supports CPHA=1 only
53+ * 0b11: supports CPHA=0 and CPHA=1.
54+ * bit 2-3: CPOL feature
55+ * 0b00: invalid, should support as least one CPOL setting
56+ * 0b01: supports CPOL=0 only
57+ * 0b10: supports CPOL=1 only
58+ * 0b11: supports CPOL=0 and CPOL=1.
59+ * bit 4: chipselect active high feature, 0 for unsupported and 1 for
60+ * supported, chipselect active low is supported by default.
61+ * bit 5: LSB first feature, 0 for unsupported and 1 for supported,
62+ * MSB first is supported by default.
63+ * bit 6: loopback mode feature, 0 for unsupported and 1 for supported,
64+ * normal mode is supported by default.
65+ * @max_freq_hz: the maximum clock rate supported in Hz unit, 0 means no
66+ * limitation for transfer speed.
67+ * @max_word_delay_ns: the maximum word delay supported, in nanoseconds.
68+ * A value of 0 indicates that word delay is unsupported.
69+ * Each transfer may consist of a sequence of words.
70+ * @max_cs_setup_ns: the maximum delay supported after chipselect is asserted,
71+ * in ns unit, 0 means delay is not supported to introduce after chipselect is
72+ * asserted.
73+ * @max_cs_hold_ns: the maximum delay supported before chipselect is deasserted,
74+ * in ns unit, 0 means delay is not supported to introduce before chipselect
75+ * is deasserted.
76+ * @max_cs_incative_ns: maximum delay supported after chipselect is deasserted,
77+ * in ns unit, 0 means delay is not supported to introduce after chipselect is
78+ * deasserted.
79+ */
80+struct virtio_spi_config {
81+ __u8 cs_max_number;
82+ __u8 cs_change_supported;
83+#define VIRTIO_SPI_RX_TX_SUPPORT_DUAL _BITUL(0)
84+#define VIRTIO_SPI_RX_TX_SUPPORT_QUAD _BITUL(1)
85+#define VIRTIO_SPI_RX_TX_SUPPORT_OCTAL _BITUL(2)
86+ __u8 tx_nbits_supported;
87+ __u8 rx_nbits_supported;
88+ __le32 bits_per_word_mask;
89+#define VIRTIO_SPI_MF_SUPPORT_CPHA_0 _BITUL(0)
90+#define VIRTIO_SPI_MF_SUPPORT_CPHA_1 _BITUL(1)
91+#define VIRTIO_SPI_MF_SUPPORT_CPOL_0 _BITUL(2)
92+#define VIRTIO_SPI_MF_SUPPORT_CPOL_1 _BITUL(3)
93+#define VIRTIO_SPI_MF_SUPPORT_CS_HIGH _BITUL(4)
94+#define VIRTIO_SPI_MF_SUPPORT_LSB_FIRST _BITUL(5)
95+#define VIRTIO_SPI_MF_SUPPORT_LOOPBACK _BITUL(6)
96+ __le32 mode_func_supported;
97+ __le32 max_freq_hz;
98+ __le32 max_word_delay_ns;
99+ __le32 max_cs_setup_ns;
100+ __le32 max_cs_hold_ns;
101+ __le32 max_cs_inactive_ns;
102+};
103+
104+/**
105+ * struct spi_transfer_head - virtio SPI transfer descriptor
106+ * @chip_select_id: chipselect index the SPI transfer used.
107+ * @bits_per_word: the number of bits in each SPI transfer word.
108+ * @cs_change: whether to deselect device after finishing this transfer
109+ * before starting the next transfer, 0 means cs keep asserted and
110+ * 1 means cs deasserted then asserted again.
111+ * @tx_nbits: bus width for write transfer.
112+ * 0,1: bus width is 1, also known as SINGLE
113+ * 2 : bus width is 2, also known as DUAL
114+ * 4 : bus width is 4, also known as QUAD
115+ * 8 : bus width is 8, also known as OCTAL
116+ * other values are invalid.
117+ * @rx_nbits: bus width for read transfer.
118+ * 0,1: bus width is 1, also known as SINGLE
119+ * 2 : bus width is 2, also known as DUAL
120+ * 4 : bus width is 4, also known as QUAD
121+ * 8 : bus width is 8, also known as OCTAL
122+ * other values are invalid.
123+ * @reserved: for future use.
124+ * @mode: SPI transfer mode.
125+ * bit 0: CPHA, determines the timing (i.e. phase) of the data
126+ * bits relative to the clock pulses.For CPHA=0, the
127+ * "out" side changes the data on the trailing edge of the
128+ * preceding clock cycle, while the "in" side captures the data
129+ * on (or shortly after) the leading edge of the clock cycle.
130+ * For CPHA=1, the "out" side changes the data on the leading
131+ * edge of the current clock cycle, while the "in" side
132+ * captures the data on (or shortly after) the trailing edge of
133+ * the clock cycle.
134+ * bit 1: CPOL, determines the polarity of the clock. CPOL=0 is a
135+ * clock which idles at 0, and each cycle consists of a pulse
136+ * of 1. CPOL=1 is a clock which idles at 1, and each cycle
137+ * consists of a pulse of 0.
138+ * bit 2: CS_HIGH, if 1, chip select active high, else active low.
139+ * bit 3: LSB_FIRST, determines per-word bits-on-wire, if 0, MSB
140+ * first, else LSB first.
141+ * bit 4: LOOP, loopback mode.
142+ * @freq: the transfer speed in Hz.
143+ * @word_delay_ns: delay to be inserted between consecutive words of a
144+ * transfer, in ns unit.
145+ * @cs_setup_ns: delay to be introduced after CS is asserted, in ns
146+ * unit.
147+ * @cs_delay_hold_ns: delay to be introduced before CS is deasserted
148+ * for each transfer, in ns unit.
149+ * @cs_change_delay_inactive_ns: delay to be introduced after CS is
150+ * deasserted and before next asserted, in ns unit.
151+ */
152+struct spi_transfer_head {
153+ __u8 chip_select_id;
154+ __u8 bits_per_word;
155+ __u8 cs_change;
156+ __u8 tx_nbits;
157+ __u8 rx_nbits;
158+ __u8 reserved[3];
159+ __le32 mode;
160+ __le32 freq;
161+ __le32 word_delay_ns;
162+ __le32 cs_setup_ns;
163+ __le32 cs_delay_hold_ns;
164+ __le32 cs_change_delay_inactive_ns;
165+};
166+
167+/**
168+ * struct spi_transfer_result - virtio SPI transfer result
169+ * @result: Transfer result code.
170+ * VIRTIO_SPI_TRANS_OK: Transfer successful.
171+ * VIRTIO_SPI_PARAM_ERR: Parameter error.
172+ * VIRTIO_SPI_TRANS_ERR: Transfer error.
173+ */
174+struct spi_transfer_result {
175+#define VIRTIO_SPI_TRANS_OK 0
176+#define VIRTIO_SPI_PARAM_ERR 1
177+#define VIRTIO_SPI_TRANS_ERR 2
178+ __u8 result;
179+};
180+
181+#endif /* #ifndef _LINUX_VIRTIO_VIRTIO_SPI_H */
include/uapi/misc/fastrpc.h+1−1
@@ -134,7 +134,7 @@ struct fastrpc_mem_unmap { · 133 unmodified lines
134134 };
135135
136136 struct fastrpc_ioctl_capability {
137− __u32 domain;
137+ __u32 unused; /* deprecated, ignored by the kernel */
138138 __u32 attribute_id;
139139 __u32 capability; /* dsp capability */
140140 __u32 reserved[4];
include/uapi/misc/uacce/hisi_qm.h+1−0
@@ -31,6 +31,7 @@ struct hisi_qp_info { · 30 unmodified lines
3131 #define HISI_QM_API_VER_BASE "hisi_qm_v1"
3232 #define HISI_QM_API_VER2_BASE "hisi_qm_v2"
3333 #define HISI_QM_API_VER3_BASE "hisi_qm_v3"
34+#define HISI_QM_API_VER5_BASE "hisi_qm_v5"
3435
3536 /* UACCE_CMD_QM_SET_QP_CTX: Set qp algorithm type */
3637 #define UACCE_CMD_QM_SET_QP_CTX _IOWR('H', 10, struct hisi_qp_ctx)
include/uapi/rdma/ib_user_ioctl_verbs.h+1−0
@@ -255,6 +255,7 @@ enum rdma_driver_id { · 254 unmodified lines
255255 RDMA_DRIVER_SIW,
256256 RDMA_DRIVER_ERDMA,
257257 RDMA_DRIVER_MANA,
258+ RDMA_DRIVER_IONIC,
258259 };
259260
260261 enum ib_uverbs_gid_type {
include/uapi/rdma/ib_user_sa.h+14−0
@@ -74,4 +74,18 @@ struct ib_user_path_rec { · 73 unmodified lines
7474 __u8 preference;
7575 };
7676
77+struct ib_user_service_rec {
78+ __be64 id;
79+ __u8 gid[16];
80+ __be16 pkey;
81+ __u8 reserved[2];
82+ __be32 lease;
83+ __u8 key[16];
84+ __u8 name[64];
85+ __u8 data_8[16];
86+ __be16 data_16[8];
87+ __be32 data_32[4];
88+ __be64 data_64[2];
89+};
90+
7791 #endif /* IB_USER_SA_H */
include/uapi/rdma/ionic-abi.h+115−0
@@ -0,0 +1,115 @@
1+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2+/* Copyright (C) 2018-2025, Advanced Micro Devices, Inc */
3+
4+#ifndef IONIC_ABI_H
5+#define IONIC_ABI_H
6+
7+#include <linux/types.h>
8+
9+#define IONIC_ABI_VERSION 1
10+
11+#define IONIC_EXPDB_64 1
12+#define IONIC_EXPDB_128 2
13+#define IONIC_EXPDB_256 4
14+#define IONIC_EXPDB_512 8
15+
16+#define IONIC_EXPDB_SQ 1
17+#define IONIC_EXPDB_RQ 2
18+
19+#define IONIC_CMB_ENABLE 1
20+#define IONIC_CMB_REQUIRE 2
21+#define IONIC_CMB_EXPDB 4
22+#define IONIC_CMB_WC 8
23+#define IONIC_CMB_UC 16
24+
25+struct ionic_ctx_req {
26+ __u32 rsvd[2];
27+};
28+
29+struct ionic_ctx_resp {
30+ __u32 rsvd;
31+ __u32 page_shift;
32+
33+ __aligned_u64 dbell_offset;
34+
35+ __u16 version;
36+ __u8 qp_opcodes;
37+ __u8 admin_opcodes;
38+
39+ __u8 sq_qtype;
40+ __u8 rq_qtype;
41+ __u8 cq_qtype;
42+ __u8 admin_qtype;
43+
44+ __u8 max_stride;
45+ __u8 max_spec;
46+ __u8 udma_count;
47+ __u8 expdb_mask;
48+ __u8 expdb_qtypes;
49+
50+ __u8 rsvd2[3];
51+};
52+
53+struct ionic_qdesc {
54+ __aligned_u64 addr;
55+ __u32 size;
56+ __u16 mask;
57+ __u8 depth_log2;
58+ __u8 stride_log2;
59+};
60+
61+struct ionic_ah_resp {
62+ __u32 ahid;
63+ __u32 pad;
64+};
65+
66+struct ionic_cq_req {
67+ struct ionic_qdesc cq[2];
68+ __u8 udma_mask;
69+ __u8 rsvd[7];
70+};
71+
72+struct ionic_cq_resp {
73+ __u32 cqid[2];
74+ __u8 udma_mask;
75+ __u8 rsvd[7];
76+};
77+
78+struct ionic_qp_req {
79+ struct ionic_qdesc sq;
80+ struct ionic_qdesc rq;
81+ __u8 sq_spec;
82+ __u8 rq_spec;
83+ __u8 sq_cmb;
84+ __u8 rq_cmb;
85+ __u8 udma_mask;
86+ __u8 rsvd[3];
87+};
88+
89+struct ionic_qp_resp {
90+ __u32 qpid;
91+ __u8 sq_cmb;
92+ __u8 rq_cmb;
93+ __u8 udma_idx;
94+ __u8 rsvd[1];
95+ __aligned_u64 sq_cmb_offset;
96+ __aligned_u64 rq_cmb_offset;
97+};
98+
99+struct ionic_srq_req {
100+ struct ionic_qdesc rq;
101+ __u8 rq_spec;
102+ __u8 rq_cmb;
103+ __u8 udma_mask;
104+ __u8 rsvd[5];
105+};
106+
107+struct ionic_srq_resp {
108+ __u32 qpid;
109+ __u8 rq_cmb;
110+ __u8 udma_idx;
111+ __u8 rsvd[2];
112+ __aligned_u64 rq_cmb_offset;
113+};
114+
115+#endif /* IONIC_ABI_H */
include/uapi/rdma/irdma-abi.h+15−1
@@ -20,11 +20,14 @@ enum irdma_memreg_type { · 19 unmodified lines
2020 IRDMA_MEMREG_TYPE_MEM = 0,
2121 IRDMA_MEMREG_TYPE_QP = 1,
2222 IRDMA_MEMREG_TYPE_CQ = 2,
23+ IRDMA_MEMREG_TYPE_SRQ = 3,
2324 };
2425
2526 enum {
2627 IRDMA_ALLOC_UCTX_USE_RAW_ATTR = 1 << 0,
2728 IRDMA_ALLOC_UCTX_MIN_HW_WQ_SIZE = 1 << 1,
29+ IRDMA_ALLOC_UCTX_MAX_HW_SRQ_QUANTA = 1 << 2,
30+ IRDMA_SUPPORT_WQE_FORMAT_V2 = 1 << 3,
2831 };
2932
3033 struct irdma_alloc_ucontext_req {
@@ -54,7 +57,8 @@ struct irdma_alloc_ucontext_resp { · 23 unmodified lines
5457 __u8 rsvd2;
5558 __aligned_u64 comp_mask;
5659 __u16 min_hw_wq_size;
57− __u8 rsvd3[6];
60+ __u32 max_hw_srq_quanta;
61+ __u8 rsvd3[2];
5862 };
5963
6064 struct irdma_alloc_pd_resp {
@@ -71,6 +75,16 @@ struct irdma_create_cq_req { · 10 unmodified lines
7175 __aligned_u64 user_shadow_area;
7276 };
7377
78+struct irdma_create_srq_req {
79+ __aligned_u64 user_srq_buf;
80+ __aligned_u64 user_shadow_area;
81+};
82+
83+struct irdma_create_srq_resp {
84+ __u32 srq_id;
85+ __u32 srq_size;
86+};
87+
7488 struct irdma_create_qp_req {
7589 __aligned_u64 user_wqe_bufs;
7690 __aligned_u64 user_compl_ctx;
include/uapi/rdma/rdma_user_cm.h+40−2
@@ -67,7 +67,9 @@ enum { · 66 unmodified lines
6767 RDMA_USER_CM_CMD_QUERY,
6868 RDMA_USER_CM_CMD_BIND,
6969 RDMA_USER_CM_CMD_RESOLVE_ADDR,
70− RDMA_USER_CM_CMD_JOIN_MCAST
70+ RDMA_USER_CM_CMD_JOIN_MCAST,
71+ RDMA_USER_CM_CMD_RESOLVE_IB_SERVICE,
72+ RDMA_USER_CM_CMD_WRITE_CM_EVENT,
7173 };
7274
7375 /* See IBTA Annex A11, servies ID bytes 4 & 5 */
@@ -147,7 +149,8 @@ struct rdma_ucm_resolve_route { · 73 unmodified lines
147149 enum {
148150 RDMA_USER_CM_QUERY_ADDR,
149151 RDMA_USER_CM_QUERY_PATH,
150− RDMA_USER_CM_QUERY_GID
152+ RDMA_USER_CM_QUERY_GID,
153+ RDMA_USER_CM_QUERY_IB_SERVICE
151154 };
152155
153156 struct rdma_ucm_query {
@@ -187,6 +190,11 @@ struct rdma_ucm_query_path_resp { · 33 unmodified lines
187190 struct ib_path_rec_data path_data[];
188191 };
189192
193+struct rdma_ucm_query_ib_service_resp {
194+ __u32 num_service_recs;
195+ struct ib_user_service_rec recs[];
196+};
197+
190198 struct rdma_ucm_conn_param {
191199 __u32 qp_num;
192200 __u32 qkey;
@@ -297,6 +305,7 @@ struct rdma_ucm_event_resp { · 104 unmodified lines
297305 union {
298306 struct rdma_ucm_conn_param conn;
299307 struct rdma_ucm_ud_param ud;
308+ __u32 arg32[2];
300309 } param;
301310 __u32 reserved;
302311 struct rdma_ucm_ece ece;
@@ -338,4 +347,33 @@ struct rdma_ucm_migrate_resp { · 35 unmodified lines
338347 __u32 events_reported;
339348 };
340349
350+enum {
351+ RDMA_USER_CM_IB_SERVICE_FLAG_ID = 1 << 0,
352+ RDMA_USER_CM_IB_SERVICE_FLAG_NAME = 1 << 1,
353+};
354+
355+#define RDMA_USER_CM_IB_SERVICE_NAME_SIZE 64
356+struct rdma_ucm_ib_service {
357+ __u64 service_id;
358+ __u8 service_name[RDMA_USER_CM_IB_SERVICE_NAME_SIZE];
359+ __u32 flags;
360+ __u32 reserved;
361+};
362+
363+struct rdma_ucm_resolve_ib_service {
364+ __u32 id;
365+ struct rdma_ucm_ib_service ibs;
366+};
367+
368+struct rdma_ucm_write_cm_event {
369+ __u32 id;
370+ __u32 reserved;
371+ __u32 event;
372+ __u32 status;
373+ union {
374+ struct rdma_ucm_conn_param conn;
375+ struct rdma_ucm_ud_param ud;
376+ __u64 arg;
377+ } param;
378+};
341379 #endif /* RDMA_USER_CM_H */
include/uapi/scsi/fc/fc_els.h+39−19
@@ -11,6 +11,12 @@ · 10 unmodified lines
1111 #include <linux/types.h>
1212 #include <asm/byteorder.h>
1313
14+#ifdef __KERNEL__
15+#include <linux/stddef.h> /* for offsetof */
16+#else
17+#include <stddef.h> /* for offsetof */
18+#endif
19+
1420 /*
1521 * Fibre Channel Switch - Enhanced Link Services definitions.
1622 * From T11 FC-LS Rev 1.2 June 7, 2005.
@@ -1109,12 +1115,15 @@ struct fc_els_fpin { · 1092 unmodified lines
11091115
11101116 /* Diagnostic Function Descriptor - FPIN Registration */
11111117 struct fc_df_desc_fpin_reg {
1112− __be32 desc_tag; /* FPIN Registration (0x00030001) */
1113− __be32 desc_len; /* Length of Descriptor (in bytes).
1114− * Size of descriptor excluding
1115− * desc_tag and desc_len fields.
1116− */
1117− __be32 count; /* Number of desc_tags elements */
1118+ /* New members MUST be added within the __struct_group() macro below. */
1119+ __struct_group(fc_df_desc_fpin_reg_hdr, __hdr, /* no attrs */,
1120+ __be32 desc_tag; /* FPIN Registration (0x00030001) */
1121+ __be32 desc_len; /* Length of Descriptor (in bytes).
1122+ * Size of descriptor excluding
1123+ * desc_tag and desc_len fields.
1124+ */
1125+ __be32 count; /* Number of desc_tags elements */
1126+ );
11181127 __be32 desc_tags[]; /* Array of Descriptor Tags.
11191128 * Each tag indicates a function
11201129 * supported by the N_Port (request)
@@ -1124,33 +1133,44 @@ struct fc_df_desc_fpin_reg { · 3 unmodified lines
11241133 * See ELS_FN_DTAG_xxx for tag values.
11251134 */
11261135 };
1136+_Static_assert(offsetof(struct fc_df_desc_fpin_reg, desc_tags) == sizeof(struct fc_df_desc_fpin_reg_hdr),
1137+ "struct member likely outside of __struct_group()");
11271138
11281139 /*
11291140 * ELS_RDF - Register Diagnostic Functions
11301141 */
11311142 struct fc_els_rdf {
1132− __u8 fpin_cmd; /* command (0x19) */
1133− __u8 fpin_zero[3]; /* specified as zero - part of cmd */
1134− __be32 desc_len; /* Length of Descriptor List (in bytes).
1135− * Size of ELS excluding fpin_cmd,
1136− * fpin_zero and desc_len fields.
1137− */
1143+ /* New members MUST be added within the __struct_group() macro below. */
1144+ __struct_group(fc_els_rdf_hdr, __hdr, /* no attrs */,
1145+ __u8 fpin_cmd; /* command (0x19) */
1146+ __u8 fpin_zero[3]; /* specified as zero - part of cmd */
1147+ __be32 desc_len; /* Length of Descriptor List (in bytes).
1148+ * Size of ELS excluding fpin_cmd,
1149+ * fpin_zero and desc_len fields.
1150+ */
1151+ );
11381152 struct fc_tlv_desc desc[]; /* Descriptor list */
11391153 };
1154+_Static_assert(offsetof(struct fc_els_rdf, desc) == sizeof(struct fc_els_rdf_hdr),
1155+ "struct member likely outside of __struct_group()");
11401156
11411157 /*
11421158 * ELS RDF LS_ACC Response.
11431159 */
11441160 struct fc_els_rdf_resp {
1145− struct fc_els_ls_acc acc_hdr;
1146− __be32 desc_list_len; /* Length of response (in
1147− * bytes). Excludes acc_hdr
1148− * and desc_list_len fields.
1149− */
1150− struct fc_els_lsri_desc lsri;
1161+ /* New members MUST be added within the __struct_group() macro below. */
1162+ __struct_group(fc_els_rdf_resp_hdr, __hdr, /* no attrs */,
1163+ struct fc_els_ls_acc acc_hdr;
1164+ __be32 desc_list_len; /* Length of response (in
1165+ * bytes). Excludes acc_hdr
1166+ * and desc_list_len fields.
1167+ */
1168+ struct fc_els_lsri_desc lsri;
1169+ );
11511170 struct fc_tlv_desc desc[]; /* Supported Descriptor list */
11521171 };
1153−
1172+_Static_assert(offsetof(struct fc_els_rdf_resp, desc) == sizeof(struct fc_els_rdf_resp_hdr),
1173+ "struct member likely outside of __struct_group()");
11541174
11551175 /*
11561176 * Diagnostic Capability Descriptors for EDC ELS
include/uapi/sound/compress_offload.h+33−2
@@ -13,8 +13,7 @@ · 12 unmodified lines
1313 #include <sound/asound.h>
1414 #include <sound/compress_params.h>
1515
16−
17−#define SNDRV_COMPRESS_VERSION SNDRV_PROTOCOL_VERSION(0, 3, 0)
16+#define SNDRV_COMPRESS_VERSION SNDRV_PROTOCOL_VERSION(0, 4, 1)
1817 /**
1918 * struct snd_compressed_buffer - compressed buffer
2019 * @fragment_size: size of buffer fragment in bytes
@@ -56,6 +55,25 @@ struct snd_compr_tstamp { · 35 unmodified lines
5655 __u32 sampling_rate;
5756 } __attribute__((packed, aligned(4)));
5857
58+/**
59+ * struct snd_compr_tstamp64 - timestamp descriptor with fields in 64 bit
60+ * @byte_offset: Byte offset in ring buffer to DSP
61+ * @copied_total: Total number of bytes copied from/to ring buffer to/by DSP
62+ * @pcm_frames: Frames decoded or encoded by DSP. This field will evolve by
63+ * large steps and should only be used to monitor encoding/decoding
64+ * progress. It shall not be used for timing estimates.
65+ * @pcm_io_frames: Frames rendered or received by DSP into a mixer or an audio
66+ * output/input. This field should be used for A/V sync or time estimates.
67+ * @sampling_rate: sampling rate of audio
68+ */
69+struct snd_compr_tstamp64 {
70+ __u32 byte_offset;
71+ __u64 copied_total;
72+ __u64 pcm_frames;
73+ __u64 pcm_io_frames;
74+ __u32 sampling_rate;
75+} __attribute__((packed, aligned(4)));
76+
5977 /**
6078 * struct snd_compr_avail - avail descriptor
6179 * @avail: Number of bytes available in ring buffer for writing/reading
@@ -66,6 +84,16 @@ struct snd_compr_avail { · 4 unmodified lines
6684 struct snd_compr_tstamp tstamp;
6785 } __attribute__((packed, aligned(4)));
6886
87+/**
88+ * struct snd_compr_avail64 - avail descriptor with tstamp in 64 bit format
89+ * @avail: Number of bytes available in ring buffer for writing/reading
90+ * @tstamp: timestamp information
91+ */
92+struct snd_compr_avail64 {
93+ __u64 avail;
94+ struct snd_compr_tstamp64 tstamp;
95+} __attribute__((packed, aligned(4)));
96+
6997 enum snd_compr_direction {
7098 SND_COMPRESS_PLAYBACK = 0,
7199 SND_COMPRESS_CAPTURE,
@@ -189,6 +217,7 @@ struct snd_compr_task_status { · 117 unmodified lines
189217 * Note: only codec params can be changed runtime and stream params cant be
190218 * SNDRV_COMPRESS_GET_PARAMS: Query codec params
191219 * SNDRV_COMPRESS_TSTAMP: get the current timestamp value
220+ * SNDRV_COMPRESS_TSTAMP64: get the current timestamp value in 64 bit format
192221 * SNDRV_COMPRESS_AVAIL: get the current buffer avail value.
193222 * This also queries the tstamp properties
194223 * SNDRV_COMPRESS_PAUSE: Pause the running stream
@@ -211,6 +240,8 @@ struct snd_compr_task_status { · 16 unmodified lines
211240 struct snd_compr_metadata)
212241 #define SNDRV_COMPRESS_TSTAMP _IOR('C', 0x20, struct snd_compr_tstamp)
213242 #define SNDRV_COMPRESS_AVAIL _IOR('C', 0x21, struct snd_compr_avail)
243+#define SNDRV_COMPRESS_TSTAMP64 _IOR('C', 0x22, struct snd_compr_tstamp64)
244+#define SNDRV_COMPRESS_AVAIL64 _IOR('C', 0x23, struct snd_compr_avail64)
214245 #define SNDRV_COMPRESS_PAUSE _IO('C', 0x30)
215246 #define SNDRV_COMPRESS_RESUME _IO('C', 0x31)
216247 #define SNDRV_COMPRESS_START _IO('C', 0x32)
include/uapi/sound/compress_params.h+40−1
@@ -43,7 +43,8 @@ · 42 unmodified lines
4343 #define SND_AUDIOCODEC_BESPOKE ((__u32) 0x0000000E)
4444 #define SND_AUDIOCODEC_ALAC ((__u32) 0x0000000F)
4545 #define SND_AUDIOCODEC_APE ((__u32) 0x00000010)
46−#define SND_AUDIOCODEC_MAX SND_AUDIOCODEC_APE
46+#define SND_AUDIOCODEC_OPUS_RAW ((__u32) 0x00000011)
47+#define SND_AUDIOCODEC_MAX SND_AUDIOCODEC_OPUS_RAW
4748
4849 /*
4950 * Profile and modes are listed with bit masks. This allows for a
@@ -324,6 +325,43 @@ struct snd_dec_ape { · 274 unmodified lines
324325 __u32 seek_table_present;
325326 } __attribute__((packed, aligned(4)));
326327
328+/**
329+ * struct snd_dec_opus - Opus decoder parameters (raw opus packets)
330+ * @version: Usually should be '1' but can be split into major (4 upper bits)
331+ * and minor (4 lower bits) sub-fields.
332+ * @num_channels: Number of output channels.
333+ * @pre_skip: Number of samples to discard at 48 kHz.
334+ * @sample_rate: Sample rate of original input.
335+ * @output_gain: Gain to apply when decoding (in Q7.8 format).
336+ * @mapping_family: Order and meaning of output channels. Only values 0 and 1
337+ * are expected; values 2..255 are not recommended for playback.
338+ *
339+ * @chan_map: Optional channel mapping table. Describes mapping of opus streams
340+ * to decoded channels. Fields:
341+ * @chan_map.stream_count: Number of streams encoded in each Ogg packet.
342+ * @chan_map.coupled_count: Number of streams whose decoders are used
343+ * for two channels.
344+ * @chan_map.channel_map: Which decoded channel to be used for each one.
345+ * Supports only mapping families 0 and 1,
346+ * max number of channels is 8.
347+ *
348+ * These options were extracted from RFC7845 Section 5.
349+ */
350+
351+struct snd_dec_opus {
352+ __u8 version;
353+ __u8 num_channels;
354+ __u16 pre_skip;
355+ __u32 sample_rate;
356+ __u16 output_gain;
357+ __u8 mapping_family;
358+ struct snd_dec_opus_ch_map {
359+ __u8 stream_count;
360+ __u8 coupled_count;
361+ __u8 channel_map[8];
362+ } chan_map;
363+} __attribute__((packed, aligned(4)));
364+
327365 union snd_codec_options {
328366 struct snd_enc_wma wma;
329367 struct snd_enc_vorbis vorbis;
@@ -334,6 +372,7 @@ union snd_codec_options { · 4 unmodified lines
334372 struct snd_dec_wma wma_d;
335373 struct snd_dec_alac alac_d;
336374 struct snd_dec_ape ape_d;
375+ struct snd_dec_opus opus_d;
337376 struct {
338377 __u32 out_sample_rate;
339378 } src_d;
include/uapi/sound/intel/avs/tokens.h+15−0
@@ -133,6 +133,21 @@ enum avs_tplg_token { · 132 unmodified lines
133133 AVS_TKN_PATH_FE_FMT_ID_U32 = 1902,
134134 AVS_TKN_PATH_BE_FMT_ID_U32 = 1903,
135135
136+ /* struct avs_tplg_path_template (conditional) */
137+ AVS_TKN_CONDPATH_TMPL_ID_U32 = 1801,
138+ AVS_TKN_CONDPATH_TMPL_SOURCE_TPLG_NAME_STRING = 2002,
139+ AVS_TKN_CONDPATH_TMPL_SOURCE_PATH_TMPL_ID_U32 = 2003,
140+ AVS_TKN_CONDPATH_TMPL_SINK_TPLG_NAME_STRING = 2004,
141+ AVS_TKN_CONDPATH_TMPL_SINK_PATH_TMPL_ID_U32 = 2005,
142+ AVS_TKN_CONDPATH_TMPL_COND_TYPE_U32 = 2006,
143+ AVS_TKN_CONDPATH_TMPL_OVERRIDABLE_BOOL = 2007,
144+ AVS_TKN_CONDPATH_TMPL_PRIORITY_U8 = 2008,
145+
146+ /* struct avs_tplg_path (conditional) */
147+ AVS_TKN_CONDPATH_ID_U32 = 1901,
148+ AVS_TKN_CONDPATH_SOURCE_PATH_ID_U32 = 2102,
149+ AVS_TKN_CONDPATH_SINK_PATH_ID_U32 = 2103,
150+
136151 /* struct avs_tplg_pin_format */
137152 AVS_TKN_PIN_FMT_INDEX_U32 = 2201,
138153 AVS_TKN_PIN_FMT_IOBS_U32 = 2202,
include/uapi/sound/snd_ar_tokens.h+18−2
@@ -3,6 +3,8 @@ · 2 unmodified lines
33 #ifndef __SND_AR_TOKENS_H__
44 #define __SND_AR_TOKENS_H__
55
6+#include <linux/types.h>
7+
68 #define APM_SUB_GRAPH_PERF_MODE_LOW_POWER 0x1
79 #define APM_SUB_GRAPH_PERF_MODE_LOW_LATENCY 0x2
810
@@ -118,6 +120,12 @@ enum ar_event_types { · 109 unmodified lines
118120 * LPAIF_WSA = 2,
119121 * LPAIF_VA = 3,
120122 * LPAIF_AXI = 4
123+ * Possible values for MI2S
124+ * I2S_INTF_TYPE_PRIMARY = 0,
125+ * I2S_INTF_TYPE_SECONDARY = 1,
126+ * I2S_INTF_TYPE_TERTIARY = 2,
127+ * I2S_INTF_TYPE_QUATERNARY = 3,
128+ * I2S_INTF_TYPE_QUINARY = 4,
121129 *
122130 * %AR_TKN_U32_MODULE_FMT_INTERLEAVE: PCM Interleaving
123131 * PCM_INTERLEAVED = 1,
@@ -184,8 +192,8 @@ enum ar_event_types { · 60 unmodified lines
184192 #define AR_TKN_U32_MODULE_INSTANCE_ID 201
185193 #define AR_TKN_U32_MODULE_MAX_IP_PORTS 202
186194 #define AR_TKN_U32_MODULE_MAX_OP_PORTS 203
187−#define AR_TKN_U32_MODULE_IN_PORTS 204
188−#define AR_TKN_U32_MODULE_OUT_PORTS 205
195+#define AR_TKN_U32_MODULE_IN_PORTS 204 /* deprecated */
196+#define AR_TKN_U32_MODULE_OUT_PORTS 205 /* deprecated */
189197 #define AR_TKN_U32_MODULE_SRC_OP_PORT_ID 206
190198 #define AR_TKN_U32_MODULE_DST_IN_PORT_ID 207
191199 #define AR_TKN_U32_MODULE_SRC_INSTANCE_ID 208
@@ -232,4 +240,12 @@ enum ar_event_types { · 40 unmodified lines
232240 #define AR_TKN_U32_MODULE_LOG_TAP_POINT_ID 260
233241 #define AR_TKN_U32_MODULE_LOG_MODE 261
234242
243+#define SND_SOC_AR_TPLG_MODULE_CFG_TYPE 0x01001006
244+struct audioreach_module_priv_data {
245+ __le32 size; /* size in bytes of the array, including all elements */
246+ __le32 type; /* SND_SOC_AR_TPLG_MODULE_CFG_TYPE */
247+ __le32 priv[2]; /* Private data for future expansion */
248+ __le32 data[0]; /* config data */
249+};
250+
235251 #endif /* __SND_AR_TOKENS_H__ */
include/uapi/sound/sof/tokens.h+2−0
@@ -106,6 +106,8 @@ · 105 unmodified lines
106106 */
107107 #define SOF_TKN_COMP_NO_WNAME_IN_KCONTROL_NAME 417
108108
109+#define SOF_TKN_COMP_SCHED_DOMAIN 418
110+
109111 /* SSP */
110112 #define SOF_TKN_INTEL_SSP_CLKS_CONTROL 500
111113 #define SOF_TKN_INTEL_SSP_MCLK_ID 501