History

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

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

Maxime Ripard committed 8 months ago

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

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

Unified · Split

73 files
  1. include/uapi/asm-generic/errno.h +2 −0
  2. include/uapi/asm-generic/unistd.h +4 −1
  3. include/uapi/drm/amdgpu_drm.h +20 −6
  4. include/uapi/drm/amdxdna_accel.h +8 −0
  5. include/uapi/drm/panfrost_drm.h +75 −1
  6. include/uapi/drm/panthor_drm.h +154 −3
  7. include/uapi/drm/rocket_accel.h +74 −24
  8. include/uapi/drm/xe_drm.h +89 −6
  9. include/uapi/linux/android/binder.h +1 −1
  10. include/uapi/linux/blkzoned.h +4 −2
  11. include/uapi/linux/bpf.h +28 −0
  12. include/uapi/linux/btrfs.h +1 −0
  13. include/uapi/linux/btrfs_tree.h +32 −2
  14. include/uapi/linux/comedi.h +1 −1
  15. include/uapi/linux/dev_energymodel.h +82 −0
  16. include/uapi/linux/dpll.h +1 −0
  17. include/uapi/linux/elf.h +2 −0
  18. include/uapi/linux/energy_model.h +0 −63
  19. include/uapi/linux/ethtool.h +21 −7
  20. include/uapi/linux/ext4.h +1 −1
  21. include/uapi/linux/fs.h +1 −0
  22. include/uapi/linux/hyperv.h +1 −1
  23. include/uapi/linux/idxd.h +133 −137
  24. include/uapi/linux/if_alg.h +1 −1
  25. include/uapi/linux/if_link.h +1 −0
  26. include/uapi/linux/io_uring.h +31 −1
  27. include/uapi/linux/io_uring/bpf_filter.h +68 −0
  28. include/uapi/linux/io_uring/query.h +5 −1
  29. include/uapi/linux/iommufd.h +39 −0
  30. include/uapi/linux/kfd_ioctl.h +13 −3
  31. include/uapi/linux/kfd_sysfs.h +2 −1
  32. include/uapi/linux/kvm.h +23 −1
  33. include/uapi/linux/landlock.h +39 −28
  34. include/uapi/linux/magic.h +1 −0
  35. include/uapi/linux/media/arm/mali-c55-config.h +0 −9
  36. include/uapi/linux/mempolicy.h +3 −0
  37. include/uapi/linux/mount.h +11 −2
  38. include/uapi/linux/mptcp_pm.h +1 −1
  39. include/uapi/linux/mshv.h +2 −0
  40. include/uapi/linux/netfilter_bridge.h +7 −6
  41. include/uapi/linux/netfilter_ipv4.h +4 −5
  42. include/uapi/linux/netfilter_ipv6.h +3 −4
  43. include/uapi/linux/nfs.h +1 −1
  44. include/uapi/linux/nfsd_netlink.h +1 −0
  45. include/uapi/linux/nilfs2_api.h +2 −2
  46. include/uapi/linux/nilfs2_ondisk.h +97 −66
  47. include/uapi/linux/nl80211.h +107 −5
  48. include/uapi/linux/pci.h +7 −0
  49. include/uapi/linux/pci_regs.h +64 −5
  50. include/uapi/linux/pcitest.h +1 −0
  51. include/uapi/linux/perf_event.h +24 −3
  52. include/uapi/linux/pkt_sched.h +1 −0
  53. include/uapi/linux/prctl.h +37 −0
  54. include/uapi/linux/rseq.h +40 −1
  55. include/uapi/linux/shm.h +0 −3
  56. include/uapi/linux/stddef.h +4 −0
  57. include/uapi/linux/sysctl.h +1 −2
  58. include/uapi/linux/taskstats.h +12 −1
  59. include/uapi/linux/tcp.h +23 −3
  60. include/uapi/linux/typelimits.h +8 −0
  61. include/uapi/linux/ublk_cmd.h +120 −1
  62. include/uapi/linux/v4l2-controls.h +63 −0
  63. include/uapi/linux/vbox_vmmdev_types.h +2 −2
  64. include/uapi/linux/vduse.h +80 −5
  65. include/uapi/linux/vfio.h +4 −0
  66. include/uapi/linux/videodev2.h +3 −0
  67. include/uapi/linux/virtio_ring.h +1 −4
  68. include/uapi/linux/vmclock-abi.h +20 −0
  69. include/uapi/rdma/bnxt_re-abi.h +16 −0
  70. include/uapi/rdma/ib_user_ioctl_cmds.h +16 −0
  71. include/uapi/rdma/mana-abi.h +3 −0
  72. include/uapi/scsi/scsi_bsg_ufs.h +8 −9
  73. include/uapi/sound/sof/tokens.h +6 −0
