Merge drm/drm-next into drm-misc-next
Let's start the 5.19 development cycle. Signed-off-by: Maxime Ripard <maxime@cerno.tech>
This commit is contained in:
@@ -75,6 +75,8 @@
|
||||
#define MADV_POPULATE_READ 22 /* populate (prefault) page tables readable */
|
||||
#define MADV_POPULATE_WRITE 23 /* populate (prefault) page tables writable */
|
||||
|
||||
#define MADV_DONTNEED_LOCKED 24 /* like DONTNEED, but drop locked pages too */
|
||||
|
||||
/* compatibility flags */
|
||||
#define MAP_FILE 0
|
||||
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
#define __ASM_GENERIC_SHMBUF_H
|
||||
|
||||
#include <asm/bitsperlong.h>
|
||||
#include <asm/ipcbuf.h>
|
||||
#include <asm/posix_types.h>
|
||||
|
||||
/*
|
||||
* The shmid64_ds structure for x86 architecture.
|
||||
@@ -24,7 +26,7 @@
|
||||
|
||||
struct shmid64_ds {
|
||||
struct ipc64_perm shm_perm; /* operation perms */
|
||||
size_t shm_segsz; /* size of segment (bytes) */
|
||||
__kernel_size_t shm_segsz; /* size of segment (bytes) */
|
||||
#if __BITS_PER_LONG == 64
|
||||
long shm_atime; /* last attach time */
|
||||
long shm_dtime; /* last detach time */
|
||||
|
||||
@@ -85,7 +85,7 @@ struct sigaction {
|
||||
typedef struct sigaltstack {
|
||||
void __user *ss_sp;
|
||||
int ss_flags;
|
||||
size_t ss_size;
|
||||
__kernel_size_t ss_size;
|
||||
} stack_t;
|
||||
|
||||
#endif /* __ASSEMBLY__ */
|
||||
|
||||
@@ -128,6 +128,8 @@
|
||||
|
||||
#define SO_RESERVE_MEM 73
|
||||
|
||||
#define SO_TXREHASH 74
|
||||
|
||||
#if !defined(__KERNEL__)
|
||||
|
||||
#if __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__))
|
||||
|
||||
@@ -206,6 +206,8 @@ union drm_amdgpu_bo_list {
|
||||
#define AMDGPU_CTX_OP_FREE_CTX 2
|
||||
#define AMDGPU_CTX_OP_QUERY_STATE 3
|
||||
#define AMDGPU_CTX_OP_QUERY_STATE2 4
|
||||
#define AMDGPU_CTX_OP_GET_STABLE_PSTATE 5
|
||||
#define AMDGPU_CTX_OP_SET_STABLE_PSTATE 6
|
||||
|
||||
/* GPU reset status */
|
||||
#define AMDGPU_CTX_NO_RESET 0
|
||||
@@ -238,10 +240,18 @@ union drm_amdgpu_bo_list {
|
||||
#define AMDGPU_CTX_PRIORITY_HIGH 512
|
||||
#define AMDGPU_CTX_PRIORITY_VERY_HIGH 1023
|
||||
|
||||
/* select a stable profiling pstate for perfmon tools */
|
||||
#define AMDGPU_CTX_STABLE_PSTATE_FLAGS_MASK 0xf
|
||||
#define AMDGPU_CTX_STABLE_PSTATE_NONE 0
|
||||
#define AMDGPU_CTX_STABLE_PSTATE_STANDARD 1
|
||||
#define AMDGPU_CTX_STABLE_PSTATE_MIN_SCLK 2
|
||||
#define AMDGPU_CTX_STABLE_PSTATE_MIN_MCLK 3
|
||||
#define AMDGPU_CTX_STABLE_PSTATE_PEAK 4
|
||||
|
||||
struct drm_amdgpu_ctx_in {
|
||||
/** AMDGPU_CTX_OP_* */
|
||||
__u32 op;
|
||||
/** For future use, no flags defined so far */
|
||||
/** Flags */
|
||||
__u32 flags;
|
||||
__u32 ctx_id;
|
||||
/** AMDGPU_CTX_PRIORITY_* */
|
||||
@@ -262,6 +272,11 @@ union drm_amdgpu_ctx_out {
|
||||
/** Reset status since the last call of the ioctl. */
|
||||
__u32 reset_status;
|
||||
} state;
|
||||
|
||||
struct {
|
||||
__u32 flags;
|
||||
__u32 _pad;
|
||||
} pstate;
|
||||
};
|
||||
|
||||
union drm_amdgpu_ctx {
|
||||
@@ -728,6 +743,8 @@ struct drm_amdgpu_cs_chunk_data {
|
||||
#define AMDGPU_INFO_FW_DMCUB 0x14
|
||||
/* Subquery id: Query TOC firmware version */
|
||||
#define AMDGPU_INFO_FW_TOC 0x15
|
||||
/* Subquery id: Query CAP firmware version */
|
||||
#define AMDGPU_INFO_FW_CAP 0x16
|
||||
|
||||
/* number of bytes moved for TTM migration */
|
||||
#define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f
|
||||
@@ -1134,6 +1151,8 @@ struct drm_amdgpu_info_video_caps {
|
||||
#define AMDGPU_FAMILY_NV 143 /* Navi10 */
|
||||
#define AMDGPU_FAMILY_VGH 144 /* Van Gogh */
|
||||
#define AMDGPU_FAMILY_YC 146 /* Yellow Carp */
|
||||
#define AMDGPU_FAMILY_GC_10_3_6 149 /* GC 10.3.6 */
|
||||
#define AMDGPU_FAMILY_GC_10_3_7 151 /* GC 10.3.7 */
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
|
||||
@@ -1118,10 +1118,16 @@ struct drm_i915_gem_exec_object2 {
|
||||
/**
|
||||
* When the EXEC_OBJECT_PINNED flag is specified this is populated by
|
||||
* the user with the GTT offset at which this object will be pinned.
|
||||
*
|
||||
* When the I915_EXEC_NO_RELOC flag is specified this must contain the
|
||||
* presumed_offset of the object.
|
||||
*
|
||||
* During execbuffer2 the kernel populates it with the value of the
|
||||
* current GTT offset of the object, for future presumed_offset writes.
|
||||
*
|
||||
* See struct drm_i915_gem_create_ext for the rules when dealing with
|
||||
* alignment restrictions with I915_MEMORY_CLASS_DEVICE, on devices with
|
||||
* minimum page sizes, like DG2.
|
||||
*/
|
||||
__u64 offset;
|
||||
|
||||
@@ -3144,11 +3150,40 @@ struct drm_i915_gem_create_ext {
|
||||
*
|
||||
* The (page-aligned) allocated size for the object will be returned.
|
||||
*
|
||||
* Note that for some devices we have might have further minimum
|
||||
* page-size restrictions(larger than 4K), like for device local-memory.
|
||||
* However in general the final size here should always reflect any
|
||||
* rounding up, if for example using the I915_GEM_CREATE_EXT_MEMORY_REGIONS
|
||||
* extension to place the object in device local-memory.
|
||||
*
|
||||
* DG2 64K min page size implications:
|
||||
*
|
||||
* On discrete platforms, starting from DG2, we have to contend with GTT
|
||||
* page size restrictions when dealing with I915_MEMORY_CLASS_DEVICE
|
||||
* objects. Specifically the hardware only supports 64K or larger GTT
|
||||
* page sizes for such memory. The kernel will already ensure that all
|
||||
* I915_MEMORY_CLASS_DEVICE memory is allocated using 64K or larger page
|
||||
* sizes underneath.
|
||||
*
|
||||
* Note that the returned size here will always reflect any required
|
||||
* rounding up done by the kernel, i.e 4K will now become 64K on devices
|
||||
* such as DG2.
|
||||
*
|
||||
* Special DG2 GTT address alignment requirement:
|
||||
*
|
||||
* The GTT alignment will also need to be at least 2M for such objects.
|
||||
*
|
||||
* Note that due to how the hardware implements 64K GTT page support, we
|
||||
* have some further complications:
|
||||
*
|
||||
* 1) The entire PDE (which covers a 2MB virtual address range), must
|
||||
* contain only 64K PTEs, i.e mixing 4K and 64K PTEs in the same
|
||||
* PDE is forbidden by the hardware.
|
||||
*
|
||||
* 2) We still need to support 4K PTEs for I915_MEMORY_CLASS_SYSTEM
|
||||
* objects.
|
||||
*
|
||||
* To keep things simple for userland, we mandate that any GTT mappings
|
||||
* must be aligned to and rounded up to 2MB. The kernel will internally
|
||||
* pad them out to the next 2MB boundary. As this only wastes virtual
|
||||
* address space and avoids userland having to copy any needlessly
|
||||
* complicated PDE sharing scheme (coloring) and only affects DG2, this
|
||||
* is deemed to be a good compromise.
|
||||
*/
|
||||
__u64 size;
|
||||
/**
|
||||
|
||||
@@ -67,16 +67,21 @@ struct drm_msm_timespec {
|
||||
__s64 tv_nsec; /* nanoseconds */
|
||||
};
|
||||
|
||||
#define MSM_PARAM_GPU_ID 0x01
|
||||
#define MSM_PARAM_GMEM_SIZE 0x02
|
||||
#define MSM_PARAM_CHIP_ID 0x03
|
||||
#define MSM_PARAM_MAX_FREQ 0x04
|
||||
#define MSM_PARAM_TIMESTAMP 0x05
|
||||
#define MSM_PARAM_GMEM_BASE 0x06
|
||||
#define MSM_PARAM_PRIORITIES 0x07 /* The # of priority levels */
|
||||
#define MSM_PARAM_PP_PGTABLE 0x08 /* => 1 for per-process pagetables, else 0 */
|
||||
#define MSM_PARAM_FAULTS 0x09
|
||||
#define MSM_PARAM_SUSPENDS 0x0a
|
||||
/* Below "RO" indicates a read-only param, "WO" indicates write-only, and
|
||||
* "RW" indicates a param that can be both read (GET_PARAM) and written
|
||||
* (SET_PARAM)
|
||||
*/
|
||||
#define MSM_PARAM_GPU_ID 0x01 /* RO */
|
||||
#define MSM_PARAM_GMEM_SIZE 0x02 /* RO */
|
||||
#define MSM_PARAM_CHIP_ID 0x03 /* RO */
|
||||
#define MSM_PARAM_MAX_FREQ 0x04 /* RO */
|
||||
#define MSM_PARAM_TIMESTAMP 0x05 /* RO */
|
||||
#define MSM_PARAM_GMEM_BASE 0x06 /* RO */
|
||||
#define MSM_PARAM_PRIORITIES 0x07 /* RO: The # of priority levels */
|
||||
#define MSM_PARAM_PP_PGTABLE 0x08 /* RO: Deprecated, always returns zero */
|
||||
#define MSM_PARAM_FAULTS 0x09 /* RO */
|
||||
#define MSM_PARAM_SUSPENDS 0x0a /* RO */
|
||||
#define MSM_PARAM_SYSPROF 0x0b /* WO: 1 preserves perfcntrs, 2 also disables suspend */
|
||||
|
||||
/* For backwards compat. The original support for preemption was based on
|
||||
* a single ring per priority level so # of priority levels equals the #
|
||||
@@ -227,6 +232,7 @@ struct drm_msm_gem_submit_bo {
|
||||
#define MSM_SUBMIT_SUDO 0x10000000 /* run submitted cmds from RB */
|
||||
#define MSM_SUBMIT_SYNCOBJ_IN 0x08000000 /* enable input syncobj */
|
||||
#define MSM_SUBMIT_SYNCOBJ_OUT 0x04000000 /* enable output syncobj */
|
||||
#define MSM_SUBMIT_FENCE_SN_IN 0x02000000 /* userspace passes in seqno fence */
|
||||
#define MSM_SUBMIT_FLAGS ( \
|
||||
MSM_SUBMIT_NO_IMPLICIT | \
|
||||
MSM_SUBMIT_FENCE_FD_IN | \
|
||||
@@ -234,6 +240,7 @@ struct drm_msm_gem_submit_bo {
|
||||
MSM_SUBMIT_SUDO | \
|
||||
MSM_SUBMIT_SYNCOBJ_IN | \
|
||||
MSM_SUBMIT_SYNCOBJ_OUT | \
|
||||
MSM_SUBMIT_FENCE_SN_IN | \
|
||||
0)
|
||||
|
||||
#define MSM_SUBMIT_SYNCOBJ_RESET 0x00000001 /* Reset syncobj after wait. */
|
||||
@@ -253,7 +260,7 @@ struct drm_msm_gem_submit_syncobj {
|
||||
*/
|
||||
struct drm_msm_gem_submit {
|
||||
__u32 flags; /* MSM_PIPE_x | MSM_SUBMIT_x */
|
||||
__u32 fence; /* out */
|
||||
__u32 fence; /* out (or in with MSM_SUBMIT_FENCE_SN_IN flag) */
|
||||
__u32 nr_bos; /* in, number of submit_bo's */
|
||||
__u32 nr_cmds; /* in, number of submit_cmd's */
|
||||
__u64 bos; /* in, ptr to array of submit_bo's */
|
||||
@@ -333,9 +340,7 @@ struct drm_msm_submitqueue_query {
|
||||
};
|
||||
|
||||
#define DRM_MSM_GET_PARAM 0x00
|
||||
/* placeholder:
|
||||
#define DRM_MSM_SET_PARAM 0x01
|
||||
*/
|
||||
#define DRM_MSM_GEM_NEW 0x02
|
||||
#define DRM_MSM_GEM_INFO 0x03
|
||||
#define DRM_MSM_GEM_CPU_PREP 0x04
|
||||
@@ -351,6 +356,7 @@ struct drm_msm_submitqueue_query {
|
||||
#define DRM_MSM_SUBMITQUEUE_QUERY 0x0C
|
||||
|
||||
#define DRM_IOCTL_MSM_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GET_PARAM, struct drm_msm_param)
|
||||
#define DRM_IOCTL_MSM_SET_PARAM DRM_IOW (DRM_COMMAND_BASE + DRM_MSM_SET_PARAM, struct drm_msm_param)
|
||||
#define DRM_IOCTL_MSM_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_NEW, struct drm_msm_gem_new)
|
||||
#define DRM_IOCTL_MSM_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_INFO, struct drm_msm_gem_info)
|
||||
#define DRM_IOCTL_MSM_GEM_CPU_PREP DRM_IOW (DRM_COMMAND_BASE + DRM_MSM_GEM_CPU_PREP, struct drm_msm_gem_cpu_prep)
|
||||
|
||||
@@ -288,8 +288,8 @@ struct binder_transaction_data {
|
||||
|
||||
/* General information about the transaction. */
|
||||
__u32 flags;
|
||||
pid_t sender_pid;
|
||||
uid_t sender_euid;
|
||||
__kernel_pid_t sender_pid;
|
||||
__kernel_uid_t sender_euid;
|
||||
binder_size_t data_size; /* number of bytes of data */
|
||||
binder_size_t offsets_size; /* number of bytes of offsets */
|
||||
|
||||
|
||||
@@ -330,6 +330,8 @@ union bpf_iter_link_info {
|
||||
* *ctx_out*, *data_in* and *data_out* must be NULL.
|
||||
* *repeat* must be zero.
|
||||
*
|
||||
* BPF_PROG_RUN is an alias for BPF_PROG_TEST_RUN.
|
||||
*
|
||||
* Return
|
||||
* Returns zero on success. On error, -1 is returned and *errno*
|
||||
* is set appropriately.
|
||||
@@ -995,6 +997,7 @@ enum bpf_attach_type {
|
||||
BPF_SK_REUSEPORT_SELECT,
|
||||
BPF_SK_REUSEPORT_SELECT_OR_MIGRATE,
|
||||
BPF_PERF_EVENT,
|
||||
BPF_TRACE_KPROBE_MULTI,
|
||||
__MAX_BPF_ATTACH_TYPE
|
||||
};
|
||||
|
||||
@@ -1009,6 +1012,7 @@ enum bpf_link_type {
|
||||
BPF_LINK_TYPE_NETNS = 5,
|
||||
BPF_LINK_TYPE_XDP = 6,
|
||||
BPF_LINK_TYPE_PERF_EVENT = 7,
|
||||
BPF_LINK_TYPE_KPROBE_MULTI = 8,
|
||||
|
||||
MAX_BPF_LINK_TYPE,
|
||||
};
|
||||
@@ -1111,6 +1115,16 @@ enum bpf_link_type {
|
||||
*/
|
||||
#define BPF_F_SLEEPABLE (1U << 4)
|
||||
|
||||
/* If BPF_F_XDP_HAS_FRAGS is used in BPF_PROG_LOAD command, the loaded program
|
||||
* fully support xdp frags.
|
||||
*/
|
||||
#define BPF_F_XDP_HAS_FRAGS (1U << 5)
|
||||
|
||||
/* link_create.kprobe_multi.flags used in LINK_CREATE command for
|
||||
* BPF_TRACE_KPROBE_MULTI attach type to create return probe.
|
||||
*/
|
||||
#define BPF_F_KPROBE_MULTI_RETURN (1U << 0)
|
||||
|
||||
/* When BPF ldimm64's insn[0].src_reg != 0 then this can have
|
||||
* the following extensions:
|
||||
*
|
||||
@@ -1225,6 +1239,8 @@ enum {
|
||||
|
||||
/* If set, run the test on the cpu specified by bpf_attr.test.cpu */
|
||||
#define BPF_F_TEST_RUN_ON_CPU (1U << 0)
|
||||
/* If set, XDP frames will be transmitted after processing */
|
||||
#define BPF_F_TEST_XDP_LIVE_FRAMES (1U << 1)
|
||||
|
||||
/* type for BPF_ENABLE_STATS */
|
||||
enum bpf_stats_type {
|
||||
@@ -1386,6 +1402,7 @@ union bpf_attr {
|
||||
__aligned_u64 ctx_out;
|
||||
__u32 flags;
|
||||
__u32 cpu;
|
||||
__u32 batch_size;
|
||||
} test;
|
||||
|
||||
struct { /* anonymous struct used by BPF_*_GET_*_ID */
|
||||
@@ -1465,6 +1482,13 @@ union bpf_attr {
|
||||
*/
|
||||
__u64 bpf_cookie;
|
||||
} perf_event;
|
||||
struct {
|
||||
__u32 flags;
|
||||
__u32 cnt;
|
||||
__aligned_u64 syms;
|
||||
__aligned_u64 addrs;
|
||||
__aligned_u64 cookies;
|
||||
} kprobe_multi;
|
||||
};
|
||||
} link_create;
|
||||
|
||||
@@ -1775,6 +1799,8 @@ union bpf_attr {
|
||||
* 0 on success, or a negative error in case of failure.
|
||||
*
|
||||
* u64 bpf_get_current_pid_tgid(void)
|
||||
* Description
|
||||
* Get the current pid and tgid.
|
||||
* Return
|
||||
* A 64-bit integer containing the current tgid and pid, and
|
||||
* created as such:
|
||||
@@ -1782,6 +1808,8 @@ union bpf_attr {
|
||||
* *current_task*\ **->pid**.
|
||||
*
|
||||
* u64 bpf_get_current_uid_gid(void)
|
||||
* Description
|
||||
* Get the current uid and gid.
|
||||
* Return
|
||||
* A 64-bit integer containing the current GID and UID, and
|
||||
* created as such: *current_gid* **<< 32 \|** *current_uid*.
|
||||
@@ -2256,6 +2284,8 @@ union bpf_attr {
|
||||
* The 32-bit hash.
|
||||
*
|
||||
* u64 bpf_get_current_task(void)
|
||||
* Description
|
||||
* Get the current task.
|
||||
* Return
|
||||
* A pointer to the current task struct.
|
||||
*
|
||||
@@ -2286,8 +2316,8 @@ union bpf_attr {
|
||||
* Return
|
||||
* The return value depends on the result of the test, and can be:
|
||||
*
|
||||
* * 0, if current task belongs to the cgroup2.
|
||||
* * 1, if current task does not belong to the cgroup2.
|
||||
* * 1, if current task belongs to the cgroup2.
|
||||
* * 0, if current task does not belong to the cgroup2.
|
||||
* * A negative error code, if an error occurred.
|
||||
*
|
||||
* long bpf_skb_change_tail(struct sk_buff *skb, u32 len, u64 flags)
|
||||
@@ -2369,6 +2399,8 @@ union bpf_attr {
|
||||
* indicate that the hash is outdated and to trigger a
|
||||
* recalculation the next time the kernel tries to access this
|
||||
* hash or when the **bpf_get_hash_recalc**\ () helper is called.
|
||||
* Return
|
||||
* void.
|
||||
*
|
||||
* long bpf_get_numa_node_id(void)
|
||||
* Description
|
||||
@@ -2466,6 +2498,8 @@ union bpf_attr {
|
||||
* A 8-byte long unique number or 0 if *sk* is NULL.
|
||||
*
|
||||
* u32 bpf_get_socket_uid(struct sk_buff *skb)
|
||||
* Description
|
||||
* Get the owner UID of the socked associated to *skb*.
|
||||
* Return
|
||||
* The owner UID of the socket associated to *skb*. If the socket
|
||||
* is **NULL**, or if it is not a full socket (i.e. if it is a
|
||||
@@ -2975,8 +3009,8 @@ union bpf_attr {
|
||||
*
|
||||
* # sysctl kernel.perf_event_max_stack=<new value>
|
||||
* Return
|
||||
* A non-negative value equal to or less than *size* on success,
|
||||
* or a negative error in case of failure.
|
||||
* The non-negative copied *buf* length equal to or less than
|
||||
* *size* on success, or a negative error in case of failure.
|
||||
*
|
||||
* long bpf_skb_load_bytes_relative(const void *skb, u32 offset, void *to, u32 len, u32 start_header)
|
||||
* Description
|
||||
@@ -3240,6 +3274,9 @@ union bpf_attr {
|
||||
* The id is returned or 0 in case the id could not be retrieved.
|
||||
*
|
||||
* u64 bpf_get_current_cgroup_id(void)
|
||||
* Description
|
||||
* Get the current cgroup id based on the cgroup within which
|
||||
* the current task is running.
|
||||
* Return
|
||||
* A 64-bit integer containing the current cgroup id based
|
||||
* on the cgroup within which the current task is running.
|
||||
@@ -4279,8 +4316,8 @@ union bpf_attr {
|
||||
*
|
||||
* # sysctl kernel.perf_event_max_stack=<new value>
|
||||
* Return
|
||||
* A non-negative value equal to or less than *size* on success,
|
||||
* or a negative error in case of failure.
|
||||
* The non-negative copied *buf* length equal to or less than
|
||||
* *size* on success, or a negative error in case of failure.
|
||||
*
|
||||
* long bpf_load_hdr_opt(struct bpf_sock_ops *skops, void *searchby_res, u32 len, u64 flags)
|
||||
* Description
|
||||
@@ -5018,6 +5055,94 @@ union bpf_attr {
|
||||
*
|
||||
* Return
|
||||
* The number of arguments of the traced function.
|
||||
*
|
||||
* int bpf_get_retval(void)
|
||||
* Description
|
||||
* Get the syscall's return value that will be returned to userspace.
|
||||
*
|
||||
* This helper is currently supported by cgroup programs only.
|
||||
* Return
|
||||
* The syscall's return value.
|
||||
*
|
||||
* int bpf_set_retval(int retval)
|
||||
* Description
|
||||
* Set the syscall's return value that will be returned to userspace.
|
||||
*
|
||||
* This helper is currently supported by cgroup programs only.
|
||||
* Return
|
||||
* 0 on success, or a negative error in case of failure.
|
||||
*
|
||||
* u64 bpf_xdp_get_buff_len(struct xdp_buff *xdp_md)
|
||||
* Description
|
||||
* Get the total size of a given xdp buff (linear and paged area)
|
||||
* Return
|
||||
* The total size of a given xdp buffer.
|
||||
*
|
||||
* long bpf_xdp_load_bytes(struct xdp_buff *xdp_md, u32 offset, void *buf, u32 len)
|
||||
* Description
|
||||
* This helper is provided as an easy way to load data from a
|
||||
* xdp buffer. It can be used to load *len* bytes from *offset* from
|
||||
* the frame associated to *xdp_md*, into the buffer pointed by
|
||||
* *buf*.
|
||||
* Return
|
||||
* 0 on success, or a negative error in case of failure.
|
||||
*
|
||||
* long bpf_xdp_store_bytes(struct xdp_buff *xdp_md, u32 offset, void *buf, u32 len)
|
||||
* Description
|
||||
* Store *len* bytes from buffer *buf* into the frame
|
||||
* associated to *xdp_md*, at *offset*.
|
||||
* Return
|
||||
* 0 on success, or a negative error in case of failure.
|
||||
*
|
||||
* long bpf_copy_from_user_task(void *dst, u32 size, const void *user_ptr, struct task_struct *tsk, u64 flags)
|
||||
* Description
|
||||
* Read *size* bytes from user space address *user_ptr* in *tsk*'s
|
||||
* address space, and stores the data in *dst*. *flags* is not
|
||||
* used yet and is provided for future extensibility. This helper
|
||||
* can only be used by sleepable programs.
|
||||
* Return
|
||||
* 0 on success, or a negative error in case of failure. On error
|
||||
* *dst* buffer is zeroed out.
|
||||
*
|
||||
* long bpf_skb_set_tstamp(struct sk_buff *skb, u64 tstamp, u32 tstamp_type)
|
||||
* Description
|
||||
* Change the __sk_buff->tstamp_type to *tstamp_type*
|
||||
* and set *tstamp* to the __sk_buff->tstamp together.
|
||||
*
|
||||
* If there is no need to change the __sk_buff->tstamp_type,
|
||||
* the tstamp value can be directly written to __sk_buff->tstamp
|
||||
* instead.
|
||||
*
|
||||
* BPF_SKB_TSTAMP_DELIVERY_MONO is the only tstamp that
|
||||
* will be kept during bpf_redirect_*(). A non zero
|
||||
* *tstamp* must be used with the BPF_SKB_TSTAMP_DELIVERY_MONO
|
||||
* *tstamp_type*.
|
||||
*
|
||||
* A BPF_SKB_TSTAMP_UNSPEC *tstamp_type* can only be used
|
||||
* with a zero *tstamp*.
|
||||
*
|
||||
* Only IPv4 and IPv6 skb->protocol are supported.
|
||||
*
|
||||
* This function is most useful when it needs to set a
|
||||
* mono delivery time to __sk_buff->tstamp and then
|
||||
* bpf_redirect_*() to the egress of an iface. For example,
|
||||
* changing the (rcv) timestamp in __sk_buff->tstamp at
|
||||
* ingress to a mono delivery time and then bpf_redirect_*()
|
||||
* to sch_fq@phy-dev.
|
||||
* Return
|
||||
* 0 on success.
|
||||
* **-EINVAL** for invalid input
|
||||
* **-EOPNOTSUPP** for unsupported protocol
|
||||
*
|
||||
* long bpf_ima_file_hash(struct file *file, void *dst, u32 size)
|
||||
* Description
|
||||
* Returns a calculated IMA hash of the *file*.
|
||||
* If the hash is larger than *size*, then only *size*
|
||||
* bytes will be copied to *dst*
|
||||
* Return
|
||||
* The **hash_algo** is returned on success,
|
||||
* **-EOPNOTSUP** if the hash calculation failed or **-EINVAL** if
|
||||
* invalid arguments are passed.
|
||||
*/
|
||||
#define __BPF_FUNC_MAPPER(FN) \
|
||||
FN(unspec), \
|
||||
@@ -5206,6 +5331,14 @@ union bpf_attr {
|
||||
FN(get_func_arg), \
|
||||
FN(get_func_ret), \
|
||||
FN(get_func_arg_cnt), \
|
||||
FN(get_retval), \
|
||||
FN(set_retval), \
|
||||
FN(xdp_get_buff_len), \
|
||||
FN(xdp_load_bytes), \
|
||||
FN(xdp_store_bytes), \
|
||||
FN(copy_from_user_task), \
|
||||
FN(skb_set_tstamp), \
|
||||
FN(ima_file_hash), \
|
||||
/* */
|
||||
|
||||
/* integer value in 'imm' field of BPF_CALL instruction selects which helper
|
||||
@@ -5395,6 +5528,15 @@ union { \
|
||||
__u64 :64; \
|
||||
} __attribute__((aligned(8)))
|
||||
|
||||
enum {
|
||||
BPF_SKB_TSTAMP_UNSPEC,
|
||||
BPF_SKB_TSTAMP_DELIVERY_MONO, /* tstamp has mono delivery time */
|
||||
/* For any BPF_SKB_TSTAMP_* that the bpf prog cannot handle,
|
||||
* the bpf prog should handle it like BPF_SKB_TSTAMP_UNSPEC
|
||||
* and try to deduce it by ingress, egress or skb->sk->sk_clockid.
|
||||
*/
|
||||
};
|
||||
|
||||
/* user accessible mirror of in-kernel sk_buff.
|
||||
* new fields can only be added to the end of this structure
|
||||
*/
|
||||
@@ -5435,7 +5577,8 @@ struct __sk_buff {
|
||||
__u32 gso_segs;
|
||||
__bpf_md_ptr(struct bpf_sock *, sk);
|
||||
__u32 gso_size;
|
||||
__u32 :32; /* Padding, future use. */
|
||||
__u8 tstamp_type;
|
||||
__u32 :24; /* Padding, future use. */
|
||||
__u64 hwtstamp;
|
||||
};
|
||||
|
||||
@@ -5500,7 +5643,8 @@ struct bpf_sock {
|
||||
__u32 src_ip4;
|
||||
__u32 src_ip6[4];
|
||||
__u32 src_port; /* host byte order */
|
||||
__u32 dst_port; /* network byte order */
|
||||
__be16 dst_port; /* network byte order */
|
||||
__u16 :16; /* zero padding */
|
||||
__u32 dst_ip4;
|
||||
__u32 dst_ip6[4];
|
||||
__u32 state;
|
||||
@@ -6378,7 +6522,8 @@ struct bpf_sk_lookup {
|
||||
__u32 protocol; /* IP protocol (IPPROTO_TCP, IPPROTO_UDP) */
|
||||
__u32 remote_ip4; /* Network byte order */
|
||||
__u32 remote_ip6[4]; /* Network byte order */
|
||||
__u32 remote_port; /* Network byte order */
|
||||
__be16 remote_port; /* Network byte order */
|
||||
__u16 :16; /* Zero padding */
|
||||
__u32 local_ip4; /* Network byte order */
|
||||
__u32 local_ip6[4]; /* Network byte order */
|
||||
__u32 local_port; /* Host byte order */
|
||||
|
||||
@@ -309,6 +309,7 @@ struct btrfs_ioctl_fs_info_args {
|
||||
#define BTRFS_FEATURE_INCOMPAT_METADATA_UUID (1ULL << 10)
|
||||
#define BTRFS_FEATURE_INCOMPAT_RAID1C34 (1ULL << 11)
|
||||
#define BTRFS_FEATURE_INCOMPAT_ZONED (1ULL << 12)
|
||||
#define BTRFS_FEATURE_INCOMPAT_EXTENT_TREE_V2 (1ULL << 13)
|
||||
|
||||
struct btrfs_ioctl_feature_flags {
|
||||
__u64 compat_flags;
|
||||
@@ -868,6 +869,134 @@ struct btrfs_ioctl_get_subvol_rootref_args {
|
||||
__u8 align[7];
|
||||
};
|
||||
|
||||
/*
|
||||
* Data and metadata for an encoded read or write.
|
||||
*
|
||||
* Encoded I/O bypasses any encoding automatically done by the filesystem (e.g.,
|
||||
* compression). This can be used to read the compressed contents of a file or
|
||||
* write pre-compressed data directly to a file.
|
||||
*
|
||||
* BTRFS_IOC_ENCODED_READ and BTRFS_IOC_ENCODED_WRITE are essentially
|
||||
* preadv/pwritev with additional metadata about how the data is encoded and the
|
||||
* size of the unencoded data.
|
||||
*
|
||||
* BTRFS_IOC_ENCODED_READ fills the given iovecs with the encoded data, fills
|
||||
* the metadata fields, and returns the size of the encoded data. It reads one
|
||||
* extent per call. It can also read data which is not encoded.
|
||||
*
|
||||
* BTRFS_IOC_ENCODED_WRITE uses the metadata fields, writes the encoded data
|
||||
* from the iovecs, and returns the size of the encoded data. Note that the
|
||||
* encoded data is not validated when it is written; if it is not valid (e.g.,
|
||||
* it cannot be decompressed), then a subsequent read may return an error.
|
||||
*
|
||||
* Since the filesystem page cache contains decoded data, encoded I/O bypasses
|
||||
* the page cache. Encoded I/O requires CAP_SYS_ADMIN.
|
||||
*/
|
||||
struct btrfs_ioctl_encoded_io_args {
|
||||
/* Input parameters for both reads and writes. */
|
||||
|
||||
/*
|
||||
* iovecs containing encoded data.
|
||||
*
|
||||
* For reads, if the size of the encoded data is larger than the sum of
|
||||
* iov[n].iov_len for 0 <= n < iovcnt, then the ioctl fails with
|
||||
* ENOBUFS.
|
||||
*
|
||||
* For writes, the size of the encoded data is the sum of iov[n].iov_len
|
||||
* for 0 <= n < iovcnt. This must be less than 128 KiB (this limit may
|
||||
* increase in the future). This must also be less than or equal to
|
||||
* unencoded_len.
|
||||
*/
|
||||
const struct iovec __user *iov;
|
||||
/* Number of iovecs. */
|
||||
unsigned long iovcnt;
|
||||
/*
|
||||
* Offset in file.
|
||||
*
|
||||
* For writes, must be aligned to the sector size of the filesystem.
|
||||
*/
|
||||
__s64 offset;
|
||||
/* Currently must be zero. */
|
||||
__u64 flags;
|
||||
|
||||
/*
|
||||
* For reads, the following members are output parameters that will
|
||||
* contain the returned metadata for the encoded data.
|
||||
* For writes, the following members must be set to the metadata for the
|
||||
* encoded data.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Length of the data in the file.
|
||||
*
|
||||
* Must be less than or equal to unencoded_len - unencoded_offset. For
|
||||
* writes, must be aligned to the sector size of the filesystem unless
|
||||
* the data ends at or beyond the current end of the file.
|
||||
*/
|
||||
__u64 len;
|
||||
/*
|
||||
* Length of the unencoded (i.e., decrypted and decompressed) data.
|
||||
*
|
||||
* For writes, must be no more than 128 KiB (this limit may increase in
|
||||
* the future). If the unencoded data is actually longer than
|
||||
* unencoded_len, then it is truncated; if it is shorter, then it is
|
||||
* extended with zeroes.
|
||||
*/
|
||||
__u64 unencoded_len;
|
||||
/*
|
||||
* Offset from the first byte of the unencoded data to the first byte of
|
||||
* logical data in the file.
|
||||
*
|
||||
* Must be less than unencoded_len.
|
||||
*/
|
||||
__u64 unencoded_offset;
|
||||
/*
|
||||
* BTRFS_ENCODED_IO_COMPRESSION_* type.
|
||||
*
|
||||
* For writes, must not be BTRFS_ENCODED_IO_COMPRESSION_NONE.
|
||||
*/
|
||||
__u32 compression;
|
||||
/* Currently always BTRFS_ENCODED_IO_ENCRYPTION_NONE. */
|
||||
__u32 encryption;
|
||||
/*
|
||||
* Reserved for future expansion.
|
||||
*
|
||||
* For reads, always returned as zero. Users should check for non-zero
|
||||
* bytes. If there are any, then the kernel has a newer version of this
|
||||
* structure with additional information that the user definition is
|
||||
* missing.
|
||||
*
|
||||
* For writes, must be zeroed.
|
||||
*/
|
||||
__u8 reserved[64];
|
||||
};
|
||||
|
||||
/* Data is not compressed. */
|
||||
#define BTRFS_ENCODED_IO_COMPRESSION_NONE 0
|
||||
/* Data is compressed as a single zlib stream. */
|
||||
#define BTRFS_ENCODED_IO_COMPRESSION_ZLIB 1
|
||||
/*
|
||||
* Data is compressed as a single zstd frame with the windowLog compression
|
||||
* parameter set to no more than 17.
|
||||
*/
|
||||
#define BTRFS_ENCODED_IO_COMPRESSION_ZSTD 2
|
||||
/*
|
||||
* Data is compressed sector by sector (using the sector size indicated by the
|
||||
* name of the constant) with LZO1X and wrapped in the format documented in
|
||||
* fs/btrfs/lzo.c. For writes, the compression sector size must match the
|
||||
* filesystem sector size.
|
||||
*/
|
||||
#define BTRFS_ENCODED_IO_COMPRESSION_LZO_4K 3
|
||||
#define BTRFS_ENCODED_IO_COMPRESSION_LZO_8K 4
|
||||
#define BTRFS_ENCODED_IO_COMPRESSION_LZO_16K 5
|
||||
#define BTRFS_ENCODED_IO_COMPRESSION_LZO_32K 6
|
||||
#define BTRFS_ENCODED_IO_COMPRESSION_LZO_64K 7
|
||||
#define BTRFS_ENCODED_IO_COMPRESSION_TYPES 8
|
||||
|
||||
/* Data is not encrypted. */
|
||||
#define BTRFS_ENCODED_IO_ENCRYPTION_NONE 0
|
||||
#define BTRFS_ENCODED_IO_ENCRYPTION_TYPES 1
|
||||
|
||||
/* Error codes as returned by the kernel */
|
||||
enum btrfs_err_code {
|
||||
BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET = 1,
|
||||
@@ -996,5 +1125,9 @@ enum btrfs_err_code {
|
||||
struct btrfs_ioctl_ino_lookup_user_args)
|
||||
#define BTRFS_IOC_SNAP_DESTROY_V2 _IOW(BTRFS_IOCTL_MAGIC, 63, \
|
||||
struct btrfs_ioctl_vol_args_v2)
|
||||
#define BTRFS_IOC_ENCODED_READ _IOR(BTRFS_IOCTL_MAGIC, 64, \
|
||||
struct btrfs_ioctl_encoded_io_args)
|
||||
#define BTRFS_IOC_ENCODED_WRITE _IOW(BTRFS_IOCTL_MAGIC, 64, \
|
||||
struct btrfs_ioctl_encoded_io_args)
|
||||
|
||||
#endif /* _UAPI_LINUX_BTRFS_H */
|
||||
|
||||
@@ -53,6 +53,9 @@
|
||||
/* tracks free space in block groups. */
|
||||
#define BTRFS_FREE_SPACE_TREE_OBJECTID 10ULL
|
||||
|
||||
/* Holds the block group items for extent tree v2. */
|
||||
#define BTRFS_BLOCK_GROUP_TREE_OBJECTID 11ULL
|
||||
|
||||
/* device stats in the device tree */
|
||||
#define BTRFS_DEV_STATS_OBJECTID 0ULL
|
||||
|
||||
|
||||
@@ -137,20 +137,16 @@ struct can_isotp_ll_options {
|
||||
#define CAN_ISOTP_WAIT_TX_DONE 0x400 /* wait for tx completion */
|
||||
#define CAN_ISOTP_SF_BROADCAST 0x800 /* 1-to-N functional addressing */
|
||||
|
||||
/* default values */
|
||||
/* protocol machine default values */
|
||||
|
||||
#define CAN_ISOTP_DEFAULT_FLAGS 0
|
||||
#define CAN_ISOTP_DEFAULT_EXT_ADDRESS 0x00
|
||||
#define CAN_ISOTP_DEFAULT_PAD_CONTENT 0xCC /* prevent bit-stuffing */
|
||||
#define CAN_ISOTP_DEFAULT_FRAME_TXTIME 0
|
||||
#define CAN_ISOTP_DEFAULT_FRAME_TXTIME 50000 /* 50 micro seconds */
|
||||
#define CAN_ISOTP_DEFAULT_RECV_BS 0
|
||||
#define CAN_ISOTP_DEFAULT_RECV_STMIN 0x00
|
||||
#define CAN_ISOTP_DEFAULT_RECV_WFTMAX 0
|
||||
|
||||
#define CAN_ISOTP_DEFAULT_LL_MTU CAN_MTU
|
||||
#define CAN_ISOTP_DEFAULT_LL_TX_DL CAN_MAX_DLEN
|
||||
#define CAN_ISOTP_DEFAULT_LL_TX_FLAGS 0
|
||||
|
||||
/*
|
||||
* Remark on CAN_ISOTP_DEFAULT_RECV_* values:
|
||||
*
|
||||
@@ -162,4 +158,24 @@ struct can_isotp_ll_options {
|
||||
* consistency and copied directly into the flow control (FC) frame.
|
||||
*/
|
||||
|
||||
/* link layer default values => make use of Classical CAN frames */
|
||||
|
||||
#define CAN_ISOTP_DEFAULT_LL_MTU CAN_MTU
|
||||
#define CAN_ISOTP_DEFAULT_LL_TX_DL CAN_MAX_DLEN
|
||||
#define CAN_ISOTP_DEFAULT_LL_TX_FLAGS 0
|
||||
|
||||
/*
|
||||
* The CAN_ISOTP_DEFAULT_FRAME_TXTIME has become a non-zero value as
|
||||
* it only makes sense for isotp implementation tests to run without
|
||||
* a N_As value. As user space applications usually do not set the
|
||||
* frame_txtime element of struct can_isotp_options the new in-kernel
|
||||
* default is very likely overwritten with zero when the sockopt()
|
||||
* CAN_ISOTP_OPTS is invoked.
|
||||
* To make sure that a N_As value of zero is only set intentional the
|
||||
* value '0' is now interpreted as 'do not change the current value'.
|
||||
* When a frame_txtime of zero is required for testing purposes this
|
||||
* CAN_ISOTP_FRAME_TXTIME_ZERO u32 value has to be set in frame_txtime.
|
||||
*/
|
||||
#define CAN_ISOTP_FRAME_TXTIME_ZERO 0xFFFFFFFF
|
||||
|
||||
#endif /* !_UAPI_CAN_ISOTP_H */
|
||||
|
||||
@@ -61,6 +61,8 @@ enum counter_event_type {
|
||||
COUNTER_EVENT_THRESHOLD,
|
||||
/* Index signal detected */
|
||||
COUNTER_EVENT_INDEX,
|
||||
/* State of counter is changed */
|
||||
COUNTER_EVENT_CHANGE_OF_STATE,
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -286,9 +286,9 @@ enum {
|
||||
#define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)
|
||||
|
||||
#define DM_VERSION_MAJOR 4
|
||||
#define DM_VERSION_MINOR 45
|
||||
#define DM_VERSION_MINOR 46
|
||||
#define DM_VERSION_PATCHLEVEL 0
|
||||
#define DM_VERSION_EXTRA "-ioctl (2021-03-22)"
|
||||
#define DM_VERSION_EXTRA "-ioctl (2022-02-22)"
|
||||
|
||||
/* Status bits */
|
||||
#define DM_READONLY_FLAG (1 << 0) /* In/Out */
|
||||
|
||||
@@ -35,10 +35,14 @@ typedef __s64 Elf64_Sxword;
|
||||
#define PT_HIOS 0x6fffffff /* OS-specific */
|
||||
#define PT_LOPROC 0x70000000
|
||||
#define PT_HIPROC 0x7fffffff
|
||||
#define PT_GNU_EH_FRAME 0x6474e550
|
||||
#define PT_GNU_PROPERTY 0x6474e553
|
||||
|
||||
#define PT_GNU_EH_FRAME (PT_LOOS + 0x474e550)
|
||||
#define PT_GNU_STACK (PT_LOOS + 0x474e551)
|
||||
#define PT_GNU_RELRO (PT_LOOS + 0x474e552)
|
||||
#define PT_GNU_PROPERTY (PT_LOOS + 0x474e553)
|
||||
|
||||
|
||||
/* ARM MTE memory tag segment type */
|
||||
#define PT_ARM_MEMTAG_MTE (PT_LOPROC + 0x1)
|
||||
|
||||
/*
|
||||
* Extended Numbering
|
||||
|
||||
@@ -318,6 +318,12 @@ enum {
|
||||
|
||||
/* RINGS */
|
||||
|
||||
enum {
|
||||
ETHTOOL_TCP_DATA_SPLIT_UNKNOWN = 0,
|
||||
ETHTOOL_TCP_DATA_SPLIT_DISABLED,
|
||||
ETHTOOL_TCP_DATA_SPLIT_ENABLED,
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_RINGS_UNSPEC,
|
||||
ETHTOOL_A_RINGS_HEADER, /* nest - _A_HEADER_* */
|
||||
@@ -330,6 +336,8 @@ enum {
|
||||
ETHTOOL_A_RINGS_RX_JUMBO, /* u32 */
|
||||
ETHTOOL_A_RINGS_TX, /* u32 */
|
||||
ETHTOOL_A_RINGS_RX_BUF_LEN, /* u32 */
|
||||
ETHTOOL_A_RINGS_TCP_DATA_SPLIT, /* u8 */
|
||||
ETHTOOL_A_RINGS_CQE_SIZE, /* u32 */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_RINGS_CNT,
|
||||
|
||||
@@ -55,4 +55,18 @@ struct scom_access {
|
||||
#define FSI_SCOM_WRITE _IOWR('s', 0x02, struct scom_access)
|
||||
#define FSI_SCOM_RESET _IOW('s', 0x03, __u32)
|
||||
|
||||
/*
|
||||
* /dev/sbefifo* ioctl interface
|
||||
*/
|
||||
|
||||
/**
|
||||
* FSI_SBEFIFO_READ_TIMEOUT sets the read timeout for response from SBE.
|
||||
*
|
||||
* The read timeout is specified in seconds. The minimum value of read
|
||||
* timeout is 10 seconds (default) and the maximum value of read timeout is
|
||||
* 120 seconds. A read timeout of 0 will reset the value to the default of
|
||||
* (10 seconds).
|
||||
*/
|
||||
#define FSI_SBEFIFO_READ_TIMEOUT_SECONDS _IOW('s', 0x00, __u32)
|
||||
|
||||
#endif /* _UAPI_LINUX_FSI_H */
|
||||
|
||||
@@ -69,7 +69,7 @@ struct fsmap_head {
|
||||
};
|
||||
|
||||
/* Size of an fsmap_head with room for nr records. */
|
||||
static inline size_t
|
||||
static inline __kernel_size_t
|
||||
fsmap_sizeof(
|
||||
unsigned int nr)
|
||||
{
|
||||
|
||||
@@ -8,6 +8,7 @@ enum gtp_genl_cmds {
|
||||
GTP_CMD_NEWPDP,
|
||||
GTP_CMD_DELPDP,
|
||||
GTP_CMD_GETPDP,
|
||||
GTP_CMD_ECHOREQ,
|
||||
|
||||
GTP_CMD_MAX,
|
||||
};
|
||||
|
||||
@@ -90,6 +90,17 @@ struct hv_vss_check_dm_info {
|
||||
__u32 flags;
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
* struct hv_vss_msg encodes the fields that the Linux VSS
|
||||
* driver accesses. However, FREEZE messages from Hyper-V contain
|
||||
* additional LUN information that Linux doesn't use and are not
|
||||
* represented in struct hv_vss_msg. A received FREEZE message may
|
||||
* be as large as 6,260 bytes, so the driver must allocate at least
|
||||
* that much space, not sizeof(struct hv_vss_msg). Other messages
|
||||
* such as AUTO_RECOVER may be as large as 12,500 bytes. However,
|
||||
* because the Linux VSS driver responds that it doesn't support
|
||||
* auto-recovery, it should not receive such messages.
|
||||
*/
|
||||
struct hv_vss_msg {
|
||||
union {
|
||||
struct hv_vss_hdr vss_hdr;
|
||||
|
||||
@@ -33,8 +33,9 @@ enum {
|
||||
IFA_CACHEINFO,
|
||||
IFA_MULTICAST,
|
||||
IFA_FLAGS,
|
||||
IFA_RT_PRIORITY, /* u32, priority/metric for prefix route */
|
||||
IFA_RT_PRIORITY, /* u32, priority/metric for prefix route */
|
||||
IFA_TARGET_NETNSID,
|
||||
IFA_PROTO, /* u8, address protocol */
|
||||
__IFA_MAX,
|
||||
};
|
||||
|
||||
@@ -69,4 +70,10 @@ struct ifa_cacheinfo {
|
||||
#define IFA_PAYLOAD(n) NLMSG_PAYLOAD(n,sizeof(struct ifaddrmsg))
|
||||
#endif
|
||||
|
||||
/* ifa_proto */
|
||||
#define IFAPROT_UNSPEC 0
|
||||
#define IFAPROT_KERNEL_LO 1 /* loopback */
|
||||
#define IFAPROT_KERNEL_RA 2 /* set by kernel from router announcement */
|
||||
#define IFAPROT_KERNEL_LL 3 /* link-local set by kernel */
|
||||
|
||||
#endif
|
||||
|
||||
@@ -122,6 +122,7 @@ enum {
|
||||
IFLA_BRIDGE_VLAN_TUNNEL_INFO,
|
||||
IFLA_BRIDGE_MRP,
|
||||
IFLA_BRIDGE_CFM,
|
||||
IFLA_BRIDGE_MST,
|
||||
__IFLA_BRIDGE_MAX,
|
||||
};
|
||||
#define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1)
|
||||
@@ -453,6 +454,21 @@ enum {
|
||||
|
||||
#define IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX (__IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX - 1)
|
||||
|
||||
enum {
|
||||
IFLA_BRIDGE_MST_UNSPEC,
|
||||
IFLA_BRIDGE_MST_ENTRY,
|
||||
__IFLA_BRIDGE_MST_MAX,
|
||||
};
|
||||
#define IFLA_BRIDGE_MST_MAX (__IFLA_BRIDGE_MST_MAX - 1)
|
||||
|
||||
enum {
|
||||
IFLA_BRIDGE_MST_ENTRY_UNSPEC,
|
||||
IFLA_BRIDGE_MST_ENTRY_MSTI,
|
||||
IFLA_BRIDGE_MST_ENTRY_STATE,
|
||||
__IFLA_BRIDGE_MST_ENTRY_MAX,
|
||||
};
|
||||
#define IFLA_BRIDGE_MST_ENTRY_MAX (__IFLA_BRIDGE_MST_ENTRY_MAX - 1)
|
||||
|
||||
struct bridge_stp_xstats {
|
||||
__u64 transition_blk;
|
||||
__u64 transition_fwd;
|
||||
@@ -564,6 +580,7 @@ enum {
|
||||
BRIDGE_VLANDB_GOPTS_MCAST_QUERIER,
|
||||
BRIDGE_VLANDB_GOPTS_MCAST_ROUTER_PORTS,
|
||||
BRIDGE_VLANDB_GOPTS_MCAST_QUERIER_STATE,
|
||||
BRIDGE_VLANDB_GOPTS_MSTI,
|
||||
__BRIDGE_VLANDB_GOPTS_MAX
|
||||
};
|
||||
#define BRIDGE_VLANDB_GOPTS_MAX (__BRIDGE_VLANDB_GOPTS_MAX - 1)
|
||||
@@ -759,6 +776,7 @@ struct br_mcast_stats {
|
||||
enum br_boolopt_id {
|
||||
BR_BOOLOPT_NO_LL_LEARN,
|
||||
BR_BOOLOPT_MCAST_VLAN_SNOOPING,
|
||||
BR_BOOLOPT_MST_ENABLE,
|
||||
BR_BOOLOPT_MAX
|
||||
};
|
||||
|
||||
|
||||
@@ -86,8 +86,10 @@
|
||||
* over Ethernet
|
||||
*/
|
||||
#define ETH_P_PAE 0x888E /* Port Access Entity (IEEE 802.1X) */
|
||||
#define ETH_P_PROFINET 0x8892 /* PROFINET */
|
||||
#define ETH_P_REALTEK 0x8899 /* Multiple proprietary protocols */
|
||||
#define ETH_P_AOE 0x88A2 /* ATA over Ethernet */
|
||||
#define ETH_P_ETHERCAT 0x88A4 /* EtherCAT */
|
||||
#define ETH_P_8021AD 0x88A8 /* 802.1ad Service VLAN */
|
||||
#define ETH_P_802_EX1 0x88B5 /* 802.1 Local Experimental 1. */
|
||||
#define ETH_P_PREAUTH 0x88C7 /* 802.11 Preauthentication */
|
||||
|
||||
@@ -245,6 +245,21 @@ struct rtnl_link_stats64 {
|
||||
__u64 rx_nohandler;
|
||||
};
|
||||
|
||||
/* Subset of link stats useful for in-HW collection. Meaning of the fields is as
|
||||
* for struct rtnl_link_stats64.
|
||||
*/
|
||||
struct rtnl_hw_stats64 {
|
||||
__u64 rx_packets;
|
||||
__u64 tx_packets;
|
||||
__u64 rx_bytes;
|
||||
__u64 tx_bytes;
|
||||
__u64 rx_errors;
|
||||
__u64 tx_errors;
|
||||
__u64 rx_dropped;
|
||||
__u64 tx_dropped;
|
||||
__u64 multicast;
|
||||
};
|
||||
|
||||
/* The struct should be in sync with struct ifmap */
|
||||
struct rtnl_link_ifmap {
|
||||
__u64 mem_start;
|
||||
@@ -537,6 +552,7 @@ enum {
|
||||
IFLA_BRPORT_MRP_IN_OPEN,
|
||||
IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT,
|
||||
IFLA_BRPORT_MCAST_EHT_HOSTS_CNT,
|
||||
IFLA_BRPORT_LOCKED,
|
||||
__IFLA_BRPORT_MAX
|
||||
};
|
||||
#define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
|
||||
@@ -712,7 +728,55 @@ enum ipvlan_mode {
|
||||
#define IPVLAN_F_PRIVATE 0x01
|
||||
#define IPVLAN_F_VEPA 0x02
|
||||
|
||||
/* Tunnel RTM header */
|
||||
struct tunnel_msg {
|
||||
__u8 family;
|
||||
__u8 flags;
|
||||
__u16 reserved2;
|
||||
__u32 ifindex;
|
||||
};
|
||||
|
||||
/* VXLAN section */
|
||||
|
||||
/* include statistics in the dump */
|
||||
#define TUNNEL_MSG_FLAG_STATS 0x01
|
||||
|
||||
#define TUNNEL_MSG_VALID_USER_FLAGS TUNNEL_MSG_FLAG_STATS
|
||||
|
||||
/* Embedded inside VXLAN_VNIFILTER_ENTRY_STATS */
|
||||
enum {
|
||||
VNIFILTER_ENTRY_STATS_UNSPEC,
|
||||
VNIFILTER_ENTRY_STATS_RX_BYTES,
|
||||
VNIFILTER_ENTRY_STATS_RX_PKTS,
|
||||
VNIFILTER_ENTRY_STATS_RX_DROPS,
|
||||
VNIFILTER_ENTRY_STATS_RX_ERRORS,
|
||||
VNIFILTER_ENTRY_STATS_TX_BYTES,
|
||||
VNIFILTER_ENTRY_STATS_TX_PKTS,
|
||||
VNIFILTER_ENTRY_STATS_TX_DROPS,
|
||||
VNIFILTER_ENTRY_STATS_TX_ERRORS,
|
||||
VNIFILTER_ENTRY_STATS_PAD,
|
||||
__VNIFILTER_ENTRY_STATS_MAX
|
||||
};
|
||||
#define VNIFILTER_ENTRY_STATS_MAX (__VNIFILTER_ENTRY_STATS_MAX - 1)
|
||||
|
||||
enum {
|
||||
VXLAN_VNIFILTER_ENTRY_UNSPEC,
|
||||
VXLAN_VNIFILTER_ENTRY_START,
|
||||
VXLAN_VNIFILTER_ENTRY_END,
|
||||
VXLAN_VNIFILTER_ENTRY_GROUP,
|
||||
VXLAN_VNIFILTER_ENTRY_GROUP6,
|
||||
VXLAN_VNIFILTER_ENTRY_STATS,
|
||||
__VXLAN_VNIFILTER_ENTRY_MAX
|
||||
};
|
||||
#define VXLAN_VNIFILTER_ENTRY_MAX (__VXLAN_VNIFILTER_ENTRY_MAX - 1)
|
||||
|
||||
enum {
|
||||
VXLAN_VNIFILTER_UNSPEC,
|
||||
VXLAN_VNIFILTER_ENTRY,
|
||||
__VXLAN_VNIFILTER_MAX
|
||||
};
|
||||
#define VXLAN_VNIFILTER_MAX (__VXLAN_VNIFILTER_MAX - 1)
|
||||
|
||||
enum {
|
||||
IFLA_VXLAN_UNSPEC,
|
||||
IFLA_VXLAN_ID,
|
||||
@@ -744,6 +808,7 @@ enum {
|
||||
IFLA_VXLAN_GPE,
|
||||
IFLA_VXLAN_TTL_INHERIT,
|
||||
IFLA_VXLAN_DF,
|
||||
IFLA_VXLAN_VNIFILTER, /* only applicable with COLLECT_METADATA mode */
|
||||
__IFLA_VXLAN_MAX
|
||||
};
|
||||
#define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1)
|
||||
@@ -777,6 +842,7 @@ enum {
|
||||
IFLA_GENEVE_LABEL,
|
||||
IFLA_GENEVE_TTL_INHERIT,
|
||||
IFLA_GENEVE_DF,
|
||||
IFLA_GENEVE_INNER_PROTO_INHERIT,
|
||||
__IFLA_GENEVE_MAX
|
||||
};
|
||||
#define IFLA_GENEVE_MAX (__IFLA_GENEVE_MAX - 1)
|
||||
@@ -822,6 +888,8 @@ enum {
|
||||
IFLA_GTP_FD1,
|
||||
IFLA_GTP_PDP_HASHSIZE,
|
||||
IFLA_GTP_ROLE,
|
||||
IFLA_GTP_CREATE_SOCKETS,
|
||||
IFLA_GTP_RESTART_COUNT,
|
||||
__IFLA_GTP_MAX,
|
||||
};
|
||||
#define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1)
|
||||
@@ -860,6 +928,7 @@ enum {
|
||||
IFLA_BOND_PEER_NOTIF_DELAY,
|
||||
IFLA_BOND_AD_LACP_ACTIVE,
|
||||
IFLA_BOND_MISSED_MAX,
|
||||
IFLA_BOND_NS_IP6_TARGET,
|
||||
__IFLA_BOND_MAX,
|
||||
};
|
||||
|
||||
@@ -1156,6 +1225,17 @@ enum {
|
||||
|
||||
#define IFLA_STATS_FILTER_BIT(ATTR) (1 << (ATTR - 1))
|
||||
|
||||
enum {
|
||||
IFLA_STATS_GETSET_UNSPEC,
|
||||
IFLA_STATS_GET_FILTERS, /* Nest of IFLA_STATS_LINK_xxx, each a u32 with
|
||||
* a filter mask for the corresponding group.
|
||||
*/
|
||||
IFLA_STATS_SET_OFFLOAD_XSTATS_L3_STATS, /* 0 or 1 as u8 */
|
||||
__IFLA_STATS_GETSET_MAX,
|
||||
};
|
||||
|
||||
#define IFLA_STATS_GETSET_MAX (__IFLA_STATS_GETSET_MAX - 1)
|
||||
|
||||
/* These are embedded into IFLA_STATS_LINK_XSTATS:
|
||||
* [IFLA_STATS_LINK_XSTATS]
|
||||
* -> [LINK_XSTATS_TYPE_xxx]
|
||||
@@ -1173,10 +1253,21 @@ enum {
|
||||
enum {
|
||||
IFLA_OFFLOAD_XSTATS_UNSPEC,
|
||||
IFLA_OFFLOAD_XSTATS_CPU_HIT, /* struct rtnl_link_stats64 */
|
||||
IFLA_OFFLOAD_XSTATS_HW_S_INFO, /* HW stats info. A nest */
|
||||
IFLA_OFFLOAD_XSTATS_L3_STATS, /* struct rtnl_hw_stats64 */
|
||||
__IFLA_OFFLOAD_XSTATS_MAX
|
||||
};
|
||||
#define IFLA_OFFLOAD_XSTATS_MAX (__IFLA_OFFLOAD_XSTATS_MAX - 1)
|
||||
|
||||
enum {
|
||||
IFLA_OFFLOAD_XSTATS_HW_S_INFO_UNSPEC,
|
||||
IFLA_OFFLOAD_XSTATS_HW_S_INFO_REQUEST, /* u8 */
|
||||
IFLA_OFFLOAD_XSTATS_HW_S_INFO_USED, /* u8 */
|
||||
__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX,
|
||||
};
|
||||
#define IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX \
|
||||
(__IFLA_OFFLOAD_XSTATS_HW_S_INFO_MAX - 1)
|
||||
|
||||
/* XDP section */
|
||||
|
||||
#define XDP_FLAGS_UPDATE_IF_NOEXIST (1U << 0)
|
||||
|
||||
@@ -176,8 +176,10 @@ enum {
|
||||
#define TUNNEL_VXLAN_OPT __cpu_to_be16(0x1000)
|
||||
#define TUNNEL_NOCACHE __cpu_to_be16(0x2000)
|
||||
#define TUNNEL_ERSPAN_OPT __cpu_to_be16(0x4000)
|
||||
#define TUNNEL_GTP_OPT __cpu_to_be16(0x8000)
|
||||
|
||||
#define TUNNEL_OPTIONS_PRESENT \
|
||||
(TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT | TUNNEL_ERSPAN_OPT)
|
||||
(TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT | TUNNEL_ERSPAN_OPT | \
|
||||
TUNNEL_GTP_OPT)
|
||||
|
||||
#endif /* _UAPI_IF_TUNNEL_H_ */
|
||||
|
||||
@@ -104,6 +104,7 @@ enum iio_event_type {
|
||||
IIO_EV_TYPE_THRESH_ADAPTIVE,
|
||||
IIO_EV_TYPE_MAG_ADAPTIVE,
|
||||
IIO_EV_TYPE_CHANGE,
|
||||
IIO_EV_TYPE_MAG_REFERENCED,
|
||||
};
|
||||
|
||||
enum iio_event_direction {
|
||||
|
||||
@@ -278,7 +278,8 @@
|
||||
#define KEY_PAUSECD 201
|
||||
#define KEY_PROG3 202
|
||||
#define KEY_PROG4 203
|
||||
#define KEY_DASHBOARD 204 /* AL Dashboard */
|
||||
#define KEY_ALL_APPLICATIONS 204 /* AC Desktop Show All Applications */
|
||||
#define KEY_DASHBOARD KEY_ALL_APPLICATIONS
|
||||
#define KEY_SUSPEND 205
|
||||
#define KEY_CLOSE 206 /* AC Close */
|
||||
#define KEY_PLAY 207
|
||||
@@ -612,6 +613,7 @@
|
||||
#define KEY_ASSISTANT 0x247 /* AL Context-aware desktop assistant */
|
||||
#define KEY_KBD_LAYOUT_NEXT 0x248 /* AC Next Keyboard Layout Select */
|
||||
#define KEY_EMOJI_PICKER 0x249 /* Show/hide emoji picker (HUTRR101) */
|
||||
#define KEY_DICTATE 0x24a /* Start or Stop Voice Dictation Session (HUTRR99) */
|
||||
|
||||
#define KEY_BRIGHTNESS_MIN 0x250 /* Set Brightness to Minimum */
|
||||
#define KEY_BRIGHTNESS_MAX 0x251 /* Set Brightness to Maximum */
|
||||
|
||||
@@ -101,6 +101,7 @@ enum {
|
||||
#define IORING_SETUP_CLAMP (1U << 4) /* clamp SQ/CQ ring sizes */
|
||||
#define IORING_SETUP_ATTACH_WQ (1U << 5) /* attach to existing wq */
|
||||
#define IORING_SETUP_R_DISABLED (1U << 6) /* start with ring disabled */
|
||||
#define IORING_SETUP_SUBMIT_ALL (1U << 7) /* continue submit on error */
|
||||
|
||||
enum {
|
||||
IORING_OP_NOP,
|
||||
@@ -143,6 +144,7 @@ enum {
|
||||
IORING_OP_MKDIRAT,
|
||||
IORING_OP_SYMLINKAT,
|
||||
IORING_OP_LINKAT,
|
||||
IORING_OP_MSG_RING,
|
||||
|
||||
/* this goes last, obviously */
|
||||
IORING_OP_LAST,
|
||||
@@ -257,10 +259,11 @@ struct io_cqring_offsets {
|
||||
/*
|
||||
* io_uring_enter(2) flags
|
||||
*/
|
||||
#define IORING_ENTER_GETEVENTS (1U << 0)
|
||||
#define IORING_ENTER_SQ_WAKEUP (1U << 1)
|
||||
#define IORING_ENTER_SQ_WAIT (1U << 2)
|
||||
#define IORING_ENTER_EXT_ARG (1U << 3)
|
||||
#define IORING_ENTER_GETEVENTS (1U << 0)
|
||||
#define IORING_ENTER_SQ_WAKEUP (1U << 1)
|
||||
#define IORING_ENTER_SQ_WAIT (1U << 2)
|
||||
#define IORING_ENTER_EXT_ARG (1U << 3)
|
||||
#define IORING_ENTER_REGISTERED_RING (1U << 4)
|
||||
|
||||
/*
|
||||
* Passed in for io_uring_setup(2). Copied back with updated info on success
|
||||
@@ -325,6 +328,10 @@ enum {
|
||||
/* set/get max number of io-wq workers */
|
||||
IORING_REGISTER_IOWQ_MAX_WORKERS = 19,
|
||||
|
||||
/* register/unregister io_uring fd with the ring */
|
||||
IORING_REGISTER_RING_FDS = 20,
|
||||
IORING_UNREGISTER_RING_FDS = 21,
|
||||
|
||||
/* this goes last */
|
||||
IORING_REGISTER_LAST
|
||||
};
|
||||
|
||||
@@ -41,6 +41,15 @@ enum {
|
||||
/* IOAM Trace Header */
|
||||
IOAM6_IPTUNNEL_TRACE, /* struct ioam6_trace_hdr */
|
||||
|
||||
/* Insertion frequency:
|
||||
* "k over n" packets (0 < k <= n)
|
||||
* [0.0001% ... 100%]
|
||||
*/
|
||||
#define IOAM6_IPTUNNEL_FREQ_MIN 1
|
||||
#define IOAM6_IPTUNNEL_FREQ_MAX 1000000
|
||||
IOAM6_IPTUNNEL_FREQ_K, /* u32 */
|
||||
IOAM6_IPTUNNEL_FREQ_N, /* u32 */
|
||||
|
||||
__IOAM6_IPTUNNEL_MAX,
|
||||
};
|
||||
|
||||
|
||||
@@ -158,185 +158,4 @@ struct iommu_page_response {
|
||||
__u32 code;
|
||||
};
|
||||
|
||||
/* defines the granularity of the invalidation */
|
||||
enum iommu_inv_granularity {
|
||||
IOMMU_INV_GRANU_DOMAIN, /* domain-selective invalidation */
|
||||
IOMMU_INV_GRANU_PASID, /* PASID-selective invalidation */
|
||||
IOMMU_INV_GRANU_ADDR, /* page-selective invalidation */
|
||||
IOMMU_INV_GRANU_NR, /* number of invalidation granularities */
|
||||
};
|
||||
|
||||
/**
|
||||
* struct iommu_inv_addr_info - Address Selective Invalidation Structure
|
||||
*
|
||||
* @flags: indicates the granularity of the address-selective invalidation
|
||||
* - If the PASID bit is set, the @pasid field is populated and the invalidation
|
||||
* relates to cache entries tagged with this PASID and matching the address
|
||||
* range.
|
||||
* - If ARCHID bit is set, @archid is populated and the invalidation relates
|
||||
* to cache entries tagged with this architecture specific ID and matching
|
||||
* the address range.
|
||||
* - Both PASID and ARCHID can be set as they may tag different caches.
|
||||
* - If neither PASID or ARCHID is set, global addr invalidation applies.
|
||||
* - The LEAF flag indicates whether only the leaf PTE caching needs to be
|
||||
* invalidated and other paging structure caches can be preserved.
|
||||
* @pasid: process address space ID
|
||||
* @archid: architecture-specific ID
|
||||
* @addr: first stage/level input address
|
||||
* @granule_size: page/block size of the mapping in bytes
|
||||
* @nb_granules: number of contiguous granules to be invalidated
|
||||
*/
|
||||
struct iommu_inv_addr_info {
|
||||
#define IOMMU_INV_ADDR_FLAGS_PASID (1 << 0)
|
||||
#define IOMMU_INV_ADDR_FLAGS_ARCHID (1 << 1)
|
||||
#define IOMMU_INV_ADDR_FLAGS_LEAF (1 << 2)
|
||||
__u32 flags;
|
||||
__u32 archid;
|
||||
__u64 pasid;
|
||||
__u64 addr;
|
||||
__u64 granule_size;
|
||||
__u64 nb_granules;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct iommu_inv_pasid_info - PASID Selective Invalidation Structure
|
||||
*
|
||||
* @flags: indicates the granularity of the PASID-selective invalidation
|
||||
* - If the PASID bit is set, the @pasid field is populated and the invalidation
|
||||
* relates to cache entries tagged with this PASID and matching the address
|
||||
* range.
|
||||
* - If the ARCHID bit is set, the @archid is populated and the invalidation
|
||||
* relates to cache entries tagged with this architecture specific ID and
|
||||
* matching the address range.
|
||||
* - Both PASID and ARCHID can be set as they may tag different caches.
|
||||
* - At least one of PASID or ARCHID must be set.
|
||||
* @pasid: process address space ID
|
||||
* @archid: architecture-specific ID
|
||||
*/
|
||||
struct iommu_inv_pasid_info {
|
||||
#define IOMMU_INV_PASID_FLAGS_PASID (1 << 0)
|
||||
#define IOMMU_INV_PASID_FLAGS_ARCHID (1 << 1)
|
||||
__u32 flags;
|
||||
__u32 archid;
|
||||
__u64 pasid;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct iommu_cache_invalidate_info - First level/stage invalidation
|
||||
* information
|
||||
* @argsz: User filled size of this data
|
||||
* @version: API version of this structure
|
||||
* @cache: bitfield that allows to select which caches to invalidate
|
||||
* @granularity: defines the lowest granularity used for the invalidation:
|
||||
* domain > PASID > addr
|
||||
* @padding: reserved for future use (should be zero)
|
||||
* @pasid_info: invalidation data when @granularity is %IOMMU_INV_GRANU_PASID
|
||||
* @addr_info: invalidation data when @granularity is %IOMMU_INV_GRANU_ADDR
|
||||
*
|
||||
* Not all the combinations of cache/granularity are valid:
|
||||
*
|
||||
* +--------------+---------------+---------------+---------------+
|
||||
* | type / | DEV_IOTLB | IOTLB | PASID |
|
||||
* | granularity | | | cache |
|
||||
* +==============+===============+===============+===============+
|
||||
* | DOMAIN | N/A | Y | Y |
|
||||
* +--------------+---------------+---------------+---------------+
|
||||
* | PASID | Y | Y | Y |
|
||||
* +--------------+---------------+---------------+---------------+
|
||||
* | ADDR | Y | Y | N/A |
|
||||
* +--------------+---------------+---------------+---------------+
|
||||
*
|
||||
* Invalidations by %IOMMU_INV_GRANU_DOMAIN don't take any argument other than
|
||||
* @version and @cache.
|
||||
*
|
||||
* If multiple cache types are invalidated simultaneously, they all
|
||||
* must support the used granularity.
|
||||
*/
|
||||
struct iommu_cache_invalidate_info {
|
||||
__u32 argsz;
|
||||
#define IOMMU_CACHE_INVALIDATE_INFO_VERSION_1 1
|
||||
__u32 version;
|
||||
/* IOMMU paging structure cache */
|
||||
#define IOMMU_CACHE_INV_TYPE_IOTLB (1 << 0) /* IOMMU IOTLB */
|
||||
#define IOMMU_CACHE_INV_TYPE_DEV_IOTLB (1 << 1) /* Device IOTLB */
|
||||
#define IOMMU_CACHE_INV_TYPE_PASID (1 << 2) /* PASID cache */
|
||||
#define IOMMU_CACHE_INV_TYPE_NR (3)
|
||||
__u8 cache;
|
||||
__u8 granularity;
|
||||
__u8 padding[6];
|
||||
union {
|
||||
struct iommu_inv_pasid_info pasid_info;
|
||||
struct iommu_inv_addr_info addr_info;
|
||||
} granu;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct iommu_gpasid_bind_data_vtd - Intel VT-d specific data on device and guest
|
||||
* SVA binding.
|
||||
*
|
||||
* @flags: VT-d PASID table entry attributes
|
||||
* @pat: Page attribute table data to compute effective memory type
|
||||
* @emt: Extended memory type
|
||||
*
|
||||
* Only guest vIOMMU selectable and effective options are passed down to
|
||||
* the host IOMMU.
|
||||
*/
|
||||
struct iommu_gpasid_bind_data_vtd {
|
||||
#define IOMMU_SVA_VTD_GPASID_SRE (1 << 0) /* supervisor request */
|
||||
#define IOMMU_SVA_VTD_GPASID_EAFE (1 << 1) /* extended access enable */
|
||||
#define IOMMU_SVA_VTD_GPASID_PCD (1 << 2) /* page-level cache disable */
|
||||
#define IOMMU_SVA_VTD_GPASID_PWT (1 << 3) /* page-level write through */
|
||||
#define IOMMU_SVA_VTD_GPASID_EMTE (1 << 4) /* extended mem type enable */
|
||||
#define IOMMU_SVA_VTD_GPASID_CD (1 << 5) /* PASID-level cache disable */
|
||||
#define IOMMU_SVA_VTD_GPASID_WPE (1 << 6) /* Write protect enable */
|
||||
#define IOMMU_SVA_VTD_GPASID_LAST (1 << 7)
|
||||
__u64 flags;
|
||||
__u32 pat;
|
||||
__u32 emt;
|
||||
};
|
||||
|
||||
#define IOMMU_SVA_VTD_GPASID_MTS_MASK (IOMMU_SVA_VTD_GPASID_CD | \
|
||||
IOMMU_SVA_VTD_GPASID_EMTE | \
|
||||
IOMMU_SVA_VTD_GPASID_PCD | \
|
||||
IOMMU_SVA_VTD_GPASID_PWT)
|
||||
|
||||
/**
|
||||
* struct iommu_gpasid_bind_data - Information about device and guest PASID binding
|
||||
* @argsz: User filled size of this data
|
||||
* @version: Version of this data structure
|
||||
* @format: PASID table entry format
|
||||
* @flags: Additional information on guest bind request
|
||||
* @gpgd: Guest page directory base of the guest mm to bind
|
||||
* @hpasid: Process address space ID used for the guest mm in host IOMMU
|
||||
* @gpasid: Process address space ID used for the guest mm in guest IOMMU
|
||||
* @addr_width: Guest virtual address width
|
||||
* @padding: Reserved for future use (should be zero)
|
||||
* @vtd: Intel VT-d specific data
|
||||
*
|
||||
* Guest to host PASID mapping can be an identity or non-identity, where guest
|
||||
* has its own PASID space. For non-identify mapping, guest to host PASID lookup
|
||||
* is needed when VM programs guest PASID into an assigned device. VMM may
|
||||
* trap such PASID programming then request host IOMMU driver to convert guest
|
||||
* PASID to host PASID based on this bind data.
|
||||
*/
|
||||
struct iommu_gpasid_bind_data {
|
||||
__u32 argsz;
|
||||
#define IOMMU_GPASID_BIND_VERSION_1 1
|
||||
__u32 version;
|
||||
#define IOMMU_PASID_FORMAT_INTEL_VTD 1
|
||||
#define IOMMU_PASID_FORMAT_LAST 2
|
||||
__u32 format;
|
||||
__u32 addr_width;
|
||||
#define IOMMU_SVA_GPASID_VAL (1 << 0) /* guest PASID valid */
|
||||
__u64 flags;
|
||||
__u64 gpgd;
|
||||
__u64 hpasid;
|
||||
__u64 gpasid;
|
||||
__u8 padding[8];
|
||||
/* Vendor specific data */
|
||||
union {
|
||||
struct iommu_gpasid_bind_data_vtd vtd;
|
||||
} vendor;
|
||||
};
|
||||
|
||||
#endif /* _UAPI_IOMMU_H */
|
||||
|
||||
@@ -54,9 +54,9 @@
|
||||
*/
|
||||
struct kexec_segment {
|
||||
const void *buf;
|
||||
size_t bufsz;
|
||||
__kernel_size_t bufsz;
|
||||
const void *mem;
|
||||
size_t memsz;
|
||||
__kernel_size_t memsz;
|
||||
};
|
||||
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
@@ -32,9 +32,11 @@
|
||||
* - 1.4 - Indicate new SRAM EDC bit in device properties
|
||||
* - 1.5 - Add SVM API
|
||||
* - 1.6 - Query clear flags in SVM get_attr API
|
||||
* - 1.7 - Checkpoint Restore (CRIU) API
|
||||
* - 1.8 - CRIU - Support for SDMA transfers with GTT BOs
|
||||
*/
|
||||
#define KFD_IOCTL_MAJOR_VERSION 1
|
||||
#define KFD_IOCTL_MINOR_VERSION 6
|
||||
#define KFD_IOCTL_MINOR_VERSION 8
|
||||
|
||||
struct kfd_ioctl_get_version_args {
|
||||
__u32 major_version; /* from KFD */
|
||||
@@ -194,6 +196,8 @@ struct kfd_ioctl_dbg_wave_control_args {
|
||||
__u32 buf_size_in_bytes; /*including gpu_id and buf_size */
|
||||
};
|
||||
|
||||
#define KFD_INVALID_FD 0xffffffff
|
||||
|
||||
/* Matching HSA_EVENTTYPE */
|
||||
#define KFD_IOC_EVENT_SIGNAL 0
|
||||
#define KFD_IOC_EVENT_NODECHANGE 1
|
||||
@@ -462,12 +466,89 @@ enum kfd_smi_event {
|
||||
};
|
||||
|
||||
#define KFD_SMI_EVENT_MASK_FROM_INDEX(i) (1ULL << ((i) - 1))
|
||||
#define KFD_SMI_EVENT_MSG_SIZE 96
|
||||
|
||||
struct kfd_ioctl_smi_events_args {
|
||||
__u32 gpuid; /* to KFD */
|
||||
__u32 anon_fd; /* from KFD */
|
||||
};
|
||||
|
||||
/**************************************************************************************************
|
||||
* CRIU IOCTLs (Checkpoint Restore In Userspace)
|
||||
*
|
||||
* When checkpointing a process, the userspace application will perform:
|
||||
* 1. PROCESS_INFO op to determine current process information. This pauses execution and evicts
|
||||
* all the queues.
|
||||
* 2. CHECKPOINT op to checkpoint process contents (BOs, queues, events, svm-ranges)
|
||||
* 3. UNPAUSE op to un-evict all the queues
|
||||
*
|
||||
* When restoring a process, the CRIU userspace application will perform:
|
||||
*
|
||||
* 1. RESTORE op to restore process contents
|
||||
* 2. RESUME op to start the process
|
||||
*
|
||||
* Note: Queues are forced into an evicted state after a successful PROCESS_INFO. User
|
||||
* application needs to perform an UNPAUSE operation after calling PROCESS_INFO.
|
||||
*/
|
||||
|
||||
enum kfd_criu_op {
|
||||
KFD_CRIU_OP_PROCESS_INFO,
|
||||
KFD_CRIU_OP_CHECKPOINT,
|
||||
KFD_CRIU_OP_UNPAUSE,
|
||||
KFD_CRIU_OP_RESTORE,
|
||||
KFD_CRIU_OP_RESUME,
|
||||
};
|
||||
|
||||
/**
|
||||
* kfd_ioctl_criu_args - Arguments perform CRIU operation
|
||||
* @devices: [in/out] User pointer to memory location for devices information.
|
||||
* This is an array of type kfd_criu_device_bucket.
|
||||
* @bos: [in/out] User pointer to memory location for BOs information
|
||||
* This is an array of type kfd_criu_bo_bucket.
|
||||
* @priv_data: [in/out] User pointer to memory location for private data
|
||||
* @priv_data_size: [in/out] Size of priv_data in bytes
|
||||
* @num_devices: [in/out] Number of GPUs used by process. Size of @devices array.
|
||||
* @num_bos [in/out] Number of BOs used by process. Size of @bos array.
|
||||
* @num_objects: [in/out] Number of objects used by process. Objects are opaque to
|
||||
* user application.
|
||||
* @pid: [in/out] PID of the process being checkpointed
|
||||
* @op [in] Type of operation (kfd_criu_op)
|
||||
*
|
||||
* Return: 0 on success, -errno on failure
|
||||
*/
|
||||
struct kfd_ioctl_criu_args {
|
||||
__u64 devices; /* Used during ops: CHECKPOINT, RESTORE */
|
||||
__u64 bos; /* Used during ops: CHECKPOINT, RESTORE */
|
||||
__u64 priv_data; /* Used during ops: CHECKPOINT, RESTORE */
|
||||
__u64 priv_data_size; /* Used during ops: PROCESS_INFO, RESTORE */
|
||||
__u32 num_devices; /* Used during ops: PROCESS_INFO, RESTORE */
|
||||
__u32 num_bos; /* Used during ops: PROCESS_INFO, RESTORE */
|
||||
__u32 num_objects; /* Used during ops: PROCESS_INFO, RESTORE */
|
||||
__u32 pid; /* Used during ops: PROCESS_INFO, RESUME */
|
||||
__u32 op;
|
||||
};
|
||||
|
||||
struct kfd_criu_device_bucket {
|
||||
__u32 user_gpu_id;
|
||||
__u32 actual_gpu_id;
|
||||
__u32 drm_fd;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
struct kfd_criu_bo_bucket {
|
||||
__u64 addr;
|
||||
__u64 size;
|
||||
__u64 offset;
|
||||
__u64 restored_offset; /* During restore, updated offset for BO */
|
||||
__u32 gpu_id; /* This is the user_gpu_id */
|
||||
__u32 alloc_flags;
|
||||
__u32 dmabuf_fd;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/* CRIU IOCTLs - END */
|
||||
/**************************************************************************************************/
|
||||
|
||||
/* Register offset inside the remapped mmio page
|
||||
*/
|
||||
enum kfd_mmio_remap {
|
||||
@@ -596,7 +677,7 @@ struct kfd_ioctl_svm_args {
|
||||
__u32 op;
|
||||
__u32 nattr;
|
||||
/* Variable length array of attributes */
|
||||
struct kfd_ioctl_svm_attribute attrs[0];
|
||||
struct kfd_ioctl_svm_attribute attrs[];
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -679,16 +760,16 @@ struct kfd_ioctl_set_xnack_mode_args {
|
||||
#define AMDKFD_IOC_WAIT_EVENTS \
|
||||
AMDKFD_IOWR(0x0C, struct kfd_ioctl_wait_events_args)
|
||||
|
||||
#define AMDKFD_IOC_DBG_REGISTER \
|
||||
#define AMDKFD_IOC_DBG_REGISTER_DEPRECATED \
|
||||
AMDKFD_IOW(0x0D, struct kfd_ioctl_dbg_register_args)
|
||||
|
||||
#define AMDKFD_IOC_DBG_UNREGISTER \
|
||||
#define AMDKFD_IOC_DBG_UNREGISTER_DEPRECATED \
|
||||
AMDKFD_IOW(0x0E, struct kfd_ioctl_dbg_unregister_args)
|
||||
|
||||
#define AMDKFD_IOC_DBG_ADDRESS_WATCH \
|
||||
#define AMDKFD_IOC_DBG_ADDRESS_WATCH_DEPRECATED \
|
||||
AMDKFD_IOW(0x0F, struct kfd_ioctl_dbg_address_watch_args)
|
||||
|
||||
#define AMDKFD_IOC_DBG_WAVE_CONTROL \
|
||||
#define AMDKFD_IOC_DBG_WAVE_CONTROL_DEPRECATED \
|
||||
AMDKFD_IOW(0x10, struct kfd_ioctl_dbg_wave_control_args)
|
||||
|
||||
#define AMDKFD_IOC_SET_SCRATCH_BACKING_VA \
|
||||
@@ -742,7 +823,10 @@ struct kfd_ioctl_set_xnack_mode_args {
|
||||
#define AMDKFD_IOC_SET_XNACK_MODE \
|
||||
AMDKFD_IOWR(0x21, struct kfd_ioctl_set_xnack_mode_args)
|
||||
|
||||
#define AMDKFD_IOC_CRIU_OP \
|
||||
AMDKFD_IOWR(0x22, struct kfd_ioctl_criu_args)
|
||||
|
||||
#define AMDKFD_COMMAND_START 0x01
|
||||
#define AMDKFD_COMMAND_END 0x22
|
||||
#define AMDKFD_COMMAND_END 0x23
|
||||
|
||||
#endif
|
||||
|
||||
@@ -562,9 +562,12 @@ struct kvm_s390_mem_op {
|
||||
__u32 op; /* type of operation */
|
||||
__u64 buf; /* buffer in userspace */
|
||||
union {
|
||||
__u8 ar; /* the access register number */
|
||||
struct {
|
||||
__u8 ar; /* the access register number */
|
||||
__u8 key; /* access key, ignored if flag unset */
|
||||
};
|
||||
__u32 sida_offset; /* offset into the sida */
|
||||
__u8 reserved[32]; /* should be set to 0 */
|
||||
__u8 reserved[32]; /* ignored */
|
||||
};
|
||||
};
|
||||
/* types for kvm_s390_mem_op->op */
|
||||
@@ -572,9 +575,12 @@ struct kvm_s390_mem_op {
|
||||
#define KVM_S390_MEMOP_LOGICAL_WRITE 1
|
||||
#define KVM_S390_MEMOP_SIDA_READ 2
|
||||
#define KVM_S390_MEMOP_SIDA_WRITE 3
|
||||
#define KVM_S390_MEMOP_ABSOLUTE_READ 4
|
||||
#define KVM_S390_MEMOP_ABSOLUTE_WRITE 5
|
||||
/* flags for kvm_s390_mem_op->flags */
|
||||
#define KVM_S390_MEMOP_F_CHECK_ONLY (1ULL << 0)
|
||||
#define KVM_S390_MEMOP_F_INJECT_EXCEPTION (1ULL << 1)
|
||||
#define KVM_S390_MEMOP_F_SKEY_PROTECTION (1ULL << 2)
|
||||
|
||||
/* for KVM_INTERRUPT */
|
||||
struct kvm_interrupt {
|
||||
@@ -1134,6 +1140,10 @@ struct kvm_ppc_resize_hpt {
|
||||
#define KVM_CAP_VM_GPA_BITS 207
|
||||
#define KVM_CAP_XSAVE2 208
|
||||
#define KVM_CAP_SYS_ATTRIBUTES 209
|
||||
#define KVM_CAP_PPC_AIL_MODE_3 210
|
||||
#define KVM_CAP_S390_MEM_OP_EXTENSION 211
|
||||
#define KVM_CAP_PMU_CAPABILITY 212
|
||||
#define KVM_CAP_DISABLE_QUIRKS2 213
|
||||
|
||||
#ifdef KVM_CAP_IRQ_ROUTING
|
||||
|
||||
@@ -1624,9 +1634,6 @@ struct kvm_enc_region {
|
||||
#define KVM_S390_NORMAL_RESET _IO(KVMIO, 0xc3)
|
||||
#define KVM_S390_CLEAR_RESET _IO(KVMIO, 0xc4)
|
||||
|
||||
/* Available with KVM_CAP_XSAVE2 */
|
||||
#define KVM_GET_XSAVE2 _IOR(KVMIO, 0xcf, struct kvm_xsave)
|
||||
|
||||
struct kvm_s390_pv_sec_parm {
|
||||
__u64 origin;
|
||||
__u64 length;
|
||||
@@ -1973,6 +1980,8 @@ struct kvm_dirty_gfn {
|
||||
#define KVM_BUS_LOCK_DETECTION_OFF (1 << 0)
|
||||
#define KVM_BUS_LOCK_DETECTION_EXIT (1 << 1)
|
||||
|
||||
#define KVM_PMU_CAP_DISABLE (1 << 0)
|
||||
|
||||
/**
|
||||
* struct kvm_stats_header - Header of per vm/vcpu binary statistics data.
|
||||
* @flags: Some extra information for header, always 0 for now.
|
||||
@@ -2048,4 +2057,7 @@ struct kvm_stats_desc {
|
||||
|
||||
#define KVM_GET_STATS_FD _IO(KVMIO, 0xce)
|
||||
|
||||
/* Available with KVM_CAP_XSAVE2 */
|
||||
#define KVM_GET_XSAVE2 _IOR(KVMIO, 0xcf, struct kvm_xsave)
|
||||
|
||||
#endif /* __LINUX_KVM_H */
|
||||
|
||||
@@ -16,14 +16,16 @@
|
||||
#define LIRC_MODE2_PULSE 0x01000000
|
||||
#define LIRC_MODE2_FREQUENCY 0x02000000
|
||||
#define LIRC_MODE2_TIMEOUT 0x03000000
|
||||
#define LIRC_MODE2_OVERFLOW 0x04000000
|
||||
|
||||
#define LIRC_VALUE_MASK 0x00FFFFFF
|
||||
#define LIRC_MODE2_MASK 0xFF000000
|
||||
|
||||
#define LIRC_SPACE(val) (((val)&LIRC_VALUE_MASK) | LIRC_MODE2_SPACE)
|
||||
#define LIRC_PULSE(val) (((val)&LIRC_VALUE_MASK) | LIRC_MODE2_PULSE)
|
||||
#define LIRC_FREQUENCY(val) (((val)&LIRC_VALUE_MASK) | LIRC_MODE2_FREQUENCY)
|
||||
#define LIRC_TIMEOUT(val) (((val)&LIRC_VALUE_MASK) | LIRC_MODE2_TIMEOUT)
|
||||
#define LIRC_SPACE(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_SPACE)
|
||||
#define LIRC_PULSE(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_PULSE)
|
||||
#define LIRC_FREQUENCY(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_FREQUENCY)
|
||||
#define LIRC_TIMEOUT(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_TIMEOUT)
|
||||
#define LIRC_OVERFLOW(val) (((val) & LIRC_VALUE_MASK) | LIRC_MODE2_OVERFLOW)
|
||||
|
||||
#define LIRC_VALUE(val) ((val)&LIRC_VALUE_MASK)
|
||||
#define LIRC_MODE2(val) ((val)&LIRC_MODE2_MASK)
|
||||
@@ -32,6 +34,7 @@
|
||||
#define LIRC_IS_PULSE(val) (LIRC_MODE2(val) == LIRC_MODE2_PULSE)
|
||||
#define LIRC_IS_FREQUENCY(val) (LIRC_MODE2(val) == LIRC_MODE2_FREQUENCY)
|
||||
#define LIRC_IS_TIMEOUT(val) (LIRC_MODE2(val) == LIRC_MODE2_TIMEOUT)
|
||||
#define LIRC_IS_OVERFLOW(val) (LIRC_MODE2(val) == LIRC_MODE2_OVERFLOW)
|
||||
|
||||
/* used heavily by lirc userspace */
|
||||
#define lirc_t int
|
||||
@@ -70,13 +73,10 @@
|
||||
#define LIRC_CAN_REC_MASK LIRC_MODE2REC(LIRC_CAN_SEND_MASK)
|
||||
|
||||
#define LIRC_CAN_SET_REC_CARRIER (LIRC_CAN_SET_SEND_CARRIER << 16)
|
||||
#define LIRC_CAN_SET_REC_DUTY_CYCLE (LIRC_CAN_SET_SEND_DUTY_CYCLE << 16)
|
||||
|
||||
#define LIRC_CAN_SET_REC_DUTY_CYCLE_RANGE 0x40000000
|
||||
#define LIRC_CAN_SET_REC_CARRIER_RANGE 0x80000000
|
||||
#define LIRC_CAN_GET_REC_RESOLUTION 0x20000000
|
||||
#define LIRC_CAN_SET_REC_TIMEOUT 0x10000000
|
||||
#define LIRC_CAN_SET_REC_FILTER 0x08000000
|
||||
|
||||
#define LIRC_CAN_MEASURE_CARRIER 0x02000000
|
||||
#define LIRC_CAN_USE_WIDEBAND_RECEIVER 0x04000000
|
||||
@@ -84,8 +84,6 @@
|
||||
#define LIRC_CAN_SEND(x) ((x)&LIRC_CAN_SEND_MASK)
|
||||
#define LIRC_CAN_REC(x) ((x)&LIRC_CAN_REC_MASK)
|
||||
|
||||
#define LIRC_CAN_NOTIFY_DECODE 0x01000000
|
||||
|
||||
/*** IOCTL commands for lirc driver ***/
|
||||
|
||||
#define LIRC_GET_FEATURES _IOR('i', 0x00000000, __u32)
|
||||
|
||||
@@ -45,7 +45,7 @@ struct loop_info {
|
||||
unsigned long lo_inode; /* ioctl r/o */
|
||||
__kernel_old_dev_t lo_rdevice; /* ioctl r/o */
|
||||
int lo_offset;
|
||||
int lo_encrypt_type;
|
||||
int lo_encrypt_type; /* obsolete, ignored */
|
||||
int lo_encrypt_key_size; /* ioctl w/o */
|
||||
int lo_flags;
|
||||
char lo_name[LO_NAME_SIZE];
|
||||
@@ -61,7 +61,7 @@ struct loop_info64 {
|
||||
__u64 lo_offset;
|
||||
__u64 lo_sizelimit;/* bytes, 0 == max available */
|
||||
__u32 lo_number; /* ioctl r/o */
|
||||
__u32 lo_encrypt_type;
|
||||
__u32 lo_encrypt_type; /* obsolete, ignored */
|
||||
__u32 lo_encrypt_key_size; /* ioctl w/o */
|
||||
__u32 lo_flags;
|
||||
__u8 lo_file_name[LO_NAME_SIZE];
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#define EFIVARFS_MAGIC 0xde5e81e4
|
||||
#define HOSTFS_SUPER_MAGIC 0x00c0ffee
|
||||
#define OVERLAYFS_SUPER_MAGIC 0x794c7630
|
||||
#define FUSE_SUPER_MAGIC 0x65735546
|
||||
|
||||
#define MINIX_SUPER_MAGIC 0x137F /* minix v1 fs, 14 char names */
|
||||
#define MINIX_SUPER_MAGIC2 0x138F /* minix v1 fs, 30 char names */
|
||||
|
||||
@@ -44,7 +44,25 @@ struct sockaddr_mctp_ext {
|
||||
|
||||
#define MCTP_TAG_MASK 0x07
|
||||
#define MCTP_TAG_OWNER 0x08
|
||||
#define MCTP_TAG_PREALLOC 0x10
|
||||
|
||||
#define MCTP_OPT_ADDR_EXT 1
|
||||
|
||||
#define SIOCMCTPALLOCTAG (SIOCPROTOPRIVATE + 0)
|
||||
#define SIOCMCTPDROPTAG (SIOCPROTOPRIVATE + 1)
|
||||
|
||||
struct mctp_ioc_tag_ctl {
|
||||
mctp_eid_t peer_addr;
|
||||
|
||||
/* For SIOCMCTPALLOCTAG: must be passed as zero, kernel will
|
||||
* populate with the allocated tag value. Returned tag value will
|
||||
* always have TO and PREALLOC set.
|
||||
*
|
||||
* For SIOCMCTPDROPTAG: userspace provides tag value to drop, from
|
||||
* a prior SIOCMCTPALLOCTAG call (and so must have TO and PREALLOC set).
|
||||
*/
|
||||
__u8 tag;
|
||||
__u16 flags;
|
||||
};
|
||||
|
||||
#endif /* __UAPI_MCTP_H */
|
||||
|
||||
@@ -81,6 +81,7 @@ enum {
|
||||
#define MPTCP_PM_ADDR_FLAG_SUBFLOW (1 << 1)
|
||||
#define MPTCP_PM_ADDR_FLAG_BACKUP (1 << 2)
|
||||
#define MPTCP_PM_ADDR_FLAG_FULLMESH (1 << 3)
|
||||
#define MPTCP_PM_ADDR_FLAG_IMPLICIT (1 << 4)
|
||||
|
||||
enum {
|
||||
MPTCP_PM_CMD_UNSPEC,
|
||||
|
||||
@@ -134,6 +134,7 @@ struct mrt6msg {
|
||||
#define MRT6MSG_NOCACHE 1
|
||||
#define MRT6MSG_WRONGMIF 2
|
||||
#define MRT6MSG_WHOLEPKT 3 /* used for use level encap */
|
||||
#define MRT6MSG_WRMIFWHOLE 4 /* For PIM Register and assert processing */
|
||||
__u8 im6_mbz; /* must be zero */
|
||||
__u8 im6_msgtype; /* what type of message */
|
||||
__u16 im6_mif; /* mif rec'd on */
|
||||
|
||||
@@ -189,7 +189,6 @@ static inline const char *nvdimm_cmd_name(unsigned cmd)
|
||||
#define ND_DEVICE_REGION_BLK 3 /* nd_region: (parent of BLK namespaces) */
|
||||
#define ND_DEVICE_NAMESPACE_IO 4 /* legacy persistent memory */
|
||||
#define ND_DEVICE_NAMESPACE_PMEM 5 /* PMEM namespace (may alias with BLK) */
|
||||
#define ND_DEVICE_NAMESPACE_BLK 6 /* BLK namespace (may alias with PMEM) */
|
||||
#define ND_DEVICE_DAX_PMEM 7 /* Device DAX interface to pmem */
|
||||
|
||||
enum nd_driver_flags {
|
||||
@@ -198,7 +197,6 @@ enum nd_driver_flags {
|
||||
ND_DRIVER_REGION_BLK = 1 << ND_DEVICE_REGION_BLK,
|
||||
ND_DRIVER_NAMESPACE_IO = 1 << ND_DEVICE_NAMESPACE_IO,
|
||||
ND_DRIVER_NAMESPACE_PMEM = 1 << ND_DEVICE_NAMESPACE_PMEM,
|
||||
ND_DRIVER_NAMESPACE_BLK = 1 << ND_DEVICE_NAMESPACE_BLK,
|
||||
ND_DRIVER_DAX_PMEM = 1 << ND_DEVICE_DAX_PMEM,
|
||||
};
|
||||
|
||||
|
||||
@@ -93,6 +93,7 @@ enum net_dm_attr {
|
||||
NET_DM_ATTR_SW_DROPS, /* flag */
|
||||
NET_DM_ATTR_HW_DROPS, /* flag */
|
||||
NET_DM_ATTR_FLOW_ACTION_COOKIE, /* binary */
|
||||
NET_DM_ATTR_REASON, /* string */
|
||||
|
||||
__NET_DM_ATTR_MAX,
|
||||
NET_DM_ATTR_MAX = __NET_DM_ATTR_MAX - 1
|
||||
|
||||
@@ -106,7 +106,7 @@ enum ip_conntrack_status {
|
||||
IPS_NAT_CLASH = IPS_UNTRACKED,
|
||||
#endif
|
||||
|
||||
/* Conntrack got a helper explicitly attached via CT target. */
|
||||
/* Conntrack got a helper explicitly attached (ruleset, ctnetlink). */
|
||||
IPS_HELPER_BIT = 13,
|
||||
IPS_HELPER = (1 << IPS_HELPER_BIT),
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@ enum nfqnl_attr_type {
|
||||
NFQA_SECCTX, /* security context string */
|
||||
NFQA_VLAN, /* nested attribute: packet vlan info */
|
||||
NFQA_L2HDR, /* full L2 header */
|
||||
NFQA_PRIORITY, /* skb->priority */
|
||||
|
||||
__NFQA_MAX
|
||||
};
|
||||
|
||||
@@ -45,6 +45,7 @@
|
||||
|
||||
#define NFS4_OPEN_RESULT_CONFIRM 0x0002
|
||||
#define NFS4_OPEN_RESULT_LOCKTYPE_POSIX 0x0004
|
||||
#define NFS4_OPEN_RESULT_PRESERVE_UNLINKED 0x0008
|
||||
#define NFS4_OPEN_RESULT_MAY_NOTIFY_LOCK 0x0020
|
||||
|
||||
#define NFS4_SHARE_ACCESS_MASK 0x000F
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
#define NFSDBG_CALLBACK 0x0100
|
||||
#define NFSDBG_CLIENT 0x0200
|
||||
#define NFSDBG_MOUNT 0x0400
|
||||
#define NFSDBG_FSCACHE 0x0800
|
||||
#define NFSDBG_FSCACHE 0x0800 /* unused */
|
||||
#define NFSDBG_PNFS 0x1000
|
||||
#define NFSDBG_PNFS_LD 0x2000
|
||||
#define NFSDBG_STATE 0x4000
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
* Copyright 2008 Jouni Malinen <jouni.malinen@atheros.com>
|
||||
* Copyright 2008 Colin McCabe <colin@cozybit.com>
|
||||
* Copyright 2015-2017 Intel Deutschland GmbH
|
||||
* Copyright (C) 2018-2021 Intel Corporation
|
||||
* Copyright (C) 2018-2022 Intel Corporation
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
@@ -2659,6 +2659,10 @@ enum nl80211_commands {
|
||||
* enumerated in &enum nl80211_ap_settings_flags. This attribute shall be
|
||||
* used with %NL80211_CMD_START_AP request.
|
||||
*
|
||||
* @NL80211_ATTR_EHT_CAPABILITY: EHT Capability information element (from
|
||||
* association request when used with NL80211_CMD_NEW_STATION). Can be set
|
||||
* only if %NL80211_STA_FLAG_WME is set.
|
||||
*
|
||||
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
|
||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||
* @__NL80211_ATTR_AFTER_LAST: internal use
|
||||
@@ -3169,6 +3173,8 @@ enum nl80211_attrs {
|
||||
|
||||
NL80211_ATTR_AP_SETTINGS_FLAGS,
|
||||
|
||||
NL80211_ATTR_EHT_CAPABILITY,
|
||||
|
||||
/* add attributes here, update the policy in nl80211.c */
|
||||
|
||||
__NL80211_ATTR_AFTER_LAST,
|
||||
@@ -3224,6 +3230,8 @@ enum nl80211_attrs {
|
||||
#define NL80211_HE_MAX_CAPABILITY_LEN 54
|
||||
#define NL80211_MAX_NR_CIPHER_SUITES 5
|
||||
#define NL80211_MAX_NR_AKM_SUITES 2
|
||||
#define NL80211_EHT_MIN_CAPABILITY_LEN 13
|
||||
#define NL80211_EHT_MAX_CAPABILITY_LEN 51
|
||||
|
||||
#define NL80211_MIN_REMAIN_ON_CHANNEL_TIME 10
|
||||
|
||||
@@ -3251,7 +3259,7 @@ enum nl80211_attrs {
|
||||
* and therefore can't be created in the normal ways, use the
|
||||
* %NL80211_CMD_START_P2P_DEVICE and %NL80211_CMD_STOP_P2P_DEVICE
|
||||
* commands to create and destroy one
|
||||
* @NL80211_IF_TYPE_OCB: Outside Context of a BSS
|
||||
* @NL80211_IFTYPE_OCB: Outside Context of a BSS
|
||||
* This mode corresponds to the MIB variable dot11OCBActivated=true
|
||||
* @NL80211_IFTYPE_NAN: NAN device interface type (not a netdev)
|
||||
* @NL80211_IFTYPE_MAX: highest interface type number currently defined
|
||||
@@ -3392,6 +3400,56 @@ enum nl80211_he_ru_alloc {
|
||||
NL80211_RATE_INFO_HE_RU_ALLOC_2x996,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_eht_gi - EHT guard interval
|
||||
* @NL80211_RATE_INFO_EHT_GI_0_8: 0.8 usec
|
||||
* @NL80211_RATE_INFO_EHT_GI_1_6: 1.6 usec
|
||||
* @NL80211_RATE_INFO_EHT_GI_3_2: 3.2 usec
|
||||
*/
|
||||
enum nl80211_eht_gi {
|
||||
NL80211_RATE_INFO_EHT_GI_0_8,
|
||||
NL80211_RATE_INFO_EHT_GI_1_6,
|
||||
NL80211_RATE_INFO_EHT_GI_3_2,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_eht_ru_alloc - EHT RU allocation values
|
||||
* @NL80211_RATE_INFO_EHT_RU_ALLOC_26: 26-tone RU allocation
|
||||
* @NL80211_RATE_INFO_EHT_RU_ALLOC_52: 52-tone RU allocation
|
||||
* @NL80211_RATE_INFO_EHT_RU_ALLOC_52P26: 52+26-tone RU allocation
|
||||
* @NL80211_RATE_INFO_EHT_RU_ALLOC_106: 106-tone RU allocation
|
||||
* @NL80211_RATE_INFO_EHT_RU_ALLOC_106P26: 106+26 tone RU allocation
|
||||
* @NL80211_RATE_INFO_EHT_RU_ALLOC_242: 242-tone RU allocation
|
||||
* @NL80211_RATE_INFO_EHT_RU_ALLOC_484: 484-tone RU allocation
|
||||
* @NL80211_RATE_INFO_EHT_RU_ALLOC_484P242: 484+242 tone RU allocation
|
||||
* @NL80211_RATE_INFO_EHT_RU_ALLOC_996: 996-tone RU allocation
|
||||
* @NL80211_RATE_INFO_EHT_RU_ALLOC_996P484: 996+484 tone RU allocation
|
||||
* @NL80211_RATE_INFO_EHT_RU_ALLOC_996P484P242: 996+484+242 tone RU allocation
|
||||
* @NL80211_RATE_INFO_EHT_RU_ALLOC_2x996: 2x996-tone RU allocation
|
||||
* @NL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484: 2x996+484 tone RU allocation
|
||||
* @NL80211_RATE_INFO_EHT_RU_ALLOC_3x996: 3x996-tone RU allocation
|
||||
* @NL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484: 3x996+484 tone RU allocation
|
||||
* @NL80211_RATE_INFO_EHT_RU_ALLOC_4x996: 4x996-tone RU allocation
|
||||
*/
|
||||
enum nl80211_eht_ru_alloc {
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_26,
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_52,
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_52P26,
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_106,
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_106P26,
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_242,
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_484,
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_484P242,
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_996,
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_996P484,
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_996P484P242,
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_2x996,
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_2x996P484,
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_3x996,
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_3x996P484,
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC_4x996,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_rate_info - bitrate information
|
||||
*
|
||||
@@ -3431,6 +3489,13 @@ enum nl80211_he_ru_alloc {
|
||||
* @NL80211_RATE_INFO_HE_DCM: HE DCM value (u8, 0/1)
|
||||
* @NL80211_RATE_INFO_RU_ALLOC: HE RU allocation, if not present then
|
||||
* non-OFDMA was used (u8, see &enum nl80211_he_ru_alloc)
|
||||
* @NL80211_RATE_INFO_320_MHZ_WIDTH: 320 MHz bitrate
|
||||
* @NL80211_RATE_INFO_EHT_MCS: EHT MCS index (u8, 0-15)
|
||||
* @NL80211_RATE_INFO_EHT_NSS: EHT NSS value (u8, 1-8)
|
||||
* @NL80211_RATE_INFO_EHT_GI: EHT guard interval identifier
|
||||
* (u8, see &enum nl80211_eht_gi)
|
||||
* @NL80211_RATE_INFO_EHT_RU_ALLOC: EHT RU allocation, if not present then
|
||||
* non-OFDMA was used (u8, see &enum nl80211_eht_ru_alloc)
|
||||
* @__NL80211_RATE_INFO_AFTER_LAST: internal use
|
||||
*/
|
||||
enum nl80211_rate_info {
|
||||
@@ -3452,6 +3517,11 @@ enum nl80211_rate_info {
|
||||
NL80211_RATE_INFO_HE_GI,
|
||||
NL80211_RATE_INFO_HE_DCM,
|
||||
NL80211_RATE_INFO_HE_RU_ALLOC,
|
||||
NL80211_RATE_INFO_320_MHZ_WIDTH,
|
||||
NL80211_RATE_INFO_EHT_MCS,
|
||||
NL80211_RATE_INFO_EHT_NSS,
|
||||
NL80211_RATE_INFO_EHT_GI,
|
||||
NL80211_RATE_INFO_EHT_RU_ALLOC,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_RATE_INFO_AFTER_LAST,
|
||||
@@ -3766,6 +3836,14 @@ enum nl80211_mpath_info {
|
||||
* given for all 6 GHz band channels
|
||||
* @NL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS: vendor element capabilities that are
|
||||
* advertised on this band/for this iftype (binary)
|
||||
* @NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC: EHT MAC capabilities as in EHT
|
||||
* capabilities element
|
||||
* @NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY: EHT PHY capabilities as in EHT
|
||||
* capabilities element
|
||||
* @NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET: EHT supported NSS/MCS as in EHT
|
||||
* capabilities element
|
||||
* @NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE: EHT PPE thresholds information as
|
||||
* defined in EHT capabilities element
|
||||
* @__NL80211_BAND_IFTYPE_ATTR_AFTER_LAST: internal use
|
||||
* @NL80211_BAND_IFTYPE_ATTR_MAX: highest band attribute currently defined
|
||||
*/
|
||||
@@ -3779,6 +3857,10 @@ enum nl80211_band_iftype_attr {
|
||||
NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE,
|
||||
NL80211_BAND_IFTYPE_ATTR_HE_6GHZ_CAPA,
|
||||
NL80211_BAND_IFTYPE_ATTR_VENDOR_ELEMS,
|
||||
NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MAC,
|
||||
NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY,
|
||||
NL80211_BAND_IFTYPE_ATTR_EHT_CAP_MCS_SET,
|
||||
NL80211_BAND_IFTYPE_ATTR_EHT_CAP_PPE,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_BAND_IFTYPE_ATTR_AFTER_LAST,
|
||||
@@ -3923,6 +4005,10 @@ enum nl80211_wmm_rule {
|
||||
* on this channel in current regulatory domain.
|
||||
* @NL80211_FREQUENCY_ATTR_16MHZ: 16 MHz operation is allowed
|
||||
* on this channel in current regulatory domain.
|
||||
* @NL80211_FREQUENCY_ATTR_NO_320MHZ: any 320 MHz channel using this channel
|
||||
* as the primary or any of the secondary channels isn't possible
|
||||
* @NL80211_FREQUENCY_ATTR_NO_EHT: EHT operation is not allowed on this channel
|
||||
* in current regulatory domain.
|
||||
* @NL80211_FREQUENCY_ATTR_MAX: highest frequency attribute number
|
||||
* currently defined
|
||||
* @__NL80211_FREQUENCY_ATTR_AFTER_LAST: internal use
|
||||
@@ -3959,6 +4045,8 @@ enum nl80211_frequency_attr {
|
||||
NL80211_FREQUENCY_ATTR_4MHZ,
|
||||
NL80211_FREQUENCY_ATTR_8MHZ,
|
||||
NL80211_FREQUENCY_ATTR_16MHZ,
|
||||
NL80211_FREQUENCY_ATTR_NO_320MHZ,
|
||||
NL80211_FREQUENCY_ATTR_NO_EHT,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_FREQUENCY_ATTR_AFTER_LAST,
|
||||
@@ -4157,6 +4245,7 @@ enum nl80211_sched_scan_match_attr {
|
||||
* @NL80211_RRF_NO_80MHZ: 80MHz operation not allowed
|
||||
* @NL80211_RRF_NO_160MHZ: 160MHz operation not allowed
|
||||
* @NL80211_RRF_NO_HE: HE operation not allowed
|
||||
* @NL80211_RRF_NO_320MHZ: 320MHz operation not allowed
|
||||
*/
|
||||
enum nl80211_reg_rule_flags {
|
||||
NL80211_RRF_NO_OFDM = 1<<0,
|
||||
@@ -4175,6 +4264,7 @@ enum nl80211_reg_rule_flags {
|
||||
NL80211_RRF_NO_80MHZ = 1<<15,
|
||||
NL80211_RRF_NO_160MHZ = 1<<16,
|
||||
NL80211_RRF_NO_HE = 1<<17,
|
||||
NL80211_RRF_NO_320MHZ = 1<<18,
|
||||
};
|
||||
|
||||
#define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR
|
||||
@@ -4672,6 +4762,8 @@ enum nl80211_key_mode {
|
||||
* @NL80211_CHAN_WIDTH_4: 4 MHz OFDM channel
|
||||
* @NL80211_CHAN_WIDTH_8: 8 MHz OFDM channel
|
||||
* @NL80211_CHAN_WIDTH_16: 16 MHz OFDM channel
|
||||
* @NL80211_CHAN_WIDTH_320: 320 MHz channel, the %NL80211_ATTR_CENTER_FREQ1
|
||||
* attribute must be provided as well
|
||||
*/
|
||||
enum nl80211_chan_width {
|
||||
NL80211_CHAN_WIDTH_20_NOHT,
|
||||
@@ -4687,6 +4779,7 @@ enum nl80211_chan_width {
|
||||
NL80211_CHAN_WIDTH_4,
|
||||
NL80211_CHAN_WIDTH_8,
|
||||
NL80211_CHAN_WIDTH_16,
|
||||
NL80211_CHAN_WIDTH_320,
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -55,7 +55,10 @@ struct nvme_passthru_cmd64 {
|
||||
__u64 metadata;
|
||||
__u64 addr;
|
||||
__u32 metadata_len;
|
||||
__u32 data_len;
|
||||
union {
|
||||
__u32 data_len; /* for non-vectored io */
|
||||
__u32 vec_cnt; /* for vectored io */
|
||||
};
|
||||
__u32 cdw10;
|
||||
__u32 cdw11;
|
||||
__u32 cdw12;
|
||||
@@ -78,5 +81,6 @@ struct nvme_passthru_cmd64 {
|
||||
#define NVME_IOCTL_RESCAN _IO('N', 0x46)
|
||||
#define NVME_IOCTL_ADMIN64_CMD _IOWR('N', 0x47, struct nvme_passthru_cmd64)
|
||||
#define NVME_IOCTL_IO64_CMD _IOWR('N', 0x48, struct nvme_passthru_cmd64)
|
||||
#define NVME_IOCTL_IO64_CMD_VEC _IOWR('N', 0x49, struct nvme_passthru_cmd64)
|
||||
|
||||
#endif /* _UAPI_LINUX_NVME_IOCTL_H */
|
||||
|
||||
@@ -162,6 +162,7 @@ struct omap3isp_h3a_aewb_config {
|
||||
* struct omap3isp_stat_data - Statistic data sent to or received from user
|
||||
* @ts: Timestamp of returned framestats.
|
||||
* @buf: Pointer to pass to user.
|
||||
* @buf_size: Size of buffer.
|
||||
* @frame_number: Frame number of requested stats.
|
||||
* @cur_frame: Current frame number being processed.
|
||||
* @config_counter: Number of the configuration associated with the data.
|
||||
@@ -176,10 +177,12 @@ struct omap3isp_stat_data {
|
||||
struct timeval ts;
|
||||
#endif
|
||||
void __user *buf;
|
||||
__u32 buf_size;
|
||||
__u16 frame_number;
|
||||
__u16 cur_frame;
|
||||
__u16 config_counter;
|
||||
__struct_group(/* no tag */, frame, /* no attrs */,
|
||||
__u32 buf_size;
|
||||
__u16 frame_number;
|
||||
__u16 cur_frame;
|
||||
__u16 config_counter;
|
||||
);
|
||||
};
|
||||
|
||||
#ifdef __KERNEL__
|
||||
@@ -189,10 +192,12 @@ struct omap3isp_stat_data_time32 {
|
||||
__s32 tv_usec;
|
||||
} ts;
|
||||
__u32 buf;
|
||||
__u32 buf_size;
|
||||
__u16 frame_number;
|
||||
__u16 cur_frame;
|
||||
__u16 config_counter;
|
||||
__struct_group(/* no tag */, frame, /* no attrs */,
|
||||
__u32 buf_size;
|
||||
__u16 frame_number;
|
||||
__u16 cur_frame;
|
||||
__u16 config_counter;
|
||||
);
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
@@ -352,9 +352,20 @@ enum ovs_key_attr {
|
||||
OVS_KEY_ATTR_CT_ORIG_TUPLE_IPV6, /* struct ovs_key_ct_tuple_ipv6 */
|
||||
OVS_KEY_ATTR_NSH, /* Nested set of ovs_nsh_key_* */
|
||||
|
||||
#ifdef __KERNEL__
|
||||
OVS_KEY_ATTR_TUNNEL_INFO, /* struct ip_tunnel_info */
|
||||
#endif
|
||||
/* User space decided to squat on types 29 and 30. They are defined
|
||||
* below, but should not be sent to the kernel.
|
||||
*
|
||||
* WARNING: No new types should be added unless they are defined
|
||||
* for both kernel and user space (no 'ifdef's). It's hard
|
||||
* to keep compatibility otherwise.
|
||||
*/
|
||||
OVS_KEY_ATTR_PACKET_TYPE, /* be32 packet type */
|
||||
OVS_KEY_ATTR_ND_EXTENSIONS, /* IPv6 Neighbor Discovery extensions */
|
||||
|
||||
OVS_KEY_ATTR_TUNNEL_INFO, /* struct ip_tunnel_info.
|
||||
* For in-kernel use only.
|
||||
*/
|
||||
OVS_KEY_ATTR_IPV6_EXTHDRS, /* struct ovs_key_ipv6_exthdr */
|
||||
__OVS_KEY_ATTR_MAX
|
||||
};
|
||||
|
||||
@@ -430,6 +441,11 @@ struct ovs_key_ipv6 {
|
||||
__u8 ipv6_frag; /* One of OVS_FRAG_TYPE_*. */
|
||||
};
|
||||
|
||||
/* separate structure to support backward compatibility with older user space */
|
||||
struct ovs_key_ipv6_exthdrs {
|
||||
__u16 hdrs;
|
||||
};
|
||||
|
||||
struct ovs_key_tcp {
|
||||
__be16 tcp_src;
|
||||
__be16 tcp_dst;
|
||||
|
||||
@@ -251,6 +251,8 @@ enum {
|
||||
PERF_BR_SYSRET = 8, /* syscall return */
|
||||
PERF_BR_COND_CALL = 9, /* conditional function call */
|
||||
PERF_BR_COND_RET = 10, /* conditional function return */
|
||||
PERF_BR_ERET = 11, /* exception return */
|
||||
PERF_BR_IRQ = 12, /* irq */
|
||||
PERF_BR_MAX,
|
||||
};
|
||||
|
||||
@@ -465,6 +467,8 @@ struct perf_event_attr {
|
||||
/*
|
||||
* User provided data if sigtrap=1, passed back to user via
|
||||
* siginfo_t::si_perf_data, e.g. to permit user to identify the event.
|
||||
* Note, siginfo_t::si_perf_data is long-sized, and sig_data will be
|
||||
* truncated accordingly on 32 bit architectures.
|
||||
*/
|
||||
__u64 sig_data;
|
||||
};
|
||||
|
||||
@@ -616,6 +616,10 @@ enum {
|
||||
* TCA_FLOWER_KEY_ENC_OPT_ERSPAN_
|
||||
* attributes
|
||||
*/
|
||||
TCA_FLOWER_KEY_ENC_OPTS_GTP, /* Nested
|
||||
* TCA_FLOWER_KEY_ENC_OPT_GTP_
|
||||
* attributes
|
||||
*/
|
||||
__TCA_FLOWER_KEY_ENC_OPTS_MAX,
|
||||
};
|
||||
|
||||
@@ -654,6 +658,17 @@ enum {
|
||||
#define TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX \
|
||||
(__TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX - 1)
|
||||
|
||||
enum {
|
||||
TCA_FLOWER_KEY_ENC_OPT_GTP_UNSPEC,
|
||||
TCA_FLOWER_KEY_ENC_OPT_GTP_PDU_TYPE, /* u8 */
|
||||
TCA_FLOWER_KEY_ENC_OPT_GTP_QFI, /* u8 */
|
||||
|
||||
__TCA_FLOWER_KEY_ENC_OPT_GTP_MAX,
|
||||
};
|
||||
|
||||
#define TCA_FLOWER_KEY_ENC_OPT_GTP_MAX \
|
||||
(__TCA_FLOWER_KEY_ENC_OPT_GTP_MAX - 1)
|
||||
|
||||
enum {
|
||||
TCA_FLOWER_KEY_MPLS_OPTS_UNSPEC,
|
||||
TCA_FLOWER_KEY_MPLS_OPTS_LSE,
|
||||
|
||||
@@ -82,6 +82,10 @@
|
||||
#define PSCI_0_2_TOS_UP_NO_MIGRATE 1
|
||||
#define PSCI_0_2_TOS_MP 2
|
||||
|
||||
/* PSCI v1.1 reset type encoding for SYSTEM_RESET2 */
|
||||
#define PSCI_1_1_RESET_TYPE_SYSTEM_WARM_RESET 0
|
||||
#define PSCI_1_1_RESET_TYPE_VENDOR_START 0x80000000U
|
||||
|
||||
/* PSCI version decoding (independent of PSCI version) */
|
||||
#define PSCI_VERSION_MAJOR_SHIFT 16
|
||||
#define PSCI_VERSION_MINOR_MASK \
|
||||
|
||||
@@ -114,7 +114,7 @@ struct ptrace_rseq_configuration {
|
||||
|
||||
/*
|
||||
* These values are stored in task->ptrace_message
|
||||
* by tracehook_report_syscall_* to describe the current syscall-stop.
|
||||
* by ptrace_stop to describe the current syscall-stop.
|
||||
*/
|
||||
#define PTRACE_EVENTMSG_SYSCALL_ENTRY 1
|
||||
#define PTRACE_EVENTMSG_SYSCALL_EXIT 2
|
||||
|
||||
@@ -19,7 +19,7 @@ struct reiserfs_xattr_header {
|
||||
struct reiserfs_security_handle {
|
||||
const char *name;
|
||||
void *value;
|
||||
size_t length;
|
||||
__kernel_size_t length;
|
||||
};
|
||||
|
||||
#endif /* _LINUX_REISERFS_XATTR_H */
|
||||
|
||||
@@ -159,8 +159,16 @@ struct rfkill_event_ext {
|
||||
* old behaviour for all userspace, unless it explicitly opts in to the
|
||||
* rules outlined here by using the new &struct rfkill_event_ext.
|
||||
*
|
||||
* Userspace using &struct rfkill_event_ext must adhere to the following
|
||||
* rules
|
||||
* Additionally, some other userspace (bluez, g-s-d) was reading with a
|
||||
* large size but as streaming reads rather than message-based, or with
|
||||
* too strict checks for the returned size. So eventually, we completely
|
||||
* reverted this, and extended messages need to be opted in to by using
|
||||
* an ioctl:
|
||||
*
|
||||
* ioctl(fd, RFKILL_IOCTL_MAX_SIZE, sizeof(struct rfkill_event_ext));
|
||||
*
|
||||
* Userspace using &struct rfkill_event_ext and the ioctl must adhere to
|
||||
* the following rules:
|
||||
*
|
||||
* 1. accept short writes, optionally using them to detect that it's
|
||||
* running on an older kernel;
|
||||
@@ -175,6 +183,8 @@ struct rfkill_event_ext {
|
||||
#define RFKILL_IOC_MAGIC 'R'
|
||||
#define RFKILL_IOC_NOINPUT 1
|
||||
#define RFKILL_IOCTL_NOINPUT _IO(RFKILL_IOC_MAGIC, RFKILL_IOC_NOINPUT)
|
||||
#define RFKILL_IOC_MAX_SIZE 2
|
||||
#define RFKILL_IOCTL_MAX_SIZE _IOW(RFKILL_IOC_MAGIC, RFKILL_IOC_EXT_SIZE, __u32)
|
||||
|
||||
/* and that's all userspace gets */
|
||||
|
||||
|
||||
@@ -33,4 +33,14 @@ struct rpmsg_endpoint_info {
|
||||
*/
|
||||
#define RPMSG_DESTROY_EPT_IOCTL _IO(0xb5, 0x2)
|
||||
|
||||
/**
|
||||
* Instantiate a new local rpmsg service device.
|
||||
*/
|
||||
#define RPMSG_CREATE_DEV_IOCTL _IOW(0xb5, 0x3, struct rpmsg_endpoint_info)
|
||||
|
||||
/**
|
||||
* Release a local rpmsg device.
|
||||
*/
|
||||
#define RPMSG_RELEASE_DEV_IOCTL _IOW(0xb5, 0x4, struct rpmsg_endpoint_info)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -105,23 +105,11 @@ struct rseq {
|
||||
* Read and set by the kernel. Set by user-space with single-copy
|
||||
* atomicity semantics. This field should only be updated by the
|
||||
* thread which registered this data structure. Aligned on 64-bit.
|
||||
*
|
||||
* 32-bit architectures should update the low order bits of the
|
||||
* rseq_cs field, leaving the high order bits initialized to 0.
|
||||
*/
|
||||
union {
|
||||
__u64 ptr64;
|
||||
#ifdef __LP64__
|
||||
__u64 ptr;
|
||||
#else
|
||||
struct {
|
||||
#if (defined(__BYTE_ORDER) && (__BYTE_ORDER == __BIG_ENDIAN)) || defined(__BIG_ENDIAN)
|
||||
__u32 padding; /* Initialized to zero. */
|
||||
__u32 ptr32;
|
||||
#else /* LITTLE */
|
||||
__u32 ptr32;
|
||||
__u32 padding; /* Initialized to zero. */
|
||||
#endif /* ENDIAN */
|
||||
} ptr;
|
||||
#endif
|
||||
} rseq_cs;
|
||||
__u64 rseq_cs;
|
||||
|
||||
/*
|
||||
* Restartable sequences flags field.
|
||||
|
||||
@@ -133,7 +133,8 @@ struct rtc_param {
|
||||
#define RTC_FEATURE_UPDATE_INTERRUPT 4
|
||||
#define RTC_FEATURE_CORRECTION 5
|
||||
#define RTC_FEATURE_BACKUP_SWITCH_MODE 6
|
||||
#define RTC_FEATURE_CNT 7
|
||||
#define RTC_FEATURE_ALARM_WAKEUP_ONLY 7
|
||||
#define RTC_FEATURE_CNT 8
|
||||
|
||||
/* parameter list */
|
||||
#define RTC_PARAM_FEATURES 0
|
||||
|
||||
@@ -146,6 +146,8 @@ enum {
|
||||
#define RTM_NEWSTATS RTM_NEWSTATS
|
||||
RTM_GETSTATS = 94,
|
||||
#define RTM_GETSTATS RTM_GETSTATS
|
||||
RTM_SETSTATS,
|
||||
#define RTM_SETSTATS RTM_SETSTATS
|
||||
|
||||
RTM_NEWCACHEREPORT = 96,
|
||||
#define RTM_NEWCACHEREPORT RTM_NEWCACHEREPORT
|
||||
@@ -185,6 +187,13 @@ enum {
|
||||
RTM_GETNEXTHOPBUCKET,
|
||||
#define RTM_GETNEXTHOPBUCKET RTM_GETNEXTHOPBUCKET
|
||||
|
||||
RTM_NEWTUNNEL = 120,
|
||||
#define RTM_NEWTUNNEL RTM_NEWTUNNEL
|
||||
RTM_DELTUNNEL,
|
||||
#define RTM_DELTUNNEL RTM_DELTUNNEL
|
||||
RTM_GETTUNNEL,
|
||||
#define RTM_GETTUNNEL RTM_GETTUNNEL
|
||||
|
||||
__RTM_MAX,
|
||||
#define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
|
||||
};
|
||||
@@ -756,6 +765,10 @@ enum rtnetlink_groups {
|
||||
#define RTNLGRP_BRVLAN RTNLGRP_BRVLAN
|
||||
RTNLGRP_MCTP_IFADDR,
|
||||
#define RTNLGRP_MCTP_IFADDR RTNLGRP_MCTP_IFADDR
|
||||
RTNLGRP_TUNNEL,
|
||||
#define RTNLGRP_TUNNEL RTNLGRP_TUNNEL
|
||||
RTNLGRP_STATS,
|
||||
#define RTNLGRP_STATS RTNLGRP_STATS
|
||||
__RTNLGRP_MAX
|
||||
};
|
||||
#define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
|
||||
@@ -804,6 +817,7 @@ enum {
|
||||
#define RTEXT_FILTER_MRP (1 << 4)
|
||||
#define RTEXT_FILTER_CFM_CONFIG (1 << 5)
|
||||
#define RTEXT_FILTER_CFM_STATUS (1 << 6)
|
||||
#define RTEXT_FILTER_MST (1 << 7)
|
||||
|
||||
/* End of information exported to user level */
|
||||
|
||||
|
||||
@@ -68,6 +68,9 @@
|
||||
/* NVIDIA Tegra Combined UART */
|
||||
#define PORT_TEGRA_TCU 41
|
||||
|
||||
/* ASPEED AST2x00 virtual UART */
|
||||
#define PORT_ASPEED_VUART 42
|
||||
|
||||
/* Intel EG20 */
|
||||
#define PORT_PCH_8LINE 44
|
||||
#define PORT_PCH_2LINE 45
|
||||
@@ -274,4 +277,7 @@
|
||||
/* Freescale LINFlexD UART */
|
||||
#define PORT_LINFLEXUART 122
|
||||
|
||||
/* Sunplus UART */
|
||||
#define PORT_SUNPLUS 123
|
||||
|
||||
#endif /* _UAPILINUX_SERIAL_CORE_H */
|
||||
|
||||
@@ -59,6 +59,9 @@ enum {
|
||||
SMC_NETLINK_DUMP_SEID,
|
||||
SMC_NETLINK_ENABLE_SEID,
|
||||
SMC_NETLINK_DISABLE_SEID,
|
||||
SMC_NETLINK_DUMP_HS_LIMITATION,
|
||||
SMC_NETLINK_ENABLE_HS_LIMITATION,
|
||||
SMC_NETLINK_DISABLE_HS_LIMITATION,
|
||||
};
|
||||
|
||||
/* SMC_GENL_FAMILY top level attributes */
|
||||
@@ -284,4 +287,16 @@ enum {
|
||||
__SMC_NLA_SEID_TABLE_MAX,
|
||||
SMC_NLA_SEID_TABLE_MAX = __SMC_NLA_SEID_TABLE_MAX - 1
|
||||
};
|
||||
|
||||
/* SMC_NETLINK_HS_LIMITATION attributes */
|
||||
enum {
|
||||
SMC_NLA_HS_LIMITATION_UNSPEC,
|
||||
SMC_NLA_HS_LIMITATION_ENABLED, /* u8 */
|
||||
__SMC_NLA_HS_LIMITATION_MAX,
|
||||
SMC_NLA_HS_LIMITATION_MAX = __SMC_NLA_HS_LIMITATION_MAX - 1
|
||||
};
|
||||
|
||||
/* SMC socket options */
|
||||
#define SMC_LIMIT_HS 1 /* constraint on smc handshake */
|
||||
|
||||
#endif /* _UAPI_LINUX_SMC_H */
|
||||
|
||||
@@ -84,12 +84,11 @@ struct smc_diag_conninfo {
|
||||
/* SMC_DIAG_LINKINFO */
|
||||
|
||||
struct smc_diag_linkinfo {
|
||||
__u8 link_id; /* link identifier */
|
||||
__u8 ibname[IB_DEVICE_NAME_MAX]; /* name of the RDMA device */
|
||||
__u8 ibport; /* RDMA device port number */
|
||||
__u8 gid[40]; /* local GID */
|
||||
__u8 peer_gid[40]; /* peer GID */
|
||||
__aligned_u64 net_cookie; /* RDMA device net namespace */
|
||||
__u8 link_id; /* link identifier */
|
||||
__u8 ibname[IB_DEVICE_NAME_MAX]; /* name of the RDMA device */
|
||||
__u8 ibport; /* RDMA device port number */
|
||||
__u8 gid[40]; /* local GID */
|
||||
__u8 peer_gid[40]; /* peer GID */
|
||||
};
|
||||
|
||||
struct smc_diag_lgrinfo {
|
||||
|
||||
@@ -31,4 +31,8 @@ struct __kernel_sockaddr_storage {
|
||||
|
||||
#define SOCK_BUF_LOCK_MASK (SOCK_SNDBUF_LOCK | SOCK_RCVBUF_LOCK)
|
||||
|
||||
#define SOCK_TXREHASH_DEFAULT ((u8)-1)
|
||||
#define SOCK_TXREHASH_DISABLED 0
|
||||
#define SOCK_TXREHASH_ENABLED 1
|
||||
|
||||
#endif /* _UAPI_LINUX_SOCKET_H */
|
||||
|
||||
@@ -44,7 +44,10 @@ enum thermal_genl_attr {
|
||||
THERMAL_GENL_ATTR_CDEV_MAX_STATE,
|
||||
THERMAL_GENL_ATTR_CDEV_NAME,
|
||||
THERMAL_GENL_ATTR_GOV_NAME,
|
||||
|
||||
THERMAL_GENL_ATTR_CPU_CAPABILITY,
|
||||
THERMAL_GENL_ATTR_CPU_CAPABILITY_ID,
|
||||
THERMAL_GENL_ATTR_CPU_CAPABILITY_PERFORMANCE,
|
||||
THERMAL_GENL_ATTR_CPU_CAPABILITY_EFFICIENCY,
|
||||
__THERMAL_GENL_ATTR_MAX,
|
||||
};
|
||||
#define THERMAL_GENL_ATTR_MAX (__THERMAL_GENL_ATTR_MAX - 1)
|
||||
@@ -71,6 +74,7 @@ enum thermal_genl_event {
|
||||
THERMAL_GENL_EVENT_CDEV_DELETE, /* Cdev unbound */
|
||||
THERMAL_GENL_EVENT_CDEV_STATE_UPDATE, /* Cdev state updated */
|
||||
THERMAL_GENL_EVENT_TZ_GOV_CHANGE, /* Governor policy changed */
|
||||
THERMAL_GENL_EVENT_CPU_CAPABILITY_CHANGE, /* CPU capability changed */
|
||||
__THERMAL_GENL_EVENT_MAX,
|
||||
};
|
||||
#define THERMAL_GENL_EVENT_MAX (__THERMAL_GENL_EVENT_MAX - 1)
|
||||
|
||||
@@ -6,8 +6,6 @@
|
||||
* 'tty.h' defines some structures used by tty_io.c and some defines.
|
||||
*/
|
||||
|
||||
#define NR_LDISCS 30
|
||||
|
||||
/* line disciplines */
|
||||
#define N_TTY 0
|
||||
#define N_SLIP 1
|
||||
@@ -39,5 +37,9 @@
|
||||
#define N_SPEAKUP 26 /* Speakup communication with synths */
|
||||
#define N_NULL 27 /* Null ldisc used for error handling */
|
||||
#define N_MCTP 28 /* MCTP-over-serial */
|
||||
#define N_DEVELOPMENT 29 /* Manual out-of-tree testing */
|
||||
|
||||
/* Always the newest line discipline + 1 */
|
||||
#define NR_LDISCS 30
|
||||
|
||||
#endif /* _UAPI_LINUX_TTY_H */
|
||||
|
||||
@@ -19,12 +19,12 @@
|
||||
* any application/library that wants linux/types.h.
|
||||
*/
|
||||
|
||||
/* sparse defines __CHECKER__; see Documentation/dev-tools/sparse.rst */
|
||||
#ifdef __CHECKER__
|
||||
#define __bitwise__ __attribute__((bitwise))
|
||||
#define __bitwise __attribute__((bitwise))
|
||||
#else
|
||||
#define __bitwise__
|
||||
#define __bitwise
|
||||
#endif
|
||||
#define __bitwise __bitwise__
|
||||
|
||||
typedef __u16 __bitwise __le16;
|
||||
typedef __u16 __bitwise __be16;
|
||||
|
||||
@@ -32,7 +32,8 @@
|
||||
UFFD_FEATURE_SIGBUS | \
|
||||
UFFD_FEATURE_THREAD_ID | \
|
||||
UFFD_FEATURE_MINOR_HUGETLBFS | \
|
||||
UFFD_FEATURE_MINOR_SHMEM)
|
||||
UFFD_FEATURE_MINOR_SHMEM | \
|
||||
UFFD_FEATURE_EXACT_ADDRESS)
|
||||
#define UFFD_API_IOCTLS \
|
||||
((__u64)1 << _UFFDIO_REGISTER | \
|
||||
(__u64)1 << _UFFDIO_UNREGISTER | \
|
||||
@@ -189,6 +190,10 @@ struct uffdio_api {
|
||||
*
|
||||
* UFFD_FEATURE_MINOR_SHMEM indicates the same support as
|
||||
* UFFD_FEATURE_MINOR_HUGETLBFS, but for shmem-backed pages instead.
|
||||
*
|
||||
* UFFD_FEATURE_EXACT_ADDRESS indicates that the exact address of page
|
||||
* faults would be provided and the offset within the page would not be
|
||||
* masked.
|
||||
*/
|
||||
#define UFFD_FEATURE_PAGEFAULT_FLAG_WP (1<<0)
|
||||
#define UFFD_FEATURE_EVENT_FORK (1<<1)
|
||||
@@ -201,6 +206,7 @@ struct uffdio_api {
|
||||
#define UFFD_FEATURE_THREAD_ID (1<<8)
|
||||
#define UFFD_FEATURE_MINOR_HUGETLBFS (1<<9)
|
||||
#define UFFD_FEATURE_MINOR_SHMEM (1<<10)
|
||||
#define UFFD_FEATURE_EXACT_ADDRESS (1<<11)
|
||||
__u64 features;
|
||||
|
||||
__u64 ioctls;
|
||||
|
||||
@@ -219,6 +219,12 @@ enum v4l2_colorfx {
|
||||
*/
|
||||
#define V4L2_CID_USER_ALLEGRO_BASE (V4L2_CID_USER_BASE + 0x1170)
|
||||
|
||||
/*
|
||||
* The base for the isl7998x driver controls.
|
||||
* We reserve 16 controls for this driver.
|
||||
*/
|
||||
#define V4L2_CID_USER_ISL7998X_BASE (V4L2_CID_USER_BASE + 0x1180)
|
||||
|
||||
/* MPEG-class control IDs */
|
||||
/* The MPEG controls are applicable to all codec controls
|
||||
* and the 'MPEG' part of the define is historical */
|
||||
@@ -1563,6 +1569,8 @@ struct v4l2_h264_dpb_entry {
|
||||
#define V4L2_H264_DECODE_PARAM_FLAG_IDR_PIC 0x01
|
||||
#define V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC 0x02
|
||||
#define V4L2_H264_DECODE_PARAM_FLAG_BOTTOM_FIELD 0x04
|
||||
#define V4L2_H264_DECODE_PARAM_FLAG_PFRAME 0x08
|
||||
#define V4L2_H264_DECODE_PARAM_FLAG_BFRAME 0x10
|
||||
|
||||
#define V4L2_CID_STATELESS_H264_DECODE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 7)
|
||||
/**
|
||||
|
||||
@@ -323,7 +323,7 @@ struct vfio_region_info_cap_type {
|
||||
#define VFIO_REGION_TYPE_PCI_VENDOR_MASK (0xffff)
|
||||
#define VFIO_REGION_TYPE_GFX (1)
|
||||
#define VFIO_REGION_TYPE_CCW (2)
|
||||
#define VFIO_REGION_TYPE_MIGRATION (3)
|
||||
#define VFIO_REGION_TYPE_MIGRATION_DEPRECATED (3)
|
||||
|
||||
/* sub-types for VFIO_REGION_TYPE_PCI_* */
|
||||
|
||||
@@ -405,225 +405,29 @@ struct vfio_region_gfx_edid {
|
||||
#define VFIO_REGION_SUBTYPE_CCW_CRW (3)
|
||||
|
||||
/* sub-types for VFIO_REGION_TYPE_MIGRATION */
|
||||
#define VFIO_REGION_SUBTYPE_MIGRATION (1)
|
||||
|
||||
/*
|
||||
* The structure vfio_device_migration_info is placed at the 0th offset of
|
||||
* the VFIO_REGION_SUBTYPE_MIGRATION region to get and set VFIO device related
|
||||
* migration information. Field accesses from this structure are only supported
|
||||
* at their native width and alignment. Otherwise, the result is undefined and
|
||||
* vendor drivers should return an error.
|
||||
*
|
||||
* device_state: (read/write)
|
||||
* - The user application writes to this field to inform the vendor driver
|
||||
* about the device state to be transitioned to.
|
||||
* - The vendor driver should take the necessary actions to change the
|
||||
* device state. After successful transition to a given state, the
|
||||
* vendor driver should return success on write(device_state, state)
|
||||
* system call. If the device state transition fails, the vendor driver
|
||||
* should return an appropriate -errno for the fault condition.
|
||||
* - On the user application side, if the device state transition fails,
|
||||
* that is, if write(device_state, state) returns an error, read
|
||||
* device_state again to determine the current state of the device from
|
||||
* the vendor driver.
|
||||
* - The vendor driver should return previous state of the device unless
|
||||
* the vendor driver has encountered an internal error, in which case
|
||||
* the vendor driver may report the device_state VFIO_DEVICE_STATE_ERROR.
|
||||
* - The user application must use the device reset ioctl to recover the
|
||||
* device from VFIO_DEVICE_STATE_ERROR state. If the device is
|
||||
* indicated to be in a valid device state by reading device_state, the
|
||||
* user application may attempt to transition the device to any valid
|
||||
* state reachable from the current state or terminate itself.
|
||||
*
|
||||
* device_state consists of 3 bits:
|
||||
* - If bit 0 is set, it indicates the _RUNNING state. If bit 0 is clear,
|
||||
* it indicates the _STOP state. When the device state is changed to
|
||||
* _STOP, driver should stop the device before write() returns.
|
||||
* - If bit 1 is set, it indicates the _SAVING state, which means that the
|
||||
* driver should start gathering device state information that will be
|
||||
* provided to the VFIO user application to save the device's state.
|
||||
* - If bit 2 is set, it indicates the _RESUMING state, which means that
|
||||
* the driver should prepare to resume the device. Data provided through
|
||||
* the migration region should be used to resume the device.
|
||||
* Bits 3 - 31 are reserved for future use. To preserve them, the user
|
||||
* application should perform a read-modify-write operation on this
|
||||
* field when modifying the specified bits.
|
||||
*
|
||||
* +------- _RESUMING
|
||||
* |+------ _SAVING
|
||||
* ||+----- _RUNNING
|
||||
* |||
|
||||
* 000b => Device Stopped, not saving or resuming
|
||||
* 001b => Device running, which is the default state
|
||||
* 010b => Stop the device & save the device state, stop-and-copy state
|
||||
* 011b => Device running and save the device state, pre-copy state
|
||||
* 100b => Device stopped and the device state is resuming
|
||||
* 101b => Invalid state
|
||||
* 110b => Error state
|
||||
* 111b => Invalid state
|
||||
*
|
||||
* State transitions:
|
||||
*
|
||||
* _RESUMING _RUNNING Pre-copy Stop-and-copy _STOP
|
||||
* (100b) (001b) (011b) (010b) (000b)
|
||||
* 0. Running or default state
|
||||
* |
|
||||
*
|
||||
* 1. Normal Shutdown (optional)
|
||||
* |------------------------------------->|
|
||||
*
|
||||
* 2. Save the state or suspend
|
||||
* |------------------------->|---------->|
|
||||
*
|
||||
* 3. Save the state during live migration
|
||||
* |----------->|------------>|---------->|
|
||||
*
|
||||
* 4. Resuming
|
||||
* |<---------|
|
||||
*
|
||||
* 5. Resumed
|
||||
* |--------->|
|
||||
*
|
||||
* 0. Default state of VFIO device is _RUNNING when the user application starts.
|
||||
* 1. During normal shutdown of the user application, the user application may
|
||||
* optionally change the VFIO device state from _RUNNING to _STOP. This
|
||||
* transition is optional. The vendor driver must support this transition but
|
||||
* must not require it.
|
||||
* 2. When the user application saves state or suspends the application, the
|
||||
* device state transitions from _RUNNING to stop-and-copy and then to _STOP.
|
||||
* On state transition from _RUNNING to stop-and-copy, driver must stop the
|
||||
* device, save the device state and send it to the application through the
|
||||
* migration region. The sequence to be followed for such transition is given
|
||||
* below.
|
||||
* 3. In live migration of user application, the state transitions from _RUNNING
|
||||
* to pre-copy, to stop-and-copy, and to _STOP.
|
||||
* On state transition from _RUNNING to pre-copy, the driver should start
|
||||
* gathering the device state while the application is still running and send
|
||||
* the device state data to application through the migration region.
|
||||
* On state transition from pre-copy to stop-and-copy, the driver must stop
|
||||
* the device, save the device state and send it to the user application
|
||||
* through the migration region.
|
||||
* Vendor drivers must support the pre-copy state even for implementations
|
||||
* where no data is provided to the user before the stop-and-copy state. The
|
||||
* user must not be required to consume all migration data before the device
|
||||
* transitions to a new state, including the stop-and-copy state.
|
||||
* The sequence to be followed for above two transitions is given below.
|
||||
* 4. To start the resuming phase, the device state should be transitioned from
|
||||
* the _RUNNING to the _RESUMING state.
|
||||
* In the _RESUMING state, the driver should use the device state data
|
||||
* received through the migration region to resume the device.
|
||||
* 5. After providing saved device data to the driver, the application should
|
||||
* change the state from _RESUMING to _RUNNING.
|
||||
*
|
||||
* reserved:
|
||||
* Reads on this field return zero and writes are ignored.
|
||||
*
|
||||
* pending_bytes: (read only)
|
||||
* The number of pending bytes still to be migrated from the vendor driver.
|
||||
*
|
||||
* data_offset: (read only)
|
||||
* The user application should read data_offset field from the migration
|
||||
* region. The user application should read the device data from this
|
||||
* offset within the migration region during the _SAVING state or write
|
||||
* the device data during the _RESUMING state. See below for details of
|
||||
* sequence to be followed.
|
||||
*
|
||||
* data_size: (read/write)
|
||||
* The user application should read data_size to get the size in bytes of
|
||||
* the data copied in the migration region during the _SAVING state and
|
||||
* write the size in bytes of the data copied in the migration region
|
||||
* during the _RESUMING state.
|
||||
*
|
||||
* The format of the migration region is as follows:
|
||||
* ------------------------------------------------------------------
|
||||
* |vfio_device_migration_info| data section |
|
||||
* | | /////////////////////////////// |
|
||||
* ------------------------------------------------------------------
|
||||
* ^ ^
|
||||
* offset 0-trapped part data_offset
|
||||
*
|
||||
* The structure vfio_device_migration_info is always followed by the data
|
||||
* section in the region, so data_offset will always be nonzero. The offset
|
||||
* from where the data is copied is decided by the kernel driver. The data
|
||||
* section can be trapped, mmapped, or partitioned, depending on how the kernel
|
||||
* driver defines the data section. The data section partition can be defined
|
||||
* as mapped by the sparse mmap capability. If mmapped, data_offset must be
|
||||
* page aligned, whereas initial section which contains the
|
||||
* vfio_device_migration_info structure, might not end at the offset, which is
|
||||
* page aligned. The user is not required to access through mmap regardless
|
||||
* of the capabilities of the region mmap.
|
||||
* The vendor driver should determine whether and how to partition the data
|
||||
* section. The vendor driver should return data_offset accordingly.
|
||||
*
|
||||
* The sequence to be followed while in pre-copy state and stop-and-copy state
|
||||
* is as follows:
|
||||
* a. Read pending_bytes, indicating the start of a new iteration to get device
|
||||
* data. Repeated read on pending_bytes at this stage should have no side
|
||||
* effects.
|
||||
* If pending_bytes == 0, the user application should not iterate to get data
|
||||
* for that device.
|
||||
* If pending_bytes > 0, perform the following steps.
|
||||
* b. Read data_offset, indicating that the vendor driver should make data
|
||||
* available through the data section. The vendor driver should return this
|
||||
* read operation only after data is available from (region + data_offset)
|
||||
* to (region + data_offset + data_size).
|
||||
* c. Read data_size, which is the amount of data in bytes available through
|
||||
* the migration region.
|
||||
* Read on data_offset and data_size should return the offset and size of
|
||||
* the current buffer if the user application reads data_offset and
|
||||
* data_size more than once here.
|
||||
* d. Read data_size bytes of data from (region + data_offset) from the
|
||||
* migration region.
|
||||
* e. Process the data.
|
||||
* f. Read pending_bytes, which indicates that the data from the previous
|
||||
* iteration has been read. If pending_bytes > 0, go to step b.
|
||||
*
|
||||
* The user application can transition from the _SAVING|_RUNNING
|
||||
* (pre-copy state) to the _SAVING (stop-and-copy) state regardless of the
|
||||
* number of pending bytes. The user application should iterate in _SAVING
|
||||
* (stop-and-copy) until pending_bytes is 0.
|
||||
*
|
||||
* The sequence to be followed while _RESUMING device state is as follows:
|
||||
* While data for this device is available, repeat the following steps:
|
||||
* a. Read data_offset from where the user application should write data.
|
||||
* b. Write migration data starting at the migration region + data_offset for
|
||||
* the length determined by data_size from the migration source.
|
||||
* c. Write data_size, which indicates to the vendor driver that data is
|
||||
* written in the migration region. Vendor driver must return this write
|
||||
* operations on consuming data. Vendor driver should apply the
|
||||
* user-provided migration region data to the device resume state.
|
||||
*
|
||||
* If an error occurs during the above sequences, the vendor driver can return
|
||||
* an error code for next read() or write() operation, which will terminate the
|
||||
* loop. The user application should then take the next necessary action, for
|
||||
* example, failing migration or terminating the user application.
|
||||
*
|
||||
* For the user application, data is opaque. The user application should write
|
||||
* data in the same order as the data is received and the data should be of
|
||||
* same transaction size at the source.
|
||||
*/
|
||||
#define VFIO_REGION_SUBTYPE_MIGRATION_DEPRECATED (1)
|
||||
|
||||
struct vfio_device_migration_info {
|
||||
__u32 device_state; /* VFIO device state */
|
||||
#define VFIO_DEVICE_STATE_STOP (0)
|
||||
#define VFIO_DEVICE_STATE_RUNNING (1 << 0)
|
||||
#define VFIO_DEVICE_STATE_SAVING (1 << 1)
|
||||
#define VFIO_DEVICE_STATE_RESUMING (1 << 2)
|
||||
#define VFIO_DEVICE_STATE_MASK (VFIO_DEVICE_STATE_RUNNING | \
|
||||
VFIO_DEVICE_STATE_SAVING | \
|
||||
VFIO_DEVICE_STATE_RESUMING)
|
||||
#define VFIO_DEVICE_STATE_V1_STOP (0)
|
||||
#define VFIO_DEVICE_STATE_V1_RUNNING (1 << 0)
|
||||
#define VFIO_DEVICE_STATE_V1_SAVING (1 << 1)
|
||||
#define VFIO_DEVICE_STATE_V1_RESUMING (1 << 2)
|
||||
#define VFIO_DEVICE_STATE_MASK (VFIO_DEVICE_STATE_V1_RUNNING | \
|
||||
VFIO_DEVICE_STATE_V1_SAVING | \
|
||||
VFIO_DEVICE_STATE_V1_RESUMING)
|
||||
|
||||
#define VFIO_DEVICE_STATE_VALID(state) \
|
||||
(state & VFIO_DEVICE_STATE_RESUMING ? \
|
||||
(state & VFIO_DEVICE_STATE_MASK) == VFIO_DEVICE_STATE_RESUMING : 1)
|
||||
(state & VFIO_DEVICE_STATE_V1_RESUMING ? \
|
||||
(state & VFIO_DEVICE_STATE_MASK) == VFIO_DEVICE_STATE_V1_RESUMING : 1)
|
||||
|
||||
#define VFIO_DEVICE_STATE_IS_ERROR(state) \
|
||||
((state & VFIO_DEVICE_STATE_MASK) == (VFIO_DEVICE_STATE_SAVING | \
|
||||
VFIO_DEVICE_STATE_RESUMING))
|
||||
((state & VFIO_DEVICE_STATE_MASK) == (VFIO_DEVICE_STATE_V1_SAVING | \
|
||||
VFIO_DEVICE_STATE_V1_RESUMING))
|
||||
|
||||
#define VFIO_DEVICE_STATE_SET_ERROR(state) \
|
||||
((state & ~VFIO_DEVICE_STATE_MASK) | VFIO_DEVICE_SATE_SAVING | \
|
||||
VFIO_DEVICE_STATE_RESUMING)
|
||||
((state & ~VFIO_DEVICE_STATE_MASK) | VFIO_DEVICE_STATE_V1_SAVING | \
|
||||
VFIO_DEVICE_STATE_V1_RESUMING)
|
||||
|
||||
__u32 reserved;
|
||||
__u64 pending_bytes;
|
||||
@@ -1002,6 +806,186 @@ struct vfio_device_feature {
|
||||
*/
|
||||
#define VFIO_DEVICE_FEATURE_PCI_VF_TOKEN (0)
|
||||
|
||||
/*
|
||||
* Indicates the device can support the migration API through
|
||||
* VFIO_DEVICE_FEATURE_MIG_DEVICE_STATE. If this GET succeeds, the RUNNING and
|
||||
* ERROR states are always supported. Support for additional states is
|
||||
* indicated via the flags field; at least VFIO_MIGRATION_STOP_COPY must be
|
||||
* set.
|
||||
*
|
||||
* VFIO_MIGRATION_STOP_COPY means that STOP, STOP_COPY and
|
||||
* RESUMING are supported.
|
||||
*
|
||||
* VFIO_MIGRATION_STOP_COPY | VFIO_MIGRATION_P2P means that RUNNING_P2P
|
||||
* is supported in addition to the STOP_COPY states.
|
||||
*
|
||||
* Other combinations of flags have behavior to be defined in the future.
|
||||
*/
|
||||
struct vfio_device_feature_migration {
|
||||
__aligned_u64 flags;
|
||||
#define VFIO_MIGRATION_STOP_COPY (1 << 0)
|
||||
#define VFIO_MIGRATION_P2P (1 << 1)
|
||||
};
|
||||
#define VFIO_DEVICE_FEATURE_MIGRATION 1
|
||||
|
||||
/*
|
||||
* Upon VFIO_DEVICE_FEATURE_SET, execute a migration state change on the VFIO
|
||||
* device. The new state is supplied in device_state, see enum
|
||||
* vfio_device_mig_state for details
|
||||
*
|
||||
* The kernel migration driver must fully transition the device to the new state
|
||||
* value before the operation returns to the user.
|
||||
*
|
||||
* The kernel migration driver must not generate asynchronous device state
|
||||
* transitions outside of manipulation by the user or the VFIO_DEVICE_RESET
|
||||
* ioctl as described above.
|
||||
*
|
||||
* If this function fails then current device_state may be the original
|
||||
* operating state or some other state along the combination transition path.
|
||||
* The user can then decide if it should execute a VFIO_DEVICE_RESET, attempt
|
||||
* to return to the original state, or attempt to return to some other state
|
||||
* such as RUNNING or STOP.
|
||||
*
|
||||
* If the new_state starts a new data transfer session then the FD associated
|
||||
* with that session is returned in data_fd. The user is responsible to close
|
||||
* this FD when it is finished. The user must consider the migration data stream
|
||||
* carried over the FD to be opaque and must preserve the byte order of the
|
||||
* stream. The user is not required to preserve buffer segmentation when writing
|
||||
* the data stream during the RESUMING operation.
|
||||
*
|
||||
* Upon VFIO_DEVICE_FEATURE_GET, get the current migration state of the VFIO
|
||||
* device, data_fd will be -1.
|
||||
*/
|
||||
struct vfio_device_feature_mig_state {
|
||||
__u32 device_state; /* From enum vfio_device_mig_state */
|
||||
__s32 data_fd;
|
||||
};
|
||||
#define VFIO_DEVICE_FEATURE_MIG_DEVICE_STATE 2
|
||||
|
||||
/*
|
||||
* The device migration Finite State Machine is described by the enum
|
||||
* vfio_device_mig_state. Some of the FSM arcs will create a migration data
|
||||
* transfer session by returning a FD, in this case the migration data will
|
||||
* flow over the FD using read() and write() as discussed below.
|
||||
*
|
||||
* There are 5 states to support VFIO_MIGRATION_STOP_COPY:
|
||||
* RUNNING - The device is running normally
|
||||
* STOP - The device does not change the internal or external state
|
||||
* STOP_COPY - The device internal state can be read out
|
||||
* RESUMING - The device is stopped and is loading a new internal state
|
||||
* ERROR - The device has failed and must be reset
|
||||
*
|
||||
* And 1 optional state to support VFIO_MIGRATION_P2P:
|
||||
* RUNNING_P2P - RUNNING, except the device cannot do peer to peer DMA
|
||||
*
|
||||
* The FSM takes actions on the arcs between FSM states. The driver implements
|
||||
* the following behavior for the FSM arcs:
|
||||
*
|
||||
* RUNNING_P2P -> STOP
|
||||
* STOP_COPY -> STOP
|
||||
* While in STOP the device must stop the operation of the device. The device
|
||||
* must not generate interrupts, DMA, or any other change to external state.
|
||||
* It must not change its internal state. When stopped the device and kernel
|
||||
* migration driver must accept and respond to interaction to support external
|
||||
* subsystems in the STOP state, for example PCI MSI-X and PCI config space.
|
||||
* Failure by the user to restrict device access while in STOP must not result
|
||||
* in error conditions outside the user context (ex. host system faults).
|
||||
*
|
||||
* The STOP_COPY arc will terminate a data transfer session.
|
||||
*
|
||||
* RESUMING -> STOP
|
||||
* Leaving RESUMING terminates a data transfer session and indicates the
|
||||
* device should complete processing of the data delivered by write(). The
|
||||
* kernel migration driver should complete the incorporation of data written
|
||||
* to the data transfer FD into the device internal state and perform
|
||||
* final validity and consistency checking of the new device state. If the
|
||||
* user provided data is found to be incomplete, inconsistent, or otherwise
|
||||
* invalid, the migration driver must fail the SET_STATE ioctl and
|
||||
* optionally go to the ERROR state as described below.
|
||||
*
|
||||
* While in STOP the device has the same behavior as other STOP states
|
||||
* described above.
|
||||
*
|
||||
* To abort a RESUMING session the device must be reset.
|
||||
*
|
||||
* RUNNING_P2P -> RUNNING
|
||||
* While in RUNNING the device is fully operational, the device may generate
|
||||
* interrupts, DMA, respond to MMIO, all vfio device regions are functional,
|
||||
* and the device may advance its internal state.
|
||||
*
|
||||
* RUNNING -> RUNNING_P2P
|
||||
* STOP -> RUNNING_P2P
|
||||
* While in RUNNING_P2P the device is partially running in the P2P quiescent
|
||||
* state defined below.
|
||||
*
|
||||
* STOP -> STOP_COPY
|
||||
* This arc begin the process of saving the device state and will return a
|
||||
* new data_fd.
|
||||
*
|
||||
* While in the STOP_COPY state the device has the same behavior as STOP
|
||||
* with the addition that the data transfers session continues to stream the
|
||||
* migration state. End of stream on the FD indicates the entire device
|
||||
* state has been transferred.
|
||||
*
|
||||
* The user should take steps to restrict access to vfio device regions while
|
||||
* the device is in STOP_COPY or risk corruption of the device migration data
|
||||
* stream.
|
||||
*
|
||||
* STOP -> RESUMING
|
||||
* Entering the RESUMING state starts a process of restoring the device state
|
||||
* and will return a new data_fd. The data stream fed into the data_fd should
|
||||
* be taken from the data transfer output of a single FD during saving from
|
||||
* a compatible device. The migration driver may alter/reset the internal
|
||||
* device state for this arc if required to prepare the device to receive the
|
||||
* migration data.
|
||||
*
|
||||
* any -> ERROR
|
||||
* ERROR cannot be specified as a device state, however any transition request
|
||||
* can be failed with an errno return and may then move the device_state into
|
||||
* ERROR. In this case the device was unable to execute the requested arc and
|
||||
* was also unable to restore the device to any valid device_state.
|
||||
* To recover from ERROR VFIO_DEVICE_RESET must be used to return the
|
||||
* device_state back to RUNNING.
|
||||
*
|
||||
* The optional peer to peer (P2P) quiescent state is intended to be a quiescent
|
||||
* state for the device for the purposes of managing multiple devices within a
|
||||
* user context where peer-to-peer DMA between devices may be active. The
|
||||
* RUNNING_P2P states must prevent the device from initiating
|
||||
* any new P2P DMA transactions. If the device can identify P2P transactions
|
||||
* then it can stop only P2P DMA, otherwise it must stop all DMA. The migration
|
||||
* driver must complete any such outstanding operations prior to completing the
|
||||
* FSM arc into a P2P state. For the purpose of specification the states
|
||||
* behave as though the device was fully running if not supported. Like while in
|
||||
* STOP or STOP_COPY the user must not touch the device, otherwise the state
|
||||
* can be exited.
|
||||
*
|
||||
* The remaining possible transitions are interpreted as combinations of the
|
||||
* above FSM arcs. As there are multiple paths through the FSM arcs the path
|
||||
* should be selected based on the following rules:
|
||||
* - Select the shortest path.
|
||||
* Refer to vfio_mig_get_next_state() for the result of the algorithm.
|
||||
*
|
||||
* The automatic transit through the FSM arcs that make up the combination
|
||||
* transition is invisible to the user. When working with combination arcs the
|
||||
* user may see any step along the path in the device_state if SET_STATE
|
||||
* fails. When handling these types of errors users should anticipate future
|
||||
* revisions of this protocol using new states and those states becoming
|
||||
* visible in this case.
|
||||
*
|
||||
* The optional states cannot be used with SET_STATE if the device does not
|
||||
* support them. The user can discover if these states are supported by using
|
||||
* VFIO_DEVICE_FEATURE_MIGRATION. By using combination transitions the user can
|
||||
* avoid knowing about these optional states if the kernel driver supports them.
|
||||
*/
|
||||
enum vfio_device_mig_state {
|
||||
VFIO_DEVICE_STATE_ERROR = 0,
|
||||
VFIO_DEVICE_STATE_STOP = 1,
|
||||
VFIO_DEVICE_STATE_RUNNING = 2,
|
||||
VFIO_DEVICE_STATE_STOP_COPY = 3,
|
||||
VFIO_DEVICE_STATE_RESUMING = 4,
|
||||
VFIO_DEVICE_STATE_RUNNING_P2P = 5,
|
||||
};
|
||||
|
||||
/* -------- API for Type1 VFIO IOMMU -------- */
|
||||
|
||||
/**
|
||||
|
||||
@@ -150,4 +150,11 @@
|
||||
/* Get the valid iova range */
|
||||
#define VHOST_VDPA_GET_IOVA_RANGE _IOR(VHOST_VIRTIO, 0x78, \
|
||||
struct vhost_vdpa_iova_range)
|
||||
|
||||
/* Get the config size */
|
||||
#define VHOST_VDPA_GET_CONFIG_SIZE _IOR(VHOST_VIRTIO, 0x79, __u32)
|
||||
|
||||
/* Get the count of all virtqueues */
|
||||
#define VHOST_VDPA_GET_VQS_COUNT _IOR(VHOST_VIRTIO, 0x80, __u32)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -632,6 +632,8 @@ struct v4l2_pix_format {
|
||||
/* Tiled YUV formats, non contiguous planes */
|
||||
#define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 64x32 tiles */
|
||||
#define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 16x16 tiles */
|
||||
#define V4L2_PIX_FMT_NV12M_8L128 v4l2_fourcc('N', 'A', '1', '2') /* Y/CbCr 4:2:0 8x128 tiles */
|
||||
#define V4L2_PIX_FMT_NV12M_10BE_8L128 v4l2_fourcc_be('N', 'T', '1', '2') /* Y/CbCr 4:2:0 10-bit 8x128 tiles */
|
||||
|
||||
/* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */
|
||||
#define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */
|
||||
|
||||
@@ -82,6 +82,12 @@
|
||||
/* This feature indicates support for the packed virtqueue layout. */
|
||||
#define VIRTIO_F_RING_PACKED 34
|
||||
|
||||
/*
|
||||
* Inorder feature indicates that all buffers are used by the device
|
||||
* in the same order in which they have been made available.
|
||||
*/
|
||||
#define VIRTIO_F_IN_ORDER 35
|
||||
|
||||
/*
|
||||
* This feature indicates that memory accesses by the driver and the
|
||||
* device are ordered in a way described by the platform.
|
||||
|
||||
@@ -37,6 +37,7 @@
|
||||
#define VIRTIO_CRYPTO_SERVICE_HASH 1
|
||||
#define VIRTIO_CRYPTO_SERVICE_MAC 2
|
||||
#define VIRTIO_CRYPTO_SERVICE_AEAD 3
|
||||
#define VIRTIO_CRYPTO_SERVICE_AKCIPHER 4
|
||||
|
||||
#define VIRTIO_CRYPTO_OPCODE(service, op) (((service) << 8) | (op))
|
||||
|
||||
@@ -57,6 +58,10 @@ struct virtio_crypto_ctrl_header {
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x02)
|
||||
#define VIRTIO_CRYPTO_AEAD_DESTROY_SESSION \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x03)
|
||||
#define VIRTIO_CRYPTO_AKCIPHER_CREATE_SESSION \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x04)
|
||||
#define VIRTIO_CRYPTO_AKCIPHER_DESTROY_SESSION \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x05)
|
||||
__le32 opcode;
|
||||
__le32 algo;
|
||||
__le32 flag;
|
||||
@@ -180,6 +185,58 @@ struct virtio_crypto_aead_create_session_req {
|
||||
__u8 padding[32];
|
||||
};
|
||||
|
||||
struct virtio_crypto_rsa_session_para {
|
||||
#define VIRTIO_CRYPTO_RSA_RAW_PADDING 0
|
||||
#define VIRTIO_CRYPTO_RSA_PKCS1_PADDING 1
|
||||
__le32 padding_algo;
|
||||
|
||||
#define VIRTIO_CRYPTO_RSA_NO_HASH 0
|
||||
#define VIRTIO_CRYPTO_RSA_MD2 1
|
||||
#define VIRTIO_CRYPTO_RSA_MD3 2
|
||||
#define VIRTIO_CRYPTO_RSA_MD4 3
|
||||
#define VIRTIO_CRYPTO_RSA_MD5 4
|
||||
#define VIRTIO_CRYPTO_RSA_SHA1 5
|
||||
#define VIRTIO_CRYPTO_RSA_SHA256 6
|
||||
#define VIRTIO_CRYPTO_RSA_SHA384 7
|
||||
#define VIRTIO_CRYPTO_RSA_SHA512 8
|
||||
#define VIRTIO_CRYPTO_RSA_SHA224 9
|
||||
__le32 hash_algo;
|
||||
};
|
||||
|
||||
struct virtio_crypto_ecdsa_session_para {
|
||||
#define VIRTIO_CRYPTO_CURVE_UNKNOWN 0
|
||||
#define VIRTIO_CRYPTO_CURVE_NIST_P192 1
|
||||
#define VIRTIO_CRYPTO_CURVE_NIST_P224 2
|
||||
#define VIRTIO_CRYPTO_CURVE_NIST_P256 3
|
||||
#define VIRTIO_CRYPTO_CURVE_NIST_P384 4
|
||||
#define VIRTIO_CRYPTO_CURVE_NIST_P521 5
|
||||
__le32 curve_id;
|
||||
__le32 padding;
|
||||
};
|
||||
|
||||
struct virtio_crypto_akcipher_session_para {
|
||||
#define VIRTIO_CRYPTO_NO_AKCIPHER 0
|
||||
#define VIRTIO_CRYPTO_AKCIPHER_RSA 1
|
||||
#define VIRTIO_CRYPTO_AKCIPHER_DSA 2
|
||||
#define VIRTIO_CRYPTO_AKCIPHER_ECDSA 3
|
||||
__le32 algo;
|
||||
|
||||
#define VIRTIO_CRYPTO_AKCIPHER_KEY_TYPE_PUBLIC 1
|
||||
#define VIRTIO_CRYPTO_AKCIPHER_KEY_TYPE_PRIVATE 2
|
||||
__le32 keytype;
|
||||
__le32 keylen;
|
||||
|
||||
union {
|
||||
struct virtio_crypto_rsa_session_para rsa;
|
||||
struct virtio_crypto_ecdsa_session_para ecdsa;
|
||||
} u;
|
||||
};
|
||||
|
||||
struct virtio_crypto_akcipher_create_session_req {
|
||||
struct virtio_crypto_akcipher_session_para para;
|
||||
__u8 padding[36];
|
||||
};
|
||||
|
||||
struct virtio_crypto_alg_chain_session_para {
|
||||
#define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_HASH_THEN_CIPHER 1
|
||||
#define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_CIPHER_THEN_HASH 2
|
||||
@@ -247,6 +304,8 @@ struct virtio_crypto_op_ctrl_req {
|
||||
mac_create_session;
|
||||
struct virtio_crypto_aead_create_session_req
|
||||
aead_create_session;
|
||||
struct virtio_crypto_akcipher_create_session_req
|
||||
akcipher_create_session;
|
||||
struct virtio_crypto_destroy_session_req
|
||||
destroy_session;
|
||||
__u8 padding[56];
|
||||
@@ -266,6 +325,14 @@ struct virtio_crypto_op_header {
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x00)
|
||||
#define VIRTIO_CRYPTO_AEAD_DECRYPT \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x01)
|
||||
#define VIRTIO_CRYPTO_AKCIPHER_ENCRYPT \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x00)
|
||||
#define VIRTIO_CRYPTO_AKCIPHER_DECRYPT \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x01)
|
||||
#define VIRTIO_CRYPTO_AKCIPHER_SIGN \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x02)
|
||||
#define VIRTIO_CRYPTO_AKCIPHER_VERIFY \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AKCIPHER, 0x03)
|
||||
__le32 opcode;
|
||||
/* algo should be service-specific algorithms */
|
||||
__le32 algo;
|
||||
@@ -390,6 +457,16 @@ struct virtio_crypto_aead_data_req {
|
||||
__u8 padding[32];
|
||||
};
|
||||
|
||||
struct virtio_crypto_akcipher_para {
|
||||
__le32 src_data_len;
|
||||
__le32 dst_data_len;
|
||||
};
|
||||
|
||||
struct virtio_crypto_akcipher_data_req {
|
||||
struct virtio_crypto_akcipher_para para;
|
||||
__u8 padding[40];
|
||||
};
|
||||
|
||||
/* The request of the data virtqueue's packet */
|
||||
struct virtio_crypto_op_data_req {
|
||||
struct virtio_crypto_op_header header;
|
||||
@@ -399,6 +476,7 @@ struct virtio_crypto_op_data_req {
|
||||
struct virtio_crypto_hash_data_req hash_req;
|
||||
struct virtio_crypto_mac_data_req mac_req;
|
||||
struct virtio_crypto_aead_data_req aead_req;
|
||||
struct virtio_crypto_akcipher_data_req akcipher_req;
|
||||
__u8 padding[48];
|
||||
} u;
|
||||
};
|
||||
@@ -408,6 +486,8 @@ struct virtio_crypto_op_data_req {
|
||||
#define VIRTIO_CRYPTO_BADMSG 2
|
||||
#define VIRTIO_CRYPTO_NOTSUPP 3
|
||||
#define VIRTIO_CRYPTO_INVSESS 4 /* Invalid session id */
|
||||
#define VIRTIO_CRYPTO_NOSPC 5 /* no free session ID */
|
||||
#define VIRTIO_CRYPTO_KEY_REJECTED 6 /* Signature verification failed */
|
||||
|
||||
/* The accelerator hardware is ready */
|
||||
#define VIRTIO_CRYPTO_S_HW_READY (1 << 0)
|
||||
@@ -438,7 +518,7 @@ struct virtio_crypto_config {
|
||||
__le32 max_cipher_key_len;
|
||||
/* Maximum length of authenticated key */
|
||||
__le32 max_auth_key_len;
|
||||
__le32 reserve;
|
||||
__le32 akcipher_algo;
|
||||
/* Maximum size of each crypto request's content */
|
||||
__le64 max_size;
|
||||
};
|
||||
|
||||
@@ -511,6 +511,12 @@ struct xfrm_user_offload {
|
||||
int ifindex;
|
||||
__u8 flags;
|
||||
};
|
||||
/* This flag was exposed without any kernel code that supporting it.
|
||||
* Unfortunately, strongswan has the code that uses sets this flag,
|
||||
* which makes impossible to reuse this bit.
|
||||
*
|
||||
* So leave it here to make sure that it won't be reused by mistake.
|
||||
*/
|
||||
#define XFRM_OFFLOAD_IPV6 1
|
||||
#define XFRM_OFFLOAD_INBOUND 2
|
||||
|
||||
|
||||
@@ -13,12 +13,64 @@
|
||||
#define FASTRPC_IOCTL_MMAP _IOWR('R', 6, struct fastrpc_req_mmap)
|
||||
#define FASTRPC_IOCTL_MUNMAP _IOWR('R', 7, struct fastrpc_req_munmap)
|
||||
#define FASTRPC_IOCTL_INIT_ATTACH_SNS _IO('R', 8)
|
||||
#define FASTRPC_IOCTL_MEM_MAP _IOWR('R', 10, struct fastrpc_mem_map)
|
||||
#define FASTRPC_IOCTL_MEM_UNMAP _IOWR('R', 11, struct fastrpc_mem_unmap)
|
||||
#define FASTRPC_IOCTL_GET_DSP_INFO _IOWR('R', 13, struct fastrpc_ioctl_capability)
|
||||
|
||||
/**
|
||||
* enum fastrpc_map_flags - control flags for mapping memory on DSP user process
|
||||
* @FASTRPC_MAP_STATIC: Map memory pages with RW- permission and CACHE WRITEBACK.
|
||||
* The driver is responsible for cache maintenance when passed
|
||||
* the buffer to FastRPC calls. Same virtual address will be
|
||||
* assigned for subsequent FastRPC calls.
|
||||
* @FASTRPC_MAP_RESERVED: Reserved
|
||||
* @FASTRPC_MAP_FD: Map memory pages with RW- permission and CACHE WRITEBACK.
|
||||
* Mapping tagged with a file descriptor. User is responsible for
|
||||
* CPU and DSP cache maintenance for the buffer. Get virtual address
|
||||
* of buffer on DSP using HAP_mmap_get() and HAP_mmap_put() APIs.
|
||||
* @FASTRPC_MAP_FD_DELAYED: Mapping delayed until user call HAP_mmap() and HAP_munmap()
|
||||
* functions on DSP. It is useful to map a buffer with cache modes
|
||||
* other than default modes. User is responsible for CPU and DSP
|
||||
* cache maintenance for the buffer.
|
||||
* @FASTRPC_MAP_FD_NOMAP: This flag is used to skip CPU mapping,
|
||||
* otherwise behaves similar to FASTRPC_MAP_FD_DELAYED flag.
|
||||
* @FASTRPC_MAP_MAX: max count for flags
|
||||
*
|
||||
*/
|
||||
enum fastrpc_map_flags {
|
||||
FASTRPC_MAP_STATIC = 0,
|
||||
FASTRPC_MAP_RESERVED,
|
||||
FASTRPC_MAP_FD = 2,
|
||||
FASTRPC_MAP_FD_DELAYED,
|
||||
FASTRPC_MAP_FD_NOMAP = 16,
|
||||
FASTRPC_MAP_MAX,
|
||||
};
|
||||
|
||||
enum fastrpc_proc_attr {
|
||||
/* Macro for Debug attr */
|
||||
FASTRPC_MODE_DEBUG = (1 << 0),
|
||||
/* Macro for Ptrace */
|
||||
FASTRPC_MODE_PTRACE = (1 << 1),
|
||||
/* Macro for CRC Check */
|
||||
FASTRPC_MODE_CRC = (1 << 2),
|
||||
/* Macro for Unsigned PD */
|
||||
FASTRPC_MODE_UNSIGNED_MODULE = (1 << 3),
|
||||
/* Macro for Adaptive QoS */
|
||||
FASTRPC_MODE_ADAPTIVE_QOS = (1 << 4),
|
||||
/* Macro for System Process */
|
||||
FASTRPC_MODE_SYSTEM_PROCESS = (1 << 5),
|
||||
/* Macro for Prvileged Process */
|
||||
FASTRPC_MODE_PRIVILEGED = (1 << 6),
|
||||
};
|
||||
|
||||
/* Fastrpc attribute for memory protection of buffers */
|
||||
#define FASTRPC_ATTR_SECUREMAP (1)
|
||||
|
||||
struct fastrpc_invoke_args {
|
||||
__u64 ptr;
|
||||
__u64 length;
|
||||
__s32 fd;
|
||||
__u32 reserved;
|
||||
__u32 attr;
|
||||
};
|
||||
|
||||
struct fastrpc_invoke {
|
||||
@@ -49,9 +101,36 @@ struct fastrpc_req_mmap {
|
||||
__u64 vaddrout; /* dsp virtual address */
|
||||
};
|
||||
|
||||
struct fastrpc_mem_map {
|
||||
__s32 version;
|
||||
__s32 fd; /* fd */
|
||||
__s32 offset; /* buffer offset */
|
||||
__u32 flags; /* flags defined in enum fastrpc_map_flags */
|
||||
__u64 vaddrin; /* buffer virtual address */
|
||||
__u64 length; /* buffer length */
|
||||
__u64 vaddrout; /* [out] remote virtual address */
|
||||
__s32 attrs; /* buffer attributes used for SMMU mapping */
|
||||
__s32 reserved[4];
|
||||
};
|
||||
|
||||
struct fastrpc_req_munmap {
|
||||
__u64 vaddrout; /* address to unmap */
|
||||
__u64 size; /* size */
|
||||
};
|
||||
|
||||
struct fastrpc_mem_unmap {
|
||||
__s32 vesion;
|
||||
__s32 fd; /* fd */
|
||||
__u64 vaddr; /* remote process (dsp) virtual address */
|
||||
__u64 length; /* buffer size */
|
||||
__s32 reserved[5];
|
||||
};
|
||||
|
||||
struct fastrpc_ioctl_capability {
|
||||
__u32 domain;
|
||||
__u32 attribute_id;
|
||||
__u32 capability; /* dsp capability */
|
||||
__u32 reserved[4];
|
||||
};
|
||||
|
||||
#endif /* __QCOM_FASTRPC_H__ */
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
|
||||
*
|
||||
* Copyright 2016-2020 HabanaLabs, Ltd.
|
||||
* Copyright 2016-2022 HabanaLabs, Ltd.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
*/
|
||||
@@ -30,6 +30,9 @@
|
||||
*/
|
||||
#define GAUDI_FIRST_AVAILABLE_W_S_MONITOR 72
|
||||
|
||||
/* Max number of elements in timestamps registration buffers */
|
||||
#define TS_MAX_ELEMENTS_NUM (1 << 20) /* 1MB */
|
||||
|
||||
/*
|
||||
* Goya queue Numbering
|
||||
*
|
||||
@@ -404,6 +407,8 @@ enum hl_server_type {
|
||||
* @cpucp_version: The CPUCP f/w version.
|
||||
* @card_name: The card name as passed by the f/w.
|
||||
* @dram_page_size: The DRAM physical page size.
|
||||
* @number_of_user_interrupts: The number of interrupts that are available to the userspace
|
||||
* application to use. Relevant for Gaudi2 and later.
|
||||
*/
|
||||
struct hl_info_hw_ip_info {
|
||||
__u64 sram_base_address;
|
||||
@@ -428,6 +433,9 @@ struct hl_info_hw_ip_info {
|
||||
__u8 card_name[HL_INFO_CARD_NAME_MAX_LEN];
|
||||
__u64 reserved2;
|
||||
__u64 dram_page_size;
|
||||
__u32 reserved3;
|
||||
__u16 number_of_user_interrupts;
|
||||
__u16 pad2;
|
||||
};
|
||||
|
||||
struct hl_info_dram_usage {
|
||||
@@ -690,10 +698,12 @@ struct hl_cb_in {
|
||||
__u64 cb_handle;
|
||||
/* HL_CB_OP_* */
|
||||
__u32 op;
|
||||
|
||||
/* Size of CB. Maximum size is HL_MAX_CB_SIZE. The minimum size that
|
||||
* will be allocated, regardless of this parameter's value, is PAGE_SIZE
|
||||
*/
|
||||
__u32 cb_size;
|
||||
|
||||
/* Context ID - Currently not in use */
|
||||
__u32 ctx_id;
|
||||
/* HL_CB_FLAGS_* */
|
||||
@@ -959,6 +969,7 @@ union hl_cs_args {
|
||||
#define HL_WAIT_CS_FLAGS_INTERRUPT_MASK 0xFFF00000
|
||||
#define HL_WAIT_CS_FLAGS_MULTI_CS 0x4
|
||||
#define HL_WAIT_CS_FLAGS_INTERRUPT_KERNEL_CQ 0x10
|
||||
#define HL_WAIT_CS_FLAGS_REGISTER_INTERRUPT 0x20
|
||||
|
||||
#define HL_WAIT_MULTI_CS_LIST_MAX_LEN 32
|
||||
|
||||
@@ -1031,6 +1042,20 @@ struct hl_wait_cs_in {
|
||||
* relevant only when HL_WAIT_CS_FLAGS_INTERRUPT_KERNEL_CQ is set
|
||||
*/
|
||||
__u64 cq_counters_offset;
|
||||
|
||||
/*
|
||||
* Timestamp_handle timestamps buffer handle.
|
||||
* relevant only when HL_WAIT_CS_FLAGS_REGISTER_INTERRUPT is set
|
||||
*/
|
||||
__u64 timestamp_handle;
|
||||
|
||||
/*
|
||||
* Timestamp_offset is offset inside the timestamp buffer pointed by timestamp_handle above.
|
||||
* upon interrupt, if the cq reached the target value then driver will write
|
||||
* timestamp to this offset.
|
||||
* relevant only when HL_WAIT_CS_FLAGS_REGISTER_INTERRUPT is set
|
||||
*/
|
||||
__u64 timestamp_offset;
|
||||
};
|
||||
|
||||
#define HL_WAIT_CS_STATUS_COMPLETED 0
|
||||
@@ -1077,100 +1102,119 @@ union hl_wait_cs_args {
|
||||
*/
|
||||
#define HL_MEM_OP_EXPORT_DMABUF_FD 5
|
||||
|
||||
/* Opcode to create timestamps pool for user interrupts registration support
|
||||
* The memory will be allocated by the kernel driver, A timestamp buffer which the user
|
||||
* will get handle to it for mmap, and another internal buffer used by the
|
||||
* driver for registration management
|
||||
* The memory will be freed when the user closes the file descriptor(ctx close)
|
||||
*/
|
||||
#define HL_MEM_OP_TS_ALLOC 6
|
||||
|
||||
/* Memory flags */
|
||||
#define HL_MEM_CONTIGUOUS 0x1
|
||||
#define HL_MEM_SHARED 0x2
|
||||
#define HL_MEM_USERPTR 0x4
|
||||
#define HL_MEM_FORCE_HINT 0x8
|
||||
|
||||
/**
|
||||
* structure hl_mem_in - structure that handle input args for memory IOCTL
|
||||
* @union arg: union of structures to be used based on the input operation
|
||||
* @op: specify the requested memory operation (one of the HL_MEM_OP_* definitions).
|
||||
* @flags: flags for the memory operation (one of the HL_MEM_* definitions).
|
||||
* For the HL_MEM_OP_EXPORT_DMABUF_FD opcode, this field holds the DMA-BUF file/FD flags.
|
||||
* @ctx_id: context ID - currently not in use.
|
||||
* @num_of_elements: number of timestamp elements used only with HL_MEM_OP_TS_ALLOC opcode.
|
||||
*/
|
||||
struct hl_mem_in {
|
||||
union {
|
||||
/* HL_MEM_OP_ALLOC- allocate device memory */
|
||||
/**
|
||||
* structure for device memory allocation (used with the HL_MEM_OP_ALLOC op)
|
||||
* @mem_size: memory size to allocate
|
||||
* @page_size: page size to use on allocation. when the value is 0 the default page
|
||||
* size will be taken.
|
||||
*/
|
||||
struct {
|
||||
/* Size to alloc */
|
||||
__u64 mem_size;
|
||||
__u64 page_size;
|
||||
} alloc;
|
||||
|
||||
/* HL_MEM_OP_FREE - free device memory */
|
||||
/**
|
||||
* structure for free-ing device memory (used with the HL_MEM_OP_FREE op)
|
||||
* @handle: handle returned from HL_MEM_OP_ALLOC
|
||||
*/
|
||||
struct {
|
||||
/* Handle returned from HL_MEM_OP_ALLOC */
|
||||
__u64 handle;
|
||||
} free;
|
||||
|
||||
/* HL_MEM_OP_MAP - map device memory */
|
||||
/**
|
||||
* structure for mapping device memory (used with the HL_MEM_OP_MAP op)
|
||||
* @hint_addr: requested virtual address of mapped memory.
|
||||
* the driver will try to map the requested region to this hint
|
||||
* address, as long as the address is valid and not already mapped.
|
||||
* the user should check the returned address of the IOCTL to make
|
||||
* sure he got the hint address.
|
||||
* passing 0 here means that the driver will choose the address itself.
|
||||
* @handle: handle returned from HL_MEM_OP_ALLOC.
|
||||
*/
|
||||
struct {
|
||||
/*
|
||||
* Requested virtual address of mapped memory.
|
||||
* The driver will try to map the requested region to
|
||||
* this hint address, as long as the address is valid
|
||||
* and not already mapped. The user should check the
|
||||
* returned address of the IOCTL to make sure he got
|
||||
* the hint address. Passing 0 here means that the
|
||||
* driver will choose the address itself.
|
||||
*/
|
||||
__u64 hint_addr;
|
||||
/* Handle returned from HL_MEM_OP_ALLOC */
|
||||
__u64 handle;
|
||||
} map_device;
|
||||
|
||||
/* HL_MEM_OP_MAP - map host memory */
|
||||
/**
|
||||
* structure for mapping host memory (used with the HL_MEM_OP_MAP op)
|
||||
* @host_virt_addr: address of allocated host memory.
|
||||
* @hint_addr: requested virtual address of mapped memory.
|
||||
* the driver will try to map the requested region to this hint
|
||||
* address, as long as the address is valid and not already mapped.
|
||||
* the user should check the returned address of the IOCTL to make
|
||||
* sure he got the hint address.
|
||||
* passing 0 here means that the driver will choose the address itself.
|
||||
* @size: size of allocated host memory.
|
||||
*/
|
||||
struct {
|
||||
/* Address of allocated host memory */
|
||||
__u64 host_virt_addr;
|
||||
/*
|
||||
* Requested virtual address of mapped memory.
|
||||
* The driver will try to map the requested region to
|
||||
* this hint address, as long as the address is valid
|
||||
* and not already mapped. The user should check the
|
||||
* returned address of the IOCTL to make sure he got
|
||||
* the hint address. Passing 0 here means that the
|
||||
* driver will choose the address itself.
|
||||
*/
|
||||
__u64 hint_addr;
|
||||
/* Size of allocated host memory */
|
||||
__u64 mem_size;
|
||||
} map_host;
|
||||
|
||||
/* HL_MEM_OP_MAP_BLOCK - map a hw block */
|
||||
/**
|
||||
* structure for mapping hw block (used with the HL_MEM_OP_MAP_BLOCK op)
|
||||
* @block_addr:HW block address to map, a handle and size will be returned
|
||||
* to the user and will be used to mmap the relevant block.
|
||||
* only addresses from configuration space are allowed.
|
||||
*/
|
||||
struct {
|
||||
/*
|
||||
* HW block address to map, a handle and size will be
|
||||
* returned to the user and will be used to mmap the
|
||||
* relevant block. Only addresses from configuration
|
||||
* space are allowed.
|
||||
*/
|
||||
__u64 block_addr;
|
||||
} map_block;
|
||||
|
||||
/* HL_MEM_OP_UNMAP - unmap host memory */
|
||||
/**
|
||||
* structure for unmapping host memory (used with the HL_MEM_OP_UNMAP op)
|
||||
* @device_virt_addr: virtual address returned from HL_MEM_OP_MAP
|
||||
*/
|
||||
struct {
|
||||
/* Virtual address returned from HL_MEM_OP_MAP */
|
||||
__u64 device_virt_addr;
|
||||
} unmap;
|
||||
|
||||
/* HL_MEM_OP_EXPORT_DMABUF_FD */
|
||||
/**
|
||||
* structure for exporting DMABUF object (used with
|
||||
* the HL_MEM_OP_EXPORT_DMABUF_FD op)
|
||||
* @handle: handle returned from HL_MEM_OP_ALLOC.
|
||||
* in Gaudi, where we don't have MMU for the device memory, the
|
||||
* driver expects a physical address (instead of a handle) in the
|
||||
* device memory space.
|
||||
* @mem_size: size of memory allocation. Relevant only for GAUDI
|
||||
*/
|
||||
struct {
|
||||
/* Handle returned from HL_MEM_OP_ALLOC. In Gaudi,
|
||||
* where we don't have MMU for the device memory, the
|
||||
* driver expects a physical address (instead of
|
||||
* a handle) in the device memory space.
|
||||
*/
|
||||
__u64 handle;
|
||||
/* Size of memory allocation. Relevant only for GAUDI */
|
||||
__u64 mem_size;
|
||||
} export_dmabuf_fd;
|
||||
};
|
||||
|
||||
/* HL_MEM_OP_* */
|
||||
__u32 op;
|
||||
/* HL_MEM_* flags.
|
||||
* For the HL_MEM_OP_EXPORT_DMABUF_FD opcode, this field holds the
|
||||
* DMA-BUF file/FD flags.
|
||||
*/
|
||||
__u32 flags;
|
||||
/* Context ID - Currently not in use */
|
||||
__u32 ctx_id;
|
||||
__u32 pad;
|
||||
__u32 num_of_elements;
|
||||
};
|
||||
|
||||
struct hl_mem_out {
|
||||
|
||||
@@ -56,8 +56,10 @@
|
||||
* *
|
||||
****************************************************************************/
|
||||
|
||||
#define AES_IEC958_STATUS_SIZE 24
|
||||
|
||||
struct snd_aes_iec958 {
|
||||
unsigned char status[24]; /* AES/IEC958 channel status bits */
|
||||
unsigned char status[AES_IEC958_STATUS_SIZE]; /* AES/IEC958 channel status bits */
|
||||
unsigned char subcode[147]; /* AES/IEC958 subcode bits */
|
||||
unsigned char pad; /* nothing */
|
||||
unsigned char dig_subframe[4]; /* AES/IEC958 subframe bits */
|
||||
|
||||
@@ -26,8 +26,8 @@
|
||||
|
||||
/* SOF ABI version major, minor and patch numbers */
|
||||
#define SOF_ABI_MAJOR 3
|
||||
#define SOF_ABI_MINOR 18
|
||||
#define SOF_ABI_PATCH 0
|
||||
#define SOF_ABI_MINOR 19
|
||||
#define SOF_ABI_PATCH 1
|
||||
|
||||
/* SOF ABI version number. Format within 32bit word is MMmmmppp */
|
||||
#define SOF_ABI_MAJOR_SHIFT 24
|
||||
|
||||
@@ -47,7 +47,13 @@ struct ioctl_gntdev_grant_ref {
|
||||
/*
|
||||
* Inserts the grant references into the mapping table of an instance
|
||||
* of gntdev. N.B. This does not perform the mapping, which is deferred
|
||||
* until mmap() is called with @index as the offset.
|
||||
* until mmap() is called with @index as the offset. @index should be
|
||||
* considered opaque to userspace, with one exception: if no grant
|
||||
* references have ever been inserted into the mapping table of this
|
||||
* instance, @index will be set to 0. This is necessary to use gntdev
|
||||
* with userspace APIs that expect a file descriptor that can be
|
||||
* mmap()'d at offset 0, such as Wayland. If @count is set to 0, this
|
||||
* ioctl will fail.
|
||||
*/
|
||||
#define IOCTL_GNTDEV_MAP_GRANT_REF \
|
||||
_IOC(_IOC_NONE, 'G', 0, sizeof(struct ioctl_gntdev_map_grant_ref))
|
||||
|
||||
Reference in New Issue
Block a user