include/uapi/asm-generic/errno.h+2−0
@@ -55,6 +55,7 @@ · 54 unmodified lines
55#define EMULTIHOP 72 /* Multihop attempted */55#define EMULTIHOP 72 /* Multihop attempted */
56#define EDOTDOT 73 /* RFS specific error */56#define EDOTDOT 73 /* RFS specific error */
57#define EBADMSG 74 /* Not a data message */57#define EBADMSG 74 /* Not a data message */
58#define EFSBADCRC EBADMSG /* Bad CRC detected */
58#define EOVERFLOW 75 /* Value too large for defined data type */59#define EOVERFLOW 75 /* Value too large for defined data type */
59#define ENOTUNIQ 76 /* Name not unique on network */60#define ENOTUNIQ 76 /* Name not unique on network */
60#define EBADFD 77 /* File descriptor in bad state */61#define EBADFD 77 /* File descriptor in bad state */
@@ -98,6 +99,7 @@ · 37 unmodified lines
98#define EINPROGRESS 115 /* Operation now in progress */99#define EINPROGRESS 115 /* Operation now in progress */
99#define ESTALE 116 /* Stale file handle */100#define ESTALE 116 /* Stale file handle */
100#define EUCLEAN 117 /* Structure needs cleaning */101#define EUCLEAN 117 /* Structure needs cleaning */
102#define EFSCORRUPTED EUCLEAN /* Filesystem is corrupted */
101#define ENOTNAM 118 /* Not a XENIX named type file */103#define ENOTNAM 118 /* Not a XENIX named type file */
102#define ENAVAIL 119 /* No XENIX semaphores available */104#define ENAVAIL 119 /* No XENIX semaphores available */
103#define EISNAM 120 /* Is a named type file */105#define EISNAM 120 /* Is a named type file */
include/uapi/asm-generic/unistd.h+4−1
@@ -860,8 +860,11 @@ __SYSCALL(__NR_file_setattr, sys_file_setattr) · 859 unmodified lines
860#define __NR_listns 470860#define __NR_listns 470
861__SYSCALL(__NR_listns, sys_listns)861__SYSCALL(__NR_listns, sys_listns)
862 862
863#define __NR_rseq_slice_yield 471
864__SYSCALL(__NR_rseq_slice_yield, sys_rseq_slice_yield)
865
863#undef __NR_syscalls866#undef __NR_syscalls
864#define __NR_syscalls 471867#define __NR_syscalls 472
865 868
866/*869/*
867 * 32 bit systems traditionally used different870 * 32 bit systems traditionally used different
include/uapi/drm/amdgpu_drm.h+20−6
@@ -105,8 +105,6 @@ extern "C" { · 104 unmodified lines
105 *105 *
106 * %AMDGPU_GEM_DOMAIN_DOORBELL Doorbell. It is an MMIO region for106 * %AMDGPU_GEM_DOMAIN_DOORBELL Doorbell. It is an MMIO region for
107 * signalling user mode queues.107 * signalling user mode queues.
108 *
109 * %AMDGPU_GEM_DOMAIN_MMIO_REMAP MMIO remap page (special mapping for HDP flushing).
110 */108 */
111#define AMDGPU_GEM_DOMAIN_CPU 0x1109#define AMDGPU_GEM_DOMAIN_CPU 0x1
112#define AMDGPU_GEM_DOMAIN_GTT 0x2110#define AMDGPU_GEM_DOMAIN_GTT 0x2
@@ -115,15 +113,13 @@ extern "C" { · 2 unmodified lines
115#define AMDGPU_GEM_DOMAIN_GWS 0x10113#define AMDGPU_GEM_DOMAIN_GWS 0x10
116#define AMDGPU_GEM_DOMAIN_OA 0x20114#define AMDGPU_GEM_DOMAIN_OA 0x20
117#define AMDGPU_GEM_DOMAIN_DOORBELL 0x40115#define AMDGPU_GEM_DOMAIN_DOORBELL 0x40
118#define AMDGPU_GEM_DOMAIN_MMIO_REMAP 0x80
119#define AMDGPU_GEM_DOMAIN_MASK (AMDGPU_GEM_DOMAIN_CPU | \116#define AMDGPU_GEM_DOMAIN_MASK (AMDGPU_GEM_DOMAIN_CPU | \
120 AMDGPU_GEM_DOMAIN_GTT | \117 AMDGPU_GEM_DOMAIN_GTT | \
121 AMDGPU_GEM_DOMAIN_VRAM | \118 AMDGPU_GEM_DOMAIN_VRAM | \
122 AMDGPU_GEM_DOMAIN_GDS | \119 AMDGPU_GEM_DOMAIN_GDS | \
123 AMDGPU_GEM_DOMAIN_GWS | \120 AMDGPU_GEM_DOMAIN_GWS | \
124 AMDGPU_GEM_DOMAIN_OA | \121 AMDGPU_GEM_DOMAIN_OA | \
125 AMDGPU_GEM_DOMAIN_DOORBELL | \122 AMDGPU_GEM_DOMAIN_DOORBELL)
126 AMDGPU_GEM_DOMAIN_MMIO_REMAP)
127 123
128/* Flag that CPU access will be required for the case of VRAM domain */124/* Flag that CPU access will be required for the case of VRAM domain */
129#define AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED (1 << 0)125#define AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED (1 << 0)
@@ -883,7 +879,7 @@ struct drm_amdgpu_gem_list_handles_entry { · 753 unmodified lines
883#define AMDGPU_VM_PAGE_WRITEABLE (1 << 2)879#define AMDGPU_VM_PAGE_WRITEABLE (1 << 2)
884/* executable mapping, new for VI */880/* executable mapping, new for VI */
885#define AMDGPU_VM_PAGE_EXECUTABLE (1 << 3)881#define AMDGPU_VM_PAGE_EXECUTABLE (1 << 3)
886/* partially resident texture */882/* unmapped page of partially resident textures */
887#define AMDGPU_VM_PAGE_PRT (1 << 4)883#define AMDGPU_VM_PAGE_PRT (1 << 4)
888/* MTYPE flags use bit 5 to 8 */884/* MTYPE flags use bit 5 to 8 */
889#define AMDGPU_VM_MTYPE_MASK (0xf << 5)885#define AMDGPU_VM_MTYPE_MASK (0xf << 5)
@@ -1427,6 +1423,7 @@ struct drm_amdgpu_info_vbios { · 537 unmodified lines
1427#define AMDGPU_VRAM_TYPE_LPDDR4 111423#define AMDGPU_VRAM_TYPE_LPDDR4 11
1428#define AMDGPU_VRAM_TYPE_LPDDR5 121424#define AMDGPU_VRAM_TYPE_LPDDR5 12
1429#define AMDGPU_VRAM_TYPE_HBM3E 131425#define AMDGPU_VRAM_TYPE_HBM3E 13
1426#define AMDGPU_VRAM_TYPE_HBM4 14
1430 1427
1431struct drm_amdgpu_info_device {1428struct drm_amdgpu_info_device {
1432 /** PCI Device ID */1429 /** PCI Device ID */
@@ -1629,9 +1626,25 @@ struct drm_amdgpu_info_uq_metadata_gfx { · 196 unmodified lines
1629 __u32 csa_alignment;1626 __u32 csa_alignment;
1630};1627};
1631 1628
1629struct drm_amdgpu_info_uq_metadata_compute {
1630 /* EOP size for gfx11 */
1631 __u32 eop_size;
1632 /* EOP base virtual alignment for gfx11 */
1633 __u32 eop_alignment;
1634};
1635
1636struct drm_amdgpu_info_uq_metadata_sdma {
1637 /* context save area size for sdma6 */
1638 __u32 csa_size;
1639 /* context save area base virtual alignment for sdma6 */
1640 __u32 csa_alignment;
1641};
1642
1632struct drm_amdgpu_info_uq_metadata {1643struct drm_amdgpu_info_uq_metadata {
1633 union {1644 union {
1634 struct drm_amdgpu_info_uq_metadata_gfx gfx;1645 struct drm_amdgpu_info_uq_metadata_gfx gfx;
1646 struct drm_amdgpu_info_uq_metadata_compute compute;
1647 struct drm_amdgpu_info_uq_metadata_sdma sdma;
1635 };1648 };
1636};1649};
1637 1650
@@ -1654,6 +1667,7 @@ struct drm_amdgpu_info_uq_metadata { · 16 unmodified lines
1654#define AMDGPU_FAMILY_GC_10_3_6 149 /* GC 10.3.6 */1667#define AMDGPU_FAMILY_GC_10_3_6 149 /* GC 10.3.6 */
1655#define AMDGPU_FAMILY_GC_10_3_7 151 /* GC 10.3.7 */1668#define AMDGPU_FAMILY_GC_10_3_7 151 /* GC 10.3.7 */
1656#define AMDGPU_FAMILY_GC_11_5_0 150 /* GC 11.5.0 */1669#define AMDGPU_FAMILY_GC_11_5_0 150 /* GC 11.5.0 */
1670#define AMDGPU_FAMILY_GC_11_5_4 154 /* GC 11.5.4 */
1657#define AMDGPU_FAMILY_GC_12_0_0 152 /* GC 12.0.0 */1671#define AMDGPU_FAMILY_GC_12_0_0 152 /* GC 12.0.0 */
1658 1672
1659#if defined(__cplusplus)1673#if defined(__cplusplus)
include/uapi/drm/amdxdna_accel.h+8−0
@@ -19,6 +19,14 @@ extern "C" { · 18 unmodified lines
19#define AMDXDNA_INVALID_BO_HANDLE 019#define AMDXDNA_INVALID_BO_HANDLE 0
20#define AMDXDNA_INVALID_FENCE_HANDLE 020#define AMDXDNA_INVALID_FENCE_HANDLE 0
21 21
22/*
23 * Define hardware context priority
24 */
25#define AMDXDNA_QOS_REALTIME_PRIORITY 0x100
26#define AMDXDNA_QOS_HIGH_PRIORITY 0x180
27#define AMDXDNA_QOS_NORMAL_PRIORITY 0x200
28#define AMDXDNA_QOS_LOW_PRIORITY 0x280
29
22enum amdxdna_device_type {30enum amdxdna_device_type {
23 AMDXDNA_DEV_TYPE_UNKNOWN = -1,31 AMDXDNA_DEV_TYPE_UNKNOWN = -1,
24 AMDXDNA_DEV_TYPE_KMQ,32 AMDXDNA_DEV_TYPE_KMQ,
include/uapi/drm/panfrost_drm.h+75−1
@@ -24,6 +24,8 @@ extern "C" { · 23 unmodified lines
24#define DRM_PANFROST_SET_LABEL_BO 0x0924#define DRM_PANFROST_SET_LABEL_BO 0x09
25#define DRM_PANFROST_JM_CTX_CREATE 0x0a25#define DRM_PANFROST_JM_CTX_CREATE 0x0a
26#define DRM_PANFROST_JM_CTX_DESTROY 0x0b26#define DRM_PANFROST_JM_CTX_DESTROY 0x0b
27#define DRM_PANFROST_SYNC_BO 0x0c
28#define DRM_PANFROST_QUERY_BO_INFO 0x0d
27 29
28#define DRM_IOCTL_PANFROST_SUBMIT DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_SUBMIT, struct drm_panfrost_submit)30#define DRM_IOCTL_PANFROST_SUBMIT DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_SUBMIT, struct drm_panfrost_submit)
29#define DRM_IOCTL_PANFROST_WAIT_BO DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_WAIT_BO, struct drm_panfrost_wait_bo)31#define DRM_IOCTL_PANFROST_WAIT_BO DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_WAIT_BO, struct drm_panfrost_wait_bo)
@@ -35,6 +37,8 @@ extern "C" { · 5 unmodified lines
35#define DRM_IOCTL_PANFROST_SET_LABEL_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_SET_LABEL_BO, struct drm_panfrost_set_label_bo)37#define DRM_IOCTL_PANFROST_SET_LABEL_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_SET_LABEL_BO, struct drm_panfrost_set_label_bo)
36#define DRM_IOCTL_PANFROST_JM_CTX_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_JM_CTX_CREATE, struct drm_panfrost_jm_ctx_create)38#define DRM_IOCTL_PANFROST_JM_CTX_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_JM_CTX_CREATE, struct drm_panfrost_jm_ctx_create)
37#define DRM_IOCTL_PANFROST_JM_CTX_DESTROY DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_JM_CTX_DESTROY, struct drm_panfrost_jm_ctx_destroy)39#define DRM_IOCTL_PANFROST_JM_CTX_DESTROY DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_JM_CTX_DESTROY, struct drm_panfrost_jm_ctx_destroy)
40#define DRM_IOCTL_PANFROST_SYNC_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_SYNC_BO, struct drm_panfrost_sync_bo)
41#define DRM_IOCTL_PANFROST_QUERY_BO_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_QUERY_BO_INFO, struct drm_panfrost_query_bo_info)
38 42
39/*43/*
40 * Unstable ioctl(s): only exposed when the unsafe unstable_ioctls module44 * Unstable ioctl(s): only exposed when the unsafe unstable_ioctls module
@@ -120,9 +124,12 @@ struct drm_panfrost_wait_bo { · 79 unmodified lines
120 __s64 timeout_ns;124 __s64 timeout_ns;
121};125};
122 126
123/* Valid flags to pass to drm_panfrost_create_bo */127/* Valid flags to pass to drm_panfrost_create_bo.
128 * PANFROST_BO_WB_MMAP can't be set if PANFROST_BO_HEAP is.
129 */
124#define PANFROST_BO_NOEXEC 1130#define PANFROST_BO_NOEXEC 1
125#define PANFROST_BO_HEAP 2131#define PANFROST_BO_HEAP 2
132#define PANFROST_BO_WB_MMAP 4
126 133
127/**134/**
128 * struct drm_panfrost_create_bo - ioctl argument for creating Panfrost BOs.135 * struct drm_panfrost_create_bo - ioctl argument for creating Panfrost BOs.
@@ -228,6 +235,13 @@ enum drm_panfrost_param { · 99 unmodified lines
228 DRM_PANFROST_PARAM_SYSTEM_TIMESTAMP,235 DRM_PANFROST_PARAM_SYSTEM_TIMESTAMP,
229 DRM_PANFROST_PARAM_SYSTEM_TIMESTAMP_FREQUENCY,236 DRM_PANFROST_PARAM_SYSTEM_TIMESTAMP_FREQUENCY,
230 DRM_PANFROST_PARAM_ALLOWED_JM_CTX_PRIORITIES,237 DRM_PANFROST_PARAM_ALLOWED_JM_CTX_PRIORITIES,
238 DRM_PANFROST_PARAM_SELECTED_COHERENCY,
239};
240
241enum drm_panfrost_gpu_coherency {
242 DRM_PANFROST_GPU_COHERENCY_ACE_LITE = 0,
243 DRM_PANFROST_GPU_COHERENCY_ACE = 1,
244 DRM_PANFROST_GPU_COHERENCY_NONE = 31,
231};245};
232 246
233struct drm_panfrost_get_param {247struct drm_panfrost_get_param {
@@ -301,6 +315,66 @@ struct drm_panfrost_set_label_bo { · 67 unmodified lines
301 __u64 label;315 __u64 label;
302};316};
303 317
318/* Valid flags to pass to drm_panfrost_bo_sync_op */
319#define PANFROST_BO_SYNC_CPU_CACHE_FLUSH 0
320#define PANFROST_BO_SYNC_CPU_CACHE_FLUSH_AND_INVALIDATE 1
321
322/**
323 * struct drm_panthor_bo_flush_map_op - BO map sync op
324 */
325struct drm_panfrost_bo_sync_op {
326 /** @handle: Handle of the buffer object to sync. */
327 __u32 handle;
328
329 /** @type: Type of sync operation. */
330 __u32 type;
331
332 /**
333 * @offset: Offset into the BO at which the sync range starts.
334 *
335 * This will be rounded down to the nearest cache line as needed.
336 */
337 __u32 offset;
338
339 /**
340 * @size: Size of the range to sync
341 *
342 * @size + @offset will be rounded up to the nearest cache line as
343 * needed.
344 */
345 __u32 size;
346};
347
348/**
349 * struct drm_panfrost_sync_bo - ioctl argument for syncing BO maps
350 */
351struct drm_panfrost_sync_bo {
352 /** Array of struct drm_panfrost_bo_sync_op */
353 __u64 ops;
354
355 /** Number of BO sync ops */
356 __u32 op_count;
357
358 __u32 pad;
359};
360
361/** BO comes from a different subsystem. */
362#define DRM_PANFROST_BO_IS_IMPORTED (1 << 0)
363
364struct drm_panfrost_query_bo_info {
365 /** Handle of the object being queried. */
366 __u32 handle;
367
368 /** Extra flags that are not coming from the BO_CREATE ioctl(). */
369 __u32 extra_flags;
370
371 /** Flags passed at creation time. */
372 __u32 create_flags;
373
374 /** Will be zero on return. */
375 __u32 pad;
376};
377
304/* Definitions for coredump decoding in user space */378/* Definitions for coredump decoding in user space */
305#define PANFROSTDUMP_MAJOR 1379#define PANFROSTDUMP_MAJOR 1
306#define PANFROSTDUMP_MINOR 0380#define PANFROSTDUMP_MINOR 0
include/uapi/drm/panthor_drm.h+154−3
@@ -144,6 +144,16 @@ enum drm_panthor_ioctl_id { · 143 unmodified lines
144 * pgoff_t size.144 * pgoff_t size.
145 */145 */
146 DRM_PANTHOR_SET_USER_MMIO_OFFSET,146 DRM_PANTHOR_SET_USER_MMIO_OFFSET,
147
148 /** @DRM_PANTHOR_BO_SYNC: Sync BO data to/from the device */
149 DRM_PANTHOR_BO_SYNC,
150
151 /**
152 * @DRM_PANTHOR_BO_QUERY_INFO: Query information about a BO.
153 *
154 * This is useful for imported BOs.
155 */
156 DRM_PANTHOR_BO_QUERY_INFO,
147};157};
148 158
149/**159/**
@@ -245,6 +255,26 @@ enum drm_panthor_dev_query_type { · 95 unmodified lines
245 DRM_PANTHOR_DEV_QUERY_GROUP_PRIORITIES_INFO,255 DRM_PANTHOR_DEV_QUERY_GROUP_PRIORITIES_INFO,
246};256};
247 257
258/**
259 * enum drm_panthor_gpu_coherency: Type of GPU coherency
260 */
261enum drm_panthor_gpu_coherency {
262 /**
263 * @DRM_PANTHOR_GPU_COHERENCY_ACE_LITE: ACE Lite coherency.
264 */
265 DRM_PANTHOR_GPU_COHERENCY_ACE_LITE = 0,
266
267 /**
268 * @DRM_PANTHOR_GPU_COHERENCY_ACE: ACE coherency.
269 */
270 DRM_PANTHOR_GPU_COHERENCY_ACE = 1,
271
272 /**
273 * @DRM_PANTHOR_GPU_COHERENCY_NONE: No coherency.
274 */
275 DRM_PANTHOR_GPU_COHERENCY_NONE = 31,
276};
277
248/**278/**
249 * struct drm_panthor_gpu_info - GPU information279 * struct drm_panthor_gpu_info - GPU information
250 *280 *
@@ -301,7 +331,16 @@ struct drm_panthor_gpu_info { · 50 unmodified lines
301 */331 */
302 __u32 thread_max_barrier_size;332 __u32 thread_max_barrier_size;
303 333
304 /** @coherency_features: Coherency features. */334 /**
335 * @coherency_features: Coherency features.
336 *
337 * Combination of drm_panthor_gpu_coherency flags.
338 *
339 * Note that this is just what the coherency protocols supported by the
340 * GPU, but the actual coherency in place depends on the SoC
341 * integration and is reflected by
342 * drm_panthor_gpu_info::selected_coherency.
343 */
305 __u32 coherency_features;344 __u32 coherency_features;
306 345
307 /** @texture_features: Texture features. */346 /** @texture_features: Texture features. */
@@ -310,8 +349,12 @@ struct drm_panthor_gpu_info { · 2 unmodified lines
310 /** @as_present: Bitmask encoding the number of address-space exposed by the MMU. */349 /** @as_present: Bitmask encoding the number of address-space exposed by the MMU. */
311 __u32 as_present;350 __u32 as_present;
312 351
313 /** @pad0: MBZ. */352 /**
314 __u32 pad0;353 * @selected_coherency: Coherency selected for this device.
354 *
355 * One of drm_panthor_gpu_coherency.
356 */
357 __u32 selected_coherency;
315 358
316 /** @shader_present: Bitmask encoding the shader cores exposed by the GPU. */359 /** @shader_present: Bitmask encoding the shader cores exposed by the GPU. */
317 __u64 shader_present;360 __u64 shader_present;
@@ -638,6 +681,15 @@ struct drm_panthor_vm_get_state { · 320 unmodified lines
638enum drm_panthor_bo_flags {681enum drm_panthor_bo_flags {
639 /** @DRM_PANTHOR_BO_NO_MMAP: The buffer object will never be CPU-mapped in userspace. */682 /** @DRM_PANTHOR_BO_NO_MMAP: The buffer object will never be CPU-mapped in userspace. */
640 DRM_PANTHOR_BO_NO_MMAP = (1 << 0),683 DRM_PANTHOR_BO_NO_MMAP = (1 << 0),
684
685 /**
686 * @DRM_PANTHOR_BO_WB_MMAP: Force "Write-Back Cacheable" CPU mapping.
687 *
688 * CPU map the buffer object in userspace by forcing the "Write-Back
689 * Cacheable" cacheability attribute. The mapping otherwise uses the
690 * "Non-Cacheable" attribute if the GPU is not IO coherent.
691 */
692 DRM_PANTHOR_BO_WB_MMAP = (1 << 1),
641};693};
642 694
643/**695/**
@@ -1040,6 +1092,101 @@ struct drm_panthor_set_user_mmio_offset { · 396 unmodified lines
1040 __u64 offset;1092 __u64 offset;
1041};1093};
1042 1094
1095/**
1096 * enum drm_panthor_bo_sync_op_type - BO sync type
1097 */
1098enum drm_panthor_bo_sync_op_type {
1099 /** @DRM_PANTHOR_BO_SYNC_CPU_CACHE_FLUSH: Flush CPU caches. */
1100 DRM_PANTHOR_BO_SYNC_CPU_CACHE_FLUSH = 0,
1101
1102 /** @DRM_PANTHOR_BO_SYNC_CPU_CACHE_FLUSH_AND_INVALIDATE: Flush and invalidate CPU caches. */
1103 DRM_PANTHOR_BO_SYNC_CPU_CACHE_FLUSH_AND_INVALIDATE = 1,
1104};
1105
1106/**
1107 * struct drm_panthor_bo_sync_op - BO map sync op
1108 */
1109struct drm_panthor_bo_sync_op {
1110 /** @handle: Handle of the buffer object to sync. */
1111 __u32 handle;
1112
1113 /** @type: Type of operation. */
1114 __u32 type;
1115
1116 /**
1117 * @offset: Offset into the BO at which the sync range starts.
1118 *
1119 * This will be rounded down to the nearest cache line as needed.
1120 */
1121 __u64 offset;
1122
1123 /**
1124 * @size: Size of the range to sync
1125 *
1126 * @size + @offset will be rounded up to the nearest cache line as
1127 * needed.
1128 */
1129 __u64 size;
1130};
1131
1132/**
1133 * struct drm_panthor_bo_sync - BO map sync request
1134 */
1135struct drm_panthor_bo_sync {
1136 /**
1137 * @ops: Array of struct drm_panthor_bo_sync_op sync operations.
1138 */
1139 struct drm_panthor_obj_array ops;
1140};
1141
1142/**
1143 * enum drm_panthor_bo_extra_flags - Set of flags returned on a BO_QUERY_INFO request
1144 *
1145 * Those are flags reflecting BO properties that are not directly coming from the flags
1146 * passed are creation time, or information on BOs that were imported from other drivers.
1147 */
1148enum drm_panthor_bo_extra_flags {
1149 /**
1150 * @DRM_PANTHOR_BO_IS_IMPORTED: BO has been imported from an external driver.
1151 *
1152 * Note that imported dma-buf handles are not flagged as imported if they
1153 * where exported by panthor. Only buffers that are coming from other drivers
1154 * (dma heaps, other GPUs, display controllers, V4L, ...).
1155 *
1156 * It's also important to note that all imported BOs are mapped cached and can't
1157 * be considered IO-coherent even if the GPU is. This means they require explicit
1158 * syncs that must go through the DRM_PANTHOR_BO_SYNC ioctl (userland cache
1159 * maintenance is not allowed in that case, because extra operations might be
1160 * needed to make changes visible to the CPU/device, like buffer migration when the
1161 * exporter is a GPU with its own VRAM).
1162 */
1163 DRM_PANTHOR_BO_IS_IMPORTED = (1 << 0),
1164};
1165
1166/**
1167 * struct drm_panthor_bo_query_info - Query BO info
1168 */
1169struct drm_panthor_bo_query_info {
1170 /** @handle: Handle of the buffer object to query flags on. */
1171 __u32 handle;
1172
1173 /**
1174 * @extra_flags: Combination of enum drm_panthor_bo_extra_flags flags.
1175 */
1176 __u32 extra_flags;
1177
1178 /**
1179 * @create_flags: Flags passed at creation time.
1180 *
1181 * Combination of enum drm_panthor_bo_flags flags.
1182 * Will be zero if the buffer comes from a different driver.
1183 */
1184 __u32 create_flags;
1185
1186 /** @pad: Will be zero on return. */
1187 __u32 pad;
1188};
1189
1043/**1190/**
1044 * DRM_IOCTL_PANTHOR() - Build a Panthor IOCTL number1191 * DRM_IOCTL_PANTHOR() - Build a Panthor IOCTL number
1045 * @__access: Access type. Must be R, W or RW.1192 * @__access: Access type. Must be R, W or RW.
@@ -1086,6 +1233,10 @@ enum { · 40 unmodified lines
1086 DRM_IOCTL_PANTHOR(WR, BO_SET_LABEL, bo_set_label),1233 DRM_IOCTL_PANTHOR(WR, BO_SET_LABEL, bo_set_label),
1087 DRM_IOCTL_PANTHOR_SET_USER_MMIO_OFFSET =1234 DRM_IOCTL_PANTHOR_SET_USER_MMIO_OFFSET =
1088 DRM_IOCTL_PANTHOR(WR, SET_USER_MMIO_OFFSET, set_user_mmio_offset),1235 DRM_IOCTL_PANTHOR(WR, SET_USER_MMIO_OFFSET, set_user_mmio_offset),
1236 DRM_IOCTL_PANTHOR_BO_SYNC =
1237 DRM_IOCTL_PANTHOR(WR, BO_SYNC, bo_sync),
1238 DRM_IOCTL_PANTHOR_BO_QUERY_INFO =
1239 DRM_IOCTL_PANTHOR(WR, BO_QUERY_INFO, bo_query_info),
1089};1240};
1090 1241
1091#if defined(__cplusplus)1242#if defined(__cplusplus)
include/uapi/drm/rocket_accel.h+74−24
@@ -26,20 +26,27 @@ extern "C" { · 25 unmodified lines
26 *26 *
27 */27 */
28struct drm_rocket_create_bo {28struct drm_rocket_create_bo {
29 /** Input: Size of the requested BO. */29 /**
30 * @size: Input: Size of the requested BO.
31 */
30 __u32 size;32 __u32 size;
31 33
32 /** Output: GEM handle for the BO. */34 /**
35 * @handle: Output: GEM handle for the BO.
36 */
33 __u32 handle;37 __u32 handle;
34 38
35 /**39 /**
36 * Output: DMA address for the BO in the NPU address space. This address40 * @dma_address: Output: DMA address for the BO in the NPU address
37 * is private to the DRM fd and is valid for the lifetime of the GEM41 * space. This address is private to the DRM fd and is valid for
38 * handle.42 * the lifetime of the GEM handle.
39 */43 */
40 __u64 dma_address;44 __u64 dma_address;
41 45
42 /** Output: Offset into the drm node to use for subsequent mmap call. */46 /**
47 * @offset: Output: Offset into the drm node to use for subsequent
48 * mmap call.
49 */
43 __u64 offset;50 __u64 offset;
44};51};
45 52
@@ -50,13 +57,19 @@ struct drm_rocket_create_bo { · 4 unmodified lines
50 * synchronization.57 * synchronization.
51 */58 */
52struct drm_rocket_prep_bo {59struct drm_rocket_prep_bo {
53 /** Input: GEM handle of the buffer object. */60 /**
61 * @handle: Input: GEM handle of the buffer object.
62 */
54 __u32 handle;63 __u32 handle;
55 64
56 /** Reserved, must be zero. */65 /**
66 * @reserved: Reserved, must be zero.
67 */
57 __u32 reserved;68 __u32 reserved;
58 69
59 /** Input: Amount of time to wait for NPU jobs. */70 /**
71 * @timeout_ns: Input: Amount of time to wait for NPU jobs.
72 */
60 __s64 timeout_ns;73 __s64 timeout_ns;
61};74};
62 75
@@ -66,10 +79,14 @@ struct drm_rocket_prep_bo { · 3 unmodified lines
66 * Synchronize caches for NPU access.79 * Synchronize caches for NPU access.
67 */80 */
68struct drm_rocket_fini_bo {81struct drm_rocket_fini_bo {
69 /** Input: GEM handle of the buffer object. */82 /**
83 * @handle: Input: GEM handle of the buffer object.
84 */
70 __u32 handle;85 __u32 handle;
71 86
72 /** Reserved, must be zero. */87 /**
88 * @reserved: Reserved, must be zero.
89 */
73 __u32 reserved;90 __u32 reserved;
74};91};
75 92
@@ -79,10 +96,15 @@ struct drm_rocket_fini_bo { · 3 unmodified lines
79 * A task is the smallest unit of work that can be run on the NPU.96 * A task is the smallest unit of work that can be run on the NPU.
80 */97 */
81struct drm_rocket_task {98struct drm_rocket_task {
82 /** Input: DMA address to NPU mapping of register command buffer */99 /**
100 * @regcmd: Input: DMA address to NPU mapping of register command buffer
101 */
83 __u32 regcmd;102 __u32 regcmd;
84 103
85 /** Input: Number of commands in the register command buffer */104 /**
105 * @regcmd_count: Input: Number of commands in the register command
106 * buffer
107 */
86 __u32 regcmd_count;108 __u32 regcmd_count;
87};109};
88 110
@@ -94,25 +116,44 @@ struct drm_rocket_task { · 5 unmodified lines
94 * sequentially on the same core, to benefit from memory residency in SRAM.116 * sequentially on the same core, to benefit from memory residency in SRAM.
95 */117 */
96struct drm_rocket_job {118struct drm_rocket_job {
97 /** Input: Pointer to an array of struct drm_rocket_task. */119 /**
120 * @tasks: Input: Pointer to an array of struct drm_rocket_task.
121 */
98 __u64 tasks;122 __u64 tasks;
99 123
100 /** Input: Pointer to a u32 array of the BOs that are read by the job. */124 /**
125 * @in_bo_handles: Input: Pointer to a u32 array of the BOs that
126 * are read by the job.
127 */
101 __u64 in_bo_handles;128 __u64 in_bo_handles;
102 129
103 /** Input: Pointer to a u32 array of the BOs that are written to by the job. */130 /**
131 * @out_bo_handles: Input: Pointer to a u32 array of the BOs that
132 * are written to by the job.
133 */
104 __u64 out_bo_handles;134 __u64 out_bo_handles;
105 135
106 /** Input: Number of tasks passed in. */136 /**
137 * @task_count: Input: Number of tasks passed in.
138 */
107 __u32 task_count;139 __u32 task_count;
108 140
109 /** Input: Size in bytes of the structs in the @tasks field. */141 /**
142 * @task_struct_size: Input: Size in bytes of the structs in the
143 * @tasks field.
144 */
110 __u32 task_struct_size;145 __u32 task_struct_size;
111 146
112 /** Input: Number of input BO handles passed in (size is that times 4). */147 /**
148 * @in_bo_handle_count: Input: Number of input BO handles passed in
149 * (size is that times 4).
150 */
113 __u32 in_bo_handle_count;151 __u32 in_bo_handle_count;
114 152
115 /** Input: Number of output BO handles passed in (size is that times 4). */153 /**
154 * @out_bo_handle_count: Input: Number of output BO handles passed in
155 * (size is that times 4).
156 */
116 __u32 out_bo_handle_count;157 __u32 out_bo_handle_count;
117};158};
118 159
@@ -122,16 +163,25 @@ struct drm_rocket_job { · 3 unmodified lines
122 * The kernel will schedule the execution of these jobs in dependency order.163 * The kernel will schedule the execution of these jobs in dependency order.
123 */164 */
124struct drm_rocket_submit {165struct drm_rocket_submit {
125 /** Input: Pointer to an array of struct drm_rocket_job. */166 /**
167 * @jobs: Input: Pointer to an array of struct drm_rocket_job.
168 */
126 __u64 jobs;169 __u64 jobs;
127 170
128 /** Input: Number of jobs passed in. */171 /**
172 * @job_count: Input: Number of jobs passed in.
173 */
129 __u32 job_count;174 __u32 job_count;
130 175
131 /** Input: Size in bytes of the structs in the @jobs field. */176 /**
177 * @job_struct_size: Input: Size in bytes of the structs in the
178 * @jobs field.
179 */
132 __u32 job_struct_size;180 __u32 job_struct_size;
133 181
134 /** Reserved, must be zero. */182 /**
183 * @reserved: Reserved, must be zero.
184 */
135 __u64 reserved;185 __u64 reserved;
136};186};
137 187
include/uapi/drm/xe_drm.h+89−6
@@ -106,6 +106,7 @@ extern "C" { · 105 unmodified lines
106#define DRM_XE_OBSERVATION 0x0b106#define DRM_XE_OBSERVATION 0x0b
107#define DRM_XE_MADVISE 0x0c107#define DRM_XE_MADVISE 0x0c
108#define DRM_XE_VM_QUERY_MEM_RANGE_ATTRS 0x0d108#define DRM_XE_VM_QUERY_MEM_RANGE_ATTRS 0x0d
109#define DRM_XE_EXEC_QUEUE_SET_PROPERTY 0x0e
109 110
110/* Must be kept compact -- no holes */111/* Must be kept compact -- no holes */
111 112
@@ -123,6 +124,7 @@ extern "C" { · 11 unmodified lines
123#define DRM_IOCTL_XE_OBSERVATION DRM_IOW(DRM_COMMAND_BASE + DRM_XE_OBSERVATION, struct drm_xe_observation_param)124#define DRM_IOCTL_XE_OBSERVATION DRM_IOW(DRM_COMMAND_BASE + DRM_XE_OBSERVATION, struct drm_xe_observation_param)
124#define DRM_IOCTL_XE_MADVISE DRM_IOW(DRM_COMMAND_BASE + DRM_XE_MADVISE, struct drm_xe_madvise)125#define DRM_IOCTL_XE_MADVISE DRM_IOW(DRM_COMMAND_BASE + DRM_XE_MADVISE, struct drm_xe_madvise)
125#define DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_VM_QUERY_MEM_RANGE_ATTRS, struct drm_xe_vm_query_mem_range_attr)126#define DRM_IOCTL_XE_VM_QUERY_MEM_RANGE_ATTRS DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_VM_QUERY_MEM_RANGE_ATTRS, struct drm_xe_vm_query_mem_range_attr)
127#define DRM_IOCTL_XE_EXEC_QUEUE_SET_PROPERTY DRM_IOW(DRM_COMMAND_BASE + DRM_XE_EXEC_QUEUE_SET_PROPERTY, struct drm_xe_exec_queue_set_property)
126 128
127/**129/**
128 * DOC: Xe IOCTL Extensions130 * DOC: Xe IOCTL Extensions
@@ -210,8 +212,12 @@ struct drm_xe_ext_set_property { · 81 unmodified lines
210 /** @pad: MBZ */212 /** @pad: MBZ */
211 __u32 pad;213 __u32 pad;
212 214
213 /** @value: property value */215 union {
214 __u64 value;216 /** @value: property value */
217 __u64 value;
218 /** @ptr: pointer to user value */
219 __u64 ptr;
220 };
215 221
216 /** @reserved: Reserved */222 /** @reserved: Reserved */
217 __u64 reserved[2];223 __u64 reserved[2];
@@ -403,6 +409,9 @@ struct drm_xe_query_mem_regions { · 185 unmodified lines
403 * has low latency hint support409 * has low latency hint support
404 * - %DRM_XE_QUERY_CONFIG_FLAG_HAS_CPU_ADDR_MIRROR - Flag is set if the410 * - %DRM_XE_QUERY_CONFIG_FLAG_HAS_CPU_ADDR_MIRROR - Flag is set if the
405 * device has CPU address mirroring support411 * device has CPU address mirroring support
412 * - %DRM_XE_QUERY_CONFIG_FLAG_HAS_NO_COMPRESSION_HINT - Flag is set if the
413 * device supports the userspace hint %DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION.
414 * This is exposed only on Xe2+.
406 * - %DRM_XE_QUERY_CONFIG_MIN_ALIGNMENT - Minimal memory alignment415 * - %DRM_XE_QUERY_CONFIG_MIN_ALIGNMENT - Minimal memory alignment
407 * required by this device, typically SZ_4K or SZ_64K416 * required by this device, typically SZ_4K or SZ_64K
408 * - %DRM_XE_QUERY_CONFIG_VA_BITS - Maximum bits of a virtual address417 * - %DRM_XE_QUERY_CONFIG_VA_BITS - Maximum bits of a virtual address
@@ -421,6 +430,7 @@ struct drm_xe_query_config { · 12 unmodified lines
421 #define DRM_XE_QUERY_CONFIG_FLAG_HAS_VRAM (1 << 0)430 #define DRM_XE_QUERY_CONFIG_FLAG_HAS_VRAM (1 << 0)
422 #define DRM_XE_QUERY_CONFIG_FLAG_HAS_LOW_LATENCY (1 << 1)431 #define DRM_XE_QUERY_CONFIG_FLAG_HAS_LOW_LATENCY (1 << 1)
423 #define DRM_XE_QUERY_CONFIG_FLAG_HAS_CPU_ADDR_MIRROR (1 << 2)432 #define DRM_XE_QUERY_CONFIG_FLAG_HAS_CPU_ADDR_MIRROR (1 << 2)
433 #define DRM_XE_QUERY_CONFIG_FLAG_HAS_NO_COMPRESSION_HINT (1 << 3)
424#define DRM_XE_QUERY_CONFIG_MIN_ALIGNMENT 2434#define DRM_XE_QUERY_CONFIG_MIN_ALIGNMENT 2
425#define DRM_XE_QUERY_CONFIG_VA_BITS 3435#define DRM_XE_QUERY_CONFIG_VA_BITS 3
426#define DRM_XE_QUERY_CONFIG_MAX_EXEC_QUEUE_PRIORITY 4436#define DRM_XE_QUERY_CONFIG_MAX_EXEC_QUEUE_PRIORITY 4
@@ -791,6 +801,17 @@ struct drm_xe_device_query { · 364 unmodified lines
791 * need to use VRAM for display surfaces, therefore the kernel requires801 * need to use VRAM for display surfaces, therefore the kernel requires
792 * setting this flag for such objects, otherwise an error is thrown on802 * setting this flag for such objects, otherwise an error is thrown on
793 * small-bar systems.803 * small-bar systems.
804 * - %DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION - Allows userspace to
805 * hint that compression (CCS) should be disabled for the buffer being
806 * created. This can avoid unnecessary memory operations and CCS state
807 * management.
808 * On pre-Xe2 platforms, this flag is currently rejected as compression
809 * control is not supported via PAT index. On Xe2+ platforms, compression
810 * is controlled via PAT entries. If this flag is set, the driver will reject
811 * any VM bind that requests a PAT index enabling compression for this BO.
812 * Note: On dGPU platforms, there is currently no change in behavior with
813 * this flag, but future improvements may leverage it. The current benefit is
814 * primarily applicable to iGPU platforms.
794 *815 *
795 * @cpu_caching supports the following values:816 * @cpu_caching supports the following values:
796 * - %DRM_XE_GEM_CPU_CACHING_WB - Allocate the pages with write-back817 * - %DRM_XE_GEM_CPU_CACHING_WB - Allocate the pages with write-back
@@ -837,6 +858,7 @@ struct drm_xe_gem_create { · 40 unmodified lines
837#define DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING (1 << 0)858#define DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING (1 << 0)
838#define DRM_XE_GEM_CREATE_FLAG_SCANOUT (1 << 1)859#define DRM_XE_GEM_CREATE_FLAG_SCANOUT (1 << 1)
839#define DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM (1 << 2)860#define DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM (1 << 2)
861#define DRM_XE_GEM_CREATE_FLAG_NO_COMPRESSION (1 << 3)
840 /**862 /**
841 * @flags: Flags, currently a mask of memory instances of where BO can863 * @flags: Flags, currently a mask of memory instances of where BO can
842 * be placed864 * be placed
@@ -1252,6 +1274,17 @@ struct drm_xe_vm_bind { · 409 unmodified lines
1252 * Given that going into a power-saving state kills PXP HWDRM sessions,1274 * Given that going into a power-saving state kills PXP HWDRM sessions,
1253 * runtime PM will be blocked while queues of this type are alive.1275 * runtime PM will be blocked while queues of this type are alive.
1254 * All PXP queues will be killed if a PXP invalidation event occurs.1276 * All PXP queues will be killed if a PXP invalidation event occurs.
1277 * - %DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_GROUP - Create a multi-queue group
1278 * or add secondary queues to a multi-queue group.
1279 * If the extension's 'value' field has %DRM_XE_MULTI_GROUP_CREATE flag set,
1280 * then a new multi-queue group is created with this queue as the primary queue
1281 * (Q0). Otherwise, the queue gets added to the multi-queue group whose primary
1282 * queue's exec_queue_id is specified in the lower 32 bits of the 'value' field.
1283 * All the other non-relevant bits of extension's 'value' field while adding the
1284 * primary or the secondary queues of the group must be set to 0.
1285 * - %DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE_PRIORITY - Set the queue
1286 * priority within the multi-queue group. Current valid priority values are 0–2
1287 * (default is 1), with higher values indicating higher priority.
1255 *1288 *
1256 * The example below shows how to use @drm_xe_exec_queue_create to create1289 * The example below shows how to use @drm_xe_exec_queue_create to create
1257 * a simple exec_queue (no parallel submission) of class1290 * a simple exec_queue (no parallel submission) of class
@@ -1292,6 +1325,10 @@ struct drm_xe_exec_queue_create { · 34 unmodified lines
1292#define DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY 01325#define DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY 0
1293#define DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE 11326#define DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE 1
1294#define DRM_XE_EXEC_QUEUE_SET_PROPERTY_PXP_TYPE 21327#define DRM_XE_EXEC_QUEUE_SET_PROPERTY_PXP_TYPE 2
1328#define DRM_XE_EXEC_QUEUE_SET_HANG_REPLAY_STATE 3
1329#define DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_GROUP 4
1330#define DRM_XE_MULTI_GROUP_CREATE (1ull << 63)
1331#define DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE_PRIORITY 5
1295 /** @extensions: Pointer to the first extension struct, if any */1332 /** @extensions: Pointer to the first extension struct, if any */
1296 __u64 extensions;1333 __u64 extensions;
1297 1334
@@ -1655,6 +1692,9 @@ enum drm_xe_oa_unit_type { · 357 unmodified lines
1655 1692
1656 /** @DRM_XE_OA_UNIT_TYPE_OAM_SAG: OAM_SAG OA unit */1693 /** @DRM_XE_OA_UNIT_TYPE_OAM_SAG: OAM_SAG OA unit */
1657 DRM_XE_OA_UNIT_TYPE_OAM_SAG,1694 DRM_XE_OA_UNIT_TYPE_OAM_SAG,
1695
1696 /** @DRM_XE_OA_UNIT_TYPE_MERT: MERT OA unit */
1697 DRM_XE_OA_UNIT_TYPE_MERT,
1658};1698};
1659 1699
1660/**1700/**
@@ -1677,12 +1717,19 @@ struct drm_xe_oa_unit { · 16 unmodified lines
1677#define DRM_XE_OA_CAPS_OA_BUFFER_SIZE (1 << 2)1717#define DRM_XE_OA_CAPS_OA_BUFFER_SIZE (1 << 2)
1678#define DRM_XE_OA_CAPS_WAIT_NUM_REPORTS (1 << 3)1718#define DRM_XE_OA_CAPS_WAIT_NUM_REPORTS (1 << 3)
1679#define DRM_XE_OA_CAPS_OAM (1 << 4)1719#define DRM_XE_OA_CAPS_OAM (1 << 4)
1720#define DRM_XE_OA_CAPS_OA_UNIT_GT_ID (1 << 5)
1680 1721
1681 /** @oa_timestamp_freq: OA timestamp freq */1722 /** @oa_timestamp_freq: OA timestamp freq */
1682 __u64 oa_timestamp_freq;1723 __u64 oa_timestamp_freq;
1683 1724
1725 /** @gt_id: gt id for this OA unit */
1726 __u16 gt_id;
1727
1728 /** @reserved1: MBZ */
1729 __u16 reserved1[3];
1730
1684 /** @reserved: MBZ */1731 /** @reserved: MBZ */
1685 __u64 reserved[4];1732 __u64 reserved[3];
1686 1733
1687 /** @num_engines: number of engines in @eci array */1734 /** @num_engines: number of engines in @eci array */
1688 __u64 num_engines;1735 __u64 num_engines;
@@ -2072,7 +2119,13 @@ struct drm_xe_madvise { · 383 unmodified lines
2072 struct {2119 struct {
2073#define DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE 02120#define DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE 0
2074#define DRM_XE_PREFERRED_LOC_DEFAULT_SYSTEM -12121#define DRM_XE_PREFERRED_LOC_DEFAULT_SYSTEM -1
2075 /** @preferred_mem_loc.devmem_fd: fd for preferred loc */2122 /**
2123 * @preferred_mem_loc.devmem_fd:
2124 * Device file-descriptor of the device where the
2125 * preferred memory is located, or one of the
2126 * above special values. Please also see
2127 * @preferred_mem_loc.region_instance below.
2128 */
2076 __u32 devmem_fd;2129 __u32 devmem_fd;
2077 2130
2078#define DRM_XE_MIGRATE_ALL_PAGES 02131#define DRM_XE_MIGRATE_ALL_PAGES 0
@@ -2080,8 +2133,14 @@ struct drm_xe_madvise { · 1 unmodified line
2080 /** @preferred_mem_loc.migration_policy: Page migration policy */2133 /** @preferred_mem_loc.migration_policy: Page migration policy */
2081 __u16 migration_policy;2134 __u16 migration_policy;
2082 2135
2083 /** @preferred_mem_loc.pad : MBZ */2136 /**
2084 __u16 pad;2137 * @preferred_mem_loc.region_instance : Region instance.
2138 * MBZ if @devmem_fd <= &DRM_XE_PREFERRED_LOC_DEFAULT_DEVICE.
2139 * Otherwise should point to the desired device
2140 * VRAM instance of the device indicated by
2141 * @preferred_mem_loc.devmem_fd.
2142 */
2143 __u16 region_instance;
2085 2144
2086 /** @preferred_mem_loc.reserved : Reserved */2145 /** @preferred_mem_loc.reserved : Reserved */
2087 __u64 reserved;2146 __u64 reserved;
@@ -2274,6 +2333,30 @@ struct drm_xe_vm_query_mem_range_attr { · 186 unmodified lines
2274 2333
2275};2334};
2276 2335
2336/**
2337 * struct drm_xe_exec_queue_set_property - exec queue set property
2338 *
2339 * Sets execution queue properties dynamically.
2340 * Currently only %DRM_XE_EXEC_QUEUE_SET_PROPERTY_MULTI_QUEUE_PRIORITY
2341 * property can be dynamically set.
2342 */
2343struct drm_xe_exec_queue_set_property {
2344 /** @extensions: Pointer to the first extension struct, if any */
2345 __u64 extensions;
2346
2347 /** @exec_queue_id: Exec queue ID */
2348 __u32 exec_queue_id;
2349
2350 /** @property: property to set */
2351 __u32 property;
2352
2353 /** @value: property value */
2354 __u64 value;
2355
2356 /** @reserved: Reserved */
2357 __u64 reserved[2];
2358};
2359
2277#if defined(__cplusplus)2360#if defined(__cplusplus)
2278}2361}
2279#endif2362#endif
include/uapi/linux/android/binder.h+1−1
@@ -278,7 +278,7 @@ enum { · 277 unmodified lines
278 * NOTE: Two special error codes you should check for when calling278 * NOTE: Two special error codes you should check for when calling
279 * in to the driver are:279 * in to the driver are:
280 *280 *
281 * EINTR -- The operation has been interupted. This should be281 * EINTR -- The operation has been interrupted. This should be
282 * handled by retrying the ioctl() until a different error code282 * handled by retrying the ioctl() until a different error code
283 * is returned.283 * is returned.
284 *284 *
include/uapi/linux/blkzoned.h+4−2
@@ -81,7 +81,8 @@ enum blk_zone_cond { · 80 unmodified lines
81 BLK_ZONE_COND_FULL = 0xE,81 BLK_ZONE_COND_FULL = 0xE,
82 BLK_ZONE_COND_OFFLINE = 0xF,82 BLK_ZONE_COND_OFFLINE = 0xF,
83 83
84 BLK_ZONE_COND_ACTIVE = 0xFF,84 BLK_ZONE_COND_ACTIVE = 0xFF, /* added in Linux 6.19 */
85#define BLK_ZONE_COND_ACTIVE BLK_ZONE_COND_ACTIVE
85};86};
86 87
87/**88/**
@@ -100,7 +101,8 @@ enum blk_zone_report_flags { · 12 unmodified lines
100 BLK_ZONE_REP_CAPACITY = (1U << 0),101 BLK_ZONE_REP_CAPACITY = (1U << 0),
101 102
102 /* Input flags */103 /* Input flags */
103 BLK_ZONE_REP_CACHED = (1U << 31),104 BLK_ZONE_REP_CACHED = (1U << 31), /* added in Linux 6.19 */
105#define BLK_ZONE_REP_CACHED BLK_ZONE_REP_CACHED
104};106};
105 107
106/**108/**
include/uapi/linux/bpf.h+28−0
@@ -119,6 +119,14 @@ enum bpf_cgroup_iter_order { · 118 unmodified lines
119 BPF_CGROUP_ITER_DESCENDANTS_PRE, /* walk descendants in pre-order. */119 BPF_CGROUP_ITER_DESCENDANTS_PRE, /* walk descendants in pre-order. */
120 BPF_CGROUP_ITER_DESCENDANTS_POST, /* walk descendants in post-order. */120 BPF_CGROUP_ITER_DESCENDANTS_POST, /* walk descendants in post-order. */
121 BPF_CGROUP_ITER_ANCESTORS_UP, /* walk ancestors upward. */121 BPF_CGROUP_ITER_ANCESTORS_UP, /* walk ancestors upward. */
122 /*
123 * Walks the immediate children of the specified parent
124 * cgroup_subsys_state. Unlike BPF_CGROUP_ITER_DESCENDANTS_PRE,
125 * BPF_CGROUP_ITER_DESCENDANTS_POST, and BPF_CGROUP_ITER_ANCESTORS_UP
126 * the iterator does not include the specified parent as one of the
127 * returned iterator elements.
128 */
129 BPF_CGROUP_ITER_CHILDREN,
122};130};
123 131
124union bpf_iter_link_info {132union bpf_iter_link_info {
@@ -918,6 +926,16 @@ union bpf_iter_link_info { · 793 unmodified lines
918 * Number of bytes read from the stream on success, or -1 if an926 * Number of bytes read from the stream on success, or -1 if an
919 * error occurred (in which case, *errno* is set appropriately).927 * error occurred (in which case, *errno* is set appropriately).
920 *928 *
929 * BPF_PROG_ASSOC_STRUCT_OPS
930 * Description
931 * Associate a BPF program with a struct_ops map. The struct_ops
932 * map is identified by *map_fd* and the BPF program is
933 * identified by *prog_fd*.
934 *
935 * Return
936 * 0 on success or -1 if an error occurred (in which case,
937 * *errno* is set appropriately).
938 *
921 * NOTES939 * NOTES
922 * eBPF objects (maps and programs) can be shared between processes.940 * eBPF objects (maps and programs) can be shared between processes.
923 *941 *
@@ -974,6 +992,7 @@ enum bpf_cmd { · 50 unmodified lines
974 BPF_PROG_BIND_MAP,992 BPF_PROG_BIND_MAP,
975 BPF_TOKEN_CREATE,993 BPF_TOKEN_CREATE,
976 BPF_PROG_STREAM_READ_BY_FD,994 BPF_PROG_STREAM_READ_BY_FD,
995 BPF_PROG_ASSOC_STRUCT_OPS,
977 __MAX_BPF_CMD,996 __MAX_BPF_CMD,
978};997};
979 998
@@ -1134,6 +1153,7 @@ enum bpf_attach_type { · 154 unmodified lines
1134 BPF_NETKIT_PEER,1153 BPF_NETKIT_PEER,
1135 BPF_TRACE_KPROBE_SESSION,1154 BPF_TRACE_KPROBE_SESSION,
1136 BPF_TRACE_UPROBE_SESSION,1155 BPF_TRACE_UPROBE_SESSION,
1156 BPF_TRACE_FSESSION,
1137 __MAX_BPF_ATTACH_TYPE1157 __MAX_BPF_ATTACH_TYPE
1138};1158};
1139 1159
@@ -1373,6 +1393,8 @@ enum { · 233 unmodified lines
1373 BPF_NOEXIST = 1, /* create new element if it didn't exist */1393 BPF_NOEXIST = 1, /* create new element if it didn't exist */
1374 BPF_EXIST = 2, /* update existing element */1394 BPF_EXIST = 2, /* update existing element */
1375 BPF_F_LOCK = 4, /* spin_lock-ed map_lookup/map_update */1395 BPF_F_LOCK = 4, /* spin_lock-ed map_lookup/map_update */
1396 BPF_F_CPU = 8, /* cpu flag for percpu maps, upper 32-bit of flags is a cpu number */
1397 BPF_F_ALL_CPUS = 16, /* update value across all CPUs for percpu maps */
1376};1398};
1377 1399
1378/* flags for BPF_MAP_CREATE command */1400/* flags for BPF_MAP_CREATE command */
@@ -1894,6 +1916,12 @@ union bpf_attr { · 515 unmodified lines
1894 __u32 prog_fd;1916 __u32 prog_fd;
1895 } prog_stream_read;1917 } prog_stream_read;
1896 1918
1919 struct {
1920 __u32 map_fd;
1921 __u32 prog_fd;
1922 __u32 flags;
1923 } prog_assoc_struct_ops;
1924
1897} __attribute__((aligned(8)));1925} __attribute__((aligned(8)));
1898 1926
1899/* The description below is an attempt at providing documentation to eBPF1927/* The description below is an attempt at providing documentation to eBPF
include/uapi/linux/btrfs.h+1−0
@@ -336,6 +336,7 @@ struct btrfs_ioctl_fs_info_args { · 335 unmodified lines
336#define BTRFS_FEATURE_INCOMPAT_EXTENT_TREE_V2 (1ULL << 13)336#define BTRFS_FEATURE_INCOMPAT_EXTENT_TREE_V2 (1ULL << 13)
337#define BTRFS_FEATURE_INCOMPAT_RAID_STRIPE_TREE (1ULL << 14)337#define BTRFS_FEATURE_INCOMPAT_RAID_STRIPE_TREE (1ULL << 14)
338#define BTRFS_FEATURE_INCOMPAT_SIMPLE_QUOTA (1ULL << 16)338#define BTRFS_FEATURE_INCOMPAT_SIMPLE_QUOTA (1ULL << 16)
339#define BTRFS_FEATURE_INCOMPAT_REMAP_TREE (1ULL << 17)
339 340
340struct btrfs_ioctl_feature_flags {341struct btrfs_ioctl_feature_flags {
341 __u64 compat_flags;342 __u64 compat_flags;
include/uapi/linux/btrfs_tree.h+32−2
@@ -76,6 +76,9 @@ · 75 unmodified lines
76/* Tracks RAID stripes in block groups. */76/* Tracks RAID stripes in block groups. */
77#define BTRFS_RAID_STRIPE_TREE_OBJECTID 12ULL77#define BTRFS_RAID_STRIPE_TREE_OBJECTID 12ULL
78 78
79/* Holds details of remapped addresses after relocation. */
80#define BTRFS_REMAP_TREE_OBJECTID 13ULL
81
79/* device stats in the device tree */82/* device stats in the device tree */
80#define BTRFS_DEV_STATS_OBJECTID 0ULL83#define BTRFS_DEV_STATS_OBJECTID 0ULL
81 84
@@ -282,6 +285,10 @@ · 200 unmodified lines
282 285
283#define BTRFS_RAID_STRIPE_KEY 230286#define BTRFS_RAID_STRIPE_KEY 230
284 287
288#define BTRFS_IDENTITY_REMAP_KEY 234
289#define BTRFS_REMAP_KEY 235
290#define BTRFS_REMAP_BACKREF_KEY 236
291
285/*292/*
286 * Records the overall state of the qgroups.293 * Records the overall state of the qgroups.
287 * There's only one instance of this key present,294 * There's only one instance of this key present,
@@ -714,9 +721,12 @@ struct btrfs_super_block { · 426 unmodified lines
714 __u8 metadata_uuid[BTRFS_FSID_SIZE];721 __u8 metadata_uuid[BTRFS_FSID_SIZE];
715 722
716 __u64 nr_global_roots;723 __u64 nr_global_roots;
724 __le64 remap_root;
725 __le64 remap_root_generation;
726 __u8 remap_root_level;
717 727
718 /* Future expansion */728 /* Future expansion */
719 __le64 reserved[27];729 __u8 reserved[199];
720 __u8 sys_chunk_array[BTRFS_SYSTEM_CHUNK_ARRAY_SIZE];730 __u8 sys_chunk_array[BTRFS_SYSTEM_CHUNK_ARRAY_SIZE];
721 struct btrfs_root_backup super_roots[BTRFS_NUM_BACKUP_ROOTS];731 struct btrfs_root_backup super_roots[BTRFS_NUM_BACKUP_ROOTS];
722 732
@@ -1161,12 +1171,15 @@ struct btrfs_dev_replace_item { · 438 unmodified lines
1161#define BTRFS_BLOCK_GROUP_RAID6 (1ULL << 8)1171#define BTRFS_BLOCK_GROUP_RAID6 (1ULL << 8)
1162#define BTRFS_BLOCK_GROUP_RAID1C3 (1ULL << 9)1172#define BTRFS_BLOCK_GROUP_RAID1C3 (1ULL << 9)
1163#define BTRFS_BLOCK_GROUP_RAID1C4 (1ULL << 10)1173#define BTRFS_BLOCK_GROUP_RAID1C4 (1ULL << 10)
1174#define BTRFS_BLOCK_GROUP_REMAPPED (1ULL << 11)
1175#define BTRFS_BLOCK_GROUP_METADATA_REMAP (1ULL << 12)
1164#define BTRFS_BLOCK_GROUP_RESERVED (BTRFS_AVAIL_ALLOC_BIT_SINGLE | \1176#define BTRFS_BLOCK_GROUP_RESERVED (BTRFS_AVAIL_ALLOC_BIT_SINGLE | \
1165 BTRFS_SPACE_INFO_GLOBAL_RSV)1177 BTRFS_SPACE_INFO_GLOBAL_RSV)
1166 1178
1167#define BTRFS_BLOCK_GROUP_TYPE_MASK (BTRFS_BLOCK_GROUP_DATA | \1179#define BTRFS_BLOCK_GROUP_TYPE_MASK (BTRFS_BLOCK_GROUP_DATA | \
1168 BTRFS_BLOCK_GROUP_SYSTEM | \1180 BTRFS_BLOCK_GROUP_SYSTEM | \
1169 BTRFS_BLOCK_GROUP_METADATA)1181 BTRFS_BLOCK_GROUP_METADATA | \
1182 BTRFS_BLOCK_GROUP_METADATA_REMAP)
1170 1183
1171#define BTRFS_BLOCK_GROUP_PROFILE_MASK (BTRFS_BLOCK_GROUP_RAID0 | \1184#define BTRFS_BLOCK_GROUP_PROFILE_MASK (BTRFS_BLOCK_GROUP_RAID0 | \
1172 BTRFS_BLOCK_GROUP_RAID1 | \1185 BTRFS_BLOCK_GROUP_RAID1 | \
@@ -1219,6 +1232,14 @@ struct btrfs_block_group_item { · 46 unmodified lines
1219 __le64 flags;1232 __le64 flags;
1220} __attribute__ ((__packed__));1233} __attribute__ ((__packed__));
1221 1234
1235struct btrfs_block_group_item_v2 {
1236 __le64 used;
1237 __le64 chunk_objectid;
1238 __le64 flags;
1239 __le64 remap_bytes;
1240 __le32 identity_remap_count;
1241} __attribute__ ((__packed__));
1242
1222struct btrfs_free_space_info {1243struct btrfs_free_space_info {
1223 __le32 extent_count;1244 __le32 extent_count;
1224 __le32 flags;1245 __le32 flags;
@@ -1323,4 +1344,13 @@ struct btrfs_verity_descriptor_item { · 98 unmodified lines
1323 __u8 encryption;1344 __u8 encryption;
1324} __attribute__ ((__packed__));1345} __attribute__ ((__packed__));
1325 1346
1347/*
1348 * For a range identified by a BTRFS_REMAP_KEY item in the remap tree, gives
1349 * the address that the start of the range will get remapped to. This
1350 * structure is also shared by BTRFS_REMAP_BACKREF_KEY.
1351 */
1352struct btrfs_remap_item {
1353 __le64 address;
1354} __attribute__ ((__packed__));
1355
1326#endif /* _BTRFS_CTREE_H_ */1356#endif /* _BTRFS_CTREE_H_ */
include/uapi/linux/comedi.h+1−1
@@ -640,7 +640,7 @@ struct comedi_chaninfo { · 639 unmodified lines
640 640
641/**641/**
642 * struct comedi_rangeinfo - used to retrieve the range table for a channel642 * struct comedi_rangeinfo - used to retrieve the range table for a channel
643 * @range_type: Encodes subdevice index (bits 27:24), channel index643 * @range_type: Encodes subdevice index (bits 31:24), channel index
644 * (bits 23:16) and range table length (bits 15:0).644 * (bits 23:16) and range table length (bits 15:0).
645 * @range_ptr: Pointer to array of @struct comedi_krange to be filled645 * @range_ptr: Pointer to array of @struct comedi_krange to be filled
646 * in with the range table for the channel or subdevice.646 * in with the range table for the channel or subdevice.
include/uapi/linux/dev_energymodel.h+82−0
@@ -0,0 +1,82 @@
1/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
2/* Do not edit directly, auto-generated from: */
3/* Documentation/netlink/specs/dev-energymodel.yaml */
4/* YNL-GEN uapi header */
5/* To regenerate run: tools/net/ynl/ynl-regen.sh */
6
7#ifndef _UAPI_LINUX_DEV_ENERGYMODEL_H
8#define _UAPI_LINUX_DEV_ENERGYMODEL_H
9
10#define DEV_ENERGYMODEL_FAMILY_NAME "dev-energymodel"
11#define DEV_ENERGYMODEL_FAMILY_VERSION 1
12
13/**
14 * enum dev_energymodel_perf_state_flags
15 * @DEV_ENERGYMODEL_PERF_STATE_FLAGS_PERF_STATE_INEFFICIENT: The performance
16 * state is inefficient. There is in this perf-domain, another performance
17 * state with a higher frequency but a lower or equal power cost.
18 */
19enum dev_energymodel_perf_state_flags {
20 DEV_ENERGYMODEL_PERF_STATE_FLAGS_PERF_STATE_INEFFICIENT = 1,
21};
22
23/**
24 * enum dev_energymodel_perf_domain_flags
25 * @DEV_ENERGYMODEL_PERF_DOMAIN_FLAGS_PERF_DOMAIN_MICROWATTS: The power values
26 * are in micro-Watts or some other scale.
27 * @DEV_ENERGYMODEL_PERF_DOMAIN_FLAGS_PERF_DOMAIN_SKIP_INEFFICIENCIES: Skip
28 * inefficient states when estimating energy consumption.
29 * @DEV_ENERGYMODEL_PERF_DOMAIN_FLAGS_PERF_DOMAIN_ARTIFICIAL: The power values
30 * are artificial and might be created by platform missing real power
31 * information.
32 */
33enum dev_energymodel_perf_domain_flags {
34 DEV_ENERGYMODEL_PERF_DOMAIN_FLAGS_PERF_DOMAIN_MICROWATTS = 1,
35 DEV_ENERGYMODEL_PERF_DOMAIN_FLAGS_PERF_DOMAIN_SKIP_INEFFICIENCIES = 2,
36 DEV_ENERGYMODEL_PERF_DOMAIN_FLAGS_PERF_DOMAIN_ARTIFICIAL = 4,
37};
38
39enum {
40 DEV_ENERGYMODEL_A_PERF_DOMAIN_PAD = 1,
41 DEV_ENERGYMODEL_A_PERF_DOMAIN_PERF_DOMAIN_ID,
42 DEV_ENERGYMODEL_A_PERF_DOMAIN_FLAGS,
43 DEV_ENERGYMODEL_A_PERF_DOMAIN_CPUS,
44
45 __DEV_ENERGYMODEL_A_PERF_DOMAIN_MAX,
46 DEV_ENERGYMODEL_A_PERF_DOMAIN_MAX = (__DEV_ENERGYMODEL_A_PERF_DOMAIN_MAX - 1)
47};
48
49enum {
50 DEV_ENERGYMODEL_A_PERF_TABLE_PERF_DOMAIN_ID = 1,
51 DEV_ENERGYMODEL_A_PERF_TABLE_PERF_STATE,
52
53 __DEV_ENERGYMODEL_A_PERF_TABLE_MAX,
54 DEV_ENERGYMODEL_A_PERF_TABLE_MAX = (__DEV_ENERGYMODEL_A_PERF_TABLE_MAX - 1)
55};
56
57enum {
58 DEV_ENERGYMODEL_A_PERF_STATE_PAD = 1,
59 DEV_ENERGYMODEL_A_PERF_STATE_PERFORMANCE,
60 DEV_ENERGYMODEL_A_PERF_STATE_FREQUENCY,
61 DEV_ENERGYMODEL_A_PERF_STATE_POWER,
62 DEV_ENERGYMODEL_A_PERF_STATE_COST,
63 DEV_ENERGYMODEL_A_PERF_STATE_FLAGS,
64
65 __DEV_ENERGYMODEL_A_PERF_STATE_MAX,
66 DEV_ENERGYMODEL_A_PERF_STATE_MAX = (__DEV_ENERGYMODEL_A_PERF_STATE_MAX - 1)
67};
68
69enum {
70 DEV_ENERGYMODEL_CMD_GET_PERF_DOMAINS = 1,
71 DEV_ENERGYMODEL_CMD_GET_PERF_TABLE,
72 DEV_ENERGYMODEL_CMD_PERF_DOMAIN_CREATED,
73 DEV_ENERGYMODEL_CMD_PERF_DOMAIN_UPDATED,
74 DEV_ENERGYMODEL_CMD_PERF_DOMAIN_DELETED,
75
76 __DEV_ENERGYMODEL_CMD_MAX,
77 DEV_ENERGYMODEL_CMD_MAX = (__DEV_ENERGYMODEL_CMD_MAX - 1)
78};
79
80#define DEV_ENERGYMODEL_MCGRP_EVENT "event"
81
82#endif /* _UAPI_LINUX_DEV_ENERGYMODEL_H */
include/uapi/linux/dpll.h+1−0
@@ -253,6 +253,7 @@ enum dpll_a_pin { · 252 unmodified lines
253 DPLL_A_PIN_ESYNC_PULSE,253 DPLL_A_PIN_ESYNC_PULSE,
254 DPLL_A_PIN_REFERENCE_SYNC,254 DPLL_A_PIN_REFERENCE_SYNC,
255 DPLL_A_PIN_PHASE_ADJUST_GRAN,255 DPLL_A_PIN_PHASE_ADJUST_GRAN,
256 DPLL_A_PIN_FRACTIONAL_FREQUENCY_OFFSET_PPT,
256 257
257 __DPLL_A_PIN_MAX,258 __DPLL_A_PIN_MAX,
258 DPLL_A_PIN_MAX = (__DPLL_A_PIN_MAX - 1)259 DPLL_A_PIN_MAX = (__DPLL_A_PIN_MAX - 1)
include/uapi/linux/elf.h+2−0
@@ -545,6 +545,8 @@ typedef struct elf64_shdr { · 544 unmodified lines
545#define NT_RISCV_VECTOR 0x901 /* RISC-V vector registers */545#define NT_RISCV_VECTOR 0x901 /* RISC-V vector registers */
546#define NN_RISCV_TAGGED_ADDR_CTRL "LINUX"546#define NN_RISCV_TAGGED_ADDR_CTRL "LINUX"
547#define NT_RISCV_TAGGED_ADDR_CTRL 0x902 /* RISC-V tagged address control (prctl()) */547#define NT_RISCV_TAGGED_ADDR_CTRL 0x902 /* RISC-V tagged address control (prctl()) */
548#define NN_RISCV_USER_CFI "LINUX"
549#define NT_RISCV_USER_CFI 0x903 /* RISC-V shadow stack state */
548#define NN_LOONGARCH_CPUCFG "LINUX"550#define NN_LOONGARCH_CPUCFG "LINUX"
549#define NT_LOONGARCH_CPUCFG 0xa00 /* LoongArch CPU config registers */551#define NT_LOONGARCH_CPUCFG 0xa00 /* LoongArch CPU config registers */
550#define NN_LOONGARCH_CSR "LINUX"552#define NN_LOONGARCH_CSR "LINUX"
include/uapi/linux/energy_model.h+0−63
@@ -1,63 +0,0 @@
1/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
2/* Do not edit directly, auto-generated from: */
3/* Documentation/netlink/specs/em.yaml */
4/* YNL-GEN uapi header */
5/* To regenerate run: tools/net/ynl/ynl-regen.sh */
6
7#ifndef _UAPI_LINUX_ENERGY_MODEL_H
8#define _UAPI_LINUX_ENERGY_MODEL_H
9
10#define EM_FAMILY_NAME "em"
11#define EM_FAMILY_VERSION 1
12
13enum {
14 EM_A_PDS_PD = 1,
15
16 __EM_A_PDS_MAX,
17 EM_A_PDS_MAX = (__EM_A_PDS_MAX - 1)
18};
19
20enum {
21 EM_A_PD_PAD = 1,
22 EM_A_PD_PD_ID,
23 EM_A_PD_FLAGS,
24 EM_A_PD_CPUS,
25
26 __EM_A_PD_MAX,
27 EM_A_PD_MAX = (__EM_A_PD_MAX - 1)
28};
29
30enum {
31 EM_A_PD_TABLE_PD_ID = 1,
32 EM_A_PD_TABLE_PS,
33
34 __EM_A_PD_TABLE_MAX,
35 EM_A_PD_TABLE_MAX = (__EM_A_PD_TABLE_MAX - 1)
36};
37
38enum {
39 EM_A_PS_PAD = 1,
40 EM_A_PS_PERFORMANCE,
41 EM_A_PS_FREQUENCY,
42 EM_A_PS_POWER,
43 EM_A_PS_COST,
44 EM_A_PS_FLAGS,
45
46 __EM_A_PS_MAX,
47 EM_A_PS_MAX = (__EM_A_PS_MAX - 1)
48};
49
50enum {
51 EM_CMD_GET_PDS = 1,
52 EM_CMD_GET_PD_TABLE,
53 EM_CMD_PD_CREATED,
54 EM_CMD_PD_UPDATED,
55 EM_CMD_PD_DELETED,
56
57 __EM_CMD_MAX,
58 EM_CMD_MAX = (__EM_CMD_MAX - 1)
59};
60
61#define EM_MCGRP_EVENT "event"
62
63#endif /* _UAPI_LINUX_ENERGY_MODEL_H */
include/uapi/linux/ethtool.h+21−7
@@ -15,13 +15,10 @@ · 14 unmodified lines
15#define _UAPI_LINUX_ETHTOOL_H15#define _UAPI_LINUX_ETHTOOL_H
16 16
17#include <linux/const.h>17#include <linux/const.h>
18#include <linux/typelimits.h>
18#include <linux/types.h>19#include <linux/types.h>
19#include <linux/if_ether.h>20#include <linux/if_ether.h>
20 21
21#ifndef __KERNEL__
22#include <limits.h> /* for INT_MAX */
23#endif
24
25/* All structures exposed to userland should be defined such that they22/* All structures exposed to userland should be defined such that they
26 * have the same layout for 32-bit and 64-bit userland.23 * have the same layout for 32-bit and 64-bit userland.
27 */24 */
@@ -603,6 +600,8 @@ enum ethtool_link_ext_state { · 575 unmodified lines
603 ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED,600 ETHTOOL_LINK_EXT_STATE_POWER_BUDGET_EXCEEDED,
604 ETHTOOL_LINK_EXT_STATE_OVERHEAT,601 ETHTOOL_LINK_EXT_STATE_OVERHEAT,
605 ETHTOOL_LINK_EXT_STATE_MODULE,602 ETHTOOL_LINK_EXT_STATE_MODULE,
603 ETHTOOL_LINK_EXT_STATE_OTP_SPEED_VIOLATION,
604 ETHTOOL_LINK_EXT_STATE_BMC_REQUEST_DOWN,
606};605};
607 606
608/* More information in addition to ETHTOOL_LINK_EXT_STATE_AUTONEG. */607/* More information in addition to ETHTOOL_LINK_EXT_STATE_AUTONEG. */
@@ -1094,13 +1093,20 @@ enum ethtool_module_fw_flash_status { · 485 unmodified lines
1094 * struct ethtool_gstrings - string set for data tagging1093 * struct ethtool_gstrings - string set for data tagging
1095 * @cmd: Command number = %ETHTOOL_GSTRINGS1094 * @cmd: Command number = %ETHTOOL_GSTRINGS
1096 * @string_set: String set ID; one of &enum ethtool_stringset1095 * @string_set: String set ID; one of &enum ethtool_stringset
1097 * @len: On return, the number of strings in the string set1096 * @len: Number of strings in the string set
1098 * @data: Buffer for strings. Each string is null-padded to a size of1097 * @data: Buffer for strings. Each string is null-padded to a size of
1099 * %ETH_GSTRING_LEN.1098 * %ETH_GSTRING_LEN.
1100 *1099 *
1101 * Users must use %ETHTOOL_GSSET_INFO to find the number of strings in1100 * Users must use %ETHTOOL_GSSET_INFO to find the number of strings in
1102 * the string set. They must allocate a buffer of the appropriate1101 * the string set. They must allocate a buffer of the appropriate
1103 * size immediately following this structure.1102 * size immediately following this structure.
1103 *
1104 * Setting @len on input is optional (though preferred), but must be zeroed
1105 * otherwise.
1106 * When set, @len will return the requested count if it matches the actual
1107 * count; otherwise, it will be zero.
1108 * This prevents issues when the number of strings is different than the
1109 * userspace allocation.
1104 */1110 */
1105struct ethtool_gstrings {1111struct ethtool_gstrings {
1106 __u32 cmd;1112 __u32 cmd;
@@ -1177,13 +1183,20 @@ struct ethtool_test { · 70 unmodified lines
1177/**1183/**
1178 * struct ethtool_stats - device-specific statistics1184 * struct ethtool_stats - device-specific statistics
1179 * @cmd: Command number = %ETHTOOL_GSTATS1185 * @cmd: Command number = %ETHTOOL_GSTATS
1180 * @n_stats: On return, the number of statistics1186 * @n_stats: Number of statistics
1181 * @data: Array of statistics1187 * @data: Array of statistics
1182 *1188 *
1183 * Users must use %ETHTOOL_GSSET_INFO or %ETHTOOL_GDRVINFO to find the1189 * Users must use %ETHTOOL_GSSET_INFO or %ETHTOOL_GDRVINFO to find the
1184 * number of statistics that will be returned. They must allocate a1190 * number of statistics that will be returned. They must allocate a
1185 * buffer of the appropriate size (8 * number of statistics)1191 * buffer of the appropriate size (8 * number of statistics)
1186 * immediately following this structure.1192 * immediately following this structure.
1193 *
1194 * Setting @n_stats on input is optional (though preferred), but must be zeroed
1195 * otherwise.
1196 * When set, @n_stats will return the requested count if it matches the actual
1197 * count; otherwise, it will be zero.
1198 * This prevents issues when the number of stats is different than the
1199 * userspace allocation.
1187 */1200 */
1188struct ethtool_stats {1201struct ethtool_stats {
1189 __u32 cmd;1202 __u32 cmd;
@@ -2190,6 +2203,7 @@ enum ethtool_link_mode_bit_indices { · 1000 unmodified lines
2190#define SPEED_40000 400002203#define SPEED_40000 40000
2191#define SPEED_50000 500002204#define SPEED_50000 50000
2192#define SPEED_56000 560002205#define SPEED_56000 56000
2206#define SPEED_80000 80000
2193#define SPEED_100000 1000002207#define SPEED_100000 100000
2194#define SPEED_200000 2000002208#define SPEED_200000 200000
2195#define SPEED_400000 4000002209#define SPEED_400000 400000
@@ -2200,7 +2214,7 @@ enum ethtool_link_mode_bit_indices { · 4 unmodified lines
2200 2214
2201static inline int ethtool_validate_speed(__u32 speed)2215static inline int ethtool_validate_speed(__u32 speed)
2202{2216{
2203 return speed <= INT_MAX || speed == (__u32)SPEED_UNKNOWN;2217 return speed <= __KERNEL_INT_MAX || speed == (__u32)SPEED_UNKNOWN;
2204}2218}
2205 2219
2206/* Duplex, half or full. */2220/* Duplex, half or full. */
include/uapi/linux/ext4.h+1−1
@@ -139,7 +139,7 @@ struct ext4_tune_sb_params { · 138 unmodified lines
139 __u32 clear_feature_incompat_mask;139 __u32 clear_feature_incompat_mask;
140 __u32 clear_feature_ro_compat_mask;140 __u32 clear_feature_ro_compat_mask;
141 __u8 mount_opts[64];141 __u8 mount_opts[64];
142 __u8 pad[64];142 __u8 pad[68];
143};143};
144 144
145#define EXT4_TUNE_FL_ERRORS_BEHAVIOR 0x00000001145#define EXT4_TUNE_FL_ERRORS_BEHAVIOR 0x00000001
include/uapi/linux/fs.h+1−0
@@ -253,6 +253,7 @@ struct file_attr { · 252 unmodified lines
253#define FS_XFLAG_FILESTREAM 0x00004000 /* use filestream allocator */253#define FS_XFLAG_FILESTREAM 0x00004000 /* use filestream allocator */
254#define FS_XFLAG_DAX 0x00008000 /* use DAX for IO */254#define FS_XFLAG_DAX 0x00008000 /* use DAX for IO */
255#define FS_XFLAG_COWEXTSIZE 0x00010000 /* CoW extent size allocator hint */255#define FS_XFLAG_COWEXTSIZE 0x00010000 /* CoW extent size allocator hint */
256#define FS_XFLAG_VERITY 0x00020000 /* fs-verity enabled */
256#define FS_XFLAG_HASATTR 0x80000000 /* no DIFLAG for this */257#define FS_XFLAG_HASATTR 0x80000000 /* no DIFLAG for this */
257 258
258/* the read-only stuff doesn't really belong here, but any other place is259/* the read-only stuff doesn't really belong here, but any other place is
include/uapi/linux/hyperv.h+1−1
@@ -362,7 +362,7 @@ struct hv_kvp_exchg_msg_value { · 361 unmodified lines
362 __u8 value[HV_KVP_EXCHANGE_MAX_VALUE_SIZE];362 __u8 value[HV_KVP_EXCHANGE_MAX_VALUE_SIZE];
363 __u32 value_u32;363 __u32 value_u32;
364 __u64 value_u64;364 __u64 value_u64;
365 };365 } __attribute__((packed));
366} __attribute__((packed));366} __attribute__((packed));
367 367
368struct hv_kvp_msg_enumerate {368struct hv_kvp_msg_enumerate {
include/uapi/linux/idxd.h+133−137
@@ -3,11 +3,7 @@ · 2 unmodified lines
3#ifndef _USR_IDXD_H_3#ifndef _USR_IDXD_H_
4#define _USR_IDXD_H_4#define _USR_IDXD_H_
5 5
6#ifdef __KERNEL__
7#include <linux/types.h>6#include <linux/types.h>
8#else
9#include <stdint.h>
10#endif
11 7
12/* Driver command error status */8/* Driver command error status */
13enum idxd_scmd_stat {9enum idxd_scmd_stat {
@@ -176,132 +172,132 @@ enum iax_completion_status { · 162 unmodified lines
176#define DSA_COMP_STATUS(status) ((status) & DSA_COMP_STATUS_MASK)172#define DSA_COMP_STATUS(status) ((status) & DSA_COMP_STATUS_MASK)
177 173
178struct dsa_hw_desc {174struct dsa_hw_desc {
179 uint32_t pasid:20;175 __u32 pasid:20;
180 uint32_t rsvd:11;176 __u32 rsvd:11;
181 uint32_t priv:1;177 __u32 priv:1;
182 uint32_t flags:24;178 __u32 flags:24;
183 uint32_t opcode:8;179 __u32 opcode:8;
184 uint64_t completion_addr;180 __u64 completion_addr;
185 union {181 union {
186 uint64_t src_addr;182 __u64 src_addr;
187 uint64_t rdback_addr;183 __u64 rdback_addr;
188 uint64_t pattern;184 __u64 pattern;
189 uint64_t desc_list_addr;185 __u64 desc_list_addr;
190 uint64_t pattern_lower;186 __u64 pattern_lower;
191 uint64_t transl_fetch_addr;187 __u64 transl_fetch_addr;
192 };188 };
193 union {189 union {
194 uint64_t dst_addr;190 __u64 dst_addr;
195 uint64_t rdback_addr2;191 __u64 rdback_addr2;
196 uint64_t src2_addr;192 __u64 src2_addr;
197 uint64_t comp_pattern;193 __u64 comp_pattern;
198 };194 };
199 union {195 union {
200 uint32_t xfer_size;196 __u32 xfer_size;
201 uint32_t desc_count;197 __u32 desc_count;
202 uint32_t region_size;198 __u32 region_size;
203 };199 };
204 uint16_t int_handle;200 __u16 int_handle;
205 uint16_t rsvd1;201 __u16 rsvd1;
206 union {202 union {
207 uint8_t expected_res;203 __u8 expected_res;
208 /* create delta record */204 /* create delta record */
209 struct {205 struct {
210 uint64_t delta_addr;206 __u64 delta_addr;
211 uint32_t max_delta_size;207 __u32 max_delta_size;
212 uint32_t delt_rsvd;208 __u32 delt_rsvd;
213 uint8_t expected_res_mask;209 __u8 expected_res_mask;
214 };210 };
215 uint32_t delta_rec_size;211 __u32 delta_rec_size;
216 uint64_t dest2;212 __u64 dest2;
217 /* CRC */213 /* CRC */
218 struct {214 struct {
219 uint32_t crc_seed;215 __u32 crc_seed;
220 uint32_t crc_rsvd;216 __u32 crc_rsvd;
221 uint64_t seed_addr;217 __u64 seed_addr;
222 };218 };
223 /* DIF check or strip */219 /* DIF check or strip */
224 struct {220 struct {
225 uint8_t src_dif_flags;221 __u8 src_dif_flags;
226 uint8_t dif_chk_res;222 __u8 dif_chk_res;
227 uint8_t dif_chk_flags;223 __u8 dif_chk_flags;
228 uint8_t dif_chk_res2[5];224 __u8 dif_chk_res2[5];
229 uint32_t chk_ref_tag_seed;225 __u32 chk_ref_tag_seed;
230 uint16_t chk_app_tag_mask;226 __u16 chk_app_tag_mask;
231 uint16_t chk_app_tag_seed;227 __u16 chk_app_tag_seed;
232 };228 };
233 /* DIF insert */229 /* DIF insert */
234 struct {230 struct {
235 uint8_t dif_ins_res;231 __u8 dif_ins_res;
236 uint8_t dest_dif_flag;232 __u8 dest_dif_flag;
237 uint8_t dif_ins_flags;233 __u8 dif_ins_flags;
238 uint8_t dif_ins_res2[13];234 __u8 dif_ins_res2[13];
239 uint32_t ins_ref_tag_seed;235 __u32 ins_ref_tag_seed;
240 uint16_t ins_app_tag_mask;236 __u16 ins_app_tag_mask;
241 uint16_t ins_app_tag_seed;237 __u16 ins_app_tag_seed;
242 };238 };
243 /* DIF update */239 /* DIF update */
244 struct {240 struct {
245 uint8_t src_upd_flags;241 __u8 src_upd_flags;
246 uint8_t upd_dest_flags;242 __u8 upd_dest_flags;
247 uint8_t dif_upd_flags;243 __u8 dif_upd_flags;
248 uint8_t dif_upd_res[5];244 __u8 dif_upd_res[5];
249 uint32_t src_ref_tag_seed;245 __u32 src_ref_tag_seed;
250 uint16_t src_app_tag_mask;246 __u16 src_app_tag_mask;
251 uint16_t src_app_tag_seed;247 __u16 src_app_tag_seed;
252 uint32_t dest_ref_tag_seed;248 __u32 dest_ref_tag_seed;
253 uint16_t dest_app_tag_mask;249 __u16 dest_app_tag_mask;
254 uint16_t dest_app_tag_seed;250 __u16 dest_app_tag_seed;
255 };251 };
256 252
257 /* Fill */253 /* Fill */
258 uint64_t pattern_upper;254 __u64 pattern_upper;
259 255
260 /* Translation fetch */256 /* Translation fetch */
261 struct {257 struct {
262 uint64_t transl_fetch_res;258 __u64 transl_fetch_res;
263 uint32_t region_stride;259 __u32 region_stride;
264 };260 };
265 261
266 /* DIX generate */262 /* DIX generate */
267 struct {263 struct {
268 uint8_t dix_gen_res;264 __u8 dix_gen_res;
269 uint8_t dest_dif_flags;265 __u8 dest_dif_flags;
270 uint8_t dif_flags;266 __u8 dif_flags;
271 uint8_t dix_gen_res2[13];267 __u8 dix_gen_res2[13];
272 uint32_t ref_tag_seed;268 __u32 ref_tag_seed;
273 uint16_t app_tag_mask;269 __u16 app_tag_mask;
274 uint16_t app_tag_seed;270 __u16 app_tag_seed;
275 };271 };
276 272
277 uint8_t op_specific[24];273 __u8 op_specific[24];
278 };274 };
279} __attribute__((packed));275} __attribute__((packed));
280 276
281struct iax_hw_desc {277struct iax_hw_desc {
282 uint32_t pasid:20;278 __u32 pasid:20;
283 uint32_t rsvd:11;279 __u32 rsvd:11;
284 uint32_t priv:1;280 __u32 priv:1;
285 uint32_t flags:24;281 __u32 flags:24;
286 uint32_t opcode:8;282 __u32 opcode:8;
287 uint64_t completion_addr;283 __u64 completion_addr;
288 uint64_t src1_addr;284 __u64 src1_addr;
289 uint64_t dst_addr;285 __u64 dst_addr;
290 uint32_t src1_size;286 __u32 src1_size;
291 uint16_t int_handle;287 __u16 int_handle;
292 union {288 union {
293 uint16_t compr_flags;289 __u16 compr_flags;
294 uint16_t decompr_flags;290 __u16 decompr_flags;
295 };291 };
296 uint64_t src2_addr;292 __u64 src2_addr;
297 uint32_t max_dst_size;293 __u32 max_dst_size;
298 uint32_t src2_size;294 __u32 src2_size;
299 uint32_t filter_flags;295 __u32 filter_flags;
300 uint32_t num_inputs;296 __u32 num_inputs;
301} __attribute__((packed));297} __attribute__((packed));
302 298
303struct dsa_raw_desc {299struct dsa_raw_desc {
304 uint64_t field[8];300 __u64 field[8];
305} __attribute__((packed));301} __attribute__((packed));
306 302
307/*303/*
@@ -309,91 +305,91 @@ struct dsa_raw_desc { · 1 unmodified line
309 * volatile and prevent the compiler from optimize the read.305 * volatile and prevent the compiler from optimize the read.
310 */306 */
311struct dsa_completion_record {307struct dsa_completion_record {
312 volatile uint8_t status;308 volatile __u8 status;
313 union {309 union {
314 uint8_t result;310 __u8 result;
315 uint8_t dif_status;311 __u8 dif_status;
316 };312 };
317 uint8_t fault_info;313 __u8 fault_info;
318 uint8_t rsvd;314 __u8 rsvd;
319 union {315 union {
320 uint32_t bytes_completed;316 __u32 bytes_completed;
321 uint32_t descs_completed;317 __u32 descs_completed;
322 };318 };
323 uint64_t fault_addr;319 __u64 fault_addr;
324 union {320 union {
325 /* common record */321 /* common record */
326 struct {322 struct {
327 uint32_t invalid_flags:24;323 __u32 invalid_flags:24;
328 uint32_t rsvd2:8;324 __u32 rsvd2:8;
329 };325 };
330 326
331 uint32_t delta_rec_size;327 __u32 delta_rec_size;
332 uint64_t crc_val;328 __u64 crc_val;
333 329
334 /* DIF check & strip */330 /* DIF check & strip */
335 struct {331 struct {
336 uint32_t dif_chk_ref_tag;332 __u32 dif_chk_ref_tag;
337 uint16_t dif_chk_app_tag_mask;333 __u16 dif_chk_app_tag_mask;
338 uint16_t dif_chk_app_tag;334 __u16 dif_chk_app_tag;
339 };335 };
340 336
341 /* DIF insert */337 /* DIF insert */
342 struct {338 struct {
343 uint64_t dif_ins_res;339 __u64 dif_ins_res;
344 uint32_t dif_ins_ref_tag;340 __u32 dif_ins_ref_tag;
345 uint16_t dif_ins_app_tag_mask;341 __u16 dif_ins_app_tag_mask;
346 uint16_t dif_ins_app_tag;342 __u16 dif_ins_app_tag;
347 };343 };
348 344
349 /* DIF update */345 /* DIF update */
350 struct {346 struct {
351 uint32_t dif_upd_src_ref_tag;347 __u32 dif_upd_src_ref_tag;
352 uint16_t dif_upd_src_app_tag_mask;348 __u16 dif_upd_src_app_tag_mask;
353 uint16_t dif_upd_src_app_tag;349 __u16 dif_upd_src_app_tag;
354 uint32_t dif_upd_dest_ref_tag;350 __u32 dif_upd_dest_ref_tag;
355 uint16_t dif_upd_dest_app_tag_mask;351 __u16 dif_upd_dest_app_tag_mask;
356 uint16_t dif_upd_dest_app_tag;352 __u16 dif_upd_dest_app_tag;
357 };353 };
358 354
359 /* DIX generate */355 /* DIX generate */
360 struct {356 struct {
361 uint64_t dix_gen_res;357 __u64 dix_gen_res;
362 uint32_t dix_ref_tag;358 __u32 dix_ref_tag;
363 uint16_t dix_app_tag_mask;359 __u16 dix_app_tag_mask;
364 uint16_t dix_app_tag;360 __u16 dix_app_tag;
365 };361 };
366 362
367 uint8_t op_specific[16];363 __u8 op_specific[16];
368 };364 };
369} __attribute__((packed));365} __attribute__((packed));
370 366
371struct dsa_raw_completion_record {367struct dsa_raw_completion_record {
372 uint64_t field[4];368 __u64 field[4];
373} __attribute__((packed));369} __attribute__((packed));
374 370
375struct iax_completion_record {371struct iax_completion_record {
376 volatile uint8_t status;372 volatile __u8 status;
377 uint8_t error_code;373 __u8 error_code;
378 uint8_t fault_info;374 __u8 fault_info;
379 uint8_t rsvd;375 __u8 rsvd;
380 uint32_t bytes_completed;376 __u32 bytes_completed;
381 uint64_t fault_addr;377 __u64 fault_addr;
382 uint32_t invalid_flags;378 __u32 invalid_flags;
383 uint32_t rsvd2;379 __u32 rsvd2;
384 uint32_t output_size;380 __u32 output_size;
385 uint8_t output_bits;381 __u8 output_bits;
386 uint8_t rsvd3;382 __u8 rsvd3;
387 uint16_t xor_csum;383 __u16 xor_csum;
388 uint32_t crc;384 __u32 crc;
389 uint32_t min;385 __u32 min;
390 uint32_t max;386 __u32 max;
391 uint32_t sum;387 __u32 sum;
392 uint64_t rsvd4[2];388 __u64 rsvd4[2];
393} __attribute__((packed));389} __attribute__((packed));
394 390
395struct iax_raw_completion_record {391struct iax_raw_completion_record {
396 uint64_t field[8];392 __u64 field[8];
397} __attribute__((packed));393} __attribute__((packed));
398 394
399#endif395#endif
include/uapi/linux/if_alg.h+1−1
@@ -42,7 +42,7 @@ struct sockaddr_alg_new { · 41 unmodified lines
42 42
43struct af_alg_iv {43struct af_alg_iv {
44 __u32 ivlen;44 __u32 ivlen;
45 __u8 iv[];45 __u8 iv[] __counted_by(ivlen);
46};46};
47 47
48/* Socket options */48/* Socket options */
include/uapi/linux/if_link.h+1−0
@@ -1443,6 +1443,7 @@ enum { · 1442 unmodified lines
1443 IFLA_GENEVE_DF,1443 IFLA_GENEVE_DF,
1444 IFLA_GENEVE_INNER_PROTO_INHERIT,1444 IFLA_GENEVE_INNER_PROTO_INHERIT,
1445 IFLA_GENEVE_PORT_RANGE,1445 IFLA_GENEVE_PORT_RANGE,
1446 IFLA_GENEVE_GRO_HINT,
1446 __IFLA_GENEVE_MAX1447 __IFLA_GENEVE_MAX
1447};1448};
1448#define IFLA_GENEVE_MAX (__IFLA_GENEVE_MAX - 1)1449#define IFLA_GENEVE_MAX (__IFLA_GENEVE_MAX - 1)
include/uapi/linux/io_uring.h+31−1
@@ -237,6 +237,18 @@ enum io_uring_sqe_flags_bit { · 236 unmodified lines
237 */237 */
238#define IORING_SETUP_SQE_MIXED (1U << 19)238#define IORING_SETUP_SQE_MIXED (1U << 19)
239 239
240/*
241 * When set, io_uring ignores SQ head and tail and fetches SQEs to submit
242 * starting from index 0 instead from the index stored in the head pointer.
243 * IOW, the user should place all SQE at the beginning of the SQ memory
244 * before issuing a submission syscall.
245 *
246 * It requires IORING_SETUP_NO_SQARRAY and is incompatible with
247 * IORING_SETUP_SQPOLL. The user must also never change the SQ head and tail
248 * values and keep it set to 0. Any other value is undefined behaviour.
249 */
250#define IORING_SETUP_SQ_REWIND (1U << 20)
251
240enum io_uring_op {252enum io_uring_op {
241 IORING_OP_NOP,253 IORING_OP_NOP,
242 IORING_OP_READV,254 IORING_OP_READV,
@@ -700,6 +712,9 @@ enum io_uring_register_op { · 457 unmodified lines
700 /* auxiliary zcrx configuration, see enum zcrx_ctrl_op */712 /* auxiliary zcrx configuration, see enum zcrx_ctrl_op */
701 IORING_REGISTER_ZCRX_CTRL = 36,713 IORING_REGISTER_ZCRX_CTRL = 36,
702 714
715 /* register bpf filtering programs */
716 IORING_REGISTER_BPF_FILTER = 37,
717
703 /* this goes last */718 /* this goes last */
704 IORING_REGISTER_LAST,719 IORING_REGISTER_LAST,
705 720
@@ -805,6 +820,13 @@ struct io_uring_restriction { · 99 unmodified lines
805 __u32 resv2[3];820 __u32 resv2[3];
806};821};
807 822
823struct io_uring_task_restriction {
824 __u16 flags;
825 __u16 nr_res;
826 __u32 resv[3];
827 __DECLARE_FLEX_ARRAY(struct io_uring_restriction, restrictions);
828};
829
808struct io_uring_clock_register {830struct io_uring_clock_register {
809 __u32 clockid;831 __u32 clockid;
810 __u32 __resv[3];832 __u32 __resv[3];
@@ -1068,6 +1090,14 @@ enum zcrx_reg_flags { · 257 unmodified lines
1068 ZCRX_REG_IMPORT = 1,1090 ZCRX_REG_IMPORT = 1,
1069};1091};
1070 1092
1093enum zcrx_features {
1094 /*
1095 * The user can ask for the desired rx page size by passing the
1096 * value in struct io_uring_zcrx_ifq_reg::rx_buf_len.
1097 */
1098 ZCRX_FEATURE_RX_PAGE_SIZE = 1 << 0,
1099};
1100
1071/*1101/*
1072 * Argument for IORING_REGISTER_ZCRX_IFQ1102 * Argument for IORING_REGISTER_ZCRX_IFQ
1073 */1103 */
@@ -1082,7 +1112,7 @@ struct io_uring_zcrx_ifq_reg { · 8 unmodified lines
1082 1112
1083 struct io_uring_zcrx_offsets offsets;1113 struct io_uring_zcrx_offsets offsets;
1084 __u32 zcrx_id;1114 __u32 zcrx_id;
1085 __u32 __resv2;1115 __u32 rx_buf_len;
1086 __u64 __resv[3];1116 __u64 __resv[3];
1087};1117};
1088 1118
include/uapi/linux/io_uring/bpf_filter.h+68−0
@@ -0,0 +1,68 @@
1/* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR MIT */
2/*
3 * Header file for the io_uring BPF filters.
4 */
5#ifndef LINUX_IO_URING_BPF_FILTER_H
6#define LINUX_IO_URING_BPF_FILTER_H
7
8#include <linux/types.h>
9
10/*
11 * Struct passed to filters.
12 */
13struct io_uring_bpf_ctx {
14 __u64 user_data;
15 __u8 opcode;
16 __u8 sqe_flags;
17 __u8 pdu_size; /* size of aux data for filter */
18 __u8 pad[5];
19 union {
20 struct {
21 __u32 family;
22 __u32 type;
23 __u32 protocol;
24 } socket;
25 struct {
26 __u64 flags;
27 __u64 mode;
28 __u64 resolve;
29 } open;
30 };
31};
32
33enum {
34 /*
35 * If set, any currently unset opcode will have a deny filter attached
36 */
37 IO_URING_BPF_FILTER_DENY_REST = 1,
38 /*
39 * If set, if kernel and application don't agree on pdu_size for
40 * the given opcode, fail the registration of the filter.
41 */
42 IO_URING_BPF_FILTER_SZ_STRICT = 2,
43};
44
45struct io_uring_bpf_filter {
46 __u32 opcode; /* io_uring opcode to filter */
47 __u32 flags;
48 __u32 filter_len; /* number of BPF instructions */
49 __u8 pdu_size; /* expected pdu size for opcode */
50 __u8 resv[3];
51 __u64 filter_ptr; /* pointer to BPF filter */
52 __u64 resv2[5];
53};
54
55enum {
56 IO_URING_BPF_CMD_FILTER = 1,
57};
58
59struct io_uring_bpf {
60 __u16 cmd_type; /* IO_URING_BPF_* values */
61 __u16 cmd_flags; /* none so far */
62 __u32 resv;
63 union {
64 struct io_uring_bpf_filter filter;
65 };
66};
67
68#endif
include/uapi/linux/io_uring/query.h+5−1
@@ -1,6 +1,9 @@
1/* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR MIT */1/* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR MIT */
2/*2/*
3 * Header file for the io_uring query interface.3 * Header file for the io_uring query interface.
4 *
5 * Copyright (C) 2026 Pavel Begunkov <asml.silence@gmail.com>
6 * Copyright (C) Meta Platforms, Inc.
4 */7 */
5#ifndef LINUX_IO_URING_QUERY_H8#ifndef LINUX_IO_URING_QUERY_H
6#define LINUX_IO_URING_QUERY_H9#define LINUX_IO_URING_QUERY_H
@@ -50,7 +53,8 @@ struct io_uring_query_zcrx { · 43 unmodified lines
50 __u64 area_flags;53 __u64 area_flags;
51 /* The number of supported ZCRX_CTRL_* opcodes */54 /* The number of supported ZCRX_CTRL_* opcodes */
52 __u32 nr_ctrl_opcodes;55 __u32 nr_ctrl_opcodes;
53 __u32 __resv1;56 /* Bitmask of ZCRX_FEATURE_* indicating which features are available */
57 __u32 features;
54 /* The refill ring header size */58 /* The refill ring header size */
55 __u32 rq_hdr_size;59 __u32 rq_hdr_size;
56 /* The alignment for the header */60 /* The alignment for the header */
include/uapi/linux/iommufd.h+39−0
@@ -465,16 +465,27 @@ struct iommu_hwpt_arm_smmuv3 { · 464 unmodified lines
465 __aligned_le64 ste[2];465 __aligned_le64 ste[2];
466};466};
467 467
468/**
469 * struct iommu_hwpt_amd_guest - AMD IOMMU guest I/O page table data
470 * (IOMMU_HWPT_DATA_AMD_GUEST)
471 * @dte: Guest Device Table Entry (DTE)
472 */
473struct iommu_hwpt_amd_guest {
474 __aligned_u64 dte[4];
475};
476
468/**477/**
469 * enum iommu_hwpt_data_type - IOMMU HWPT Data Type478 * enum iommu_hwpt_data_type - IOMMU HWPT Data Type
470 * @IOMMU_HWPT_DATA_NONE: no data479 * @IOMMU_HWPT_DATA_NONE: no data
471 * @IOMMU_HWPT_DATA_VTD_S1: Intel VT-d stage-1 page table480 * @IOMMU_HWPT_DATA_VTD_S1: Intel VT-d stage-1 page table
472 * @IOMMU_HWPT_DATA_ARM_SMMUV3: ARM SMMUv3 Context Descriptor Table481 * @IOMMU_HWPT_DATA_ARM_SMMUV3: ARM SMMUv3 Context Descriptor Table
482 * @IOMMU_HWPT_DATA_AMD_GUEST: AMD IOMMU guest page table
473 */483 */
474enum iommu_hwpt_data_type {484enum iommu_hwpt_data_type {
475 IOMMU_HWPT_DATA_NONE = 0,485 IOMMU_HWPT_DATA_NONE = 0,
476 IOMMU_HWPT_DATA_VTD_S1 = 1,486 IOMMU_HWPT_DATA_VTD_S1 = 1,
477 IOMMU_HWPT_DATA_ARM_SMMUV3 = 2,487 IOMMU_HWPT_DATA_ARM_SMMUV3 = 2,
488 IOMMU_HWPT_DATA_AMD_GUEST = 3,
478};489};
479 490
480/**491/**
@@ -623,6 +634,32 @@ struct iommu_hw_info_tegra241_cmdqv { · 142 unmodified lines
623 __u8 __reserved;634 __u8 __reserved;
624};635};
625 636
637/**
638 * struct iommu_hw_info_amd - AMD IOMMU device info
639 *
640 * @efr : Value of AMD IOMMU Extended Feature Register (EFR)
641 * @efr2: Value of AMD IOMMU Extended Feature 2 Register (EFR2)
642 *
643 * Please See description of these registers in the following sections of
644 * the AMD I/O Virtualization Technology (IOMMU) Specification.
645 * (https://docs.amd.com/v/u/en-US/48882_3.10_PUB)
646 *
647 * - MMIO Offset 0030h IOMMU Extended Feature Register
648 * - MMIO Offset 01A0h IOMMU Extended Feature 2 Register
649 *
650 * Note: The EFR and EFR2 are raw values reported by hardware.
651 * VMM is responsible to determine the appropriate flags to be exposed to
652 * the VM since cetertain features are not currently supported by the kernel
653 * for HW-vIOMMU.
654 *
655 * Current VMM-allowed list of feature flags are:
656 * - EFR[GTSup, GASup, GioSup, PPRSup, EPHSup, GATS, GLX, PASmax]
657 */
658struct iommu_hw_info_amd {
659 __aligned_u64 efr;
660 __aligned_u64 efr2;
661};
662
626/**663/**
627 * enum iommu_hw_info_type - IOMMU Hardware Info Types664 * enum iommu_hw_info_type - IOMMU Hardware Info Types
628 * @IOMMU_HW_INFO_TYPE_NONE: Output by the drivers that do not report hardware665 * @IOMMU_HW_INFO_TYPE_NONE: Output by the drivers that do not report hardware
@@ -632,6 +669,7 @@ struct iommu_hw_info_tegra241_cmdqv { · 3 unmodified lines
632 * @IOMMU_HW_INFO_TYPE_ARM_SMMUV3: ARM SMMUv3 iommu info type669 * @IOMMU_HW_INFO_TYPE_ARM_SMMUV3: ARM SMMUv3 iommu info type
633 * @IOMMU_HW_INFO_TYPE_TEGRA241_CMDQV: NVIDIA Tegra241 CMDQV (extension for ARM670 * @IOMMU_HW_INFO_TYPE_TEGRA241_CMDQV: NVIDIA Tegra241 CMDQV (extension for ARM
634 * SMMUv3) info type671 * SMMUv3) info type
672 * @IOMMU_HW_INFO_TYPE_AMD: AMD IOMMU info type
635 */673 */
636enum iommu_hw_info_type {674enum iommu_hw_info_type {
637 IOMMU_HW_INFO_TYPE_NONE = 0,675 IOMMU_HW_INFO_TYPE_NONE = 0,
@@ -639,6 +677,7 @@ enum iommu_hw_info_type { · 1 unmodified line
639 IOMMU_HW_INFO_TYPE_INTEL_VTD = 1,677 IOMMU_HW_INFO_TYPE_INTEL_VTD = 1,
640 IOMMU_HW_INFO_TYPE_ARM_SMMUV3 = 2,678 IOMMU_HW_INFO_TYPE_ARM_SMMUV3 = 2,
641 IOMMU_HW_INFO_TYPE_TEGRA241_CMDQV = 3,679 IOMMU_HW_INFO_TYPE_TEGRA241_CMDQV = 3,
680 IOMMU_HW_INFO_TYPE_AMD = 4,
642};681};
643 682
644/**683/**
include/uapi/linux/kfd_ioctl.h+13−3
@@ -44,9 +44,13 @@ · 43 unmodified lines
44 * - 1.16 - Add contiguous VRAM allocation flag44 * - 1.16 - Add contiguous VRAM allocation flag
45 * - 1.17 - Add SDMA queue creation with target SDMA engine ID45 * - 1.17 - Add SDMA queue creation with target SDMA engine ID
46 * - 1.18 - Rename pad in set_memory_policy_args to misc_process_flag46 * - 1.18 - Rename pad in set_memory_policy_args to misc_process_flag
47 * - 1.19 - Add a new ioctl to craete secondary kfd processes
48 * - 1.20 - Trap handler support for expert scheduling mode available
49 * - 1.21 - Debugger support to subscribe to LDS out-of-address exceptions
50 * - 1.22 - Add queue creation with metadata ring base address
47 */51 */
48#define KFD_IOCTL_MAJOR_VERSION 152#define KFD_IOCTL_MAJOR_VERSION 1
49#define KFD_IOCTL_MINOR_VERSION 1853#define KFD_IOCTL_MINOR_VERSION 22
50 54
51struct kfd_ioctl_get_version_args {55struct kfd_ioctl_get_version_args {
52 __u32 major_version; /* from KFD */56 __u32 major_version; /* from KFD */
@@ -84,7 +88,7 @@ struct kfd_ioctl_create_queue_args { · 31 unmodified lines
84 __u32 ctx_save_restore_size; /* to KFD */88 __u32 ctx_save_restore_size; /* to KFD */
85 __u32 ctl_stack_size; /* to KFD */89 __u32 ctl_stack_size; /* to KFD */
86 __u32 sdma_engine_id; /* to KFD */90 __u32 sdma_engine_id; /* to KFD */
87 __u32 pad;91 __u32 metadata_ring_size; /* to KFD */
88};92};
89 93
90struct kfd_ioctl_destroy_queue_args {94struct kfd_ioctl_destroy_queue_args {
@@ -145,6 +149,8 @@ struct kfd_dbg_device_info_entry { · 54 unmodified lines
145 __u32 num_xcc;149 __u32 num_xcc;
146 __u32 capability;150 __u32 capability;
147 __u32 debug_prop;151 __u32 debug_prop;
152 __u32 capability2;
153 __u32 pad;
148};154};
149 155
150/* For kfd_ioctl_set_memory_policy_args.default_policy and alternate_policy */156/* For kfd_ioctl_set_memory_policy_args.default_policy and alternate_policy */
@@ -945,6 +951,7 @@ enum kfd_dbg_trap_address_watch_mode { · 794 unmodified lines
945enum kfd_dbg_trap_flags {951enum kfd_dbg_trap_flags {
946 KFD_DBG_TRAP_FLAG_SINGLE_MEM_OP = 1,952 KFD_DBG_TRAP_FLAG_SINGLE_MEM_OP = 1,
947 KFD_DBG_TRAP_FLAG_SINGLE_ALU_OP = 2,953 KFD_DBG_TRAP_FLAG_SINGLE_ALU_OP = 2,
954 KFD_DBG_TRAP_FLAG_LDS_OUT_OF_ADDR_RANGE = 4
948};955};
949 956
950/* Trap exceptions */957/* Trap exceptions */
@@ -1671,7 +1678,10 @@ struct kfd_ioctl_dbg_trap_args { · 720 unmodified lines
1671#define AMDKFD_IOC_DBG_TRAP \1678#define AMDKFD_IOC_DBG_TRAP \
1672 AMDKFD_IOWR(0x26, struct kfd_ioctl_dbg_trap_args)1679 AMDKFD_IOWR(0x26, struct kfd_ioctl_dbg_trap_args)
1673 1680
1681#define AMDKFD_IOC_CREATE_PROCESS \
1682 AMDKFD_IO(0x27)
1683
1674#define AMDKFD_COMMAND_START 0x011684#define AMDKFD_COMMAND_START 0x01
1675#define AMDKFD_COMMAND_END 0x271685#define AMDKFD_COMMAND_END 0x28
1676 1686
1677#endif1687#endif
include/uapi/linux/kfd_sysfs.h+2−1
@@ -64,7 +64,8 @@ · 63 unmodified lines
64#define HSA_CAP_RESERVED 0x000f800064#define HSA_CAP_RESERVED 0x000f8000
65 65
66#define HSA_CAP2_PER_SDMA_QUEUE_RESET_SUPPORTED 0x0000000166#define HSA_CAP2_PER_SDMA_QUEUE_RESET_SUPPORTED 0x00000001
67#define HSA_CAP2_RESERVED 0xfffffffe67#define HSA_CAP2_TRAP_DEBUG_LDS_OUT_OF_ADDR_RANGE_SUPPORTED 0x00000002
68#define HSA_CAP2_RESERVED 0xfffffffc
68 69
69/* debug_prop bits in node properties */70/* debug_prop bits in node properties */
70#define HSA_DBG_WATCH_ADDR_MASK_LO_BIT_MASK 0x0000000f71#define HSA_DBG_WATCH_ADDR_MASK_LO_BIT_MASK 0x0000000f
include/uapi/linux/kvm.h+23−1
@@ -135,6 +135,12 @@ struct kvm_xen_exit { · 134 unmodified lines
135 } u;135 } u;
136};136};
137 137
138struct kvm_exit_snp_req_certs {
139 __u64 gpa;
140 __u64 npages;
141 __u64 ret;
142};
143
138#define KVM_S390_GET_SKEYS_NONE 1144#define KVM_S390_GET_SKEYS_NONE 1
139#define KVM_S390_SKEYS_MAX 1048576145#define KVM_S390_SKEYS_MAX 1048576
140 146
@@ -180,6 +186,8 @@ struct kvm_xen_exit { · 39 unmodified lines
180#define KVM_EXIT_MEMORY_FAULT 39186#define KVM_EXIT_MEMORY_FAULT 39
181#define KVM_EXIT_TDX 40187#define KVM_EXIT_TDX 40
182#define KVM_EXIT_ARM_SEA 41188#define KVM_EXIT_ARM_SEA 41
189#define KVM_EXIT_ARM_LDST64B 42
190#define KVM_EXIT_SNP_REQ_CERTS 43
183 191
184/* For KVM_EXIT_INTERNAL_ERROR */192/* For KVM_EXIT_INTERNAL_ERROR */
185/* Emulate instruction failed. */193/* Emulate instruction failed. */
@@ -402,7 +410,7 @@ struct kvm_run { · 216 unmodified lines
402 } eoi;410 } eoi;
403 /* KVM_EXIT_HYPERV */411 /* KVM_EXIT_HYPERV */
404 struct kvm_hyperv_exit hyperv;412 struct kvm_hyperv_exit hyperv;
405 /* KVM_EXIT_ARM_NISV */413 /* KVM_EXIT_ARM_NISV / KVM_EXIT_ARM_LDST64B */
406 struct {414 struct {
407 __u64 esr_iss;415 __u64 esr_iss;
408 __u64 fault_ipa;416 __u64 fault_ipa;
@@ -482,6 +490,8 @@ struct kvm_run { · 73 unmodified lines
482 __u64 gva;490 __u64 gva;
483 __u64 gpa;491 __u64 gpa;
484 } arm_sea;492 } arm_sea;
493 /* KVM_EXIT_SNP_REQ_CERTS */
494 struct kvm_exit_snp_req_certs snp_req_certs;
485 /* Fix the size of the union. */495 /* Fix the size of the union. */
486 char padding[256];496 char padding[256];
487 };497 };
@@ -974,6 +984,7 @@ struct kvm_enable_cap { · 486 unmodified lines
974#define KVM_CAP_GUEST_MEMFD_FLAGS 244984#define KVM_CAP_GUEST_MEMFD_FLAGS 244
975#define KVM_CAP_ARM_SEA_TO_USER 245985#define KVM_CAP_ARM_SEA_TO_USER 245
976#define KVM_CAP_S390_USER_OPEREXEC 246986#define KVM_CAP_S390_USER_OPEREXEC 246
987#define KVM_CAP_S390_KEYOP 247
977 988
978struct kvm_irq_routing_irqchip {989struct kvm_irq_routing_irqchip {
979 __u32 irqchip;990 __u32 irqchip;
@@ -1219,6 +1230,16 @@ struct kvm_vfio_spapr_tce { · 239 unmodified lines
1219 __s32 tablefd;1230 __s32 tablefd;
1220};1231};
1221 1232
1233#define KVM_S390_KEYOP_ISKE 0x01
1234#define KVM_S390_KEYOP_RRBE 0x02
1235#define KVM_S390_KEYOP_SSKE 0x03
1236struct kvm_s390_keyop {
1237 __u64 guest_addr;
1238 __u8 key;
1239 __u8 operation;
1240 __u8 pad[6];
1241};
1242
1222/*1243/*
1223 * KVM_CREATE_VCPU receives as a parameter the vcpu slot, and returns1244 * KVM_CREATE_VCPU receives as a parameter the vcpu slot, and returns
1224 * a vcpu fd.1245 * a vcpu fd.
@@ -1238,6 +1259,7 @@ struct kvm_vfio_spapr_tce { · 13 unmodified lines
1238#define KVM_S390_UCAS_MAP _IOW(KVMIO, 0x50, struct kvm_s390_ucas_mapping)1259#define KVM_S390_UCAS_MAP _IOW(KVMIO, 0x50, struct kvm_s390_ucas_mapping)
1239#define KVM_S390_UCAS_UNMAP _IOW(KVMIO, 0x51, struct kvm_s390_ucas_mapping)1260#define KVM_S390_UCAS_UNMAP _IOW(KVMIO, 0x51, struct kvm_s390_ucas_mapping)
1240#define KVM_S390_VCPU_FAULT _IOW(KVMIO, 0x52, unsigned long)1261#define KVM_S390_VCPU_FAULT _IOW(KVMIO, 0x52, unsigned long)
1262#define KVM_S390_KEYOP _IOWR(KVMIO, 0x53, struct kvm_s390_keyop)
1241 1263
1242/* Device model IOC */1264/* Device model IOC */
1243#define KVM_CREATE_IRQCHIP _IO(KVMIO, 0x60)1265#define KVM_CREATE_IRQCHIP _IO(KVMIO, 0x60)
include/uapi/linux/landlock.h+39−28
@@ -117,11 +117,24 @@ struct landlock_ruleset_attr { · 116 unmodified lines
117 * future nested domains, not the one being created. It can also be used117 * future nested domains, not the one being created. It can also be used
118 * with a @ruleset_fd value of -1 to mute subdomain logs without creating a118 * with a @ruleset_fd value of -1 to mute subdomain logs without creating a
119 * domain.119 * domain.
120 *
121 * The following flag supports policy enforcement in multithreaded processes:
122 *
123 * %LANDLOCK_RESTRICT_SELF_TSYNC
124 * Applies the new Landlock configuration atomically to all threads of the
125 * current process, including the Landlock domain and logging
126 * configuration. This overrides the Landlock configuration of sibling
127 * threads, irrespective of previously established Landlock domains and
128 * logging configurations on these threads.
129 *
130 * If the calling thread is running with no_new_privs, this operation
131 * enables no_new_privs on the sibling threads as well.
120 */132 */
121/* clang-format off */133/* clang-format off */
122#define LANDLOCK_RESTRICT_SELF_LOG_SAME_EXEC_OFF (1U << 0)134#define LANDLOCK_RESTRICT_SELF_LOG_SAME_EXEC_OFF (1U << 0)
123#define LANDLOCK_RESTRICT_SELF_LOG_NEW_EXEC_ON (1U << 1)135#define LANDLOCK_RESTRICT_SELF_LOG_NEW_EXEC_ON (1U << 1)
124#define LANDLOCK_RESTRICT_SELF_LOG_SUBDOMAINS_OFF (1U << 2)136#define LANDLOCK_RESTRICT_SELF_LOG_SUBDOMAINS_OFF (1U << 2)
137#define LANDLOCK_RESTRICT_SELF_TSYNC (1U << 3)
125/* clang-format on */138/* clang-format on */
126 139
127/**140/**
@@ -182,11 +195,13 @@ struct landlock_net_port_attr { · 54 unmodified lines
182 * It should be noted that port 0 passed to :manpage:`bind(2)` will bind195 * It should be noted that port 0 passed to :manpage:`bind(2)` will bind
183 * to an available port from the ephemeral port range. This can be196 * to an available port from the ephemeral port range. This can be
184 * configured with the ``/proc/sys/net/ipv4/ip_local_port_range`` sysctl197 * configured with the ``/proc/sys/net/ipv4/ip_local_port_range`` sysctl
185 * (also used for IPv6).198 * (also used for IPv6), and within that range, on a per-socket basis
199 * with ``setsockopt(IP_LOCAL_PORT_RANGE)``.
186 *200 *
187 * A Landlock rule with port 0 and the ``LANDLOCK_ACCESS_NET_BIND_TCP``201 * A Landlock rule with port 0 and the %LANDLOCK_ACCESS_NET_BIND_TCP
188 * right means that requesting to bind on port 0 is allowed and it will202 * right means that requesting to bind on port 0 is allowed and it will
189 * automatically translate to binding on the related port range.203 * automatically translate to binding on a kernel-assigned ephemeral
204 * port.
190 */205 */
191 __u64 port;206 __u64 port;
192};207};
@@ -216,6 +231,23 @@ struct landlock_net_port_attr { · 23 unmodified lines
216 * :manpage:`ftruncate(2)`, :manpage:`creat(2)`, or :manpage:`open(2)` with231 * :manpage:`ftruncate(2)`, :manpage:`creat(2)`, or :manpage:`open(2)` with
217 * ``O_TRUNC``. This access right is available since the third version of the232 * ``O_TRUNC``. This access right is available since the third version of the
218 * Landlock ABI.233 * Landlock ABI.
234 * - %LANDLOCK_ACCESS_FS_IOCTL_DEV: Invoke :manpage:`ioctl(2)` commands on an opened
235 * character or block device.
236 *
237 * This access right applies to all `ioctl(2)` commands implemented by device
238 * drivers. However, the following common IOCTL commands continue to be
239 * invokable independent of the %LANDLOCK_ACCESS_FS_IOCTL_DEV right:
240 *
241 * * IOCTL commands targeting file descriptors (``FIOCLEX``, ``FIONCLEX``),
242 * * IOCTL commands targeting file descriptions (``FIONBIO``, ``FIOASYNC``),
243 * * IOCTL commands targeting file systems (``FIFREEZE``, ``FITHAW``,
244 * ``FIGETBSZ``, ``FS_IOC_GETFSUUID``, ``FS_IOC_GETFSSYSFSPATH``)
245 * * Some IOCTL commands which do not make sense when used with devices, but
246 * whose implementations are safe and return the right error codes
247 * (``FS_IOC_FIEMAP``, ``FICLONE``, ``FICLONERANGE``, ``FIDEDUPERANGE``)
248 *
249 * This access right is available since the fifth version of the Landlock
250 * ABI.
219 *251 *
220 * Whether an opened file can be truncated with :manpage:`ftruncate(2)` or used252 * Whether an opened file can be truncated with :manpage:`ftruncate(2)` or used
221 * with `ioctl(2)` is determined during :manpage:`open(2)`, in the same way as253 * with `ioctl(2)` is determined during :manpage:`open(2)`, in the same way as
@@ -275,26 +307,6 @@ struct landlock_net_port_attr { · 53 unmodified lines
275 * If multiple requirements are not met, the ``EACCES`` error code takes307 * If multiple requirements are not met, the ``EACCES`` error code takes
276 * precedence over ``EXDEV``.308 * precedence over ``EXDEV``.
277 *309 *
278 * The following access right applies both to files and directories:
279 *
280 * - %LANDLOCK_ACCESS_FS_IOCTL_DEV: Invoke :manpage:`ioctl(2)` commands on an opened
281 * character or block device.
282 *
283 * This access right applies to all `ioctl(2)` commands implemented by device
284 * drivers. However, the following common IOCTL commands continue to be
285 * invokable independent of the %LANDLOCK_ACCESS_FS_IOCTL_DEV right:
286 *
287 * * IOCTL commands targeting file descriptors (``FIOCLEX``, ``FIONCLEX``),
288 * * IOCTL commands targeting file descriptions (``FIONBIO``, ``FIOASYNC``),
289 * * IOCTL commands targeting file systems (``FIFREEZE``, ``FITHAW``,
290 * ``FIGETBSZ``, ``FS_IOC_GETFSUUID``, ``FS_IOC_GETFSSYSFSPATH``)
291 * * Some IOCTL commands which do not make sense when used with devices, but
292 * whose implementations are safe and return the right error codes
293 * (``FS_IOC_FIEMAP``, ``FICLONE``, ``FICLONERANGE``, ``FIDEDUPERANGE``)
294 *
295 * This access right is available since the fifth version of the Landlock
296 * ABI.
297 *
298 * .. warning::310 * .. warning::
299 *311 *
300 * It is currently not possible to restrict some file-related actions312 * It is currently not possible to restrict some file-related actions
@@ -332,13 +344,12 @@ struct landlock_net_port_attr { · 31 unmodified lines
332 * These flags enable to restrict a sandboxed process to a set of network344 * These flags enable to restrict a sandboxed process to a set of network
333 * actions.345 * actions.
334 *346 *
335 * This is supported since Landlock ABI version 4.
336 *
337 * The following access rights apply to TCP port numbers:347 * The following access rights apply to TCP port numbers:
338 *348 *
339 * - %LANDLOCK_ACCESS_NET_BIND_TCP: Bind a TCP socket to a local port.349 * - %LANDLOCK_ACCESS_NET_BIND_TCP: Bind TCP sockets to the given local
340 * - %LANDLOCK_ACCESS_NET_CONNECT_TCP: Connect an active TCP socket to350 * port. Support added in Landlock ABI version 4.
341 * a remote port.351 * - %LANDLOCK_ACCESS_NET_CONNECT_TCP: Connect TCP sockets to the given
352 * remote port. Support added in Landlock ABI version 4.
342 */353 */
343/* clang-format off */354/* clang-format off */
344#define LANDLOCK_ACCESS_NET_BIND_TCP (1ULL << 0)355#define LANDLOCK_ACCESS_NET_BIND_TCP (1ULL << 0)
include/uapi/linux/magic.h+1−0
@@ -104,5 +104,6 @@ · 103 unmodified lines
104#define SECRETMEM_MAGIC 0x5345434d /* "SECM" */104#define SECRETMEM_MAGIC 0x5345434d /* "SECM" */
105#define PID_FS_MAGIC 0x50494446 /* "PIDF" */105#define PID_FS_MAGIC 0x50494446 /* "PIDF" */
106#define GUEST_MEMFD_MAGIC 0x474d454d /* "GMEM" */106#define GUEST_MEMFD_MAGIC 0x474d454d /* "GMEM" */
107#define NULL_FS_MAGIC 0x4E554C4C /* "NULL" */
107 108
108#endif /* __LINUX_MAGIC_H__ */109#endif /* __LINUX_MAGIC_H__ */
include/uapi/linux/media/arm/mali-c55-config.h+0−9
@@ -194,15 +194,6 @@ struct mali_c55_stats_buffer { · 193 unmodified lines
194 __u32 reserved3[15];194 __u32 reserved3[15];
195} __attribute__((packed));195} __attribute__((packed));
196 196
197/**
198 * enum mali_c55_param_buffer_version - Mali-C55 parameters block versioning
199 *
200 * @MALI_C55_PARAM_BUFFER_V1: First version of Mali-C55 parameters block
201 */
202enum mali_c55_param_buffer_version {
203 MALI_C55_PARAM_BUFFER_V1,
204};
205
206/**197/**
207 * enum mali_c55_param_block_type - Enumeration of Mali-C55 parameter blocks198 * enum mali_c55_param_block_type - Enumeration of Mali-C55 parameter blocks
208 *199 *
include/uapi/linux/mempolicy.h+3−0
@@ -39,6 +39,9 @@ enum { · 38 unmodified lines
39#define MPOL_MODE_FLAGS \39#define MPOL_MODE_FLAGS \
40 (MPOL_F_STATIC_NODES | MPOL_F_RELATIVE_NODES | MPOL_F_NUMA_BALANCING)40 (MPOL_F_STATIC_NODES | MPOL_F_RELATIVE_NODES | MPOL_F_NUMA_BALANCING)
41 41
42/* Whether the nodemask is specified by users */
43#define MPOL_USER_NODEMASK_FLAGS (MPOL_F_STATIC_NODES | MPOL_F_RELATIVE_NODES)
44
42/* Flags for get_mempolicy */45/* Flags for get_mempolicy */
43#define MPOL_F_NODE (1<<0) /* return next IL mode instead of node mask */46#define MPOL_F_NODE (1<<0) /* return next IL mode instead of node mask */
44#define MPOL_F_ADDR (1<<1) /* look up vma using address */47#define MPOL_F_ADDR (1<<1) /* look up vma using address */
include/uapi/linux/mount.h+11−2
@@ -61,7 +61,8 @@ · 60 unmodified lines
61/*61/*
62 * open_tree() flags.62 * open_tree() flags.
63 */63 */
64#define OPEN_TREE_CLONE 1 /* Clone the target tree and attach the clone */64#define OPEN_TREE_CLONE (1 << 0) /* Clone the target tree and attach the clone */
65#define OPEN_TREE_NAMESPACE (1 << 1) /* Clone the target tree into a new mount namespace */
65#define OPEN_TREE_CLOEXEC O_CLOEXEC /* Close the file on execve() */66#define OPEN_TREE_CLOEXEC O_CLOEXEC /* Close the file on execve() */
66 67
67/*68/*
@@ -197,7 +198,10 @@ struct statmount { · 129 unmodified lines
197 */198 */
198struct mnt_id_req {199struct mnt_id_req {
199 __u32 size;200 __u32 size;
200 __u32 mnt_ns_fd;201 union {
202 __u32 mnt_ns_fd;
203 __u32 mnt_fd;
204 };
201 __u64 mnt_id;205 __u64 mnt_id;
202 __u64 param;206 __u64 param;
203 __u64 mnt_ns_id;207 __u64 mnt_ns_id;
@@ -232,4 +236,9 @@ struct mnt_id_req { · 28 unmodified lines
232#define LSMT_ROOT 0xffffffffffffffff /* root mount */236#define LSMT_ROOT 0xffffffffffffffff /* root mount */
233#define LISTMOUNT_REVERSE (1 << 0) /* List later mounts first */237#define LISTMOUNT_REVERSE (1 << 0) /* List later mounts first */
234 238
239/*
240 * @flag bits for statmount(2)
241 */
242#define STATMOUNT_BY_FD 0x00000001U /* want mountinfo for given fd */
243
235#endif /* _UAPI_LINUX_MOUNT_H */244#endif /* _UAPI_LINUX_MOUNT_H */
include/uapi/linux/mptcp_pm.h+1−1
@@ -11,7 +11,7 @@ · 10 unmodified lines
11#define MPTCP_PM_VER 111#define MPTCP_PM_VER 1
12 12
13/**13/**
14 * enum mptcp_event_type14 * enum mptcp_event_type - Netlink MPTCP event types
15 * @MPTCP_EVENT_UNSPEC: unused event15 * @MPTCP_EVENT_UNSPEC: unused event
16 * @MPTCP_EVENT_CREATED: A new MPTCP connection has been created. It is the16 * @MPTCP_EVENT_CREATED: A new MPTCP connection has been created. It is the
17 * good time to allocate memory and send ADD_ADDR if needed. Depending on the17 * good time to allocate memory and send ADD_ADDR if needed. Depending on the
include/uapi/linux/mshv.h+2−0
@@ -27,6 +27,8 @@ enum { · 26 unmodified lines
27 MSHV_PT_BIT_X2APIC,27 MSHV_PT_BIT_X2APIC,
28 MSHV_PT_BIT_GPA_SUPER_PAGES,28 MSHV_PT_BIT_GPA_SUPER_PAGES,
29 MSHV_PT_BIT_CPU_AND_XSAVE_FEATURES,29 MSHV_PT_BIT_CPU_AND_XSAVE_FEATURES,
30 MSHV_PT_BIT_NESTED_VIRTUALIZATION,
31 MSHV_PT_BIT_SMT_ENABLED_GUEST,
30 MSHV_PT_BIT_COUNT,32 MSHV_PT_BIT_COUNT,
31};33};
32 34
include/uapi/linux/netfilter_bridge.h+7−6
@@ -5,15 +5,16 @@ · 4 unmodified lines
5/* bridge-specific defines for netfilter. 5/* bridge-specific defines for netfilter.
6 */6 */
7 7
8#ifndef __KERNEL__
9#include <netinet/if_ether.h> /* for __UAPI_DEF_ETHHDR if defined */
10#endif
11
8#include <linux/in.h>12#include <linux/in.h>
9#include <linux/netfilter.h>13#include <linux/netfilter.h>
10#include <linux/if_ether.h>14#include <linux/if_ether.h>
11#include <linux/if_vlan.h>15#include <linux/if_vlan.h>
12#include <linux/if_pppox.h>16#include <linux/if_pppox.h>
13 17#include <linux/typelimits.h>
14#ifndef __KERNEL__
15#include <limits.h> /* for INT_MIN, INT_MAX */
16#endif
17 18
18/* Bridge Hooks */19/* Bridge Hooks */
19/* After promisc drops, checksum checks. */20/* After promisc drops, checksum checks. */
@@ -31,14 +32,14 @@ · 11 unmodified lines
31#define NF_BR_NUMHOOKS 632#define NF_BR_NUMHOOKS 6
32 33
33enum nf_br_hook_priorities {34enum nf_br_hook_priorities {
34 NF_BR_PRI_FIRST = INT_MIN,35 NF_BR_PRI_FIRST = __KERNEL_INT_MIN,
35 NF_BR_PRI_NAT_DST_BRIDGED = -300,36 NF_BR_PRI_NAT_DST_BRIDGED = -300,
36 NF_BR_PRI_FILTER_BRIDGED = -200,37 NF_BR_PRI_FILTER_BRIDGED = -200,
37 NF_BR_PRI_BRNF = 0,38 NF_BR_PRI_BRNF = 0,
38 NF_BR_PRI_NAT_DST_OTHER = 100,39 NF_BR_PRI_NAT_DST_OTHER = 100,
39 NF_BR_PRI_FILTER_OTHER = 200,40 NF_BR_PRI_FILTER_OTHER = 200,
40 NF_BR_PRI_NAT_SRC = 300,41 NF_BR_PRI_NAT_SRC = 300,
41 NF_BR_PRI_LAST = INT_MAX,42 NF_BR_PRI_LAST = __KERNEL_INT_MAX,
42};43};
43 44
44#endif /* _UAPI__LINUX_BRIDGE_NETFILTER_H */45#endif /* _UAPI__LINUX_BRIDGE_NETFILTER_H */
include/uapi/linux/netfilter_ipv4.h+4−5
@@ -7,12 +7,11 @@ · 6 unmodified lines
7 7
8 8
9#include <linux/netfilter.h>9#include <linux/netfilter.h>
10#include <linux/typelimits.h>
10 11
11/* only for userspace compatibility */12/* only for userspace compatibility */
12#ifndef __KERNEL__13#ifndef __KERNEL__
13 14
14#include <limits.h> /* for INT_MIN, INT_MAX */
15
16/* IP Hooks */15/* IP Hooks */
17/* After promisc drops, checksum checks. */16/* After promisc drops, checksum checks. */
18#define NF_IP_PRE_ROUTING 017#define NF_IP_PRE_ROUTING 0
@@ -28,7 +27,7 @@ · 9 unmodified lines
28#endif /* ! __KERNEL__ */27#endif /* ! __KERNEL__ */
29 28
30enum nf_ip_hook_priorities {29enum nf_ip_hook_priorities {
31 NF_IP_PRI_FIRST = INT_MIN,30 NF_IP_PRI_FIRST = __KERNEL_INT_MIN,
32 NF_IP_PRI_RAW_BEFORE_DEFRAG = -450,31 NF_IP_PRI_RAW_BEFORE_DEFRAG = -450,
33 NF_IP_PRI_CONNTRACK_DEFRAG = -400,32 NF_IP_PRI_CONNTRACK_DEFRAG = -400,
34 NF_IP_PRI_RAW = -300,33 NF_IP_PRI_RAW = -300,
@@ -41,8 +40,8 @@ enum nf_ip_hook_priorities { · 6 unmodified lines
41 NF_IP_PRI_NAT_SRC = 100,40 NF_IP_PRI_NAT_SRC = 100,
42 NF_IP_PRI_SELINUX_LAST = 225,41 NF_IP_PRI_SELINUX_LAST = 225,
43 NF_IP_PRI_CONNTRACK_HELPER = 300,42 NF_IP_PRI_CONNTRACK_HELPER = 300,
44 NF_IP_PRI_CONNTRACK_CONFIRM = INT_MAX,43 NF_IP_PRI_CONNTRACK_CONFIRM = __KERNEL_INT_MAX,
45 NF_IP_PRI_LAST = INT_MAX,44 NF_IP_PRI_LAST = __KERNEL_INT_MAX,
46};45};
47 46
48/* Arguments for setsockopt SOL_IP: */47/* Arguments for setsockopt SOL_IP: */
include/uapi/linux/netfilter_ipv6.h+3−4
@@ -10,12 +10,11 @@ · 9 unmodified lines
10 10
11 11
12#include <linux/netfilter.h>12#include <linux/netfilter.h>
13#include <linux/typelimits.h>
13 14
14/* only for userspace compatibility */15/* only for userspace compatibility */
15#ifndef __KERNEL__16#ifndef __KERNEL__
16 17
17#include <limits.h> /* for INT_MIN, INT_MAX */
18
19/* IP6 Hooks */18/* IP6 Hooks */
20/* After promisc drops, checksum checks. */19/* After promisc drops, checksum checks. */
21#define NF_IP6_PRE_ROUTING 020#define NF_IP6_PRE_ROUTING 0
@@ -32,7 +31,7 @@ · 10 unmodified lines
32 31
33 32
34enum nf_ip6_hook_priorities {33enum nf_ip6_hook_priorities {
35 NF_IP6_PRI_FIRST = INT_MIN,34 NF_IP6_PRI_FIRST = __KERNEL_INT_MIN,
36 NF_IP6_PRI_RAW_BEFORE_DEFRAG = -450,35 NF_IP6_PRI_RAW_BEFORE_DEFRAG = -450,
37 NF_IP6_PRI_CONNTRACK_DEFRAG = -400,36 NF_IP6_PRI_CONNTRACK_DEFRAG = -400,
38 NF_IP6_PRI_RAW = -300,37 NF_IP6_PRI_RAW = -300,
@@ -45,7 +44,7 @@ enum nf_ip6_hook_priorities { · 6 unmodified lines
45 NF_IP6_PRI_NAT_SRC = 100,44 NF_IP6_PRI_NAT_SRC = 100,
46 NF_IP6_PRI_SELINUX_LAST = 225,45 NF_IP6_PRI_SELINUX_LAST = 225,
47 NF_IP6_PRI_CONNTRACK_HELPER = 300,46 NF_IP6_PRI_CONNTRACK_HELPER = 300,
48 NF_IP6_PRI_LAST = INT_MAX,47 NF_IP6_PRI_LAST = __KERNEL_INT_MAX,
49};48};
50 49
51 50
include/uapi/linux/nfs.h+1−1
@@ -55,7 +55,7 @@ · 54 unmodified lines
55 NFSERR_NODEV = 19, /* v2 v3 v4 */55 NFSERR_NODEV = 19, /* v2 v3 v4 */
56 NFSERR_NOTDIR = 20, /* v2 v3 v4 */56 NFSERR_NOTDIR = 20, /* v2 v3 v4 */
57 NFSERR_ISDIR = 21, /* v2 v3 v4 */57 NFSERR_ISDIR = 21, /* v2 v3 v4 */
58 NFSERR_INVAL = 22, /* v2 v3 v4 */58 NFSERR_INVAL = 22, /* v3 v4 */
59 NFSERR_FBIG = 27, /* v2 v3 v4 */59 NFSERR_FBIG = 27, /* v2 v3 v4 */
60 NFSERR_NOSPC = 28, /* v2 v3 v4 */60 NFSERR_NOSPC = 28, /* v2 v3 v4 */
61 NFSERR_ROFS = 30, /* v2 v3 v4 */61 NFSERR_ROFS = 30, /* v2 v3 v4 */
include/uapi/linux/nfsd_netlink.h+1−0
@@ -35,6 +35,7 @@ enum { · 34 unmodified lines
35 NFSD_A_SERVER_GRACETIME,35 NFSD_A_SERVER_GRACETIME,
36 NFSD_A_SERVER_LEASETIME,36 NFSD_A_SERVER_LEASETIME,
37 NFSD_A_SERVER_SCOPE,37 NFSD_A_SERVER_SCOPE,
38 NFSD_A_SERVER_MIN_THREADS,
38 39
39 __NFSD_A_SERVER_MAX,40 __NFSD_A_SERVER_MAX,
40 NFSD_A_SERVER_MAX = (__NFSD_A_SERVER_MAX - 1)41 NFSD_A_SERVER_MAX = (__NFSD_A_SERVER_MAX - 1)
include/uapi/linux/nilfs2_api.h+2−2
@@ -58,7 +58,7 @@ NILFS_CPINFO_FNS(INVALID, invalid) · 57 unmodified lines
58NILFS_CPINFO_FNS(MINOR, minor)58NILFS_CPINFO_FNS(MINOR, minor)
59 59
60/**60/**
61 * nilfs_suinfo - segment usage information61 * struct nilfs_suinfo - segment usage information
62 * @sui_lastmod: timestamp of last modification62 * @sui_lastmod: timestamp of last modification
63 * @sui_nblocks: number of written blocks in segment63 * @sui_nblocks: number of written blocks in segment
64 * @sui_flags: segment usage flags64 * @sui_flags: segment usage flags
@@ -93,7 +93,7 @@ static inline int nilfs_suinfo_clean(const struct nilfs_suinfo *si) · 28 unmodified lines
93}93}
94 94
95/**95/**
96 * nilfs_suinfo_update - segment usage information update96 * struct nilfs_suinfo_update - segment usage information update
97 * @sup_segnum: segment number97 * @sup_segnum: segment number
98 * @sup_flags: flags for which fields are active in sup_sui98 * @sup_flags: flags for which fields are active in sup_sui
99 * @sup_reserved: reserved necessary for alignment99 * @sup_reserved: reserved necessary for alignment
include/uapi/linux/nilfs2_ondisk.h+97−66
@@ -133,73 +133,104 @@ struct nilfs_super_root { · 132 unmodified lines
133 133
134/**134/**
135 * struct nilfs_super_block - structure of super block on disk135 * struct nilfs_super_block - structure of super block on disk
136 * @s_rev_level: Revision level
137 * @s_minor_rev_level: minor revision level
138 * @s_magic: Magic signature
139 * @s_bytes: Bytes count of CRC calculation for
140 * this structure. s_reserved is excluded.
141 * @s_flags: flags
142 * @s_crc_seed: Seed value of CRC calculation
143 * @s_sum: Check sum of super block
144 * @s_log_block_size: Block size represented as follows:
145 * blocksize = 1 << (s_log_block_size + 10)
146 * @s_nsegments: Number of segments in filesystem
147 * @s_dev_size: block device size in bytes
148 * @s_first_data_block: 1st seg disk block number
149 * @s_blocks_per_segment: number of blocks per full segment
150 * @s_r_segments_percentage: Reserved segments percentage
151 * @s_last_cno: Last checkpoint number
152 * @s_last_pseg: disk block addr pseg written last
153 * @s_last_seq: seq. number of seg written last
154 * @s_free_blocks_count: Free blocks count
155 * @s_ctime: Creation time (execution time of newfs)
156 * @s_mtime: Mount time
157 * @s_wtime: Write time
158 * @s_mnt_count: Mount count
159 * @s_max_mnt_count: Maximal mount count
160 * @s_state: File system state
161 * @s_errors: Behaviour when detecting errors
162 * @s_lastcheck: time of last check
163 * @s_checkinterval: max. time between checks
164 * @s_creator_os: OS
165 * @s_def_resuid: Default uid for reserved blocks
166 * @s_def_resgid: Default gid for reserved blocks
167 * @s_first_ino: First non-reserved inode
168 * @s_inode_size: Size of an inode
169 * @s_dat_entry_size: Size of a dat entry
170 * @s_checkpoint_size: Size of a checkpoint
171 * @s_segment_usage_size: Size of a segment usage
172 * @s_uuid: 128-bit uuid for volume
173 * @s_volume_name: volume name
174 * @s_c_interval: Commit interval of segment
175 * @s_c_block_max: Threshold of data amount for the
176 * segment construction
177 * @s_feature_compat: Compatible feature set
178 * @s_feature_compat_ro: Read-only compatible feature set
179 * @s_feature_incompat: Incompatible feature set
180 * @s_reserved: padding to the end of the block
136 */181 */
137struct nilfs_super_block {182struct nilfs_super_block {
138/*00*/ __le32 s_rev_level; /* Revision level */183/*00*/ __le32 s_rev_level;
139 __le16 s_minor_rev_level; /* minor revision level */184 __le16 s_minor_rev_level;
140 __le16 s_magic; /* Magic signature */185 __le16 s_magic;
141 186
142 __le16 s_bytes; /*187 __le16 s_bytes;
143 * Bytes count of CRC calculation188 __le16 s_flags;
144 * for this structure. s_reserved189 __le32 s_crc_seed;
145 * is excluded.190/*10*/ __le32 s_sum;
146 */191
147 __le16 s_flags; /* flags */192 __le32 s_log_block_size;
148 __le32 s_crc_seed; /* Seed value of CRC calculation */193 __le64 s_nsegments;
149/*10*/ __le32 s_sum; /* Check sum of super block */194/*20*/ __le64 s_dev_size;
150 195 __le64 s_first_data_block;
151 __le32 s_log_block_size; /*196/*30*/ __le32 s_blocks_per_segment;
152 * Block size represented as follows197 __le32 s_r_segments_percentage;
153 * blocksize =198
154 * 1 << (s_log_block_size + 10)199 __le64 s_last_cno;
155 */200/*40*/ __le64 s_last_pseg;
156 __le64 s_nsegments; /* Number of segments in filesystem */201 __le64 s_last_seq;
157/*20*/ __le64 s_dev_size; /* block device size in bytes */202/*50*/ __le64 s_free_blocks_count;
158 __le64 s_first_data_block; /* 1st seg disk block number */203
159/*30*/ __le32 s_blocks_per_segment; /* number of blocks per full segment */204 __le64 s_ctime;
160 __le32 s_r_segments_percentage; /* Reserved segments percentage */205/*60*/ __le64 s_mtime;
161 206 __le64 s_wtime;
162 __le64 s_last_cno; /* Last checkpoint number */207/*70*/ __le16 s_mnt_count;
163/*40*/ __le64 s_last_pseg; /* disk block addr pseg written last */208 __le16 s_max_mnt_count;
164 __le64 s_last_seq; /* seq. number of seg written last */209 __le16 s_state;
165/*50*/ __le64 s_free_blocks_count; /* Free blocks count */210 __le16 s_errors;
166 211 __le64 s_lastcheck;
167 __le64 s_ctime; /*212
168 * Creation time (execution time of213/*80*/ __le32 s_checkinterval;
169 * newfs)214 __le32 s_creator_os;
170 */215 __le16 s_def_resuid;
171/*60*/ __le64 s_mtime; /* Mount time */216 __le16 s_def_resgid;
172 __le64 s_wtime; /* Write time */217 __le32 s_first_ino;
173/*70*/ __le16 s_mnt_count; /* Mount count */218
174 __le16 s_max_mnt_count; /* Maximal mount count */219/*90*/ __le16 s_inode_size;
175 __le16 s_state; /* File system state */220 __le16 s_dat_entry_size;
176 __le16 s_errors; /* Behaviour when detecting errors */221 __le16 s_checkpoint_size;
177 __le64 s_lastcheck; /* time of last check */222 __le16 s_segment_usage_size;
178 223
179/*80*/ __le32 s_checkinterval; /* max. time between checks */224/*98*/ __u8 s_uuid[16];
180 __le32 s_creator_os; /* OS */225/*A8*/ char s_volume_name[80] __kernel_nonstring;
181 __le16 s_def_resuid; /* Default uid for reserved blocks */226
182 __le16 s_def_resgid; /* Default gid for reserved blocks */227/*F8*/ __le32 s_c_interval;
183 __le32 s_first_ino; /* First non-reserved inode */228 __le32 s_c_block_max;
184 229
185/*90*/ __le16 s_inode_size; /* Size of an inode */230/*100*/ __le64 s_feature_compat;
186 __le16 s_dat_entry_size; /* Size of a dat entry */231 __le64 s_feature_compat_ro;
187 __le16 s_checkpoint_size; /* Size of a checkpoint */232 __le64 s_feature_incompat;
188 __le16 s_segment_usage_size; /* Size of a segment usage */233 __u32 s_reserved[186];
189
190/*98*/ __u8 s_uuid[16]; /* 128-bit uuid for volume */
191/*A8*/ char s_volume_name[80] /* volume name */
192 __kernel_nonstring;
193
194/*F8*/ __le32 s_c_interval; /* Commit interval of segment */
195 __le32 s_c_block_max; /*
196 * Threshold of data amount for
197 * the segment construction
198 */
199/*100*/ __le64 s_feature_compat; /* Compatible feature set */
200 __le64 s_feature_compat_ro; /* Read-only compatible feature set */
201 __le64 s_feature_incompat; /* Incompatible feature set */
202 __u32 s_reserved[186]; /* padding to the end of the block */
203};234};
204 235
205/*236/*
@@ -449,7 +480,7 @@ struct nilfs_btree_node { · 243 unmodified lines
449/**480/**
450 * struct nilfs_direct_node - header of built-in bmap array481 * struct nilfs_direct_node - header of built-in bmap array
451 * @dn_flags: flags482 * @dn_flags: flags
452 * @dn_pad: padding483 * @pad: padding
453 */484 */
454struct nilfs_direct_node {485struct nilfs_direct_node {
455 __u8 dn_flags;486 __u8 dn_flags;
include/uapi/linux/nl80211.h+107−5
@@ -11,7 +11,7 @@ · 10 unmodified lines
11 * Copyright 2008 Jouni Malinen <jouni.malinen@atheros.com>11 * Copyright 2008 Jouni Malinen <jouni.malinen@atheros.com>
12 * Copyright 2008 Colin McCabe <colin@cozybit.com>12 * Copyright 2008 Colin McCabe <colin@cozybit.com>
13 * Copyright 2015-2017 Intel Deutschland GmbH13 * Copyright 2015-2017 Intel Deutschland GmbH
14 * Copyright (C) 2018-2025 Intel Corporation14 * Copyright (C) 2018-2026 Intel Corporation
15 *15 *
16 * Permission to use, copy, modify, and/or distribute this software for any16 * Permission to use, copy, modify, and/or distribute this software for any
17 * purpose with or without fee is hereby granted, provided that the above17 * purpose with or without fee is hereby granted, provided that the above
@@ -2880,8 +2880,9 @@ enum nl80211_commands { · 2862 unmodified lines
2880 * index. If the userspace includes more RNR elements than number of2880 * index. If the userspace includes more RNR elements than number of
2881 * MBSSID elements then these will be added in every EMA beacon.2881 * MBSSID elements then these will be added in every EMA beacon.
2882 *2882 *
2883 * @NL80211_ATTR_MLO_LINK_DISABLED: Flag attribute indicating that the link is2883 * @NL80211_ATTR_MLO_LINK_DISABLED: Unused. It was used to indicate that a link
2884 * disabled.2884 * is disabled during association. However, the AP will send the
2885 * information by including a TTLM in the association response.
2885 *2886 *
2886 * @NL80211_ATTR_BSS_DUMP_INCLUDE_USE_DATA: Include BSS usage data, i.e.2887 * @NL80211_ATTR_BSS_DUMP_INCLUDE_USE_DATA: Include BSS usage data, i.e.
2887 * include BSSes that can only be used in restricted scenarios and/or2888 * include BSSes that can only be used in restricted scenarios and/or
@@ -2973,6 +2974,16 @@ enum nl80211_commands { · 85 unmodified lines
2973 * primary channel is 2 MHz wide, and the control channel designates2974 * primary channel is 2 MHz wide, and the control channel designates
2974 * the 1 MHz primary subchannel within that 2 MHz primary.2975 * the 1 MHz primary subchannel within that 2 MHz primary.
2975 *2976 *
2977 * @NL80211_ATTR_EPP_PEER: A flag attribute to indicate if the peer is an EPP
2978 * STA. Used with %NL80211_CMD_NEW_STA and %NL80211_CMD_ADD_LINK_STA
2979 *
2980 * @NL80211_ATTR_UHR_CAPABILITY: UHR Capability information element (from
2981 * association request when used with NL80211_CMD_NEW_STATION). Can be set
2982 * only if HE/EHT are also available.
2983 * @NL80211_ATTR_DISABLE_UHR: Force UHR capable interfaces to disable
2984 * this feature during association. This is a flag attribute.
2985 * Currently only supported in mac80211 drivers.
2986 *
2976 * @NUM_NL80211_ATTR: total number of nl80211_attrs available2987 * @NUM_NL80211_ATTR: total number of nl80211_attrs available
2977 * @NL80211_ATTR_MAX: highest attribute number currently defined2988 * @NL80211_ATTR_MAX: highest attribute number currently defined
2978 * @__NL80211_ATTR_AFTER_LAST: internal use2989 * @__NL80211_ATTR_AFTER_LAST: internal use
@@ -3541,6 +3552,11 @@ enum nl80211_attrs { · 562 unmodified lines
3541 3552
3542 NL80211_ATTR_S1G_PRIMARY_2MHZ,3553 NL80211_ATTR_S1G_PRIMARY_2MHZ,
3543 3554
3555 NL80211_ATTR_EPP_PEER,
3556
3557 NL80211_ATTR_UHR_CAPABILITY,
3558 NL80211_ATTR_DISABLE_UHR,
3559
3544 /* add attributes here, update the policy in nl80211.c */3560 /* add attributes here, update the policy in nl80211.c */
3545 3561
3546 __NL80211_ATTR_AFTER_LAST,3562 __NL80211_ATTR_AFTER_LAST,
@@ -3893,6 +3909,12 @@ enum nl80211_eht_ru_alloc { · 346 unmodified lines
3893 * @NL80211_RATE_INFO_4_MHZ_WIDTH: 4 MHz S1G rate3909 * @NL80211_RATE_INFO_4_MHZ_WIDTH: 4 MHz S1G rate
3894 * @NL80211_RATE_INFO_8_MHZ_WIDTH: 8 MHz S1G rate3910 * @NL80211_RATE_INFO_8_MHZ_WIDTH: 8 MHz S1G rate
3895 * @NL80211_RATE_INFO_16_MHZ_WIDTH: 16 MHz S1G rate3911 * @NL80211_RATE_INFO_16_MHZ_WIDTH: 16 MHz S1G rate
3912 * @NL80211_RATE_INFO_UHR_MCS: UHR MCS index (u8, 0-15, 17, 19, 20, 23)
3913 * Note that the other EHT attributes (such as @NL80211_RATE_INFO_EHT_NSS)
3914 * are used in conjunction with this where applicable
3915 * @NL80211_RATE_INFO_UHR_ELR: UHR ELR flag, which restricts NSS to 1,
3916 * MCS to 0 or 1, and GI to %NL80211_RATE_INFO_EHT_GI_1_6.
3917 * @NL80211_RATE_INFO_UHR_IM: UHR Interference Mitigation flag
3896 * @__NL80211_RATE_INFO_AFTER_LAST: internal use3918 * @__NL80211_RATE_INFO_AFTER_LAST: internal use
3897 */3919 */
3898enum nl80211_rate_info {3920enum nl80211_rate_info {
@@ -3926,6 +3948,9 @@ enum nl80211_rate_info { · 27 unmodified lines
3926 NL80211_RATE_INFO_4_MHZ_WIDTH,3948 NL80211_RATE_INFO_4_MHZ_WIDTH,
3927 NL80211_RATE_INFO_8_MHZ_WIDTH,3949 NL80211_RATE_INFO_8_MHZ_WIDTH,
3928 NL80211_RATE_INFO_16_MHZ_WIDTH,3950 NL80211_RATE_INFO_16_MHZ_WIDTH,
3951 NL80211_RATE_INFO_UHR_MCS,
3952 NL80211_RATE_INFO_UHR_ELR,
3953 NL80211_RATE_INFO_UHR_IM,
3929 3954
3930 /* keep last */3955 /* keep last */
3931 __NL80211_RATE_INFO_AFTER_LAST,3956 __NL80211_RATE_INFO_AFTER_LAST,
@@ -4248,6 +4273,10 @@ enum nl80211_mpath_info { · 316 unmodified lines
4248 * capabilities element4273 * capabilities element
4249 * @NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE: EHT PPE thresholds information as4274 * @NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE: EHT PPE thresholds information as
4250 * defined in EHT capabilities element4275 * defined in EHT capabilities element
4276 * @NL80211_BAND_IFTYPE_ATTR_UHR_CAP_MAC: UHR MAC capabilities as in UHR
4277 * capabilities element
4278 * @NL80211_BAND_IFTYPE_ATTR_UHR_CAP_PHY: UHR PHY capabilities as in UHR
4279 * capabilities element
4251 * @__NL80211_BAND_IFTYPE_ATTR_AFTER_LAST: internal use4280 * @__NL80211_BAND_IFTYPE_ATTR_AFTER_LAST: internal use
4252 * @NL80211_BAND_IFTYPE_ATTR_MAX: highest band attribute currently defined4281 * @NL80211_BAND_IFTYPE_ATTR_MAX: highest band attribute currently defined
4253 */4282 */
@@ -4265,6 +4294,8 @@ enum nl80211_band_iftype_attr { · 11 unmodified lines
4265 NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY,4294 NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY,
4266 NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET,4295 NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET,
4267 NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE,4296 NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE,
4297 NL80211_BAND_IFTYPE_ATTR_UHR_CAP_MAC,
4298 NL80211_BAND_IFTYPE_ATTR_UHR_CAP_PHY,
4268 4299
4269 /* keep last */4300 /* keep last */
4270 __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST,4301 __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST,
@@ -4444,6 +4475,11 @@ enum nl80211_wmm_rule { · 173 unmodified lines
4444 * channel in current regulatory domain.4475 * channel in current regulatory domain.
4445 * @NL80211_FREQUENCY_ATTR_NO_16MHZ: 16 MHz operation is not allowed on this4476 * @NL80211_FREQUENCY_ATTR_NO_16MHZ: 16 MHz operation is not allowed on this
4446 * channel in current regulatory domain.4477 * channel in current regulatory domain.
4478 * @NL80211_FREQUENCY_ATTR_S1G_NO_PRIMARY: Channel is not permitted for use
4479 * as a primary channel. Does not prevent the channel from existing
4480 * as a non-primary subchannel. Only applicable to S1G channels.
4481 * @NL80211_FREQUENCY_ATTR_NO_UHR: UHR operation is not allowed on this channel
4482 * in current regulatory domain.
4447 * @NL80211_FREQUENCY_ATTR_MAX: highest frequency attribute number4483 * @NL80211_FREQUENCY_ATTR_MAX: highest frequency attribute number
4448 * currently defined4484 * currently defined
4449 * @__NL80211_FREQUENCY_ATTR_AFTER_LAST: internal use4485 * @__NL80211_FREQUENCY_ATTR_AFTER_LAST: internal use
@@ -4492,6 +4528,8 @@ enum nl80211_frequency_attr { · 42 unmodified lines
4492 NL80211_FREQUENCY_ATTR_NO_4MHZ,4528 NL80211_FREQUENCY_ATTR_NO_4MHZ,
4493 NL80211_FREQUENCY_ATTR_NO_8MHZ,4529 NL80211_FREQUENCY_ATTR_NO_8MHZ,
4494 NL80211_FREQUENCY_ATTR_NO_16MHZ,4530 NL80211_FREQUENCY_ATTR_NO_16MHZ,
4531 NL80211_FREQUENCY_ATTR_S1G_NO_PRIMARY,
4532 NL80211_FREQUENCY_ATTR_NO_UHR,
4495 4533
4496 /* keep last */4534 /* keep last */
4497 __NL80211_FREQUENCY_ATTR_AFTER_LAST,4535 __NL80211_FREQUENCY_ATTR_AFTER_LAST,
@@ -4705,6 +4743,7 @@ enum nl80211_sched_scan_match_attr { · 207 unmodified lines
4705 * despite NO_IR configuration.4743 * despite NO_IR configuration.
4706 * @NL80211_RRF_ALLOW_20MHZ_ACTIVITY: Allow activity in 20 MHz bandwidth,4744 * @NL80211_RRF_ALLOW_20MHZ_ACTIVITY: Allow activity in 20 MHz bandwidth,
4707 * despite NO_IR configuration.4745 * despite NO_IR configuration.
4746 * @NL80211_RRF_NO_UHR: UHR operation not allowed
4708 */4747 */
4709enum nl80211_reg_rule_flags {4748enum nl80211_reg_rule_flags {
4710 NL80211_RRF_NO_OFDM = 1 << 0,4749 NL80211_RRF_NO_OFDM = 1 << 0,
@@ -4731,6 +4770,7 @@ enum nl80211_reg_rule_flags { · 20 unmodified lines
4731 NL80211_RRF_NO_6GHZ_AFC_CLIENT = 1 << 23,4770 NL80211_RRF_NO_6GHZ_AFC_CLIENT = 1 << 23,
4732 NL80211_RRF_ALLOW_6GHZ_VLP_AP = 1 << 24,4771 NL80211_RRF_ALLOW_6GHZ_VLP_AP = 1 << 24,
4733 NL80211_RRF_ALLOW_20MHZ_ACTIVITY = 1 << 25,4772 NL80211_RRF_ALLOW_20MHZ_ACTIVITY = 1 << 25,
4773 NL80211_RRF_NO_UHR = 1 << 26,
4734};4774};
4735 4775
4736#define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR4776#define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR
@@ -5425,6 +5465,7 @@ enum nl80211_bss_status { · 688 unmodified lines
5425 * @NL80211_AUTHTYPE_FILS_SK: Fast Initial Link Setup shared key5465 * @NL80211_AUTHTYPE_FILS_SK: Fast Initial Link Setup shared key
5426 * @NL80211_AUTHTYPE_FILS_SK_PFS: Fast Initial Link Setup shared key with PFS5466 * @NL80211_AUTHTYPE_FILS_SK_PFS: Fast Initial Link Setup shared key with PFS
5427 * @NL80211_AUTHTYPE_FILS_PK: Fast Initial Link Setup public key5467 * @NL80211_AUTHTYPE_FILS_PK: Fast Initial Link Setup public key
5468 * @NL80211_AUTHTYPE_EPPKE: Enhanced Privacy Protection Key Exchange
5428 * @__NL80211_AUTHTYPE_NUM: internal5469 * @__NL80211_AUTHTYPE_NUM: internal
5429 * @NL80211_AUTHTYPE_MAX: maximum valid auth algorithm5470 * @NL80211_AUTHTYPE_MAX: maximum valid auth algorithm
5430 * @NL80211_AUTHTYPE_AUTOMATIC: determine automatically (if necessary by5471 * @NL80211_AUTHTYPE_AUTOMATIC: determine automatically (if necessary by
@@ -5440,6 +5481,7 @@ enum nl80211_auth_type { · 9 unmodified lines
5440 NL80211_AUTHTYPE_FILS_SK,5481 NL80211_AUTHTYPE_FILS_SK,
5441 NL80211_AUTHTYPE_FILS_SK_PFS,5482 NL80211_AUTHTYPE_FILS_SK_PFS,
5442 NL80211_AUTHTYPE_FILS_PK,5483 NL80211_AUTHTYPE_FILS_PK,
5484 NL80211_AUTHTYPE_EPPKE,
5443 5485
5444 /* keep last */5486 /* keep last */
5445 __NL80211_AUTHTYPE_NUM,5487 __NL80211_AUTHTYPE_NUM,
@@ -6744,6 +6786,15 @@ enum nl80211_feature_flags { · 1298 unmodified lines
6744 * @NL80211_EXT_FEATURE_BEACON_RATE_EHT: Driver supports beacon rate6786 * @NL80211_EXT_FEATURE_BEACON_RATE_EHT: Driver supports beacon rate
6745 * configuration (AP/mesh) with EHT rates.6787 * configuration (AP/mesh) with EHT rates.
6746 *6788 *
6789 * @NL80211_EXT_FEATURE_EPPKE: Driver supports Enhanced Privacy Protection
6790 * Key Exchange (EPPKE) with user space SME (NL80211_CMD_AUTHENTICATE)
6791 * in non-AP STA mode.
6792 *
6793 * @NL80211_EXT_FEATURE_ASSOC_FRAME_ENCRYPTION: This specifies that the
6794 * driver supports encryption of (Re)Association Request and Response
6795 * frames in both non‑AP STA and AP mode as specified in
6796 * "IEEE P802.11bi/D3.0, 12.16.6".
6797 *
6747 * @NUM_NL80211_EXT_FEATURES: number of extended features.6798 * @NUM_NL80211_EXT_FEATURES: number of extended features.
6748 * @MAX_NL80211_EXT_FEATURES: highest extended feature index.6799 * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
6749 */6800 */
@@ -6820,6 +6871,8 @@ enum nl80211_ext_feature_index { · 70 unmodified lines
6820 NL80211_EXT_FEATURE_DFS_CONCURRENT,6871 NL80211_EXT_FEATURE_DFS_CONCURRENT,
6821 NL80211_EXT_FEATURE_SPP_AMSDU_SUPPORT,6872 NL80211_EXT_FEATURE_SPP_AMSDU_SUPPORT,
6822 NL80211_EXT_FEATURE_BEACON_RATE_EHT,6873 NL80211_EXT_FEATURE_BEACON_RATE_EHT,
6874 NL80211_EXT_FEATURE_EPPKE,
6875 NL80211_EXT_FEATURE_ASSOC_FRAME_ENCRYPTION,
6823 6876
6824 /* add new features before the definition below */6877 /* add new features before the definition below */
6825 NUM_NL80211_EXT_FEATURES,6878 NUM_NL80211_EXT_FEATURES,
@@ -7432,6 +7485,8 @@ enum nl80211_nan_band_conf_attributes { · 606 unmodified lines
7432 * address that can take values from 50-6F-9A-01-00-00 to7485 * 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,7486 * 50-6F-9A-01-FF-FF. This attribute is optional. If not present,
7434 * a random Cluster ID will be chosen.7487 * a random Cluster ID will be chosen.
7488 * This attribute will be ignored in NL80211_CMD_CHANGE_NAN_CONFIG
7489 * since after NAN was started, the cluster ID can no longer change.
7435 * @NL80211_NAN_CONF_EXTRA_ATTRS: Additional NAN attributes to be7490 * @NL80211_NAN_CONF_EXTRA_ATTRS: Additional NAN attributes to be
7436 * published in the beacons. This is an optional byte array.7491 * published in the beacons. This is an optional byte array.
7437 * @NL80211_NAN_CONF_VENDOR_ELEMS: Vendor-specific elements that will7492 * @NL80211_NAN_CONF_VENDOR_ELEMS: Vendor-specific elements that will
@@ -7766,6 +7821,30 @@ enum nl80211_peer_measurement_attrs { · 328 unmodified lines
7766 * trigger based ranging measurement is supported7821 * trigger based ranging measurement is supported
7767 * @NL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED: flag attribute indicating7822 * @NL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED: flag attribute indicating
7768 * if non-trigger-based ranging measurement is supported7823 * if non-trigger-based ranging measurement is supported
7824 * @NL80211_PMSR_FTM_CAPA_ATTR_6GHZ_SUPPORT: flag attribute indicating if
7825 * ranging on the 6 GHz band is supported
7826 * @NL80211_PMSR_FTM_CAPA_ATTR_MAX_TX_LTF_REP: u32 attribute indicating
7827 * the maximum number of LTF repetitions the device can transmit in the
7828 * preamble of the ranging NDP (zero means only one LTF, no repetitions)
7829 * @NL80211_PMSR_FTM_CAPA_ATTR_MAX_RX_LTF_REP: u32 attribute indicating
7830 * the maximum number of LTF repetitions the device can receive in the
7831 * preamble of the ranging NDP (zero means only one LTF, no repetitions)
7832 * @NL80211_PMSR_FTM_CAPA_ATTR_MAX_TX_STS: u32 attribute indicating
7833 * the maximum number of space-time streams supported for ranging NDP TX
7834 * (zero-based)
7835 * @NL80211_PMSR_FTM_CAPA_ATTR_MAX_RX_STS: u32 attribute indicating
7836 * the maximum number of space-time streams supported for ranging NDP RX
7837 * (zero-based)
7838 * @NL80211_PMSR_FTM_CAPA_ATTR_MAX_TOTAL_LTF_TX: u32 attribute indicating the
7839 * maximum total number of LTFs the device can transmit. The total number
7840 * of LTFs is (number of LTF repetitions) * (number of space-time streams).
7841 * This limits the allowed combinations of LTF repetitions and STS.
7842 * @NL80211_PMSR_FTM_CAPA_ATTR_MAX_TOTAL_LTF_RX: u32 attribute indicating the
7843 * maximum total number of LTFs the device can receive. The total number
7844 * of LTFs is (number of LTF repetitions) * (number of space-time streams).
7845 * This limits the allowed combinations of LTF repetitions and STS.
7846 * @NL80211_PMSR_FTM_CAPA_ATTR_RSTA_SUPPORT: flag attribute indicating the
7847 * device supports operating as the RSTA in PMSR FTM request
7769 *7848 *
7770 * @NUM_NL80211_PMSR_FTM_CAPA_ATTR: internal7849 * @NUM_NL80211_PMSR_FTM_CAPA_ATTR: internal
7771 * @NL80211_PMSR_FTM_CAPA_ATTR_MAX: highest attribute number7850 * @NL80211_PMSR_FTM_CAPA_ATTR_MAX: highest attribute number
@@ -7783,6 +7862,14 @@ enum nl80211_peer_measurement_ftm_capa { · 11 unmodified lines
7783 NL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST,7862 NL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST,
7784 NL80211_PMSR_FTM_CAPA_ATTR_TRIGGER_BASED,7863 NL80211_PMSR_FTM_CAPA_ATTR_TRIGGER_BASED,
7785 NL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED,7864 NL80211_PMSR_FTM_CAPA_ATTR_NON_TRIGGER_BASED,
7865 NL80211_PMSR_FTM_CAPA_ATTR_6GHZ_SUPPORT,
7866 NL80211_PMSR_FTM_CAPA_ATTR_MAX_TX_LTF_REP,
7867 NL80211_PMSR_FTM_CAPA_ATTR_MAX_RX_LTF_REP,
7868 NL80211_PMSR_FTM_CAPA_ATTR_MAX_TX_STS,
7869 NL80211_PMSR_FTM_CAPA_ATTR_MAX_RX_STS,
7870 NL80211_PMSR_FTM_CAPA_ATTR_MAX_TOTAL_LTF_TX,
7871 NL80211_PMSR_FTM_CAPA_ATTR_MAX_TOTAL_LTF_RX,
7872 NL80211_PMSR_FTM_CAPA_ATTR_RSTA_SUPPORT,
7786 7873
7787 /* keep last */7874 /* keep last */
7788 NUM_NL80211_PMSR_FTM_CAPA_ATTR,7875 NUM_NL80211_PMSR_FTM_CAPA_ATTR,
@@ -7798,12 +7885,15 @@ enum nl80211_peer_measurement_ftm_capa { · 9 unmodified lines
7798 * &enum nl80211_preamble), optional for DMG (u32)7885 * &enum nl80211_preamble), optional for DMG (u32)
7799 * @NL80211_PMSR_FTM_REQ_ATTR_NUM_BURSTS_EXP: number of bursts exponent as in7886 * @NL80211_PMSR_FTM_REQ_ATTR_NUM_BURSTS_EXP: number of bursts exponent as in
7800 * 802.11-2016 9.4.2.168 "Fine Timing Measurement Parameters element"7887 * 802.11-2016 9.4.2.168 "Fine Timing Measurement Parameters element"
7801 * (u8, 0-15, optional with default 15 i.e. "no preference")7888 * (u8, 0-15, optional with default 15 i.e. "no preference". No limit for
7889 * non-EDCA ranging)
7802 * @NL80211_PMSR_FTM_REQ_ATTR_BURST_PERIOD: interval between bursts in units7890 * @NL80211_PMSR_FTM_REQ_ATTR_BURST_PERIOD: interval between bursts in units
7803 * of 100ms (u16, optional with default 0)7891 * of 100ms (u16, optional with default 0)
7804 * @NL80211_PMSR_FTM_REQ_ATTR_BURST_DURATION: burst duration, as in 802.11-20167892 * @NL80211_PMSR_FTM_REQ_ATTR_BURST_DURATION: burst duration, as in 802.11-2016
7805 * Table 9-257 "Burst Duration field encoding" (u8, 0-15, optional with7893 * Table 9-257 "Burst Duration field encoding" (u8, 0-15, optional with
7806 * default 15 i.e. "no preference")7894 * default 15 i.e. "no preference"). For non-EDCA ranging, this is the
7895 * burst duration in milliseconds (optional with default 0, i.e. let the
7896 * device decide).
7807 * @NL80211_PMSR_FTM_REQ_ATTR_FTMS_PER_BURST: number of successful FTM frames7897 * @NL80211_PMSR_FTM_REQ_ATTR_FTMS_PER_BURST: number of successful FTM frames
7808 * requested per burst7898 * requested per burst
7809 * (u8, 0-31, optional with default 0 i.e. "no preference")7899 * (u8, 0-31, optional with default 0 i.e. "no preference")
@@ -7832,6 +7922,14 @@ enum nl80211_peer_measurement_ftm_capa { · 22 unmodified lines
7832 * @NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR: optional. The BSS color of the7922 * @NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR: optional. The BSS color of the
7833 * responder. Only valid if %NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED7923 * responder. Only valid if %NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED
7834 * or %NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED is set.7924 * or %NL80211_PMSR_FTM_REQ_ATTR_TRIGGER_BASED is set.
7925 * @NL80211_PMSR_FTM_REQ_ATTR_RSTA: optional. Request to perform the measurement
7926 * as the RSTA (flag). When set, the device is expected to dwell on the
7927 * channel specified in %NL80211_PMSR_PEER_ATTR_CHAN until it receives the
7928 * FTM request from the peer or the timeout specified by
7929 * %NL80211_ATTR_TIMEOUT has expired.
7930 * Only valid if %NL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK is set (so the
7931 * RSTA will have the measurement results to report back in the FTM
7932 * response).
7835 *7933 *
7836 * @NUM_NL80211_PMSR_FTM_REQ_ATTR: internal7934 * @NUM_NL80211_PMSR_FTM_REQ_ATTR: internal
7837 * @NL80211_PMSR_FTM_REQ_ATTR_MAX: highest attribute number7935 * @NL80211_PMSR_FTM_REQ_ATTR_MAX: highest attribute number
@@ -7852,6 +7950,7 @@ enum nl80211_peer_measurement_ftm_req { · 14 unmodified lines
7852 NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED,7950 NL80211_PMSR_FTM_REQ_ATTR_NON_TRIGGER_BASED,
7853 NL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK,7951 NL80211_PMSR_FTM_REQ_ATTR_LMR_FEEDBACK,
7854 NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR,7952 NL80211_PMSR_FTM_REQ_ATTR_BSS_COLOR,
7953 NL80211_PMSR_FTM_REQ_ATTR_RSTA,
7855 7954
7856 /* keep last */7955 /* keep last */
7857 NUM_NL80211_PMSR_FTM_REQ_ATTR,7956 NUM_NL80211_PMSR_FTM_REQ_ATTR,
@@ -7936,6 +8035,8 @@ enum nl80211_peer_measurement_ftm_failure_reasons { · 78 unmodified lines
7936 * 9.4.2.22.1) starting with the Measurement Token, with Measurement8035 * 9.4.2.22.1) starting with the Measurement Token, with Measurement
7937 * Type 11.8036 * Type 11.
7938 * @NL80211_PMSR_FTM_RESP_ATTR_PAD: ignore, for u64/s64 padding only8037 * @NL80211_PMSR_FTM_RESP_ATTR_PAD: ignore, for u64/s64 padding only
8038 * @NL80211_PMSR_FTM_RESP_ATTR_BURST_PERIOD: actual burst period used by
8039 * the responder (similar to request, u16)
7939 *8040 *
7940 * @NUM_NL80211_PMSR_FTM_RESP_ATTR: internal8041 * @NUM_NL80211_PMSR_FTM_RESP_ATTR: internal
7941 * @NL80211_PMSR_FTM_RESP_ATTR_MAX: highest attribute number8042 * @NL80211_PMSR_FTM_RESP_ATTR_MAX: highest attribute number
@@ -7964,6 +8065,7 @@ enum nl80211_peer_measurement_ftm_resp { · 22 unmodified lines
7964 NL80211_PMSR_FTM_RESP_ATTR_LCI,8065 NL80211_PMSR_FTM_RESP_ATTR_LCI,
7965 NL80211_PMSR_FTM_RESP_ATTR_CIVICLOC,8066 NL80211_PMSR_FTM_RESP_ATTR_CIVICLOC,
7966 NL80211_PMSR_FTM_RESP_ATTR_PAD,8067 NL80211_PMSR_FTM_RESP_ATTR_PAD,
8068 NL80211_PMSR_FTM_RESP_ATTR_BURST_PERIOD,
7967 8069
7968 /* keep last */8070 /* keep last */
7969 NUM_NL80211_PMSR_FTM_RESP_ATTR,8071 NUM_NL80211_PMSR_FTM_RESP_ATTR,
include/uapi/linux/pci.h+7−0
@@ -39,4 +39,11 @@ · 38 unmodified lines
39#define PCIIOC_MMAP_IS_MEM (PCIIOC_BASE | 0x02) /* Set mmap state to MEM space. */39#define PCIIOC_MMAP_IS_MEM (PCIIOC_BASE | 0x02) /* Set mmap state to MEM space. */
40#define PCIIOC_WRITE_COMBINE (PCIIOC_BASE | 0x03) /* Enable/disable write-combining. */40#define PCIIOC_WRITE_COMBINE (PCIIOC_BASE | 0x03) /* Enable/disable write-combining. */
41 41
42enum pci_hotplug_event {
43 PCI_HOTPLUG_LINK_UP,
44 PCI_HOTPLUG_LINK_DOWN,
45 PCI_HOTPLUG_CARD_PRESENT,
46 PCI_HOTPLUG_CARD_NOT_PRESENT,
47};
48
42#endif /* _UAPILINUX_PCI_H */49#endif /* _UAPILINUX_PCI_H */
include/uapi/linux/pci_regs.h+64−5
@@ -132,6 +132,11 @@ · 131 unmodified lines
132#define PCI_SECONDARY_BUS 0x19 /* Secondary bus number */132#define PCI_SECONDARY_BUS 0x19 /* Secondary bus number */
133#define PCI_SUBORDINATE_BUS 0x1a /* Highest bus number behind the bridge */133#define PCI_SUBORDINATE_BUS 0x1a /* Highest bus number behind the bridge */
134#define PCI_SEC_LATENCY_TIMER 0x1b /* Latency timer for secondary interface */134#define PCI_SEC_LATENCY_TIMER 0x1b /* Latency timer for secondary interface */
135/* Masks for dword-sized processing of Bus Number and Sec Latency Timer fields */
136#define PCI_PRIMARY_BUS_MASK 0x000000ff
137#define PCI_SECONDARY_BUS_MASK 0x0000ff00
138#define PCI_SUBORDINATE_BUS_MASK 0x00ff0000
139#define PCI_SEC_LATENCY_TIMER_MASK 0xff000000
135#define PCI_IO_BASE 0x1c /* I/O range behind the bridge */140#define PCI_IO_BASE 0x1c /* I/O range behind the bridge */
136#define PCI_IO_LIMIT 0x1d141#define PCI_IO_LIMIT 0x1d
137#define PCI_IO_RANGE_TYPE_MASK 0x0fUL /* I/O bridging type */142#define PCI_IO_RANGE_TYPE_MASK 0x0fUL /* I/O bridging type */
@@ -1253,11 +1258,6 @@ · 1115 unmodified lines
1253#define PCI_DEV3_STA 0x0c /* Device 3 Status Register */1258#define PCI_DEV3_STA 0x0c /* Device 3 Status Register */
1254#define PCI_DEV3_STA_SEGMENT 0x8 /* Segment Captured (end-to-end flit-mode detected) */1259#define PCI_DEV3_STA_SEGMENT 0x8 /* Segment Captured (end-to-end flit-mode detected) */
1255 1260
1256/* Compute Express Link (CXL r3.1, sec 8.1.5) */
1257#define PCI_DVSEC_CXL_PORT 3
1258#define PCI_DVSEC_CXL_PORT_CTL 0x0c
1259#define PCI_DVSEC_CXL_PORT_CTL_UNMASK_SBR 0x00000001
1260
1261/* Integrity and Data Encryption Extended Capability */1261/* Integrity and Data Encryption Extended Capability */
1262#define PCI_IDE_CAP 0x041262#define PCI_IDE_CAP 0x04
1263#define PCI_IDE_CAP_LINK 0x1 /* Link IDE Stream Supported */1263#define PCI_IDE_CAP_LINK 0x1 /* Link IDE Stream Supported */
@@ -1338,4 +1338,63 @@ · 74 unmodified lines
1338#define PCI_IDE_SEL_ADDR_3(x) (28 + (x) * PCI_IDE_SEL_ADDR_BLOCK_SIZE)1338#define PCI_IDE_SEL_ADDR_3(x) (28 + (x) * PCI_IDE_SEL_ADDR_BLOCK_SIZE)
1339#define PCI_IDE_SEL_BLOCK_SIZE(nr_assoc) (20 + PCI_IDE_SEL_ADDR_BLOCK_SIZE * (nr_assoc))1339#define PCI_IDE_SEL_BLOCK_SIZE(nr_assoc) (20 + PCI_IDE_SEL_ADDR_BLOCK_SIZE * (nr_assoc))
1340 1340
1341/*
1342 * Compute Express Link (CXL r4.0, sec 8.1)
1343 *
1344 * Note that CXL DVSEC id 3 and 7 to be ignored when the CXL link state
1345 * is "disconnected" (CXL r4.0, sec 9.12.3). Re-enumerate these
1346 * registers on downstream link-up events.
1347 */
1348
1349/* CXL r4.0, 8.1.3: PCIe DVSEC for CXL Device */
1350#define PCI_DVSEC_CXL_DEVICE 0
1351#define PCI_DVSEC_CXL_CAP 0xA
1352#define PCI_DVSEC_CXL_MEM_CAPABLE _BITUL(2)
1353#define PCI_DVSEC_CXL_HDM_COUNT __GENMASK(5, 4)
1354#define PCI_DVSEC_CXL_CTRL 0xC
1355#define PCI_DVSEC_CXL_MEM_ENABLE _BITUL(2)
1356#define PCI_DVSEC_CXL_RANGE_SIZE_HIGH(i) (0x18 + (i * 0x10))
1357#define PCI_DVSEC_CXL_RANGE_SIZE_LOW(i) (0x1C + (i * 0x10))
1358#define PCI_DVSEC_CXL_MEM_INFO_VALID _BITUL(0)
1359#define PCI_DVSEC_CXL_MEM_ACTIVE _BITUL(1)
1360#define PCI_DVSEC_CXL_MEM_SIZE_LOW __GENMASK(31, 28)
1361#define PCI_DVSEC_CXL_RANGE_BASE_HIGH(i) (0x20 + (i * 0x10))
1362#define PCI_DVSEC_CXL_RANGE_BASE_LOW(i) (0x24 + (i * 0x10))
1363#define PCI_DVSEC_CXL_MEM_BASE_LOW __GENMASK(31, 28)
1364
1365#define CXL_DVSEC_RANGE_MAX 2
1366
1367/* CXL r4.0, 8.1.4: Non-CXL Function Map DVSEC */
1368#define PCI_DVSEC_CXL_FUNCTION_MAP 2
1369
1370/* CXL r4.0, 8.1.5: Extensions DVSEC for Ports */
1371#define PCI_DVSEC_CXL_PORT 3
1372#define PCI_DVSEC_CXL_PORT_CTL 0x0c
1373#define PCI_DVSEC_CXL_PORT_CTL_UNMASK_SBR 0x00000001
1374
1375/* CXL r4.0, 8.1.6: GPF DVSEC for CXL Port */
1376#define PCI_DVSEC_CXL_PORT_GPF 4
1377#define PCI_DVSEC_CXL_PORT_GPF_PHASE_1_CONTROL 0x0C
1378#define PCI_DVSEC_CXL_PORT_GPF_PHASE_1_TMO_BASE __GENMASK(3, 0)
1379#define PCI_DVSEC_CXL_PORT_GPF_PHASE_1_TMO_SCALE __GENMASK(11, 8)
1380#define PCI_DVSEC_CXL_PORT_GPF_PHASE_2_CONTROL 0xE
1381#define PCI_DVSEC_CXL_PORT_GPF_PHASE_2_TMO_BASE __GENMASK(3, 0)
1382#define PCI_DVSEC_CXL_PORT_GPF_PHASE_2_TMO_SCALE __GENMASK(11, 8)
1383
1384/* CXL r4.0, 8.1.7: GPF DVSEC for CXL Device */
1385#define PCI_DVSEC_CXL_DEVICE_GPF 5
1386
1387/* CXL r4.0, 8.1.8: Flex Bus DVSEC */
1388#define PCI_DVSEC_CXL_FLEXBUS_PORT 7
1389#define PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS 0xE
1390#define PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS_CACHE _BITUL(0)
1391#define PCI_DVSEC_CXL_FLEXBUS_PORT_STATUS_MEM _BITUL(2)
1392
1393/* CXL r4.0, 8.1.9: Register Locator DVSEC */
1394#define PCI_DVSEC_CXL_REG_LOCATOR 8
1395#define PCI_DVSEC_CXL_REG_LOCATOR_BLOCK1 0xC
1396#define PCI_DVSEC_CXL_REG_LOCATOR_BIR __GENMASK(2, 0)
1397#define PCI_DVSEC_CXL_REG_LOCATOR_BLOCK_ID __GENMASK(15, 8)
1398#define PCI_DVSEC_CXL_REG_LOCATOR_BLOCK_OFF_LOW __GENMASK(31, 16)
1399
1341#endif /* LINUX_PCI_REGS_H */1400#endif /* LINUX_PCI_REGS_H */
include/uapi/linux/pcitest.h+1−0
@@ -22,6 +22,7 @@ · 21 unmodified lines
22#define PCITEST_GET_IRQTYPE _IO('P', 0x9)22#define PCITEST_GET_IRQTYPE _IO('P', 0x9)
23#define PCITEST_BARS _IO('P', 0xa)23#define PCITEST_BARS _IO('P', 0xa)
24#define PCITEST_DOORBELL _IO('P', 0xb)24#define PCITEST_DOORBELL _IO('P', 0xb)
25#define PCITEST_BAR_SUBRANGE _IO('P', 0xc)
25#define PCITEST_CLEAR_IRQ _IO('P', 0x10)26#define PCITEST_CLEAR_IRQ _IO('P', 0x10)
26 27
27#define PCITEST_IRQ_TYPE_UNDEFINED -128#define PCITEST_IRQ_TYPE_UNDEFINED -1
include/uapi/linux/perf_event.h+24−3
@@ -1330,14 +1330,16 @@ union perf_mem_data_src { · 1329 unmodified lines
1330 mem_snoopx : 2, /* Snoop mode, ext */1330 mem_snoopx : 2, /* Snoop mode, ext */
1331 mem_blk : 3, /* Access blocked */1331 mem_blk : 3, /* Access blocked */
1332 mem_hops : 3, /* Hop level */1332 mem_hops : 3, /* Hop level */
1333 mem_rsvd : 18;1333 mem_region : 5, /* cache/memory regions */
1334 mem_rsvd : 13;
1334 };1335 };
1335};1336};
1336#elif defined(__BIG_ENDIAN_BITFIELD)1337#elif defined(__BIG_ENDIAN_BITFIELD)
1337union perf_mem_data_src {1338union perf_mem_data_src {
1338 __u64 val;1339 __u64 val;
1339 struct {1340 struct {
1340 __u64 mem_rsvd : 18,1341 __u64 mem_rsvd : 13,
1342 mem_region : 5, /* cache/memory regions */
1341 mem_hops : 3, /* Hop level */1343 mem_hops : 3, /* Hop level */
1342 mem_blk : 3, /* Access blocked */1344 mem_blk : 3, /* Access blocked */
1343 mem_snoopx : 2, /* Snoop mode, ext */1345 mem_snoopx : 2, /* Snoop mode, ext */
@@ -1394,7 +1396,7 @@ union perf_mem_data_src { · 50 unmodified lines
1394#define PERF_MEM_LVLNUM_L4 0x0004 /* L4 */1396#define PERF_MEM_LVLNUM_L4 0x0004 /* L4 */
1395#define PERF_MEM_LVLNUM_L2_MHB 0x0005 /* L2 Miss Handling Buffer */1397#define PERF_MEM_LVLNUM_L2_MHB 0x0005 /* L2 Miss Handling Buffer */
1396#define PERF_MEM_LVLNUM_MSC 0x0006 /* Memory-side Cache */1398#define PERF_MEM_LVLNUM_MSC 0x0006 /* Memory-side Cache */
1397/* 0x007 available */1399#define PERF_MEM_LVLNUM_L0 0x0007 /* L0 */
1398#define PERF_MEM_LVLNUM_UNC 0x0008 /* Uncached */1400#define PERF_MEM_LVLNUM_UNC 0x0008 /* Uncached */
1399#define PERF_MEM_LVLNUM_CXL 0x0009 /* CXL */1401#define PERF_MEM_LVLNUM_CXL 0x0009 /* CXL */
1400#define PERF_MEM_LVLNUM_IO 0x000a /* I/O */1402#define PERF_MEM_LVLNUM_IO 0x000a /* I/O */
@@ -1447,6 +1449,25 @@ union perf_mem_data_src { · 46 unmodified lines
1447/* 5-7 available */1449/* 5-7 available */
1448#define PERF_MEM_HOPS_SHIFT 431450#define PERF_MEM_HOPS_SHIFT 43
1449 1451
1452/* Cache/Memory region */
1453#define PERF_MEM_REGION_NA 0x0 /* Invalid */
1454#define PERF_MEM_REGION_RSVD 0x01 /* Reserved */
1455#define PERF_MEM_REGION_L_SHARE 0x02 /* Local CA shared cache */
1456#define PERF_MEM_REGION_L_NON_SHARE 0x03 /* Local CA non-shared cache */
1457#define PERF_MEM_REGION_O_IO 0x04 /* Other CA IO agent */
1458#define PERF_MEM_REGION_O_SHARE 0x05 /* Other CA shared cache */
1459#define PERF_MEM_REGION_O_NON_SHARE 0x06 /* Other CA non-shared cache */
1460#define PERF_MEM_REGION_MMIO 0x07 /* MMIO */
1461#define PERF_MEM_REGION_MEM0 0x08 /* Memory region 0 */
1462#define PERF_MEM_REGION_MEM1 0x09 /* Memory region 1 */
1463#define PERF_MEM_REGION_MEM2 0x0a /* Memory region 2 */
1464#define PERF_MEM_REGION_MEM3 0x0b /* Memory region 3 */
1465#define PERF_MEM_REGION_MEM4 0x0c /* Memory region 4 */
1466#define PERF_MEM_REGION_MEM5 0x0d /* Memory region 5 */
1467#define PERF_MEM_REGION_MEM6 0x0e /* Memory region 6 */
1468#define PERF_MEM_REGION_MEM7 0x0f /* Memory region 7 */
1469#define PERF_MEM_REGION_SHIFT 46
1470
1450#define PERF_MEM_S(a, s) \1471#define PERF_MEM_S(a, s) \
1451 (((__u64)PERF_MEM_##a##_##s) << PERF_MEM_##a##_SHIFT)1472 (((__u64)PERF_MEM_##a##_##s) << PERF_MEM_##a##_SHIFT)
1452 1473
include/uapi/linux/pkt_sched.h+1−0
@@ -1036,6 +1036,7 @@ enum { · 1035 unmodified lines
1036 TCA_CAKE_STATS_DROP_NEXT_US,1036 TCA_CAKE_STATS_DROP_NEXT_US,
1037 TCA_CAKE_STATS_P_DROP,1037 TCA_CAKE_STATS_P_DROP,
1038 TCA_CAKE_STATS_BLUE_TIMER_US,1038 TCA_CAKE_STATS_BLUE_TIMER_US,
1039 TCA_CAKE_STATS_ACTIVE_QUEUES,
1039 __TCA_CAKE_STATS_MAX1040 __TCA_CAKE_STATS_MAX
1040};1041};
1041#define TCA_CAKE_STATS_MAX (__TCA_CAKE_STATS_MAX - 1)1042#define TCA_CAKE_STATS_MAX (__TCA_CAKE_STATS_MAX - 1)
include/uapi/linux/prctl.h+37−0
@@ -386,4 +386,41 @@ struct prctl_mm_map { · 385 unmodified lines
386# define PR_FUTEX_HASH_SET_SLOTS 1386# define PR_FUTEX_HASH_SET_SLOTS 1
387# define PR_FUTEX_HASH_GET_SLOTS 2387# define PR_FUTEX_HASH_GET_SLOTS 2
388 388
389/* RSEQ time slice extensions */
390#define PR_RSEQ_SLICE_EXTENSION 79
391# define PR_RSEQ_SLICE_EXTENSION_GET 1
392# define PR_RSEQ_SLICE_EXTENSION_SET 2
393/*
394 * Bits for RSEQ_SLICE_EXTENSION_GET/SET
395 * PR_RSEQ_SLICE_EXT_ENABLE: Enable
396 */
397# define PR_RSEQ_SLICE_EXT_ENABLE 0x01
398
399/*
400 * Get the current indirect branch tracking configuration for the current
401 * thread, this will be the value configured via PR_SET_INDIR_BR_LP_STATUS.
402 */
403#define PR_GET_INDIR_BR_LP_STATUS 80
404
405/*
406 * Set the indirect branch tracking configuration. PR_INDIR_BR_LP_ENABLE will
407 * enable cpu feature for user thread, to track all indirect branches and ensure
408 * they land on arch defined landing pad instruction.
409 * x86 - If enabled, an indirect branch must land on an ENDBRANCH instruction.
410 * arch64 - If enabled, an indirect branch must land on a BTI instruction.
411 * riscv - If enabled, an indirect branch must land on an lpad instruction.
412 * PR_INDIR_BR_LP_DISABLE will disable feature for user thread and indirect
413 * branches will no more be tracked by cpu to land on arch defined landing pad
414 * instruction.
415 */
416#define PR_SET_INDIR_BR_LP_STATUS 81
417# define PR_INDIR_BR_LP_ENABLE (1UL << 0)
418
419/*
420 * Prevent further changes to the specified indirect branch tracking
421 * configuration. All bits may be locked via this call, including
422 * undefined bits.
423 */
424#define PR_LOCK_INDIR_BR_LP_STATUS 82
425
389#endif /* _LINUX_PRCTL_H */426#endif /* _LINUX_PRCTL_H */
include/uapi/linux/rseq.h+40−1
@@ -19,13 +19,20 @@ enum rseq_cpu_id_state { · 18 unmodified lines
19};19};
20 20
21enum rseq_flags {21enum rseq_flags {
22 RSEQ_FLAG_UNREGISTER = (1 << 0),22 RSEQ_FLAG_UNREGISTER = (1 << 0),
23 RSEQ_FLAG_SLICE_EXT_DEFAULT_ON = (1 << 1),
23};24};
24 25
25enum rseq_cs_flags_bit {26enum rseq_cs_flags_bit {
27 /* Historical and unsupported bits */
26 RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT_BIT = 0,28 RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT_BIT = 0,
27 RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL_BIT = 1,29 RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL_BIT = 1,
28 RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE_BIT = 2,30 RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE_BIT = 2,
31 /* (3) Intentional gap to put new bits into a separate byte */
32
33 /* User read only feature flags */
34 RSEQ_CS_FLAG_SLICE_EXT_AVAILABLE_BIT = 4,
35 RSEQ_CS_FLAG_SLICE_EXT_ENABLED_BIT = 5,
29};36};
30 37
31enum rseq_cs_flags {38enum rseq_cs_flags {
@@ -35,6 +42,11 @@ enum rseq_cs_flags { · 3 unmodified lines
35 (1U << RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL_BIT),42 (1U << RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL_BIT),
36 RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE =43 RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE =
37 (1U << RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE_BIT),44 (1U << RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE_BIT),
45
46 RSEQ_CS_FLAG_SLICE_EXT_AVAILABLE =
47 (1U << RSEQ_CS_FLAG_SLICE_EXT_AVAILABLE_BIT),
48 RSEQ_CS_FLAG_SLICE_EXT_ENABLED =
49 (1U << RSEQ_CS_FLAG_SLICE_EXT_ENABLED_BIT),
38};50};
39 51
40/*52/*
@@ -53,6 +65,27 @@ struct rseq_cs { · 12 unmodified lines
53 __u64 abort_ip;65 __u64 abort_ip;
54} __attribute__((aligned(4 * sizeof(__u64))));66} __attribute__((aligned(4 * sizeof(__u64))));
55 67
68/**
69 * rseq_slice_ctrl - Time slice extension control structure
70 * @all: Compound value
71 * @request: Request for a time slice extension
72 * @granted: Granted time slice extension
73 *
74 * @request is set by user space and can be cleared by user space or kernel
75 * space. @granted is set and cleared by the kernel and must only be read
76 * by user space.
77 */
78struct rseq_slice_ctrl {
79 union {
80 __u32 all;
81 struct {
82 __u8 request;
83 __u8 granted;
84 __u16 __reserved;
85 };
86 };
87};
88
56/*89/*
57 * struct rseq is aligned on 4 * 8 bytes to ensure it is always90 * struct rseq is aligned on 4 * 8 bytes to ensure it is always
58 * contained within a single cache-line.91 * contained within a single cache-line.
@@ -141,6 +174,12 @@ struct rseq { · 82 unmodified lines
141 */174 */
142 __u32 mm_cid;175 __u32 mm_cid;
143 176
177 /*
178 * Time slice extension control structure. CPU local updates from
179 * kernel and user space.
180 */
181 struct rseq_slice_ctrl slice_ctrl;
182
144 /*183 /*
145 * Flexible array member at end of structure, after last feature field.184 * Flexible array member at end of structure, after last feature field.
146 */185 */
include/uapi/linux/shm.h+0−3
@@ -5,9 +5,6 @@ · 4 unmodified lines
5#include <linux/ipc.h>5#include <linux/ipc.h>
6#include <linux/errno.h>6#include <linux/errno.h>
7#include <asm-generic/hugetlb_encode.h>7#include <asm-generic/hugetlb_encode.h>
8#ifndef __KERNEL__
9#include <unistd.h>
10#endif
11 8
12/*9/*
13 * SHMMNI, SHMMAX and SHMALL are default upper limits which can be10 * SHMMNI, SHMMAX and SHMALL are default upper limits which can be
include/uapi/linux/stddef.h+4−0
@@ -72,6 +72,10 @@ · 71 unmodified lines
72#define __counted_by_be(m)72#define __counted_by_be(m)
73#endif73#endif
74 74
75#ifndef __counted_by_ptr
76#define __counted_by_ptr(m)
77#endif
78
75#ifdef __KERNEL__79#ifdef __KERNEL__
76#define __kernel_nonstring __nonstring80#define __kernel_nonstring __nonstring
77#else81#else
include/uapi/linux/sysctl.h+1−2
@@ -92,7 +92,6 @@ enum · 91 unmodified lines
92 KERN_DOMAINNAME=8, /* string: domainname */92 KERN_DOMAINNAME=8, /* string: domainname */
93 93
94 KERN_PANIC=15, /* int: panic timeout */94 KERN_PANIC=15, /* int: panic timeout */
95 KERN_REALROOTDEV=16, /* real root device to mount after initrd */
96 95
97 KERN_SPARC_REBOOT=21, /* reboot command on Sparc */96 KERN_SPARC_REBOOT=21, /* reboot command on Sparc */
98 KERN_CTLALTDEL=22, /* int: allow ctl-alt-del to reboot */97 KERN_CTLALTDEL=22, /* int: allow ctl-alt-del to reboot */
@@ -183,7 +182,7 @@ enum · 84 unmodified lines
183 VM_LOWMEM_RESERVE_RATIO=20,/* reservation ratio for lower memory zones */182 VM_LOWMEM_RESERVE_RATIO=20,/* reservation ratio for lower memory zones */
184 VM_MIN_FREE_KBYTES=21, /* Minimum free kilobytes to maintain */183 VM_MIN_FREE_KBYTES=21, /* Minimum free kilobytes to maintain */
185 VM_MAX_MAP_COUNT=22, /* int: Maximum number of mmaps/address-space */184 VM_MAX_MAP_COUNT=22, /* int: Maximum number of mmaps/address-space */
186 VM_LAPTOP_MODE=23, /* vm laptop mode */185
187 VM_BLOCK_DUMP=24, /* block dump mode */186 VM_BLOCK_DUMP=24, /* block dump mode */
188 VM_HUGETLB_GROUP=25, /* permitted hugetlb group */187 VM_HUGETLB_GROUP=25, /* permitted hugetlb group */
189 VM_VFS_CACHE_PRESSURE=26, /* dcache/icache reclaim pressure */188 VM_VFS_CACHE_PRESSURE=26, /* dcache/icache reclaim pressure */
include/uapi/linux/taskstats.h+12−1
@@ -18,6 +18,7 @@ · 17 unmodified lines
18#define _LINUX_TASKSTATS_H18#define _LINUX_TASKSTATS_H
19 19
20#include <linux/types.h>20#include <linux/types.h>
21#include <linux/time_types.h>
21 22
22/* Format for per-task data returned to userland when23/* Format for per-task data returned to userland when
23 * - a task exits24 * - a task exits
@@ -34,7 +35,7 @@ · 10 unmodified lines
34 */35 */
35 36
36 37
37#define TASKSTATS_VERSION 1638#define TASKSTATS_VERSION 17
38#define TS_COMM_LEN 32 /* should be >= TASK_COMM_LEN39#define TS_COMM_LEN 32 /* should be >= TASK_COMM_LEN
39 * in linux/sched.h */40 * in linux/sched.h */
40 41
@@ -230,6 +231,16 @@ struct taskstats { · 189 unmodified lines
230 231
231 __u64 irq_delay_max;232 __u64 irq_delay_max;
232 __u64 irq_delay_min;233 __u64 irq_delay_min;
234
235 /*v17: delay max timestamp record*/
236 struct __kernel_timespec cpu_delay_max_ts;
237 struct __kernel_timespec blkio_delay_max_ts;
238 struct __kernel_timespec swapin_delay_max_ts;
239 struct __kernel_timespec freepages_delay_max_ts;
240 struct __kernel_timespec thrashing_delay_max_ts;
241 struct __kernel_timespec compact_delay_max_ts;
242 struct __kernel_timespec wpcopy_delay_max_ts;
243 struct __kernel_timespec irq_delay_max_ts;
233};244};
234 245
235 246
include/uapi/linux/tcp.h+23−3
@@ -226,6 +226,24 @@ enum tcp_ca_state { · 225 unmodified lines
226#define TCPF_CA_Loss (1<<TCP_CA_Loss)226#define TCPF_CA_Loss (1<<TCP_CA_Loss)
227};227};
228 228
229/* Values for tcpi_ecn_mode after negotiation */
230#define TCPI_ECN_MODE_DISABLED 0x0
231#define TCPI_ECN_MODE_RFC3168 0x1
232#define TCPI_ECN_MODE_ACCECN 0x2
233#define TCPI_ECN_MODE_PENDING 0x3
234
235/* Values for accecn_opt_seen */
236#define TCP_ACCECN_OPT_NOT_SEEN 0x0
237#define TCP_ACCECN_OPT_EMPTY_SEEN 0x1
238#define TCP_ACCECN_OPT_COUNTER_SEEN 0x2
239#define TCP_ACCECN_OPT_FAIL_SEEN 0x3
240
241/* Values for accecn_fail_mode */
242#define TCP_ACCECN_ACE_FAIL_SEND BIT(0)
243#define TCP_ACCECN_ACE_FAIL_RECV BIT(1)
244#define TCP_ACCECN_OPT_FAIL_SEND BIT(2)
245#define TCP_ACCECN_OPT_FAIL_RECV BIT(3)
246
229struct tcp_info {247struct tcp_info {
230 __u8 tcpi_state;248 __u8 tcpi_state;
231 __u8 tcpi_ca_state;249 __u8 tcpi_ca_state;
@@ -316,15 +334,17 @@ struct tcp_info { · 84 unmodified lines
316 * in milliseconds, including any334 * in milliseconds, including any
317 * unfinished recovery.335 * unfinished recovery.
318 */336 */
319 __u32 tcpi_received_ce; /* # of CE marks received */337 __u32 tcpi_received_ce; /* # of CE marked segments received */
320 __u32 tcpi_delivered_e1_bytes; /* Accurate ECN byte counters */338 __u32 tcpi_delivered_e1_bytes; /* Accurate ECN byte counters */
321 __u32 tcpi_delivered_e0_bytes;339 __u32 tcpi_delivered_e0_bytes;
322 __u32 tcpi_delivered_ce_bytes;340 __u32 tcpi_delivered_ce_bytes;
323 __u32 tcpi_received_e1_bytes;341 __u32 tcpi_received_e1_bytes;
324 __u32 tcpi_received_e0_bytes;342 __u32 tcpi_received_e0_bytes;
325 __u32 tcpi_received_ce_bytes;343 __u32 tcpi_received_ce_bytes;
326 __u16 tcpi_accecn_fail_mode;344 __u32 tcpi_ecn_mode:2,
327 __u16 tcpi_accecn_opt_seen;345 tcpi_accecn_opt_seen:2,
346 tcpi_accecn_fail_mode:4,
347 tcpi_options2:24;
328};348};
329 349
330/* netlink attributes types for SCM_TIMESTAMPING_OPT_STATS */350/* netlink attributes types for SCM_TIMESTAMPING_OPT_STATS */
include/uapi/linux/typelimits.h+8−0
@@ -0,0 +1,8 @@
1/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2#ifndef _UAPI_LINUX_TYPELIMITS_H
3#define _UAPI_LINUX_TYPELIMITS_H
4
5#define __KERNEL_INT_MAX ((int)(~0U >> 1))
6#define __KERNEL_INT_MIN (-__KERNEL_INT_MAX - 1)
7
8#endif /* _UAPI_LINUX_TYPELIMITS_H */
include/uapi/linux/ublk_cmd.h+120−1
@@ -55,7 +55,8 @@ · 54 unmodified lines
55 _IOWR('u', 0x15, struct ublksrv_ctrl_cmd)55 _IOWR('u', 0x15, struct ublksrv_ctrl_cmd)
56#define UBLK_U_CMD_QUIESCE_DEV \56#define UBLK_U_CMD_QUIESCE_DEV \
57 _IOWR('u', 0x16, struct ublksrv_ctrl_cmd)57 _IOWR('u', 0x16, struct ublksrv_ctrl_cmd)
58 58#define UBLK_U_CMD_TRY_STOP_DEV \
59 _IOWR('u', 0x17, struct ublksrv_ctrl_cmd)
59/*60/*
60 * 64bits are enough now, and it should be easy to extend in case of61 * 64bits are enough now, and it should be easy to extend in case of
61 * running out of feature flags62 * running out of feature flags
@@ -103,6 +104,30 @@ · 41 unmodified lines
103#define UBLK_U_IO_UNREGISTER_IO_BUF \104#define UBLK_U_IO_UNREGISTER_IO_BUF \
104 _IOWR('u', 0x24, struct ublksrv_io_cmd)105 _IOWR('u', 0x24, struct ublksrv_io_cmd)
105 106
107/*
108 * return 0 if the command is run successfully, otherwise failure code
109 * is returned
110 */
111#define UBLK_U_IO_PREP_IO_CMDS \
112 _IOWR('u', 0x25, struct ublk_batch_io)
113/*
114 * If failure code is returned, nothing in the command buffer is handled.
115 * Otherwise, the returned value means how many bytes in command buffer
116 * are handled actually, then number of handled IOs can be calculated with
117 * `elem_bytes` for each IO. IOs in the remained bytes are not committed,
118 * userspace has to check return value for dealing with partial committing
119 * correctly.
120 */
121#define UBLK_U_IO_COMMIT_IO_CMDS \
122 _IOWR('u', 0x26, struct ublk_batch_io)
123
124/*
125 * Fetch io commands to provided buffer in multishot style,
126 * `IORING_URING_CMD_MULTISHOT` is required for this command.
127 */
128#define UBLK_U_IO_FETCH_IO_CMDS \
129 _IOWR('u', 0x27, struct ublk_batch_io)
130
106/* only ABORT means that no re-fetch */131/* only ABORT means that no re-fetch */
107#define UBLK_IO_RES_OK 0132#define UBLK_IO_RES_OK 0
108#define UBLK_IO_RES_NEED_GET_DATA 1133#define UBLK_IO_RES_NEED_GET_DATA 1
@@ -134,6 +159,10 @@ · 25 unmodified lines
134#define UBLKSRV_IO_BUF_TOTAL_BITS (UBLK_QID_OFF + UBLK_QID_BITS)159#define UBLKSRV_IO_BUF_TOTAL_BITS (UBLK_QID_OFF + UBLK_QID_BITS)
135#define UBLKSRV_IO_BUF_TOTAL_SIZE (1ULL << UBLKSRV_IO_BUF_TOTAL_BITS)160#define UBLKSRV_IO_BUF_TOTAL_SIZE (1ULL << UBLKSRV_IO_BUF_TOTAL_BITS)
136 161
162/* Copy to/from request integrity buffer instead of data buffer */
163#define UBLK_INTEGRITY_FLAG_OFF 62
164#define UBLKSRV_IO_INTEGRITY_FLAG (1ULL << UBLK_INTEGRITY_FLAG_OFF)
165
137/*166/*
138 * ublk server can register data buffers for incoming I/O requests with a sparse167 * ublk server can register data buffers for incoming I/O requests with a sparse
139 * io_uring buffer table. The request buffer can then be used as the data buffer168 * io_uring buffer table. The request buffer can then be used as the data buffer
@@ -311,6 +340,36 @@ · 171 unmodified lines
311 */340 */
312#define UBLK_F_BUF_REG_OFF_DAEMON (1ULL << 14)341#define UBLK_F_BUF_REG_OFF_DAEMON (1ULL << 14)
313 342
343/*
344 * Support the following commands for delivering & committing io command
345 * in batch.
346 *
347 * - UBLK_U_IO_PREP_IO_CMDS
348 * - UBLK_U_IO_COMMIT_IO_CMDS
349 * - UBLK_U_IO_FETCH_IO_CMDS
350 * - UBLK_U_IO_REGISTER_IO_BUF
351 * - UBLK_U_IO_UNREGISTER_IO_BUF
352 *
353 * The existing UBLK_U_IO_FETCH_REQ, UBLK_U_IO_COMMIT_AND_FETCH_REQ and
354 * UBLK_U_IO_NEED_GET_DATA uring_cmd are not supported for this feature.
355 */
356#define UBLK_F_BATCH_IO (1ULL << 15)
357
358/*
359 * ublk device supports requests with integrity/metadata buffer.
360 * Requires UBLK_F_USER_COPY.
361 */
362#define UBLK_F_INTEGRITY (1ULL << 16)
363
364/*
365 * The device supports the UBLK_CMD_TRY_STOP_DEV command, which
366 * allows stopping the device only if there are no openers.
367 */
368#define UBLK_F_SAFE_STOP_DEV (1ULL << 17)
369
370/* Disable automatic partition scanning when device is started */
371#define UBLK_F_NO_AUTO_PART_SCAN (1ULL << 18)
372
314/* device state */373/* device state */
315#define UBLK_S_DEV_DEAD 0374#define UBLK_S_DEV_DEAD 0
316#define UBLK_S_DEV_LIVE 1375#define UBLK_S_DEV_LIVE 1
@@ -408,6 +467,8 @@ struct ublksrv_ctrl_dev_info { · 91 unmodified lines
408 * passed in.467 * passed in.
409 */468 */
410#define UBLK_IO_F_NEED_REG_BUF (1U << 17)469#define UBLK_IO_F_NEED_REG_BUF (1U << 17)
470/* Request has an integrity data buffer */
471#define UBLK_IO_F_INTEGRITY (1UL << 18)
411 472
412/*473/*
413 * io cmd is described by this structure, and stored in share memory, indexed474 * io cmd is described by this structure, and stored in share memory, indexed
@@ -525,6 +586,51 @@ struct ublksrv_io_cmd { · 111 unmodified lines
525 };586 };
526};587};
527 588
589struct ublk_elem_header {
590 __u16 tag; /* IO tag */
591
592 /*
593 * Buffer index for incoming io command, only valid iff
594 * UBLK_F_AUTO_BUF_REG is set
595 */
596 __u16 buf_index;
597 __s32 result; /* I/O completion result (commit only) */
598};
599
600/*
601 * uring_cmd buffer structure for batch commands
602 *
603 * buffer includes multiple elements, which number is specified by
604 * `nr_elem`. Each element buffer is organized in the following order:
605 *
606 * struct ublk_elem_buffer {
607 * // Mandatory fields (8 bytes)
608 * struct ublk_elem_header header;
609 *
610 * // Optional fields (8 bytes each, included based on flags)
611 *
612 * // Buffer address (if UBLK_BATCH_F_HAS_BUF_ADDR) for copying data
613 * // between ublk request and ublk server buffer
614 * __u64 buf_addr;
615 *
616 * // returned Zone append LBA (if UBLK_BATCH_F_HAS_ZONE_LBA)
617 * __u64 zone_lba;
618 * }
619 *
620 * Used for `UBLK_U_IO_PREP_IO_CMDS` and `UBLK_U_IO_COMMIT_IO_CMDS`
621 */
622struct ublk_batch_io {
623 __u16 q_id;
624#define UBLK_BATCH_F_HAS_ZONE_LBA (1 << 0)
625#define UBLK_BATCH_F_HAS_BUF_ADDR (1 << 1)
626#define UBLK_BATCH_F_AUTO_BUF_REG_FALLBACK (1 << 2)
627 __u16 flags;
628 __u16 nr_elem;
629 __u8 elem_bytes;
630 __u8 reserved;
631 __u64 reserved2;
632};
633
528struct ublk_param_basic {634struct ublk_param_basic {
529#define UBLK_ATTR_READ_ONLY (1 << 0)635#define UBLK_ATTR_READ_ONLY (1 << 0)
530#define UBLK_ATTR_ROTATIONAL (1 << 1)636#define UBLK_ATTR_ROTATIONAL (1 << 1)
@@ -600,6 +706,17 @@ struct ublk_param_segment { · 69 unmodified lines
600 __u8 pad[2];706 __u8 pad[2];
601};707};
602 708
709struct ublk_param_integrity {
710 __u32 flags; /* LBMD_PI_CAP_* from linux/fs.h */
711 __u16 max_integrity_segments; /* 0 means no limit */
712 __u8 interval_exp;
713 __u8 metadata_size; /* UBLK_PARAM_TYPE_INTEGRITY requires nonzero */
714 __u8 pi_offset;
715 __u8 csum_type; /* LBMD_PI_CSUM_* from linux/fs.h */
716 __u8 tag_size;
717 __u8 pad[5];
718};
719
603struct ublk_params {720struct ublk_params {
604 /*721 /*
605 * Total length of parameters, userspace has to set 'len' for both722 * Total length of parameters, userspace has to set 'len' for both
@@ -614,6 +731,7 @@ struct ublk_params { · 8 unmodified lines
614#define UBLK_PARAM_TYPE_ZONED (1 << 3)731#define UBLK_PARAM_TYPE_ZONED (1 << 3)
615#define UBLK_PARAM_TYPE_DMA_ALIGN (1 << 4)732#define UBLK_PARAM_TYPE_DMA_ALIGN (1 << 4)
616#define UBLK_PARAM_TYPE_SEGMENT (1 << 5)733#define UBLK_PARAM_TYPE_SEGMENT (1 << 5)
734#define UBLK_PARAM_TYPE_INTEGRITY (1 << 6) /* requires UBLK_F_INTEGRITY */
617 __u32 types; /* types of parameter included */735 __u32 types; /* types of parameter included */
618 736
619 struct ublk_param_basic basic;737 struct ublk_param_basic basic;
@@ -622,6 +740,7 @@ struct ublk_params { · 2 unmodified lines
622 struct ublk_param_zoned zoned;740 struct ublk_param_zoned zoned;
623 struct ublk_param_dma_align dma;741 struct ublk_param_dma_align dma;
624 struct ublk_param_segment seg;742 struct ublk_param_segment seg;
743 struct ublk_param_integrity integrity;
625};744};
626 745
627#endif746#endif
include/uapi/linux/v4l2-controls.h+63−0
@@ -1192,6 +1192,8 @@ enum v4l2_flash_strobe_source { · 1191 unmodified lines
1192 1192
1193#define V4L2_CID_FLASH_CHARGE (V4L2_CID_FLASH_CLASS_BASE + 11)1193#define V4L2_CID_FLASH_CHARGE (V4L2_CID_FLASH_CLASS_BASE + 11)
1194#define V4L2_CID_FLASH_READY (V4L2_CID_FLASH_CLASS_BASE + 12)1194#define V4L2_CID_FLASH_READY (V4L2_CID_FLASH_CLASS_BASE + 12)
1195#define V4L2_CID_FLASH_DURATION (V4L2_CID_FLASH_CLASS_BASE + 13)
1196#define V4L2_CID_FLASH_STROBE_OE (V4L2_CID_FLASH_CLASS_BASE + 14)
1195 1197
1196 1198
1197/* JPEG-class control IDs */1199/* JPEG-class control IDs */
@@ -2099,6 +2101,8 @@ struct v4l2_ctrl_mpeg2_quantisation { · 901 unmodified lines
2099#define V4L2_CID_STATELESS_HEVC_DECODE_MODE (V4L2_CID_CODEC_STATELESS_BASE + 405)2101#define V4L2_CID_STATELESS_HEVC_DECODE_MODE (V4L2_CID_CODEC_STATELESS_BASE + 405)
2100#define V4L2_CID_STATELESS_HEVC_START_CODE (V4L2_CID_CODEC_STATELESS_BASE + 406)2102#define V4L2_CID_STATELESS_HEVC_START_CODE (V4L2_CID_CODEC_STATELESS_BASE + 406)
2101#define V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS (V4L2_CID_CODEC_STATELESS_BASE + 407)2103#define V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS (V4L2_CID_CODEC_STATELESS_BASE + 407)
2104#define V4L2_CID_STATELESS_HEVC_EXT_SPS_ST_RPS (V4L2_CID_CODEC_STATELESS_BASE + 408)
2105#define V4L2_CID_STATELESS_HEVC_EXT_SPS_LT_RPS (V4L2_CID_CODEC_STATELESS_BASE + 409)
2102 2106
2103enum v4l2_stateless_hevc_decode_mode {2107enum v4l2_stateless_hevc_decode_mode {
2104 V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED,2108 V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED,
@@ -2554,6 +2558,65 @@ struct v4l2_ctrl_hevc_scaling_matrix { · 449 unmodified lines
2554 __u8 scaling_list_dc_coef_32x32[2];2558 __u8 scaling_list_dc_coef_32x32[2];
2555};2559};
2556 2560
2561#define V4L2_HEVC_EXT_SPS_ST_RPS_FLAG_INTER_REF_PIC_SET_PRED 0x1
2562
2563/*
2564 * struct v4l2_ctrl_hevc_ext_sps_st_rps - HEVC short term RPS parameters
2565 *
2566 * Dynamic size 1-dimension array for short term RPS. The number of elements
2567 * is v4l2_ctrl_hevc_sps::num_short_term_ref_pic_sets. It can contain up to 65 elements.
2568 *
2569 * @delta_idx_minus1: Specifies the delta compare to the index. See details in section 7.4.8
2570 * "Short-term reference picture set semantics" of the specification.
2571 * @delta_rps_sign: Sign of the delta as specified in section 7.4.8 "Short-term reference picture
2572 * set semantics" of the specification.
2573 * @abs_delta_rps_minus1: Absolute delta RPS as specified in section 7.4.8 "Short-term reference
2574 * picture set semantics" of the specification.
2575 * @num_negative_pics: Number of short-term RPS entries that have picture order count values less
2576 * than the picture order count value of the current picture.
2577 * @num_positive_pics: Number of short-term RPS entries that have picture order count values
2578 * greater than the picture order count value of the current picture.
2579 * @used_by_curr_pic: Bit j specifies if short-term RPS j is used by the current picture.
2580 * @use_delta_flag: Bit j equals to 1 specifies that the j-th entry in the source candidate
2581 * short-term RPS is included in this candidate short-term RPS.
2582 * @delta_poc_s0_minus1: Specifies the negative picture order count delta for the i-th entry in
2583 * the short-term RPS. See details in section 7.4.8 "Short-term reference
2584 * picture set semantics" of the specification.
2585 * @delta_poc_s1_minus1: Specifies the positive picture order count delta for the i-th entry in
2586 * the short-term RPS. See details in section 7.4.8 "Short-term reference
2587 * picture set semantics" of the specification.
2588 * @flags: See V4L2_HEVC_EXT_SPS_ST_RPS_FLAG_{}
2589 */
2590struct v4l2_ctrl_hevc_ext_sps_st_rps {
2591 __u8 delta_idx_minus1;
2592 __u8 delta_rps_sign;
2593 __u8 num_negative_pics;
2594 __u8 num_positive_pics;
2595 __u32 used_by_curr_pic;
2596 __u32 use_delta_flag;
2597 __u16 abs_delta_rps_minus1;
2598 __u16 delta_poc_s0_minus1[16];
2599 __u16 delta_poc_s1_minus1[16];
2600 __u16 flags;
2601};
2602
2603#define V4L2_HEVC_EXT_SPS_LT_RPS_FLAG_USED_LT 0x1
2604
2605/*
2606 * struct v4l2_ctrl_hevc_ext_sps_lt_rps - HEVC long term RPS parameters
2607 *
2608 * Dynamic size 1-dimension array for long term RPS. The number of elements
2609 * is v4l2_ctrl_hevc_sps::num_long_term_ref_pics_sps. It can contain up to 65 elements.
2610 *
2611 * @lt_ref_pic_poc_lsb_sps: picture order count modulo MaxPicOrderCntLsb of the i-th candidate
2612 * long-term reference picture.
2613 * @flags: See V4L2_HEVC_EXT_SPS_LT_RPS_FLAG_{}
2614 */
2615struct v4l2_ctrl_hevc_ext_sps_lt_rps {
2616 __u16 lt_ref_pic_poc_lsb_sps;
2617 __u16 flags;
2618};
2619
2557/* Stateless VP9 controls */2620/* Stateless VP9 controls */
2558 2621
2559#define V4L2_VP9_LOOP_FILTER_FLAG_DELTA_ENABLED 0x12622#define V4L2_VP9_LOOP_FILTER_FLAG_DELTA_ENABLED 0x1
include/uapi/linux/vbox_vmmdev_types.h+2−2
@@ -236,7 +236,7 @@ struct vmmdev_hgcm_function_parameter32 { · 235 unmodified lines
236 /** Relative to the request header. */236 /** Relative to the request header. */
237 __u32 offset;237 __u32 offset;
238 } page_list;238 } page_list;
239 } u;239 } __packed u;
240} __packed;240} __packed;
241VMMDEV_ASSERT_SIZE(vmmdev_hgcm_function_parameter32, 4 + 8);241VMMDEV_ASSERT_SIZE(vmmdev_hgcm_function_parameter32, 4 + 8);
242 242
@@ -251,7 +251,7 @@ struct vmmdev_hgcm_function_parameter64 { · 8 unmodified lines
251 union {251 union {
252 __u64 phys_addr;252 __u64 phys_addr;
253 __u64 linear_addr;253 __u64 linear_addr;
254 } u;254 } __packed u;
255 } __packed pointer;255 } __packed pointer;
256 struct {256 struct {
257 /** Size of the buffer described by the page list. */257 /** Size of the buffer described by the page list. */
include/uapi/linux/vduse.h+80−5
@@ -10,6 +10,10 @@ · 9 unmodified lines
10 10
11#define VDUSE_API_VERSION 011#define VDUSE_API_VERSION 0
12 12
13/* VQ groups and ASID support */
14
15#define VDUSE_API_VERSION_1 1
16
13/*17/*
14 * Get the version of VDUSE API that kernel supported (VDUSE_API_VERSION).18 * Get the version of VDUSE API that kernel supported (VDUSE_API_VERSION).
15 * This is used for future extension.19 * This is used for future extension.
@@ -27,6 +31,8 @@ · 11 unmodified lines
27 * @features: virtio features31 * @features: virtio features
28 * @vq_num: the number of virtqueues32 * @vq_num: the number of virtqueues
29 * @vq_align: the allocation alignment of virtqueue's metadata33 * @vq_align: the allocation alignment of virtqueue's metadata
34 * @ngroups: number of vq groups that VDUSE device declares
35 * @nas: number of address spaces that VDUSE device declares
30 * @reserved: for future use, needs to be initialized to zero36 * @reserved: for future use, needs to be initialized to zero
31 * @config_size: the size of the configuration space37 * @config_size: the size of the configuration space
32 * @config: the buffer of the configuration space38 * @config: the buffer of the configuration space
@@ -41,7 +47,9 @@ struct vduse_dev_config { · 8 unmodified lines
41 __u64 features;47 __u64 features;
42 __u32 vq_num;48 __u32 vq_num;
43 __u32 vq_align;49 __u32 vq_align;
44 __u32 reserved[13];50 __u32 ngroups; /* if VDUSE_API_VERSION >= 1 */
51 __u32 nas; /* if VDUSE_API_VERSION >= 1 */
52 __u32 reserved[11];
45 __u32 config_size;53 __u32 config_size;
46 __u8 config[];54 __u8 config[];
47};55};
@@ -118,14 +126,18 @@ struct vduse_config_data { · 70 unmodified lines
118 * struct vduse_vq_config - basic configuration of a virtqueue126 * struct vduse_vq_config - basic configuration of a virtqueue
119 * @index: virtqueue index127 * @index: virtqueue index
120 * @max_size: the max size of virtqueue128 * @max_size: the max size of virtqueue
121 * @reserved: for future use, needs to be initialized to zero129 * @reserved1: for future use, needs to be initialized to zero
130 * @group: virtqueue group
131 * @reserved2: for future use, needs to be initialized to zero
122 *132 *
123 * Structure used by VDUSE_VQ_SETUP ioctl to setup a virtqueue.133 * Structure used by VDUSE_VQ_SETUP ioctl to setup a virtqueue.
124 */134 */
125struct vduse_vq_config {135struct vduse_vq_config {
126 __u32 index;136 __u32 index;
127 __u16 max_size;137 __u16 max_size;
128 __u16 reserved[13];138 __u16 reserved1;
139 __u32 group;
140 __u16 reserved2[10];
129};141};
130 142
131/*143/*
@@ -156,6 +168,16 @@ struct vduse_vq_state_packed { · 24 unmodified lines
156 __u16 last_used_idx;168 __u16 last_used_idx;
157};169};
158 170
171/**
172 * struct vduse_vq_group_asid - virtqueue group ASID
173 * @group: Index of the virtqueue group
174 * @asid: Address space ID of the group
175 */
176struct vduse_vq_group_asid {
177 __u32 group;
178 __u32 asid;
179};
180
159/**181/**
160 * struct vduse_vq_info - information of a virtqueue182 * struct vduse_vq_info - information of a virtqueue
161 * @index: virtqueue index183 * @index: virtqueue index
@@ -215,6 +237,7 @@ struct vduse_vq_eventfd { · 53 unmodified lines
215 * @uaddr: start address of userspace memory, it must be aligned to page size237 * @uaddr: start address of userspace memory, it must be aligned to page size
216 * @iova: start of the IOVA region238 * @iova: start of the IOVA region
217 * @size: size of the IOVA region239 * @size: size of the IOVA region
240 * @asid: Address space ID of the IOVA region
218 * @reserved: for future use, needs to be initialized to zero241 * @reserved: for future use, needs to be initialized to zero
219 *242 *
220 * Structure used by VDUSE_IOTLB_REG_UMEM and VDUSE_IOTLB_DEREG_UMEM243 * Structure used by VDUSE_IOTLB_REG_UMEM and VDUSE_IOTLB_DEREG_UMEM
@@ -224,7 +247,8 @@ struct vduse_iova_umem { · 3 unmodified lines
224 __u64 uaddr;247 __u64 uaddr;
225 __u64 iova;248 __u64 iova;
226 __u64 size;249 __u64 size;
227 __u64 reserved[3];250 __u32 asid;
251 __u32 reserved[5];
228};252};
229 253
230/* Register userspace memory for IOVA regions */254/* Register userspace memory for IOVA regions */
@@ -238,6 +262,7 @@ struct vduse_iova_umem { · 7 unmodified lines
238 * @start: start of the IOVA region262 * @start: start of the IOVA region
239 * @last: last of the IOVA region263 * @last: last of the IOVA region
240 * @capability: capability of the IOVA region264 * @capability: capability of the IOVA region
265 * @asid: Address space ID of the IOVA region, only if device API version >= 1
241 * @reserved: for future use, needs to be initialized to zero266 * @reserved: for future use, needs to be initialized to zero
242 *267 *
243 * Structure used by VDUSE_IOTLB_GET_INFO ioctl to get information of268 * Structure used by VDUSE_IOTLB_GET_INFO ioctl to get information of
@@ -248,7 +273,8 @@ struct vduse_iova_info { · 4 unmodified lines
248 __u64 last;273 __u64 last;
249#define VDUSE_IOVA_CAP_UMEM (1 << 0)274#define VDUSE_IOVA_CAP_UMEM (1 << 0)
250 __u64 capability;275 __u64 capability;
251 __u64 reserved[3];276 __u32 asid; /* Only if device API version >= 1 */
277 __u32 reserved[5];
252};278};
253 279
254/*280/*
@@ -257,6 +283,32 @@ struct vduse_iova_info { · 2 unmodified lines
257 */283 */
258#define VDUSE_IOTLB_GET_INFO _IOWR(VDUSE_BASE, 0x1a, struct vduse_iova_info)284#define VDUSE_IOTLB_GET_INFO _IOWR(VDUSE_BASE, 0x1a, struct vduse_iova_info)
259 285
286/**
287 * struct vduse_iotlb_entry_v2 - entry of IOTLB to describe one IOVA region
288 *
289 * @v1: the original vduse_iotlb_entry
290 * @asid: address space ID of the IOVA region
291 * @reserved: for future use, needs to be initialized to zero
292 *
293 * Structure used by VDUSE_IOTLB_GET_FD2 ioctl to find an overlapped IOVA region.
294 */
295struct vduse_iotlb_entry_v2 {
296 __u64 offset;
297 __u64 start;
298 __u64 last;
299 __u8 perm;
300 __u8 padding[7];
301 __u32 asid;
302 __u32 reserved[11];
303};
304
305/*
306 * Same as VDUSE_IOTLB_GET_FD but with vduse_iotlb_entry_v2 argument that
307 * support extra fields.
308 */
309#define VDUSE_IOTLB_GET_FD2 _IOWR(VDUSE_BASE, 0x1b, struct vduse_iotlb_entry_v2)
310
311
260/* The control messages definition for read(2)/write(2) on /dev/vduse/$NAME */312/* The control messages definition for read(2)/write(2) on /dev/vduse/$NAME */
261 313
262/**314/**
@@ -265,11 +317,14 @@ struct vduse_iova_info { · 2 unmodified lines
265 * @VDUSE_SET_STATUS: set the device status317 * @VDUSE_SET_STATUS: set the device status
266 * @VDUSE_UPDATE_IOTLB: Notify userspace to update the memory mapping for318 * @VDUSE_UPDATE_IOTLB: Notify userspace to update the memory mapping for
267 * specified IOVA range via VDUSE_IOTLB_GET_FD ioctl319 * specified IOVA range via VDUSE_IOTLB_GET_FD ioctl
320 * @VDUSE_SET_VQ_GROUP_ASID: Notify userspace to update the address space of a
321 * virtqueue group.
268 */322 */
269enum vduse_req_type {323enum vduse_req_type {
270 VDUSE_GET_VQ_STATE,324 VDUSE_GET_VQ_STATE,
271 VDUSE_SET_STATUS,325 VDUSE_SET_STATUS,
272 VDUSE_UPDATE_IOTLB,326 VDUSE_UPDATE_IOTLB,
327 VDUSE_SET_VQ_GROUP_ASID,
273};328};
274 329
275/**330/**
@@ -304,6 +359,19 @@ struct vduse_iova_range { · 28 unmodified lines
304 __u64 last;359 __u64 last;
305};360};
306 361
362/**
363 * struct vduse_iova_range_v2 - IOVA range [start, last] if API_VERSION >= 1
364 * @start: start of the IOVA range
365 * @last: last of the IOVA range
366 * @asid: address space ID of the IOVA range
367 */
368struct vduse_iova_range_v2 {
369 __u64 start;
370 __u64 last;
371 __u32 asid;
372 __u32 padding;
373};
374
307/**375/**
308 * struct vduse_dev_request - control request376 * struct vduse_dev_request - control request
309 * @type: request type377 * @type: request type
@@ -312,6 +380,8 @@ struct vduse_iova_range { · 2 unmodified lines
312 * @vq_state: virtqueue state, only index field is available380 * @vq_state: virtqueue state, only index field is available
313 * @s: device status381 * @s: device status
314 * @iova: IOVA range for updating382 * @iova: IOVA range for updating
383 * @iova_v2: IOVA range for updating if API_VERSION >= 1
384 * @vq_group_asid: ASID of a virtqueue group
315 * @padding: padding385 * @padding: padding
316 *386 *
317 * Structure used by read(2) on /dev/vduse/$NAME.387 * Structure used by read(2) on /dev/vduse/$NAME.
@@ -324,6 +394,11 @@ struct vduse_dev_request { · 6 unmodified lines
324 struct vduse_vq_state vq_state;394 struct vduse_vq_state vq_state;
325 struct vduse_dev_status s;395 struct vduse_dev_status s;
326 struct vduse_iova_range iova;396 struct vduse_iova_range iova;
397 /* Following members but padding exist only if vduse api
398 * version >= 1
399 */
400 struct vduse_iova_range_v2 iova_v2;
401 struct vduse_vq_group_asid vq_group_asid;
327 __u32 padding[32];402 __u32 padding[32];
328 };403 };
329};404};
include/uapi/linux/vfio.h+4−0
@@ -964,6 +964,10 @@ struct vfio_device_bind_iommufd { · 963 unmodified lines
964 * hwpt corresponding to the given pt_id.964 * hwpt corresponding to the given pt_id.
965 *965 *
966 * Return: 0 on success, -errno on failure.966 * Return: 0 on success, -errno on failure.
967 *
968 * When a device is resetting, -EBUSY will be returned to reject any concurrent
969 * attachment to the resetting device itself or any sibling device in the IOMMU
970 * group having the resetting device.
967 */971 */
968struct vfio_device_attach_iommufd_pt {972struct vfio_device_attach_iommufd_pt {
969 __u32 argsz;973 __u32 argsz;
include/uapi/linux/videodev2.h+3−0
@@ -775,6 +775,7 @@ struct v4l2_pix_format { · 774 unmodified lines
775#define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4') /* H264 parsed slices */775#define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4') /* H264 parsed slices */
776#define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5') /* HEVC parsed slices */776#define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5') /* HEVC parsed slices */
777#define V4L2_PIX_FMT_AV1_FRAME v4l2_fourcc('A', 'V', '1', 'F') /* AV1 parsed frame */777#define V4L2_PIX_FMT_AV1_FRAME v4l2_fourcc('A', 'V', '1', 'F') /* AV1 parsed frame */
778#define V4L2_PIX_FMT_AV1 v4l2_fourcc('A', 'V', '0', '1') /* AV1 */
778#define V4L2_PIX_FMT_SPK v4l2_fourcc('S', 'P', 'K', '0') /* Sorenson Spark */779#define V4L2_PIX_FMT_SPK v4l2_fourcc('S', 'P', 'K', '0') /* Sorenson Spark */
779#define V4L2_PIX_FMT_RV30 v4l2_fourcc('R', 'V', '3', '0') /* RealVideo 8 */780#define V4L2_PIX_FMT_RV30 v4l2_fourcc('R', 'V', '3', '0') /* RealVideo 8 */
780#define V4L2_PIX_FMT_RV40 v4l2_fourcc('R', 'V', '4', '0') /* RealVideo 9 & 10 */781#define V4L2_PIX_FMT_RV40 v4l2_fourcc('R', 'V', '4', '0') /* RealVideo 9 & 10 */
@@ -1985,6 +1986,8 @@ enum v4l2_ctrl_type { · 1204 unmodified lines
1985 V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS = 0x0272,1986 V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS = 0x0272,
1986 V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX = 0x0273,1987 V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX = 0x0273,
1987 V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS = 0x0274,1988 V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS = 0x0274,
1989 V4L2_CTRL_TYPE_HEVC_EXT_SPS_ST_RPS = 0x0275,
1990 V4L2_CTRL_TYPE_HEVC_EXT_SPS_LT_RPS = 0x0276,
1988 1991
1989 V4L2_CTRL_TYPE_AV1_SEQUENCE = 0x280,1992 V4L2_CTRL_TYPE_AV1_SEQUENCE = 0x280,
1990 V4L2_CTRL_TYPE_AV1_TILE_GROUP_ENTRY = 0x281,1993 V4L2_CTRL_TYPE_AV1_TILE_GROUP_ENTRY = 0x281,
include/uapi/linux/virtio_ring.h+1−4
@@ -31,9 +31,6 @@ · 30 unmodified lines
31 * SUCH DAMAGE.31 * SUCH DAMAGE.
32 *32 *
33 * Copyright Rusty Russell IBM Corporation 2007. */33 * Copyright Rusty Russell IBM Corporation 2007. */
34#ifndef __KERNEL__
35#include <stdint.h>
36#endif
37#include <linux/types.h>34#include <linux/types.h>
38#include <linux/virtio_types.h>35#include <linux/virtio_types.h>
39 36
@@ -202,7 +199,7 @@ static inline void vring_init(struct vring *vr, unsigned int num, void *p, · 162 unmodified lines
202 vr->num = num;199 vr->num = num;
203 vr->desc = p;200 vr->desc = p;
204 vr->avail = (struct vring_avail *)((char *)p + num * sizeof(struct vring_desc));201 vr->avail = (struct vring_avail *)((char *)p + num * sizeof(struct vring_desc));
205 vr->used = (void *)(((uintptr_t)&vr->avail->ring[num] + sizeof(__virtio16)202 vr->used = (void *)(((unsigned long)&vr->avail->ring[num] + sizeof(__virtio16)
206 + align-1) & ~(align - 1));203 + align-1) & ~(align - 1));
207}204}
208 205
include/uapi/linux/vmclock-abi.h+20−0
@@ -115,6 +115,17 @@ struct vmclock_abi { · 114 unmodified lines
115 * bit again after the update, using the about-to-be-valid fields.115 * bit again after the update, using the about-to-be-valid fields.
116 */116 */
117#define VMCLOCK_FLAG_TIME_MONOTONIC (1 << 7)117#define VMCLOCK_FLAG_TIME_MONOTONIC (1 << 7)
118 /*
119 * If the VM_GEN_COUNTER_PRESENT flag is set, the hypervisor will
120 * bump the vm_generation_counter field every time the guest is
121 * loaded from some save state (restored from a snapshot).
122 */
123#define VMCLOCK_FLAG_VM_GEN_COUNTER_PRESENT (1 << 8)
124 /*
125 * If the NOTIFICATION_PRESENT flag is set, the hypervisor will send
126 * a notification every time it updates seq_count to a new even number.
127 */
128#define VMCLOCK_FLAG_NOTIFICATION_PRESENT (1 << 9)
118 129
119 __u8 pad[2];130 __u8 pad[2];
120 __u8 clock_status;131 __u8 clock_status;
@@ -177,6 +188,15 @@ struct vmclock_abi { · 56 unmodified lines
177 __le64 time_frac_sec; /* Units of 1/2^64 of a second */188 __le64 time_frac_sec; /* Units of 1/2^64 of a second */
178 __le64 time_esterror_nanosec;189 __le64 time_esterror_nanosec;
179 __le64 time_maxerror_nanosec;190 __le64 time_maxerror_nanosec;
191
192 /*
193 * This field changes to another non-repeating value when the guest
194 * has been loaded from a snapshot. In addition to handling a
195 * disruption in time (which will also be signalled through the
196 * disruption_marker field), a guest may wish to discard UUIDs,
197 * reset network connections, reseed entropy, etc.
198 */
199 __le64 vm_generation_counter;
180};200};
181 201
182#endif /* __VMCLOCK_ABI_H__ */202#endif /* __VMCLOCK_ABI_H__ */
include/uapi/rdma/bnxt_re-abi.h+16−0
@@ -56,6 +56,7 @@ enum { · 55 unmodified lines
56 BNXT_RE_UCNTX_CMASK_DBR_PACING_ENABLED = 0x08ULL,56 BNXT_RE_UCNTX_CMASK_DBR_PACING_ENABLED = 0x08ULL,
57 BNXT_RE_UCNTX_CMASK_POW2_DISABLED = 0x10ULL,57 BNXT_RE_UCNTX_CMASK_POW2_DISABLED = 0x10ULL,
58 BNXT_RE_UCNTX_CMASK_MSN_TABLE_ENABLED = 0x40,58 BNXT_RE_UCNTX_CMASK_MSN_TABLE_ENABLED = 0x40,
59 BNXT_RE_UCNTX_CMASK_QP_RATE_LIMIT_ENABLED = 0x80ULL,
59};60};
60 61
61enum bnxt_re_wqe_mode {62enum bnxt_re_wqe_mode {
@@ -215,4 +216,19 @@ enum bnxt_re_toggle_mem_methods { · 153 unmodified lines
215 BNXT_RE_METHOD_GET_TOGGLE_MEM = (1U << UVERBS_ID_NS_SHIFT),216 BNXT_RE_METHOD_GET_TOGGLE_MEM = (1U << UVERBS_ID_NS_SHIFT),
216 BNXT_RE_METHOD_RELEASE_TOGGLE_MEM,217 BNXT_RE_METHOD_RELEASE_TOGGLE_MEM,
217};218};
219
220struct bnxt_re_packet_pacing_caps {
221 __u32 qp_rate_limit_min;
222 __u32 qp_rate_limit_max; /* In kbps */
223 /* Corresponding bit will be set if qp type from
224 * 'enum ib_qp_type' is supported, e.g.
225 * supported_qpts |= 1 << IB_QPT_RC
226 */
227 __u32 supported_qpts;
228 __u32 reserved;
229};
230
231struct bnxt_re_query_device_ex_resp {
232 struct bnxt_re_packet_pacing_caps packet_pacing_caps;
233};
218#endif /* __BNXT_RE_UVERBS_ABI_H__*/234#endif /* __BNXT_RE_UVERBS_ABI_H__*/
include/uapi/rdma/ib_user_ioctl_cmds.h+16−0
@@ -56,6 +56,7 @@ enum uverbs_default_objects { · 55 unmodified lines
56 UVERBS_OBJECT_COUNTERS,56 UVERBS_OBJECT_COUNTERS,
57 UVERBS_OBJECT_ASYNC_EVENT,57 UVERBS_OBJECT_ASYNC_EVENT,
58 UVERBS_OBJECT_DMAH,58 UVERBS_OBJECT_DMAH,
59 UVERBS_OBJECT_DMABUF,
59};60};
60 61
61enum {62enum {
@@ -73,6 +74,7 @@ enum uverbs_methods_device { · 11 unmodified lines
73 UVERBS_METHOD_QUERY_CONTEXT,74 UVERBS_METHOD_QUERY_CONTEXT,
74 UVERBS_METHOD_QUERY_GID_TABLE,75 UVERBS_METHOD_QUERY_GID_TABLE,
75 UVERBS_METHOD_QUERY_GID_ENTRY,76 UVERBS_METHOD_QUERY_GID_ENTRY,
77 UVERBS_METHOD_QUERY_PORT_SPEED,
76};78};
77 79
78enum uverbs_attrs_invoke_write_cmd_attr_ids {80enum uverbs_attrs_invoke_write_cmd_attr_ids {
@@ -86,6 +88,11 @@ enum uverbs_attrs_query_port_cmd_attr_ids { · 7 unmodified lines
86 UVERBS_ATTR_QUERY_PORT_RESP,88 UVERBS_ATTR_QUERY_PORT_RESP,
87};89};
88 90
91enum uverbs_attrs_query_port_speed_cmd_attr_ids {
92 UVERBS_ATTR_QUERY_PORT_SPEED_PORT_NUM,
93 UVERBS_ATTR_QUERY_PORT_SPEED_RESP,
94};
95
89enum uverbs_attrs_get_context_attr_ids {96enum uverbs_attrs_get_context_attr_ids {
90 UVERBS_ATTR_GET_CONTEXT_NUM_COMP_VECTORS,97 UVERBS_ATTR_GET_CONTEXT_NUM_COMP_VECTORS,
91 UVERBS_ATTR_GET_CONTEXT_CORE_SUPPORT,98 UVERBS_ATTR_GET_CONTEXT_CORE_SUPPORT,
@@ -257,6 +264,15 @@ enum uverbs_methods_dmah { · 165 unmodified lines
257 UVERBS_METHOD_DMAH_FREE,264 UVERBS_METHOD_DMAH_FREE,
258};265};
259 266
267enum uverbs_attrs_alloc_dmabuf_cmd_attr_ids {
268 UVERBS_ATTR_ALLOC_DMABUF_HANDLE,
269 UVERBS_ATTR_ALLOC_DMABUF_PGOFF,
270};
271
272enum uverbs_methods_dmabuf {
273 UVERBS_METHOD_DMABUF_ALLOC,
274};
275
260enum uverbs_attrs_reg_dm_mr_cmd_attr_ids {276enum uverbs_attrs_reg_dm_mr_cmd_attr_ids {
261 UVERBS_ATTR_REG_DM_MR_HANDLE,277 UVERBS_ATTR_REG_DM_MR_HANDLE,
262 UVERBS_ATTR_REG_DM_MR_OFFSET,278 UVERBS_ATTR_REG_DM_MR_OFFSET,
include/uapi/rdma/mana-abi.h+3−0
@@ -17,6 +17,9 @@ · 16 unmodified lines
17#define MANA_IB_UVERBS_ABI_VERSION 117#define MANA_IB_UVERBS_ABI_VERSION 1
18 18
19enum mana_ib_create_cq_flags {19enum mana_ib_create_cq_flags {
20 /* Reserved for backward compatibility. Legacy
21 * kernel versions use it to create CQs in RNIC
22 */
20 MANA_IB_CREATE_RNIC_CQ = 1 << 0,23 MANA_IB_CREATE_RNIC_CQ = 1 << 0,
21};24};
22 25
include/uapi/scsi/scsi_bsg_ufs.h+8−9
@@ -94,16 +94,15 @@ struct utp_upiu_header { · 93 unmodified lines
94};94};
95 95
96/**96/**
97 * struct utp_upiu_query - upiu request buffer structure for97 * struct utp_upiu_query - QUERY REQUEST UPIU structure.
98 * query request.98 * @opcode: query function to perform B-0
99 * @opcode: command to perform B-099 * @idn: descriptor or attribute identification number B-1
100 * @idn: a value that indicates the particular type of data B-1100 * @index: Index that further identifies which data to access B-2
101 * @index: Index to further identify data B-2101 * @selector: Index that further identifies which data to access B-3
102 * @selector: Index to further identify data B-3
103 * @reserved_osf: spec reserved field B-4,5102 * @reserved_osf: spec reserved field B-4,5
104 * @length: number of descriptor bytes to read/write B-6,7103 * @length: number of descriptor bytes to read or write B-6,7
105 * @value: Attribute value to be written DW-5104 * @value: if @opcode == UPIU_QUERY_OPCODE_WRITE_ATTR, the value to be written B-6,7
106 * @reserved: spec reserved DW-6,7105 * @reserved: reserved for future use DW-6,7
107 */106 */
108struct utp_upiu_query {107struct utp_upiu_query {
109 __u8 opcode;108 __u8 opcode;
include/uapi/sound/sof/tokens.h+6−0
@@ -56,6 +56,9 @@ · 55 unmodified lines
56#define SOF_TKN_SCHED_LP_MODE 20756#define SOF_TKN_SCHED_LP_MODE 207
57#define SOF_TKN_SCHED_MEM_USAGE 20857#define SOF_TKN_SCHED_MEM_USAGE 208
58#define SOF_TKN_SCHED_USE_CHAIN_DMA 20958#define SOF_TKN_SCHED_USE_CHAIN_DMA 209
59#define SOF_TKN_SCHED_KCPS 210
60#define SOF_TKN_SCHED_DIRECTION 211
61#define SOF_TKN_SCHED_DIRECTION_VALID 212
59 62
60/* volume */63/* volume */
61#define SOF_TKN_VOLUME_RAMP_STEP_TYPE 25064#define SOF_TKN_VOLUME_RAMP_STEP_TYPE 250
@@ -107,6 +110,9 @@ · 45 unmodified lines
107#define SOF_TKN_COMP_NO_WNAME_IN_KCONTROL_NAME 417110#define SOF_TKN_COMP_NO_WNAME_IN_KCONTROL_NAME 417
108 111
109#define SOF_TKN_COMP_SCHED_DOMAIN 418112#define SOF_TKN_COMP_SCHED_DOMAIN 418
113#define SOF_TKN_COMP_DOMAIN_ID 419
114#define SOF_TKN_COMP_HEAP_BYTES_REQUIREMENT 420
115#define SOF_TKN_COMP_STACK_BYTES_REQUIREMENT 421
110 116
111/* SSP */117/* SSP */
112#define SOF_TKN_INTEL_SSP_CLKS_CONTROL 500118#define SOF_TKN_INTEL_SSP_CLKS_CONTROL 500