Merge tag 'v5.2-rc1' into asoc-5.3
Linux 5.2-rc1
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
#define FIOGETOWN 0x8903
|
||||
#define SIOCGPGRP 0x8904
|
||||
#define SIOCATMARK 0x8905
|
||||
#define SIOCGSTAMP 0x8906 /* Get stamp (timeval) */
|
||||
#define SIOCGSTAMPNS 0x8907 /* Get stamp (timespec) */
|
||||
#define SIOCGSTAMP_OLD 0x8906 /* Get stamp (timeval) */
|
||||
#define SIOCGSTAMPNS_OLD 0x8907 /* Get stamp (timespec) */
|
||||
|
||||
#endif /* __ASM_GENERIC_SOCKIOS_H */
|
||||
|
||||
@@ -832,9 +832,21 @@ __SYSCALL(__NR_io_uring_setup, sys_io_uring_setup)
|
||||
__SYSCALL(__NR_io_uring_enter, sys_io_uring_enter)
|
||||
#define __NR_io_uring_register 427
|
||||
__SYSCALL(__NR_io_uring_register, sys_io_uring_register)
|
||||
#define __NR_open_tree 428
|
||||
__SYSCALL(__NR_open_tree, sys_open_tree)
|
||||
#define __NR_move_mount 429
|
||||
__SYSCALL(__NR_move_mount, sys_move_mount)
|
||||
#define __NR_fsopen 430
|
||||
__SYSCALL(__NR_fsopen, sys_fsopen)
|
||||
#define __NR_fsconfig 431
|
||||
__SYSCALL(__NR_fsconfig, sys_fsconfig)
|
||||
#define __NR_fsmount 432
|
||||
__SYSCALL(__NR_fsmount, sys_fsmount)
|
||||
#define __NR_fspick 433
|
||||
__SYSCALL(__NR_fspick, sys_fspick)
|
||||
|
||||
#undef __NR_syscalls
|
||||
#define __NR_syscalls 428
|
||||
#define __NR_syscalls 434
|
||||
|
||||
/*
|
||||
* 32 bit systems traditionally used different
|
||||
|
||||
@@ -210,6 +210,9 @@ union drm_amdgpu_bo_list {
|
||||
#define AMDGPU_CTX_QUERY2_FLAGS_VRAMLOST (1<<1)
|
||||
/* indicate some job from this context once cause gpu hang */
|
||||
#define AMDGPU_CTX_QUERY2_FLAGS_GUILTY (1<<2)
|
||||
/* indicate some errors are detected by RAS */
|
||||
#define AMDGPU_CTX_QUERY2_FLAGS_RAS_CE (1<<3)
|
||||
#define AMDGPU_CTX_QUERY2_FLAGS_RAS_UE (1<<4)
|
||||
|
||||
/* Context priority level */
|
||||
#define AMDGPU_CTX_PRIORITY_UNSET -2048
|
||||
@@ -525,6 +528,8 @@ struct drm_amdgpu_gem_va {
|
||||
#define AMDGPU_CHUNK_ID_SYNCOBJ_OUT 0x05
|
||||
#define AMDGPU_CHUNK_ID_BO_HANDLES 0x06
|
||||
#define AMDGPU_CHUNK_ID_SCHEDULED_DEPENDENCIES 0x07
|
||||
#define AMDGPU_CHUNK_ID_SYNCOBJ_TIMELINE_WAIT 0x08
|
||||
#define AMDGPU_CHUNK_ID_SYNCOBJ_TIMELINE_SIGNAL 0x09
|
||||
|
||||
struct drm_amdgpu_cs_chunk {
|
||||
__u32 chunk_id;
|
||||
@@ -605,6 +610,12 @@ struct drm_amdgpu_cs_chunk_sem {
|
||||
__u32 handle;
|
||||
};
|
||||
|
||||
struct drm_amdgpu_cs_chunk_syncobj {
|
||||
__u32 handle;
|
||||
__u32 flags;
|
||||
__u64 point;
|
||||
};
|
||||
|
||||
#define AMDGPU_FENCE_TO_HANDLE_GET_SYNCOBJ 0
|
||||
#define AMDGPU_FENCE_TO_HANDLE_GET_SYNCOBJ_FD 1
|
||||
#define AMDGPU_FENCE_TO_HANDLE_GET_SYNC_FILE_FD 2
|
||||
@@ -680,6 +691,7 @@ struct drm_amdgpu_cs_chunk_data {
|
||||
#define AMDGPU_INFO_FW_GFX_RLC_RESTORE_LIST_SRM_MEM 0x11
|
||||
/* Subquery id: Query DMCU firmware version */
|
||||
#define AMDGPU_INFO_FW_DMCU 0x12
|
||||
#define AMDGPU_INFO_FW_TA 0x13
|
||||
/* number of bytes moved for TTM migration */
|
||||
#define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f
|
||||
/* the used VRAM size */
|
||||
@@ -733,6 +745,37 @@ struct drm_amdgpu_cs_chunk_data {
|
||||
/* Number of VRAM page faults on CPU access. */
|
||||
#define AMDGPU_INFO_NUM_VRAM_CPU_PAGE_FAULTS 0x1E
|
||||
#define AMDGPU_INFO_VRAM_LOST_COUNTER 0x1F
|
||||
/* query ras mask of enabled features*/
|
||||
#define AMDGPU_INFO_RAS_ENABLED_FEATURES 0x20
|
||||
|
||||
/* RAS MASK: UMC (VRAM) */
|
||||
#define AMDGPU_INFO_RAS_ENABLED_UMC (1 << 0)
|
||||
/* RAS MASK: SDMA */
|
||||
#define AMDGPU_INFO_RAS_ENABLED_SDMA (1 << 1)
|
||||
/* RAS MASK: GFX */
|
||||
#define AMDGPU_INFO_RAS_ENABLED_GFX (1 << 2)
|
||||
/* RAS MASK: MMHUB */
|
||||
#define AMDGPU_INFO_RAS_ENABLED_MMHUB (1 << 3)
|
||||
/* RAS MASK: ATHUB */
|
||||
#define AMDGPU_INFO_RAS_ENABLED_ATHUB (1 << 4)
|
||||
/* RAS MASK: PCIE */
|
||||
#define AMDGPU_INFO_RAS_ENABLED_PCIE (1 << 5)
|
||||
/* RAS MASK: HDP */
|
||||
#define AMDGPU_INFO_RAS_ENABLED_HDP (1 << 6)
|
||||
/* RAS MASK: XGMI */
|
||||
#define AMDGPU_INFO_RAS_ENABLED_XGMI (1 << 7)
|
||||
/* RAS MASK: DF */
|
||||
#define AMDGPU_INFO_RAS_ENABLED_DF (1 << 8)
|
||||
/* RAS MASK: SMN */
|
||||
#define AMDGPU_INFO_RAS_ENABLED_SMN (1 << 9)
|
||||
/* RAS MASK: SEM */
|
||||
#define AMDGPU_INFO_RAS_ENABLED_SEM (1 << 10)
|
||||
/* RAS MASK: MP0 */
|
||||
#define AMDGPU_INFO_RAS_ENABLED_MP0 (1 << 11)
|
||||
/* RAS MASK: MP1 */
|
||||
#define AMDGPU_INFO_RAS_ENABLED_MP1 (1 << 12)
|
||||
/* RAS MASK: FUSE */
|
||||
#define AMDGPU_INFO_RAS_ENABLED_FUSE (1 << 13)
|
||||
|
||||
#define AMDGPU_INFO_MMR_SE_INDEX_SHIFT 0
|
||||
#define AMDGPU_INFO_MMR_SE_INDEX_MASK 0xff
|
||||
|
||||
@@ -649,6 +649,7 @@ struct drm_gem_open {
|
||||
#define DRM_CAP_PAGE_FLIP_TARGET 0x11
|
||||
#define DRM_CAP_CRTC_IN_VBLANK_EVENT 0x12
|
||||
#define DRM_CAP_SYNCOBJ 0x13
|
||||
#define DRM_CAP_SYNCOBJ_TIMELINE 0x14
|
||||
|
||||
/** DRM_IOCTL_GET_CAP ioctl argument type */
|
||||
struct drm_get_cap {
|
||||
@@ -735,8 +736,18 @@ struct drm_syncobj_handle {
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
struct drm_syncobj_transfer {
|
||||
__u32 src_handle;
|
||||
__u32 dst_handle;
|
||||
__u64 src_point;
|
||||
__u64 dst_point;
|
||||
__u32 flags;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_ALL (1 << 0)
|
||||
#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_FOR_SUBMIT (1 << 1)
|
||||
#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE (1 << 2) /* wait for time point to become available */
|
||||
struct drm_syncobj_wait {
|
||||
__u64 handles;
|
||||
/* absolute timeout */
|
||||
@@ -747,12 +758,33 @@ struct drm_syncobj_wait {
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
struct drm_syncobj_timeline_wait {
|
||||
__u64 handles;
|
||||
/* wait on specific timeline point for every handles*/
|
||||
__u64 points;
|
||||
/* absolute timeout */
|
||||
__s64 timeout_nsec;
|
||||
__u32 count_handles;
|
||||
__u32 flags;
|
||||
__u32 first_signaled; /* only valid when not waiting all */
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
|
||||
struct drm_syncobj_array {
|
||||
__u64 handles;
|
||||
__u32 count_handles;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
struct drm_syncobj_timeline_array {
|
||||
__u64 handles;
|
||||
__u64 points;
|
||||
__u32 count_handles;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
|
||||
/* Query current scanout sequence number */
|
||||
struct drm_crtc_get_sequence {
|
||||
__u32 crtc_id; /* requested crtc_id */
|
||||
@@ -909,6 +941,11 @@ extern "C" {
|
||||
#define DRM_IOCTL_MODE_GET_LEASE DRM_IOWR(0xC8, struct drm_mode_get_lease)
|
||||
#define DRM_IOCTL_MODE_REVOKE_LEASE DRM_IOWR(0xC9, struct drm_mode_revoke_lease)
|
||||
|
||||
#define DRM_IOCTL_SYNCOBJ_TIMELINE_WAIT DRM_IOWR(0xCA, struct drm_syncobj_timeline_wait)
|
||||
#define DRM_IOCTL_SYNCOBJ_QUERY DRM_IOWR(0xCB, struct drm_syncobj_timeline_array)
|
||||
#define DRM_IOCTL_SYNCOBJ_TRANSFER DRM_IOWR(0xCC, struct drm_syncobj_transfer)
|
||||
#define DRM_IOCTL_SYNCOBJ_TIMELINE_SIGNAL DRM_IOWR(0xCD, struct drm_syncobj_timeline_array)
|
||||
|
||||
/**
|
||||
* Device specific ioctls should only be in their respective headers
|
||||
* The device specific ioctl range is from 0x40 to 0x9f.
|
||||
|
||||
@@ -144,6 +144,17 @@ extern "C" {
|
||||
#define DRM_FORMAT_RGBA1010102 fourcc_code('R', 'A', '3', '0') /* [31:0] R:G:B:A 10:10:10:2 little endian */
|
||||
#define DRM_FORMAT_BGRA1010102 fourcc_code('B', 'A', '3', '0') /* [31:0] B:G:R:A 10:10:10:2 little endian */
|
||||
|
||||
/*
|
||||
* Floating point 64bpp RGB
|
||||
* IEEE 754-2008 binary16 half-precision float
|
||||
* [15:0] sign:exponent:mantissa 1:5:10
|
||||
*/
|
||||
#define DRM_FORMAT_XRGB16161616F fourcc_code('X', 'R', '4', 'H') /* [63:0] x:R:G:B 16:16:16:16 little endian */
|
||||
#define DRM_FORMAT_XBGR16161616F fourcc_code('X', 'B', '4', 'H') /* [63:0] x:B:G:R 16:16:16:16 little endian */
|
||||
|
||||
#define DRM_FORMAT_ARGB16161616F fourcc_code('A', 'R', '4', 'H') /* [63:0] A:R:G:B 16:16:16:16 little endian */
|
||||
#define DRM_FORMAT_ABGR16161616F fourcc_code('A', 'B', '4', 'H') /* [63:0] A:B:G:R 16:16:16:16 little endian */
|
||||
|
||||
/* packed YCbCr */
|
||||
#define DRM_FORMAT_YUYV fourcc_code('Y', 'U', 'Y', 'V') /* [31:0] Cr0:Y1:Cb0:Y0 8:8:8:8 little endian */
|
||||
#define DRM_FORMAT_YVYU fourcc_code('Y', 'V', 'Y', 'U') /* [31:0] Cb0:Y1:Cr0:Y0 8:8:8:8 little endian */
|
||||
@@ -151,7 +162,29 @@ extern "C" {
|
||||
#define DRM_FORMAT_VYUY fourcc_code('V', 'Y', 'U', 'Y') /* [31:0] Y1:Cb0:Y0:Cr0 8:8:8:8 little endian */
|
||||
|
||||
#define DRM_FORMAT_AYUV fourcc_code('A', 'Y', 'U', 'V') /* [31:0] A:Y:Cb:Cr 8:8:8:8 little endian */
|
||||
#define DRM_FORMAT_XYUV8888 fourcc_code('X', 'Y', 'U', 'V') /* [31:0] X:Y:Cb:Cr 8:8:8:8 little endian */
|
||||
#define DRM_FORMAT_XYUV8888 fourcc_code('X', 'Y', 'U', 'V') /* [31:0] X:Y:Cb:Cr 8:8:8:8 little endian */
|
||||
#define DRM_FORMAT_VUY888 fourcc_code('V', 'U', '2', '4') /* [23:0] Cr:Cb:Y 8:8:8 little endian */
|
||||
#define DRM_FORMAT_VUY101010 fourcc_code('V', 'U', '3', '0') /* Y followed by U then V, 10:10:10. Non-linear modifier only */
|
||||
|
||||
/*
|
||||
* packed Y2xx indicate for each component, xx valid data occupy msb
|
||||
* 16-xx padding occupy lsb
|
||||
*/
|
||||
#define DRM_FORMAT_Y210 fourcc_code('Y', '2', '1', '0') /* [63:0] Cr0:0:Y1:0:Cb0:0:Y0:0 10:6:10:6:10:6:10:6 little endian per 2 Y pixels */
|
||||
#define DRM_FORMAT_Y212 fourcc_code('Y', '2', '1', '2') /* [63:0] Cr0:0:Y1:0:Cb0:0:Y0:0 12:4:12:4:12:4:12:4 little endian per 2 Y pixels */
|
||||
#define DRM_FORMAT_Y216 fourcc_code('Y', '2', '1', '6') /* [63:0] Cr0:Y1:Cb0:Y0 16:16:16:16 little endian per 2 Y pixels */
|
||||
|
||||
/*
|
||||
* packed Y4xx indicate for each component, xx valid data occupy msb
|
||||
* 16-xx padding occupy lsb except Y410
|
||||
*/
|
||||
#define DRM_FORMAT_Y410 fourcc_code('Y', '4', '1', '0') /* [31:0] A:Cr:Y:Cb 2:10:10:10 little endian */
|
||||
#define DRM_FORMAT_Y412 fourcc_code('Y', '4', '1', '2') /* [63:0] A:0:Cr:0:Y:0:Cb:0 12:4:12:4:12:4:12:4 little endian */
|
||||
#define DRM_FORMAT_Y416 fourcc_code('Y', '4', '1', '6') /* [63:0] A:Cr:Y:Cb 16:16:16:16 little endian */
|
||||
|
||||
#define DRM_FORMAT_XVYU2101010 fourcc_code('X', 'V', '3', '0') /* [31:0] X:Cr:Y:Cb 2:10:10:10 little endian */
|
||||
#define DRM_FORMAT_XVYU12_16161616 fourcc_code('X', 'V', '3', '6') /* [63:0] X:0:Cr:0:Y:0:Cb:0 12:4:12:4:12:4:12:4 little endian */
|
||||
#define DRM_FORMAT_XVYU16161616 fourcc_code('X', 'V', '4', '8') /* [63:0] X:Cr:Y:Cb 16:16:16:16 little endian */
|
||||
|
||||
/*
|
||||
* packed YCbCr420 2x2 tiled formats
|
||||
@@ -167,6 +200,15 @@ extern "C" {
|
||||
/* [63:0] X3:X2:Y3:Cr0:Y2:X1:X0:Y1:Cb0:Y0 1:1:10:10:10:1:1:10:10:10 little endian */
|
||||
#define DRM_FORMAT_X0L2 fourcc_code('X', '0', 'L', '2')
|
||||
|
||||
/*
|
||||
* 1-plane YUV 4:2:0
|
||||
* In these formats, the component ordering is specified (Y, followed by U
|
||||
* then V), but the exact Linear layout is undefined.
|
||||
* These formats can only be used with a non-Linear modifier.
|
||||
*/
|
||||
#define DRM_FORMAT_YUV420_8BIT fourcc_code('Y', 'U', '0', '8')
|
||||
#define DRM_FORMAT_YUV420_10BIT fourcc_code('Y', 'U', '1', '0')
|
||||
|
||||
/*
|
||||
* 2 plane RGB + A
|
||||
* index 0 = RGB plane, same format as the corresponding non _A8 format has
|
||||
@@ -195,6 +237,13 @@ extern "C" {
|
||||
#define DRM_FORMAT_NV24 fourcc_code('N', 'V', '2', '4') /* non-subsampled Cr:Cb plane */
|
||||
#define DRM_FORMAT_NV42 fourcc_code('N', 'V', '4', '2') /* non-subsampled Cb:Cr plane */
|
||||
|
||||
/*
|
||||
* 2 plane YCbCr MSB aligned
|
||||
* index 0 = Y plane, [15:0] Y:x [10:6] little endian
|
||||
* index 1 = Cr:Cb plane, [31:0] Cr:x:Cb:x [10:6:10:6] little endian
|
||||
*/
|
||||
#define DRM_FORMAT_P210 fourcc_code('P', '2', '1', '0') /* 2x1 subsampled Cr:Cb plane, 10 bit per channel */
|
||||
|
||||
/*
|
||||
* 2 plane YCbCr MSB aligned
|
||||
* index 0 = Y plane, [15:0] Y:x [10:6] little endian
|
||||
|
||||
@@ -33,7 +33,6 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define DRM_DISPLAY_INFO_LEN 32
|
||||
#define DRM_CONNECTOR_NAME_LEN 32
|
||||
#define DRM_DISPLAY_MODE_LEN 32
|
||||
#define DRM_PROP_NAME_LEN 32
|
||||
@@ -622,7 +621,8 @@ struct drm_color_ctm {
|
||||
|
||||
struct drm_color_lut {
|
||||
/*
|
||||
* Data is U0.16 fixed point format.
|
||||
* Values are mapped linearly to 0.0 - 1.0 range, with 0x0 == 0.0 and
|
||||
* 0xffff == 1.0.
|
||||
*/
|
||||
__u16 red;
|
||||
__u16 green;
|
||||
|
||||
@@ -62,6 +62,28 @@ extern "C" {
|
||||
#define I915_ERROR_UEVENT "ERROR"
|
||||
#define I915_RESET_UEVENT "RESET"
|
||||
|
||||
/*
|
||||
* i915_user_extension: Base class for defining a chain of extensions
|
||||
*
|
||||
* Many interfaces need to grow over time. In most cases we can simply
|
||||
* extend the struct and have userspace pass in more data. Another option,
|
||||
* as demonstrated by Vulkan's approach to providing extensions for forward
|
||||
* and backward compatibility, is to use a list of optional structs to
|
||||
* provide those extra details.
|
||||
*
|
||||
* The key advantage to using an extension chain is that it allows us to
|
||||
* redefine the interface more easily than an ever growing struct of
|
||||
* increasing complexity, and for large parts of that interface to be
|
||||
* entirely optional. The downside is more pointer chasing; chasing across
|
||||
* the __user boundary with pointers encapsulated inside u64.
|
||||
*/
|
||||
struct i915_user_extension {
|
||||
__u64 next_extension;
|
||||
__u32 name;
|
||||
__u32 flags; /* All undefined bits must be zero. */
|
||||
__u32 rsvd[4]; /* Reserved for future use; must be zero. */
|
||||
};
|
||||
|
||||
/*
|
||||
* MOCS indexes used for GPU surfaces, defining the cacheability of the
|
||||
* surface data and the coherency for this data wrt. CPU vs. GPU accesses.
|
||||
@@ -99,9 +121,23 @@ enum drm_i915_gem_engine_class {
|
||||
I915_ENGINE_CLASS_VIDEO = 2,
|
||||
I915_ENGINE_CLASS_VIDEO_ENHANCE = 3,
|
||||
|
||||
/* should be kept compact */
|
||||
|
||||
I915_ENGINE_CLASS_INVALID = -1
|
||||
};
|
||||
|
||||
/*
|
||||
* There may be more than one engine fulfilling any role within the system.
|
||||
* Each engine of a class is given a unique instance number and therefore
|
||||
* any engine can be specified by its class:instance tuplet. APIs that allow
|
||||
* access to any engine in the system will use struct i915_engine_class_instance
|
||||
* for this identification.
|
||||
*/
|
||||
struct i915_engine_class_instance {
|
||||
__u16 engine_class; /* see enum drm_i915_gem_engine_class */
|
||||
__u16 engine_instance;
|
||||
};
|
||||
|
||||
/**
|
||||
* DOC: perf_events exposed by i915 through /sys/bus/event_sources/drivers/i915
|
||||
*
|
||||
@@ -319,6 +355,7 @@ typedef struct _drm_i915_sarea {
|
||||
#define DRM_I915_PERF_ADD_CONFIG 0x37
|
||||
#define DRM_I915_PERF_REMOVE_CONFIG 0x38
|
||||
#define DRM_I915_QUERY 0x39
|
||||
/* Must be kept compact -- no holes */
|
||||
|
||||
#define DRM_IOCTL_I915_INIT DRM_IOW( DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t)
|
||||
#define DRM_IOCTL_I915_FLUSH DRM_IO ( DRM_COMMAND_BASE + DRM_I915_FLUSH)
|
||||
@@ -367,6 +404,7 @@ typedef struct _drm_i915_sarea {
|
||||
#define DRM_IOCTL_I915_GET_SPRITE_COLORKEY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GET_SPRITE_COLORKEY, struct drm_intel_sprite_colorkey)
|
||||
#define DRM_IOCTL_I915_GEM_WAIT DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_WAIT, struct drm_i915_gem_wait)
|
||||
#define DRM_IOCTL_I915_GEM_CONTEXT_CREATE DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_CREATE, struct drm_i915_gem_context_create)
|
||||
#define DRM_IOCTL_I915_GEM_CONTEXT_CREATE_EXT DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_CREATE, struct drm_i915_gem_context_create_ext)
|
||||
#define DRM_IOCTL_I915_GEM_CONTEXT_DESTROY DRM_IOW (DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_DESTROY, struct drm_i915_gem_context_destroy)
|
||||
#define DRM_IOCTL_I915_REG_READ DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_REG_READ, struct drm_i915_reg_read)
|
||||
#define DRM_IOCTL_I915_GET_RESET_STATS DRM_IOWR (DRM_COMMAND_BASE + DRM_I915_GET_RESET_STATS, struct drm_i915_reset_stats)
|
||||
@@ -476,6 +514,7 @@ typedef struct drm_i915_irq_wait {
|
||||
#define I915_SCHEDULER_CAP_ENABLED (1ul << 0)
|
||||
#define I915_SCHEDULER_CAP_PRIORITY (1ul << 1)
|
||||
#define I915_SCHEDULER_CAP_PREEMPTION (1ul << 2)
|
||||
#define I915_SCHEDULER_CAP_SEMAPHORES (1ul << 3)
|
||||
|
||||
#define I915_PARAM_HUC_STATUS 42
|
||||
|
||||
@@ -559,6 +598,8 @@ typedef struct drm_i915_irq_wait {
|
||||
*/
|
||||
#define I915_PARAM_MMAP_GTT_COHERENT 52
|
||||
|
||||
/* Must be kept compact -- no holes and well documented */
|
||||
|
||||
typedef struct drm_i915_getparam {
|
||||
__s32 param;
|
||||
/*
|
||||
@@ -574,6 +615,7 @@ typedef struct drm_i915_getparam {
|
||||
#define I915_SETPARAM_TEX_LRU_LOG_GRANULARITY 2
|
||||
#define I915_SETPARAM_ALLOW_BATCHBUFFER 3
|
||||
#define I915_SETPARAM_NUM_USED_FENCES 4
|
||||
/* Must be kept compact -- no holes */
|
||||
|
||||
typedef struct drm_i915_setparam {
|
||||
int param;
|
||||
@@ -972,7 +1014,7 @@ struct drm_i915_gem_execbuffer2 {
|
||||
* struct drm_i915_gem_exec_fence *fences.
|
||||
*/
|
||||
__u64 cliprects_ptr;
|
||||
#define I915_EXEC_RING_MASK (7<<0)
|
||||
#define I915_EXEC_RING_MASK (0x3f)
|
||||
#define I915_EXEC_DEFAULT (0<<0)
|
||||
#define I915_EXEC_RENDER (1<<0)
|
||||
#define I915_EXEC_BSD (2<<0)
|
||||
@@ -1120,32 +1162,34 @@ struct drm_i915_gem_busy {
|
||||
* as busy may become idle before the ioctl is completed.
|
||||
*
|
||||
* Furthermore, if the object is busy, which engine is busy is only
|
||||
* provided as a guide. There are race conditions which prevent the
|
||||
* report of which engines are busy from being always accurate.
|
||||
* However, the converse is not true. If the object is idle, the
|
||||
* result of the ioctl, that all engines are idle, is accurate.
|
||||
* provided as a guide and only indirectly by reporting its class
|
||||
* (there may be more than one engine in each class). There are race
|
||||
* conditions which prevent the report of which engines are busy from
|
||||
* being always accurate. However, the converse is not true. If the
|
||||
* object is idle, the result of the ioctl, that all engines are idle,
|
||||
* is accurate.
|
||||
*
|
||||
* The returned dword is split into two fields to indicate both
|
||||
* the engines on which the object is being read, and the
|
||||
* engine on which it is currently being written (if any).
|
||||
* the engine classess on which the object is being read, and the
|
||||
* engine class on which it is currently being written (if any).
|
||||
*
|
||||
* The low word (bits 0:15) indicate if the object is being written
|
||||
* to by any engine (there can only be one, as the GEM implicit
|
||||
* synchronisation rules force writes to be serialised). Only the
|
||||
* engine for the last write is reported.
|
||||
* engine class (offset by 1, I915_ENGINE_CLASS_RENDER is reported as
|
||||
* 1 not 0 etc) for the last write is reported.
|
||||
*
|
||||
* The high word (bits 16:31) are a bitmask of which engines are
|
||||
* currently reading from the object. Multiple engines may be
|
||||
* The high word (bits 16:31) are a bitmask of which engines classes
|
||||
* are currently reading from the object. Multiple engines may be
|
||||
* reading from the object simultaneously.
|
||||
*
|
||||
* The value of each engine is the same as specified in the
|
||||
* EXECBUFFER2 ioctl, i.e. I915_EXEC_RENDER, I915_EXEC_BSD etc.
|
||||
* Note I915_EXEC_DEFAULT is a symbolic value and is mapped to
|
||||
* the I915_EXEC_RENDER engine for execution, and so it is never
|
||||
* The value of each engine class is the same as specified in the
|
||||
* I915_CONTEXT_SET_ENGINES parameter and via perf, i.e.
|
||||
* I915_ENGINE_CLASS_RENDER, I915_ENGINE_CLASS_COPY, etc.
|
||||
* reported as active itself. Some hardware may have parallel
|
||||
* execution engines, e.g. multiple media engines, which are
|
||||
* mapped to the same identifier in the EXECBUFFER2 ioctl and
|
||||
* so are not separately reported for busyness.
|
||||
* mapped to the same class identifier and so are not separately
|
||||
* reported for busyness.
|
||||
*
|
||||
* Caveat emptor:
|
||||
* Only the boolean result of this query is reliable; that is whether
|
||||
@@ -1412,16 +1456,158 @@ struct drm_i915_gem_wait {
|
||||
};
|
||||
|
||||
struct drm_i915_gem_context_create {
|
||||
/* output: id of new context*/
|
||||
__u32 ctx_id;
|
||||
__u32 ctx_id; /* output: id of new context*/
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
struct drm_i915_gem_context_create_ext {
|
||||
__u32 ctx_id; /* output: id of new context*/
|
||||
__u32 flags;
|
||||
#define I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS (1u << 0)
|
||||
#define I915_CONTEXT_CREATE_FLAGS_UNKNOWN \
|
||||
(-(I915_CONTEXT_CREATE_FLAGS_USE_EXTENSIONS << 1))
|
||||
__u64 extensions;
|
||||
};
|
||||
|
||||
struct drm_i915_gem_context_param {
|
||||
__u32 ctx_id;
|
||||
__u32 size;
|
||||
__u64 param;
|
||||
#define I915_CONTEXT_PARAM_BAN_PERIOD 0x1
|
||||
#define I915_CONTEXT_PARAM_NO_ZEROMAP 0x2
|
||||
#define I915_CONTEXT_PARAM_GTT_SIZE 0x3
|
||||
#define I915_CONTEXT_PARAM_NO_ERROR_CAPTURE 0x4
|
||||
#define I915_CONTEXT_PARAM_BANNABLE 0x5
|
||||
#define I915_CONTEXT_PARAM_PRIORITY 0x6
|
||||
#define I915_CONTEXT_MAX_USER_PRIORITY 1023 /* inclusive */
|
||||
#define I915_CONTEXT_DEFAULT_PRIORITY 0
|
||||
#define I915_CONTEXT_MIN_USER_PRIORITY -1023 /* inclusive */
|
||||
/*
|
||||
* When using the following param, value should be a pointer to
|
||||
* drm_i915_gem_context_param_sseu.
|
||||
*/
|
||||
#define I915_CONTEXT_PARAM_SSEU 0x7
|
||||
|
||||
/*
|
||||
* Not all clients may want to attempt automatic recover of a context after
|
||||
* a hang (for example, some clients may only submit very small incremental
|
||||
* batches relying on known logical state of previous batches which will never
|
||||
* recover correctly and each attempt will hang), and so would prefer that
|
||||
* the context is forever banned instead.
|
||||
*
|
||||
* If set to false (0), after a reset, subsequent (and in flight) rendering
|
||||
* from this context is discarded, and the client will need to create a new
|
||||
* context to use instead.
|
||||
*
|
||||
* If set to true (1), the kernel will automatically attempt to recover the
|
||||
* context by skipping the hanging batch and executing the next batch starting
|
||||
* from the default context state (discarding the incomplete logical context
|
||||
* state lost due to the reset).
|
||||
*
|
||||
* On creation, all new contexts are marked as recoverable.
|
||||
*/
|
||||
#define I915_CONTEXT_PARAM_RECOVERABLE 0x8
|
||||
/* Must be kept compact -- no holes and well documented */
|
||||
|
||||
__u64 value;
|
||||
};
|
||||
|
||||
/**
|
||||
* Context SSEU programming
|
||||
*
|
||||
* It may be necessary for either functional or performance reason to configure
|
||||
* a context to run with a reduced number of SSEU (where SSEU stands for Slice/
|
||||
* Sub-slice/EU).
|
||||
*
|
||||
* This is done by configuring SSEU configuration using the below
|
||||
* @struct drm_i915_gem_context_param_sseu for every supported engine which
|
||||
* userspace intends to use.
|
||||
*
|
||||
* Not all GPUs or engines support this functionality in which case an error
|
||||
* code -ENODEV will be returned.
|
||||
*
|
||||
* Also, flexibility of possible SSEU configuration permutations varies between
|
||||
* GPU generations and software imposed limitations. Requesting such a
|
||||
* combination will return an error code of -EINVAL.
|
||||
*
|
||||
* NOTE: When perf/OA is active the context's SSEU configuration is ignored in
|
||||
* favour of a single global setting.
|
||||
*/
|
||||
struct drm_i915_gem_context_param_sseu {
|
||||
/*
|
||||
* Engine class & instance to be configured or queried.
|
||||
*/
|
||||
struct i915_engine_class_instance engine;
|
||||
|
||||
/*
|
||||
* Unused for now. Must be cleared to zero.
|
||||
*/
|
||||
__u32 flags;
|
||||
|
||||
/*
|
||||
* Mask of slices to enable for the context. Valid values are a subset
|
||||
* of the bitmask value returned for I915_PARAM_SLICE_MASK.
|
||||
*/
|
||||
__u64 slice_mask;
|
||||
|
||||
/*
|
||||
* Mask of subslices to enable for the context. Valid values are a
|
||||
* subset of the bitmask value return by I915_PARAM_SUBSLICE_MASK.
|
||||
*/
|
||||
__u64 subslice_mask;
|
||||
|
||||
/*
|
||||
* Minimum/Maximum number of EUs to enable per subslice for the
|
||||
* context. min_eus_per_subslice must be inferior or equal to
|
||||
* max_eus_per_subslice.
|
||||
*/
|
||||
__u16 min_eus_per_subslice;
|
||||
__u16 max_eus_per_subslice;
|
||||
|
||||
/*
|
||||
* Unused for now. Must be cleared to zero.
|
||||
*/
|
||||
__u32 rsvd;
|
||||
};
|
||||
|
||||
struct drm_i915_gem_context_create_ext_setparam {
|
||||
#define I915_CONTEXT_CREATE_EXT_SETPARAM 0
|
||||
struct i915_user_extension base;
|
||||
struct drm_i915_gem_context_param param;
|
||||
};
|
||||
|
||||
struct drm_i915_gem_context_destroy {
|
||||
__u32 ctx_id;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/*
|
||||
* DRM_I915_GEM_VM_CREATE -
|
||||
*
|
||||
* Create a new virtual memory address space (ppGTT) for use within a context
|
||||
* on the same file. Extensions can be provided to configure exactly how the
|
||||
* address space is setup upon creation.
|
||||
*
|
||||
* The id of new VM (bound to the fd) for use with I915_CONTEXT_PARAM_VM is
|
||||
* returned in the outparam @id.
|
||||
*
|
||||
* No flags are defined, with all bits reserved and must be zero.
|
||||
*
|
||||
* An extension chain maybe provided, starting with @extensions, and terminated
|
||||
* by the @next_extension being 0. Currently, no extensions are defined.
|
||||
*
|
||||
* DRM_I915_GEM_VM_DESTROY -
|
||||
*
|
||||
* Destroys a previously created VM id, specified in @id.
|
||||
*
|
||||
* No extensions or flags are allowed currently, and so must be zero.
|
||||
*/
|
||||
struct drm_i915_gem_vm_control {
|
||||
__u64 extensions;
|
||||
__u32 flags;
|
||||
__u32 vm_id;
|
||||
};
|
||||
|
||||
struct drm_i915_reg_read {
|
||||
/*
|
||||
* Register offset.
|
||||
@@ -1434,6 +1620,7 @@ struct drm_i915_reg_read {
|
||||
|
||||
__u64 val; /* Return value */
|
||||
};
|
||||
|
||||
/* Known registers:
|
||||
*
|
||||
* Render engine timestamp - 0x2358 + 64bit - gen7+
|
||||
@@ -1473,86 +1660,6 @@ struct drm_i915_gem_userptr {
|
||||
__u32 handle;
|
||||
};
|
||||
|
||||
struct drm_i915_gem_context_param {
|
||||
__u32 ctx_id;
|
||||
__u32 size;
|
||||
__u64 param;
|
||||
#define I915_CONTEXT_PARAM_BAN_PERIOD 0x1
|
||||
#define I915_CONTEXT_PARAM_NO_ZEROMAP 0x2
|
||||
#define I915_CONTEXT_PARAM_GTT_SIZE 0x3
|
||||
#define I915_CONTEXT_PARAM_NO_ERROR_CAPTURE 0x4
|
||||
#define I915_CONTEXT_PARAM_BANNABLE 0x5
|
||||
#define I915_CONTEXT_PARAM_PRIORITY 0x6
|
||||
#define I915_CONTEXT_MAX_USER_PRIORITY 1023 /* inclusive */
|
||||
#define I915_CONTEXT_DEFAULT_PRIORITY 0
|
||||
#define I915_CONTEXT_MIN_USER_PRIORITY -1023 /* inclusive */
|
||||
/*
|
||||
* When using the following param, value should be a pointer to
|
||||
* drm_i915_gem_context_param_sseu.
|
||||
*/
|
||||
#define I915_CONTEXT_PARAM_SSEU 0x7
|
||||
__u64 value;
|
||||
};
|
||||
|
||||
/**
|
||||
* Context SSEU programming
|
||||
*
|
||||
* It may be necessary for either functional or performance reason to configure
|
||||
* a context to run with a reduced number of SSEU (where SSEU stands for Slice/
|
||||
* Sub-slice/EU).
|
||||
*
|
||||
* This is done by configuring SSEU configuration using the below
|
||||
* @struct drm_i915_gem_context_param_sseu for every supported engine which
|
||||
* userspace intends to use.
|
||||
*
|
||||
* Not all GPUs or engines support this functionality in which case an error
|
||||
* code -ENODEV will be returned.
|
||||
*
|
||||
* Also, flexibility of possible SSEU configuration permutations varies between
|
||||
* GPU generations and software imposed limitations. Requesting such a
|
||||
* combination will return an error code of -EINVAL.
|
||||
*
|
||||
* NOTE: When perf/OA is active the context's SSEU configuration is ignored in
|
||||
* favour of a single global setting.
|
||||
*/
|
||||
struct drm_i915_gem_context_param_sseu {
|
||||
/*
|
||||
* Engine class & instance to be configured or queried.
|
||||
*/
|
||||
__u16 engine_class;
|
||||
__u16 engine_instance;
|
||||
|
||||
/*
|
||||
* Unused for now. Must be cleared to zero.
|
||||
*/
|
||||
__u32 flags;
|
||||
|
||||
/*
|
||||
* Mask of slices to enable for the context. Valid values are a subset
|
||||
* of the bitmask value returned for I915_PARAM_SLICE_MASK.
|
||||
*/
|
||||
__u64 slice_mask;
|
||||
|
||||
/*
|
||||
* Mask of subslices to enable for the context. Valid values are a
|
||||
* subset of the bitmask value return by I915_PARAM_SUBSLICE_MASK.
|
||||
*/
|
||||
__u64 subslice_mask;
|
||||
|
||||
/*
|
||||
* Minimum/Maximum number of EUs to enable per subslice for the
|
||||
* context. min_eus_per_subslice must be inferior or equal to
|
||||
* max_eus_per_subslice.
|
||||
*/
|
||||
__u16 min_eus_per_subslice;
|
||||
__u16 max_eus_per_subslice;
|
||||
|
||||
/*
|
||||
* Unused for now. Must be cleared to zero.
|
||||
*/
|
||||
__u32 rsvd;
|
||||
};
|
||||
|
||||
enum drm_i915_oa_format {
|
||||
I915_OA_FORMAT_A13 = 1, /* HSW only */
|
||||
I915_OA_FORMAT_A29, /* HSW only */
|
||||
@@ -1714,6 +1821,7 @@ struct drm_i915_perf_oa_config {
|
||||
struct drm_i915_query_item {
|
||||
__u64 query_id;
|
||||
#define DRM_I915_QUERY_TOPOLOGY_INFO 1
|
||||
/* Must be kept compact -- no holes and well documented */
|
||||
|
||||
/*
|
||||
* When set to zero by userspace, this is filled with the size of the
|
||||
|
||||
169
include/uapi/drm/lima_drm.h
Normal file
169
include/uapi/drm/lima_drm.h
Normal file
@@ -0,0 +1,169 @@
|
||||
/* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR MIT */
|
||||
/* Copyright 2017-2018 Qiang Yu <yuq825@gmail.com> */
|
||||
|
||||
#ifndef __LIMA_DRM_H__
|
||||
#define __LIMA_DRM_H__
|
||||
|
||||
#include "drm.h"
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
enum drm_lima_param_gpu_id {
|
||||
DRM_LIMA_PARAM_GPU_ID_UNKNOWN,
|
||||
DRM_LIMA_PARAM_GPU_ID_MALI400,
|
||||
DRM_LIMA_PARAM_GPU_ID_MALI450,
|
||||
};
|
||||
|
||||
enum drm_lima_param {
|
||||
DRM_LIMA_PARAM_GPU_ID,
|
||||
DRM_LIMA_PARAM_NUM_PP,
|
||||
DRM_LIMA_PARAM_GP_VERSION,
|
||||
DRM_LIMA_PARAM_PP_VERSION,
|
||||
};
|
||||
|
||||
/**
|
||||
* get various information of the GPU
|
||||
*/
|
||||
struct drm_lima_get_param {
|
||||
__u32 param; /* in, value in enum drm_lima_param */
|
||||
__u32 pad; /* pad, must be zero */
|
||||
__u64 value; /* out, parameter value */
|
||||
};
|
||||
|
||||
/**
|
||||
* create a buffer for used by GPU
|
||||
*/
|
||||
struct drm_lima_gem_create {
|
||||
__u32 size; /* in, buffer size */
|
||||
__u32 flags; /* in, currently no flags, must be zero */
|
||||
__u32 handle; /* out, GEM buffer handle */
|
||||
__u32 pad; /* pad, must be zero */
|
||||
};
|
||||
|
||||
/**
|
||||
* get information of a buffer
|
||||
*/
|
||||
struct drm_lima_gem_info {
|
||||
__u32 handle; /* in, GEM buffer handle */
|
||||
__u32 va; /* out, virtual address mapped into GPU MMU */
|
||||
__u64 offset; /* out, used to mmap this buffer to CPU */
|
||||
};
|
||||
|
||||
#define LIMA_SUBMIT_BO_READ 0x01
|
||||
#define LIMA_SUBMIT_BO_WRITE 0x02
|
||||
|
||||
/* buffer information used by one task */
|
||||
struct drm_lima_gem_submit_bo {
|
||||
__u32 handle; /* in, GEM buffer handle */
|
||||
__u32 flags; /* in, buffer read/write by GPU */
|
||||
};
|
||||
|
||||
#define LIMA_GP_FRAME_REG_NUM 6
|
||||
|
||||
/* frame used to setup GP for each task */
|
||||
struct drm_lima_gp_frame {
|
||||
__u32 frame[LIMA_GP_FRAME_REG_NUM];
|
||||
};
|
||||
|
||||
#define LIMA_PP_FRAME_REG_NUM 23
|
||||
#define LIMA_PP_WB_REG_NUM 12
|
||||
|
||||
/* frame used to setup mali400 GPU PP for each task */
|
||||
struct drm_lima_m400_pp_frame {
|
||||
__u32 frame[LIMA_PP_FRAME_REG_NUM];
|
||||
__u32 num_pp;
|
||||
__u32 wb[3 * LIMA_PP_WB_REG_NUM];
|
||||
__u32 plbu_array_address[4];
|
||||
__u32 fragment_stack_address[4];
|
||||
};
|
||||
|
||||
/* frame used to setup mali450 GPU PP for each task */
|
||||
struct drm_lima_m450_pp_frame {
|
||||
__u32 frame[LIMA_PP_FRAME_REG_NUM];
|
||||
__u32 num_pp;
|
||||
__u32 wb[3 * LIMA_PP_WB_REG_NUM];
|
||||
__u32 use_dlbu;
|
||||
__u32 _pad;
|
||||
union {
|
||||
__u32 plbu_array_address[8];
|
||||
__u32 dlbu_regs[4];
|
||||
};
|
||||
__u32 fragment_stack_address[8];
|
||||
};
|
||||
|
||||
#define LIMA_PIPE_GP 0x00
|
||||
#define LIMA_PIPE_PP 0x01
|
||||
|
||||
#define LIMA_SUBMIT_FLAG_EXPLICIT_FENCE (1 << 0)
|
||||
|
||||
/**
|
||||
* submit a task to GPU
|
||||
*
|
||||
* User can always merge multi sync_file and drm_syncobj
|
||||
* into one drm_syncobj as in_sync[0], but we reserve
|
||||
* in_sync[1] for another task's out_sync to avoid the
|
||||
* export/import/merge pass when explicit sync.
|
||||
*/
|
||||
struct drm_lima_gem_submit {
|
||||
__u32 ctx; /* in, context handle task is submitted to */
|
||||
__u32 pipe; /* in, which pipe to use, GP/PP */
|
||||
__u32 nr_bos; /* in, array length of bos field */
|
||||
__u32 frame_size; /* in, size of frame field */
|
||||
__u64 bos; /* in, array of drm_lima_gem_submit_bo */
|
||||
__u64 frame; /* in, GP/PP frame */
|
||||
__u32 flags; /* in, submit flags */
|
||||
__u32 out_sync; /* in, drm_syncobj handle used to wait task finish after submission */
|
||||
__u32 in_sync[2]; /* in, drm_syncobj handle used to wait before start this task */
|
||||
};
|
||||
|
||||
#define LIMA_GEM_WAIT_READ 0x01
|
||||
#define LIMA_GEM_WAIT_WRITE 0x02
|
||||
|
||||
/**
|
||||
* wait pending GPU task finish of a buffer
|
||||
*/
|
||||
struct drm_lima_gem_wait {
|
||||
__u32 handle; /* in, GEM buffer handle */
|
||||
__u32 op; /* in, CPU want to read/write this buffer */
|
||||
__s64 timeout_ns; /* in, wait timeout in absulute time */
|
||||
};
|
||||
|
||||
/**
|
||||
* create a context
|
||||
*/
|
||||
struct drm_lima_ctx_create {
|
||||
__u32 id; /* out, context handle */
|
||||
__u32 _pad; /* pad, must be zero */
|
||||
};
|
||||
|
||||
/**
|
||||
* free a context
|
||||
*/
|
||||
struct drm_lima_ctx_free {
|
||||
__u32 id; /* in, context handle */
|
||||
__u32 _pad; /* pad, must be zero */
|
||||
};
|
||||
|
||||
#define DRM_LIMA_GET_PARAM 0x00
|
||||
#define DRM_LIMA_GEM_CREATE 0x01
|
||||
#define DRM_LIMA_GEM_INFO 0x02
|
||||
#define DRM_LIMA_GEM_SUBMIT 0x03
|
||||
#define DRM_LIMA_GEM_WAIT 0x04
|
||||
#define DRM_LIMA_CTX_CREATE 0x05
|
||||
#define DRM_LIMA_CTX_FREE 0x06
|
||||
|
||||
#define DRM_IOCTL_LIMA_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_LIMA_GET_PARAM, struct drm_lima_get_param)
|
||||
#define DRM_IOCTL_LIMA_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_LIMA_GEM_CREATE, struct drm_lima_gem_create)
|
||||
#define DRM_IOCTL_LIMA_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_LIMA_GEM_INFO, struct drm_lima_gem_info)
|
||||
#define DRM_IOCTL_LIMA_GEM_SUBMIT DRM_IOW(DRM_COMMAND_BASE + DRM_LIMA_GEM_SUBMIT, struct drm_lima_gem_submit)
|
||||
#define DRM_IOCTL_LIMA_GEM_WAIT DRM_IOW(DRM_COMMAND_BASE + DRM_LIMA_GEM_WAIT, struct drm_lima_gem_wait)
|
||||
#define DRM_IOCTL_LIMA_CTX_CREATE DRM_IOR(DRM_COMMAND_BASE + DRM_LIMA_CTX_CREATE, struct drm_lima_ctx_create)
|
||||
#define DRM_IOCTL_LIMA_CTX_FREE DRM_IOW(DRM_COMMAND_BASE + DRM_LIMA_CTX_FREE, struct drm_lima_ctx_free)
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __LIMA_DRM_H__ */
|
||||
@@ -74,6 +74,8 @@ struct drm_msm_timespec {
|
||||
#define MSM_PARAM_TIMESTAMP 0x05
|
||||
#define MSM_PARAM_GMEM_BASE 0x06
|
||||
#define MSM_PARAM_NR_RINGS 0x07
|
||||
#define MSM_PARAM_PP_PGTABLE 0x08 /* => 1 for per-process pagetables, else 0 */
|
||||
#define MSM_PARAM_FAULTS 0x09
|
||||
|
||||
struct drm_msm_param {
|
||||
__u32 pipe; /* in, MSM_PIPE_x */
|
||||
@@ -286,6 +288,16 @@ struct drm_msm_submitqueue {
|
||||
__u32 id; /* out, identifier */
|
||||
};
|
||||
|
||||
#define MSM_SUBMITQUEUE_PARAM_FAULTS 0
|
||||
|
||||
struct drm_msm_submitqueue_query {
|
||||
__u64 data;
|
||||
__u32 id;
|
||||
__u32 param;
|
||||
__u32 len;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
#define DRM_MSM_GET_PARAM 0x00
|
||||
/* placeholder:
|
||||
#define DRM_MSM_SET_PARAM 0x01
|
||||
@@ -302,6 +314,7 @@ struct drm_msm_submitqueue {
|
||||
*/
|
||||
#define DRM_MSM_SUBMITQUEUE_NEW 0x0A
|
||||
#define DRM_MSM_SUBMITQUEUE_CLOSE 0x0B
|
||||
#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_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_NEW, struct drm_msm_gem_new)
|
||||
@@ -313,6 +326,7 @@ struct drm_msm_submitqueue {
|
||||
#define DRM_IOCTL_MSM_GEM_MADVISE DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_GEM_MADVISE, struct drm_msm_gem_madvise)
|
||||
#define DRM_IOCTL_MSM_SUBMITQUEUE_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_MSM_SUBMITQUEUE_NEW, struct drm_msm_submitqueue)
|
||||
#define DRM_IOCTL_MSM_SUBMITQUEUE_CLOSE DRM_IOW (DRM_COMMAND_BASE + DRM_MSM_SUBMITQUEUE_CLOSE, __u32)
|
||||
#define DRM_IOCTL_MSM_SUBMITQUEUE_QUERY DRM_IOW (DRM_COMMAND_BASE + DRM_MSM_SUBMITQUEUE_QUERY, struct drm_msm_submitqueue_query)
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
|
||||
142
include/uapi/drm/panfrost_drm.h
Normal file
142
include/uapi/drm/panfrost_drm.h
Normal file
@@ -0,0 +1,142 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
/*
|
||||
* Copyright © 2014-2018 Broadcom
|
||||
* Copyright © 2019 Collabora ltd.
|
||||
*/
|
||||
#ifndef _PANFROST_DRM_H_
|
||||
#define _PANFROST_DRM_H_
|
||||
|
||||
#include "drm.h"
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define DRM_PANFROST_SUBMIT 0x00
|
||||
#define DRM_PANFROST_WAIT_BO 0x01
|
||||
#define DRM_PANFROST_CREATE_BO 0x02
|
||||
#define DRM_PANFROST_MMAP_BO 0x03
|
||||
#define DRM_PANFROST_GET_PARAM 0x04
|
||||
#define DRM_PANFROST_GET_BO_OFFSET 0x05
|
||||
|
||||
#define DRM_IOCTL_PANFROST_SUBMIT DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_SUBMIT, struct drm_panfrost_submit)
|
||||
#define DRM_IOCTL_PANFROST_WAIT_BO DRM_IOW(DRM_COMMAND_BASE + DRM_PANFROST_WAIT_BO, struct drm_panfrost_wait_bo)
|
||||
#define DRM_IOCTL_PANFROST_CREATE_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_CREATE_BO, struct drm_panfrost_create_bo)
|
||||
#define DRM_IOCTL_PANFROST_MMAP_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_MMAP_BO, struct drm_panfrost_mmap_bo)
|
||||
#define DRM_IOCTL_PANFROST_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_GET_PARAM, struct drm_panfrost_get_param)
|
||||
#define DRM_IOCTL_PANFROST_GET_BO_OFFSET DRM_IOWR(DRM_COMMAND_BASE + DRM_PANFROST_GET_BO_OFFSET, struct drm_panfrost_get_bo_offset)
|
||||
|
||||
#define PANFROST_JD_REQ_FS (1 << 0)
|
||||
/**
|
||||
* struct drm_panfrost_submit - ioctl argument for submitting commands to the 3D
|
||||
* engine.
|
||||
*
|
||||
* This asks the kernel to have the GPU execute a render command list.
|
||||
*/
|
||||
struct drm_panfrost_submit {
|
||||
|
||||
/** Address to GPU mapping of job descriptor */
|
||||
__u64 jc;
|
||||
|
||||
/** An optional array of sync objects to wait on before starting this job. */
|
||||
__u64 in_syncs;
|
||||
|
||||
/** Number of sync objects to wait on before starting this job. */
|
||||
__u32 in_sync_count;
|
||||
|
||||
/** An optional sync object to place the completion fence in. */
|
||||
__u32 out_sync;
|
||||
|
||||
/** Pointer to a u32 array of the BOs that are referenced by the job. */
|
||||
__u64 bo_handles;
|
||||
|
||||
/** Number of BO handles passed in (size is that times 4). */
|
||||
__u32 bo_handle_count;
|
||||
|
||||
/** A combination of PANFROST_JD_REQ_* */
|
||||
__u32 requirements;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panfrost_wait_bo - ioctl argument for waiting for
|
||||
* completion of the last DRM_PANFROST_SUBMIT on a BO.
|
||||
*
|
||||
* This is useful for cases where multiple processes might be
|
||||
* rendering to a BO and you want to wait for all rendering to be
|
||||
* completed.
|
||||
*/
|
||||
struct drm_panfrost_wait_bo {
|
||||
__u32 handle;
|
||||
__u32 pad;
|
||||
__s64 timeout_ns; /* absolute */
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panfrost_create_bo - ioctl argument for creating Panfrost BOs.
|
||||
*
|
||||
* There are currently no values for the flags argument, but it may be
|
||||
* used in a future extension.
|
||||
*/
|
||||
struct drm_panfrost_create_bo {
|
||||
__u32 size;
|
||||
__u32 flags;
|
||||
/** Returned GEM handle for the BO. */
|
||||
__u32 handle;
|
||||
/* Pad, must be zero-filled. */
|
||||
__u32 pad;
|
||||
/**
|
||||
* Returned offset for the BO in the GPU address space. This offset
|
||||
* is private to the DRM fd and is valid for the lifetime of the GEM
|
||||
* handle.
|
||||
*
|
||||
* This offset value will always be nonzero, since various HW
|
||||
* units treat 0 specially.
|
||||
*/
|
||||
__u64 offset;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panfrost_mmap_bo - ioctl argument for mapping Panfrost BOs.
|
||||
*
|
||||
* This doesn't actually perform an mmap. Instead, it returns the
|
||||
* offset you need to use in an mmap on the DRM device node. This
|
||||
* means that tools like valgrind end up knowing about the mapped
|
||||
* memory.
|
||||
*
|
||||
* There are currently no values for the flags argument, but it may be
|
||||
* used in a future extension.
|
||||
*/
|
||||
struct drm_panfrost_mmap_bo {
|
||||
/** Handle for the object being mapped. */
|
||||
__u32 handle;
|
||||
__u32 flags;
|
||||
/** offset into the drm node to use for subsequent mmap call. */
|
||||
__u64 offset;
|
||||
};
|
||||
|
||||
enum drm_panfrost_param {
|
||||
DRM_PANFROST_PARAM_GPU_PROD_ID,
|
||||
};
|
||||
|
||||
struct drm_panfrost_get_param {
|
||||
__u32 param;
|
||||
__u32 pad;
|
||||
__u64 value;
|
||||
};
|
||||
|
||||
/**
|
||||
* Returns the offset for the BO in the GPU address space for this DRM fd.
|
||||
* This is the same value returned by drm_panfrost_create_bo, if that was called
|
||||
* from this DRM fd.
|
||||
*/
|
||||
struct drm_panfrost_get_bo_offset {
|
||||
__u32 handle;
|
||||
__u32 pad;
|
||||
__u64 offset;
|
||||
};
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _PANFROST_DRM_H_ */
|
||||
62
include/uapi/linux/aspeed-p2a-ctrl.h
Normal file
62
include/uapi/linux/aspeed-p2a-ctrl.h
Normal file
@@ -0,0 +1,62 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright 2019 Google Inc
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* Provides a simple driver to control the ASPEED P2A interface which allows
|
||||
* the host to read and write to various regions of the BMC's memory.
|
||||
*/
|
||||
|
||||
#ifndef _UAPI_LINUX_ASPEED_P2A_CTRL_H
|
||||
#define _UAPI_LINUX_ASPEED_P2A_CTRL_H
|
||||
|
||||
#include <linux/ioctl.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
#define ASPEED_P2A_CTRL_READ_ONLY 0
|
||||
#define ASPEED_P2A_CTRL_READWRITE 1
|
||||
|
||||
/*
|
||||
* This driver provides a mechanism for enabling or disabling the read-write
|
||||
* property of specific windows into the ASPEED BMC's memory.
|
||||
*
|
||||
* A user can map a region of the BMC's memory as read-only or read-write, with
|
||||
* the caveat that once any region is mapped, all regions are unlocked for
|
||||
* reading.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Unlock a region of BMC physical memory for access from the host.
|
||||
*
|
||||
* Also used to read back the optional memory-region configuration for the
|
||||
* driver.
|
||||
*/
|
||||
struct aspeed_p2a_ctrl_mapping {
|
||||
__u64 addr;
|
||||
__u32 length;
|
||||
__u32 flags;
|
||||
};
|
||||
|
||||
#define __ASPEED_P2A_CTRL_IOCTL_MAGIC 0xb3
|
||||
|
||||
/*
|
||||
* This IOCTL is meant to configure a region or regions of memory given a
|
||||
* starting address and length to be readable by the host, or
|
||||
* readable-writeable.
|
||||
*/
|
||||
#define ASPEED_P2A_CTRL_IOCTL_SET_WINDOW _IOW(__ASPEED_P2A_CTRL_IOCTL_MAGIC, \
|
||||
0x00, struct aspeed_p2a_ctrl_mapping)
|
||||
|
||||
/*
|
||||
* This IOCTL is meant to read back to the user the base address and length of
|
||||
* the memory-region specified to the driver for use with mmap.
|
||||
*/
|
||||
#define ASPEED_P2A_CTRL_IOCTL_GET_MEMORY_CONFIG \
|
||||
_IOWR(__ASPEED_P2A_CTRL_IOCTL_MAGIC, \
|
||||
0x01, struct aspeed_p2a_ctrl_mapping)
|
||||
|
||||
#endif /* _UAPI_LINUX_ASPEED_P2A_CTRL_H */
|
||||
@@ -114,6 +114,8 @@
|
||||
#define AUDIT_REPLACE 1329 /* Replace auditd if this packet unanswerd */
|
||||
#define AUDIT_KERN_MODULE 1330 /* Kernel Module events */
|
||||
#define AUDIT_FANOTIFY 1331 /* Fanotify access decision */
|
||||
#define AUDIT_TIME_INJOFFSET 1332 /* Timekeeping offset injected */
|
||||
#define AUDIT_TIME_ADJNTPVAL 1333 /* NTP value adjustment */
|
||||
|
||||
#define AUDIT_AVC 1400 /* SE Linux avc denial or grant */
|
||||
#define AUDIT_SELINUX_ERR 1401 /* Internal SE Linux Errors */
|
||||
@@ -375,11 +377,19 @@ enum {
|
||||
|
||||
#define AUDIT_ARCH_AARCH64 (EM_AARCH64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_ALPHA (EM_ALPHA|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_ARCOMPACT (EM_ARCOMPACT|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_ARCOMPACTBE (EM_ARCOMPACT)
|
||||
#define AUDIT_ARCH_ARCV2 (EM_ARCV2|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_ARCV2BE (EM_ARCV2)
|
||||
#define AUDIT_ARCH_ARM (EM_ARM|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_ARMEB (EM_ARM)
|
||||
#define AUDIT_ARCH_C6X (EM_TI_C6000|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_C6XBE (EM_TI_C6000)
|
||||
#define AUDIT_ARCH_CRIS (EM_CRIS|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_CSKY (EM_CSKY|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_FRV (EM_FRV)
|
||||
#define AUDIT_ARCH_H8300 (EM_H8_300)
|
||||
#define AUDIT_ARCH_HEXAGON (EM_HEXAGON)
|
||||
#define AUDIT_ARCH_I386 (EM_386|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_IA64 (EM_IA_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_M32R (EM_M32R)
|
||||
@@ -393,6 +403,9 @@ enum {
|
||||
#define AUDIT_ARCH_MIPSEL64 (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_MIPSEL64N32 (EM_MIPS|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE|\
|
||||
__AUDIT_ARCH_CONVENTION_MIPS64_N32)
|
||||
#define AUDIT_ARCH_NDS32 (EM_NDS32|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_NDS32BE (EM_NDS32)
|
||||
#define AUDIT_ARCH_NIOS2 (EM_ALTERA_NIOS2|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_OPENRISC (EM_OPENRISC)
|
||||
#define AUDIT_ARCH_PARISC (EM_PARISC)
|
||||
#define AUDIT_ARCH_PARISC64 (EM_PARISC|__AUDIT_ARCH_64BIT)
|
||||
@@ -413,6 +426,7 @@ enum {
|
||||
#define AUDIT_ARCH_TILEGX (EM_TILEGX|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_TILEGX32 (EM_TILEGX|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_TILEPRO (EM_TILEPRO|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_UNICORE (EM_UNICORE|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_X86_64 (EM_X86_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
|
||||
#define AUDIT_ARCH_XTENSA (EM_XTENSA)
|
||||
|
||||
|
||||
@@ -2,18 +2,6 @@
|
||||
/* Copyright (C) 2007-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Marek Lindner, Simon Wunderlich
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of version 2 of the GNU General Public
|
||||
* License as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef _UAPI_LINUX_BATADV_PACKET_H_
|
||||
|
||||
@@ -2,24 +2,6 @@
|
||||
/* Copyright (C) 2016-2019 B.A.T.M.A.N. contributors:
|
||||
*
|
||||
* Matthias Schiffer
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef _UAPI_LINUX_BATMAN_ADV_H_
|
||||
@@ -491,6 +473,13 @@ enum batadv_nl_attrs {
|
||||
*/
|
||||
BATADV_ATTR_THROUGHPUT_OVERRIDE,
|
||||
|
||||
/**
|
||||
* @BATADV_ATTR_MULTICAST_FANOUT: defines the maximum number of packet
|
||||
* copies that may be generated for a multicast-to-unicast conversion.
|
||||
* Once this limit is exceeded distribution will fall back to broadcast.
|
||||
*/
|
||||
BATADV_ATTR_MULTICAST_FANOUT,
|
||||
|
||||
/* add attributes above here, update the policy in netlink.c */
|
||||
|
||||
/**
|
||||
|
||||
@@ -105,6 +105,7 @@ enum bpf_cmd {
|
||||
BPF_BTF_GET_FD_BY_ID,
|
||||
BPF_TASK_FD_QUERY,
|
||||
BPF_MAP_LOOKUP_AND_DELETE_ELEM,
|
||||
BPF_MAP_FREEZE,
|
||||
};
|
||||
|
||||
enum bpf_map_type {
|
||||
@@ -132,6 +133,7 @@ enum bpf_map_type {
|
||||
BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE,
|
||||
BPF_MAP_TYPE_QUEUE,
|
||||
BPF_MAP_TYPE_STACK,
|
||||
BPF_MAP_TYPE_SK_STORAGE,
|
||||
};
|
||||
|
||||
/* Note that tracing related programs such as
|
||||
@@ -166,6 +168,8 @@ enum bpf_prog_type {
|
||||
BPF_PROG_TYPE_LIRC_MODE2,
|
||||
BPF_PROG_TYPE_SK_REUSEPORT,
|
||||
BPF_PROG_TYPE_FLOW_DISSECTOR,
|
||||
BPF_PROG_TYPE_CGROUP_SYSCTL,
|
||||
BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE,
|
||||
};
|
||||
|
||||
enum bpf_attach_type {
|
||||
@@ -187,6 +191,7 @@ enum bpf_attach_type {
|
||||
BPF_CGROUP_UDP6_SENDMSG,
|
||||
BPF_LIRC_MODE2,
|
||||
BPF_FLOW_DISSECTOR,
|
||||
BPF_CGROUP_SYSCTL,
|
||||
__MAX_BPF_ATTACH_TYPE
|
||||
};
|
||||
|
||||
@@ -255,8 +260,19 @@ enum bpf_attach_type {
|
||||
*/
|
||||
#define BPF_F_ANY_ALIGNMENT (1U << 1)
|
||||
|
||||
/* when bpf_ldimm64->src_reg == BPF_PSEUDO_MAP_FD, bpf_ldimm64->imm == fd */
|
||||
/* When BPF ldimm64's insn[0].src_reg != 0 then this can have
|
||||
* two extensions:
|
||||
*
|
||||
* insn[0].src_reg: BPF_PSEUDO_MAP_FD BPF_PSEUDO_MAP_VALUE
|
||||
* insn[0].imm: map fd map fd
|
||||
* insn[1].imm: 0 offset into value
|
||||
* insn[0].off: 0 0
|
||||
* insn[1].off: 0 0
|
||||
* ldimm64 rewrite: address of map address of map[0]+offset
|
||||
* verifier type: CONST_PTR_TO_MAP PTR_TO_MAP_VALUE
|
||||
*/
|
||||
#define BPF_PSEUDO_MAP_FD 1
|
||||
#define BPF_PSEUDO_MAP_VALUE 2
|
||||
|
||||
/* when bpf_call->src_reg == BPF_PSEUDO_CALL, bpf_call->imm == pc-relative
|
||||
* offset to another bpf function
|
||||
@@ -283,7 +299,7 @@ enum bpf_attach_type {
|
||||
|
||||
#define BPF_OBJ_NAME_LEN 16U
|
||||
|
||||
/* Flags for accessing BPF object */
|
||||
/* Flags for accessing BPF object from syscall side. */
|
||||
#define BPF_F_RDONLY (1U << 3)
|
||||
#define BPF_F_WRONLY (1U << 4)
|
||||
|
||||
@@ -293,6 +309,10 @@ enum bpf_attach_type {
|
||||
/* Zero-initialize hash function seed. This should only be used for testing. */
|
||||
#define BPF_F_ZERO_SEED (1U << 6)
|
||||
|
||||
/* Flags for accessing BPF object from program side. */
|
||||
#define BPF_F_RDONLY_PROG (1U << 7)
|
||||
#define BPF_F_WRONLY_PROG (1U << 8)
|
||||
|
||||
/* flags for BPF_PROG_QUERY */
|
||||
#define BPF_F_QUERY_EFFECTIVE (1U << 0)
|
||||
|
||||
@@ -396,6 +416,13 @@ union bpf_attr {
|
||||
__aligned_u64 data_out;
|
||||
__u32 repeat;
|
||||
__u32 duration;
|
||||
__u32 ctx_size_in; /* input: len of ctx_in */
|
||||
__u32 ctx_size_out; /* input/output: len of ctx_out
|
||||
* returns ENOSPC if ctx_out
|
||||
* is too small.
|
||||
*/
|
||||
__aligned_u64 ctx_in;
|
||||
__aligned_u64 ctx_out;
|
||||
} test;
|
||||
|
||||
struct { /* anonymous struct used by BPF_*_GET_*_ID */
|
||||
@@ -602,7 +629,7 @@ union bpf_attr {
|
||||
* **BPF_F_INVALIDATE_HASH** (set *skb*\ **->hash**, *skb*\
|
||||
* **->swhash** and *skb*\ **->l4hash** to 0).
|
||||
*
|
||||
* A call to this helper is susceptible to change the underlaying
|
||||
* A call to this helper is susceptible to change the underlying
|
||||
* packet buffer. Therefore, at load time, all checks on pointers
|
||||
* previously done by the verifier are invalidated and must be
|
||||
* performed again, if the helper is used in combination with
|
||||
@@ -627,7 +654,7 @@ union bpf_attr {
|
||||
* flexibility and can handle sizes larger than 2 or 4 for the
|
||||
* checksum to update.
|
||||
*
|
||||
* A call to this helper is susceptible to change the underlaying
|
||||
* A call to this helper is susceptible to change the underlying
|
||||
* packet buffer. Therefore, at load time, all checks on pointers
|
||||
* previously done by the verifier are invalidated and must be
|
||||
* performed again, if the helper is used in combination with
|
||||
@@ -659,7 +686,7 @@ union bpf_attr {
|
||||
* flexibility and can handle sizes larger than 2 or 4 for the
|
||||
* checksum to update.
|
||||
*
|
||||
* A call to this helper is susceptible to change the underlaying
|
||||
* A call to this helper is susceptible to change the underlying
|
||||
* packet buffer. Therefore, at load time, all checks on pointers
|
||||
* previously done by the verifier are invalidated and must be
|
||||
* performed again, if the helper is used in combination with
|
||||
@@ -714,7 +741,7 @@ union bpf_attr {
|
||||
* efficient, but it is handled through an action code where the
|
||||
* redirection happens only after the eBPF program has returned.
|
||||
*
|
||||
* A call to this helper is susceptible to change the underlaying
|
||||
* A call to this helper is susceptible to change the underlying
|
||||
* packet buffer. Therefore, at load time, all checks on pointers
|
||||
* previously done by the verifier are invalidated and must be
|
||||
* performed again, if the helper is used in combination with
|
||||
@@ -779,7 +806,7 @@ union bpf_attr {
|
||||
* **ETH_P_8021Q** and **ETH_P_8021AD**, it is considered to
|
||||
* be **ETH_P_8021Q**.
|
||||
*
|
||||
* A call to this helper is susceptible to change the underlaying
|
||||
* A call to this helper is susceptible to change the underlying
|
||||
* packet buffer. Therefore, at load time, all checks on pointers
|
||||
* previously done by the verifier are invalidated and must be
|
||||
* performed again, if the helper is used in combination with
|
||||
@@ -791,7 +818,7 @@ union bpf_attr {
|
||||
* Description
|
||||
* Pop a VLAN header from the packet associated to *skb*.
|
||||
*
|
||||
* A call to this helper is susceptible to change the underlaying
|
||||
* A call to this helper is susceptible to change the underlying
|
||||
* packet buffer. Therefore, at load time, all checks on pointers
|
||||
* previously done by the verifier are invalidated and must be
|
||||
* performed again, if the helper is used in combination with
|
||||
@@ -1141,7 +1168,7 @@ union bpf_attr {
|
||||
* All values for *flags* are reserved for future usage, and must
|
||||
* be left at zero.
|
||||
*
|
||||
* A call to this helper is susceptible to change the underlaying
|
||||
* A call to this helper is susceptible to change the underlying
|
||||
* packet buffer. Therefore, at load time, all checks on pointers
|
||||
* previously done by the verifier are invalidated and must be
|
||||
* performed again, if the helper is used in combination with
|
||||
@@ -1254,7 +1281,7 @@ union bpf_attr {
|
||||
* implicitly linearizes, unclones and drops offloads from the
|
||||
* *skb*.
|
||||
*
|
||||
* A call to this helper is susceptible to change the underlaying
|
||||
* A call to this helper is susceptible to change the underlying
|
||||
* packet buffer. Therefore, at load time, all checks on pointers
|
||||
* previously done by the verifier are invalidated and must be
|
||||
* performed again, if the helper is used in combination with
|
||||
@@ -1290,7 +1317,7 @@ union bpf_attr {
|
||||
* **bpf_skb_pull_data()** to effectively unclone the *skb* from
|
||||
* the very beginning in case it is indeed cloned.
|
||||
*
|
||||
* A call to this helper is susceptible to change the underlaying
|
||||
* A call to this helper is susceptible to change the underlying
|
||||
* packet buffer. Therefore, at load time, all checks on pointers
|
||||
* previously done by the verifier are invalidated and must be
|
||||
* performed again, if the helper is used in combination with
|
||||
@@ -1342,7 +1369,7 @@ union bpf_attr {
|
||||
* All values for *flags* are reserved for future usage, and must
|
||||
* be left at zero.
|
||||
*
|
||||
* A call to this helper is susceptible to change the underlaying
|
||||
* A call to this helper is susceptible to change the underlying
|
||||
* packet buffer. Therefore, at load time, all checks on pointers
|
||||
* previously done by the verifier are invalidated and must be
|
||||
* performed again, if the helper is used in combination with
|
||||
@@ -1357,7 +1384,7 @@ union bpf_attr {
|
||||
* can be used to prepare the packet for pushing or popping
|
||||
* headers.
|
||||
*
|
||||
* A call to this helper is susceptible to change the underlaying
|
||||
* A call to this helper is susceptible to change the underlying
|
||||
* packet buffer. Therefore, at load time, all checks on pointers
|
||||
* previously done by the verifier are invalidated and must be
|
||||
* performed again, if the helper is used in combination with
|
||||
@@ -1478,15 +1505,33 @@ union bpf_attr {
|
||||
* Grow or shrink the room for data in the packet associated to
|
||||
* *skb* by *len_diff*, and according to the selected *mode*.
|
||||
*
|
||||
* There is a single supported mode at this time:
|
||||
* There are two supported modes at this time:
|
||||
*
|
||||
* * **BPF_ADJ_ROOM_MAC**: Adjust room at the mac layer
|
||||
* (room space is added or removed below the layer 2 header).
|
||||
*
|
||||
* * **BPF_ADJ_ROOM_NET**: Adjust room at the network layer
|
||||
* (room space is added or removed below the layer 3 header).
|
||||
*
|
||||
* All values for *flags* are reserved for future usage, and must
|
||||
* be left at zero.
|
||||
* The following flags are supported at this time:
|
||||
*
|
||||
* A call to this helper is susceptible to change the underlaying
|
||||
* * **BPF_F_ADJ_ROOM_FIXED_GSO**: Do not adjust gso_size.
|
||||
* Adjusting mss in this way is not allowed for datagrams.
|
||||
*
|
||||
* * **BPF_F_ADJ_ROOM_ENCAP_L3_IPV4**,
|
||||
* **BPF_F_ADJ_ROOM_ENCAP_L3_IPV6**:
|
||||
* Any new space is reserved to hold a tunnel header.
|
||||
* Configure skb offsets and other fields accordingly.
|
||||
*
|
||||
* * **BPF_F_ADJ_ROOM_ENCAP_L4_GRE**,
|
||||
* **BPF_F_ADJ_ROOM_ENCAP_L4_UDP**:
|
||||
* Use with ENCAP_L3 flags to further specify the tunnel type.
|
||||
*
|
||||
* * **BPF_F_ADJ_ROOM_ENCAP_L2**\ (*len*):
|
||||
* Use with ENCAP_L3/L4 flags to further specify the tunnel
|
||||
* type; *len* is the length of the inner MAC header.
|
||||
*
|
||||
* A call to this helper is susceptible to change the underlying
|
||||
* packet buffer. Therefore, at load time, all checks on pointers
|
||||
* previously done by the verifier are invalidated and must be
|
||||
* performed again, if the helper is used in combination with
|
||||
@@ -1565,7 +1610,7 @@ union bpf_attr {
|
||||
* more flexibility as the user is free to store whatever meta
|
||||
* data they need.
|
||||
*
|
||||
* A call to this helper is susceptible to change the underlaying
|
||||
* A call to this helper is susceptible to change the underlying
|
||||
* packet buffer. Therefore, at load time, all checks on pointers
|
||||
* previously done by the verifier are invalidated and must be
|
||||
* performed again, if the helper is used in combination with
|
||||
@@ -1694,12 +1739,19 @@ union bpf_attr {
|
||||
* error if an eBPF program tries to set a callback that is not
|
||||
* supported in the current kernel.
|
||||
*
|
||||
* The supported callback values that *argval* can combine are:
|
||||
* *argval* is a flag array which can combine these flags:
|
||||
*
|
||||
* * **BPF_SOCK_OPS_RTO_CB_FLAG** (retransmission time out)
|
||||
* * **BPF_SOCK_OPS_RETRANS_CB_FLAG** (retransmission)
|
||||
* * **BPF_SOCK_OPS_STATE_CB_FLAG** (TCP state change)
|
||||
*
|
||||
* Therefore, this function can be used to clear a callback flag by
|
||||
* setting the appropriate bit to zero. e.g. to disable the RTO
|
||||
* callback:
|
||||
*
|
||||
* **bpf_sock_ops_cb_flags_set(bpf_sock,**
|
||||
* **bpf_sock->bpf_sock_ops_cb_flags & ~BPF_SOCK_OPS_RTO_CB_FLAG)**
|
||||
*
|
||||
* Here are some examples of where one could call such eBPF
|
||||
* program:
|
||||
*
|
||||
@@ -1800,7 +1852,7 @@ union bpf_attr {
|
||||
* copied if necessary (i.e. if data was not linear and if start
|
||||
* and end pointers do not point to the same chunk).
|
||||
*
|
||||
* A call to this helper is susceptible to change the underlaying
|
||||
* A call to this helper is susceptible to change the underlying
|
||||
* packet buffer. Therefore, at load time, all checks on pointers
|
||||
* previously done by the verifier are invalidated and must be
|
||||
* performed again, if the helper is used in combination with
|
||||
@@ -1834,7 +1886,7 @@ union bpf_attr {
|
||||
* only possible to shrink the packet as of this writing,
|
||||
* therefore *delta* must be a negative integer.
|
||||
*
|
||||
* A call to this helper is susceptible to change the underlaying
|
||||
* A call to this helper is susceptible to change the underlying
|
||||
* packet buffer. Therefore, at load time, all checks on pointers
|
||||
* previously done by the verifier are invalidated and must be
|
||||
* performed again, if the helper is used in combination with
|
||||
@@ -2009,18 +2061,18 @@ union bpf_attr {
|
||||
* **BPF_LWT_ENCAP_IP**
|
||||
* IP encapsulation (GRE/GUE/IPIP/etc). The outer header
|
||||
* must be IPv4 or IPv6, followed by zero or more
|
||||
* additional headers, up to LWT_BPF_MAX_HEADROOM total
|
||||
* bytes in all prepended headers. Please note that
|
||||
* if skb_is_gso(skb) is true, no more than two headers
|
||||
* can be prepended, and the inner header, if present,
|
||||
* should be either GRE or UDP/GUE.
|
||||
* additional headers, up to **LWT_BPF_MAX_HEADROOM**
|
||||
* total bytes in all prepended headers. Please note that
|
||||
* if **skb_is_gso**\ (*skb*) is true, no more than two
|
||||
* headers can be prepended, and the inner header, if
|
||||
* present, should be either GRE or UDP/GUE.
|
||||
*
|
||||
* BPF_LWT_ENCAP_SEG6*** types can be called by bpf programs of
|
||||
* type BPF_PROG_TYPE_LWT_IN; BPF_LWT_ENCAP_IP type can be called
|
||||
* by bpf programs of types BPF_PROG_TYPE_LWT_IN and
|
||||
* BPF_PROG_TYPE_LWT_XMIT.
|
||||
* **BPF_LWT_ENCAP_SEG6**\ \* types can be called by BPF programs
|
||||
* of type **BPF_PROG_TYPE_LWT_IN**; **BPF_LWT_ENCAP_IP** type can
|
||||
* be called by bpf programs of types **BPF_PROG_TYPE_LWT_IN** and
|
||||
* **BPF_PROG_TYPE_LWT_XMIT**.
|
||||
*
|
||||
* A call to this helper is susceptible to change the underlaying
|
||||
* A call to this helper is susceptible to change the underlying
|
||||
* packet buffer. Therefore, at load time, all checks on pointers
|
||||
* previously done by the verifier are invalidated and must be
|
||||
* performed again, if the helper is used in combination with
|
||||
@@ -2035,7 +2087,7 @@ union bpf_attr {
|
||||
* inside the outermost IPv6 Segment Routing Header can be
|
||||
* modified through this helper.
|
||||
*
|
||||
* A call to this helper is susceptible to change the underlaying
|
||||
* A call to this helper is susceptible to change the underlying
|
||||
* packet buffer. Therefore, at load time, all checks on pointers
|
||||
* previously done by the verifier are invalidated and must be
|
||||
* performed again, if the helper is used in combination with
|
||||
@@ -2051,7 +2103,7 @@ union bpf_attr {
|
||||
* after the segments are accepted. *delta* can be as well
|
||||
* positive (growing) as negative (shrinking).
|
||||
*
|
||||
* A call to this helper is susceptible to change the underlaying
|
||||
* A call to this helper is susceptible to change the underlying
|
||||
* packet buffer. Therefore, at load time, all checks on pointers
|
||||
* previously done by the verifier are invalidated and must be
|
||||
* performed again, if the helper is used in combination with
|
||||
@@ -2074,13 +2126,13 @@ union bpf_attr {
|
||||
* Type of *param*: **int**.
|
||||
* **SEG6_LOCAL_ACTION_END_B6**
|
||||
* End.B6 action: Endpoint bound to an SRv6 policy.
|
||||
* Type of param: **struct ipv6_sr_hdr**.
|
||||
* Type of *param*: **struct ipv6_sr_hdr**.
|
||||
* **SEG6_LOCAL_ACTION_END_B6_ENCAP**
|
||||
* End.B6.Encap action: Endpoint bound to an SRv6
|
||||
* encapsulation policy.
|
||||
* Type of param: **struct ipv6_sr_hdr**.
|
||||
* Type of *param*: **struct ipv6_sr_hdr**.
|
||||
*
|
||||
* A call to this helper is susceptible to change the underlaying
|
||||
* A call to this helper is susceptible to change the underlying
|
||||
* packet buffer. Therefore, at load time, all checks on pointers
|
||||
* previously done by the verifier are invalidated and must be
|
||||
* performed again, if the helper is used in combination with
|
||||
@@ -2233,7 +2285,8 @@ union bpf_attr {
|
||||
* Return
|
||||
* Pointer to **struct bpf_sock**, or **NULL** in case of failure.
|
||||
* For sockets with reuseport option, the **struct bpf_sock**
|
||||
* result is from **reuse->socks**\ [] using the hash of the tuple.
|
||||
* result is from *reuse*\ **->socks**\ [] using the hash of the
|
||||
* tuple.
|
||||
*
|
||||
* struct bpf_sock *bpf_sk_lookup_udp(void *ctx, struct bpf_sock_tuple *tuple, u32 tuple_size, u64 netns, u64 flags)
|
||||
* Description
|
||||
@@ -2269,7 +2322,8 @@ union bpf_attr {
|
||||
* Return
|
||||
* Pointer to **struct bpf_sock**, or **NULL** in case of failure.
|
||||
* For sockets with reuseport option, the **struct bpf_sock**
|
||||
* result is from **reuse->socks**\ [] using the hash of the tuple.
|
||||
* result is from *reuse*\ **->socks**\ [] using the hash of the
|
||||
* tuple.
|
||||
*
|
||||
* int bpf_sk_release(struct bpf_sock *sock)
|
||||
* Description
|
||||
@@ -2431,6 +2485,193 @@ union bpf_attr {
|
||||
* Return
|
||||
* A **struct bpf_sock** pointer on success, or **NULL** in
|
||||
* case of failure.
|
||||
*
|
||||
* struct bpf_sock *bpf_skc_lookup_tcp(void *ctx, struct bpf_sock_tuple *tuple, u32 tuple_size, u64 netns, u64 flags)
|
||||
* Description
|
||||
* Look for TCP socket matching *tuple*, optionally in a child
|
||||
* network namespace *netns*. The return value must be checked,
|
||||
* and if non-**NULL**, released via **bpf_sk_release**\ ().
|
||||
*
|
||||
* This function is identical to **bpf_sk_lookup_tcp**\ (), except
|
||||
* that it also returns timewait or request sockets. Use
|
||||
* **bpf_sk_fullsock**\ () or **bpf_tcp_sock**\ () to access the
|
||||
* full structure.
|
||||
*
|
||||
* This helper is available only if the kernel was compiled with
|
||||
* **CONFIG_NET** configuration option.
|
||||
* Return
|
||||
* Pointer to **struct bpf_sock**, or **NULL** in case of failure.
|
||||
* For sockets with reuseport option, the **struct bpf_sock**
|
||||
* result is from *reuse*\ **->socks**\ [] using the hash of the
|
||||
* tuple.
|
||||
*
|
||||
* int bpf_tcp_check_syncookie(struct bpf_sock *sk, void *iph, u32 iph_len, struct tcphdr *th, u32 th_len)
|
||||
* Description
|
||||
* Check whether *iph* and *th* contain a valid SYN cookie ACK for
|
||||
* the listening socket in *sk*.
|
||||
*
|
||||
* *iph* points to the start of the IPv4 or IPv6 header, while
|
||||
* *iph_len* contains **sizeof**\ (**struct iphdr**) or
|
||||
* **sizeof**\ (**struct ip6hdr**).
|
||||
*
|
||||
* *th* points to the start of the TCP header, while *th_len*
|
||||
* contains **sizeof**\ (**struct tcphdr**).
|
||||
*
|
||||
* Return
|
||||
* 0 if *iph* and *th* are a valid SYN cookie ACK, or a negative
|
||||
* error otherwise.
|
||||
*
|
||||
* int bpf_sysctl_get_name(struct bpf_sysctl *ctx, char *buf, size_t buf_len, u64 flags)
|
||||
* Description
|
||||
* Get name of sysctl in /proc/sys/ and copy it into provided by
|
||||
* program buffer *buf* of size *buf_len*.
|
||||
*
|
||||
* The buffer is always NUL terminated, unless it's zero-sized.
|
||||
*
|
||||
* If *flags* is zero, full name (e.g. "net/ipv4/tcp_mem") is
|
||||
* copied. Use **BPF_F_SYSCTL_BASE_NAME** flag to copy base name
|
||||
* only (e.g. "tcp_mem").
|
||||
* Return
|
||||
* Number of character copied (not including the trailing NUL).
|
||||
*
|
||||
* **-E2BIG** if the buffer wasn't big enough (*buf* will contain
|
||||
* truncated name in this case).
|
||||
*
|
||||
* int bpf_sysctl_get_current_value(struct bpf_sysctl *ctx, char *buf, size_t buf_len)
|
||||
* Description
|
||||
* Get current value of sysctl as it is presented in /proc/sys
|
||||
* (incl. newline, etc), and copy it as a string into provided
|
||||
* by program buffer *buf* of size *buf_len*.
|
||||
*
|
||||
* The whole value is copied, no matter what file position user
|
||||
* space issued e.g. sys_read at.
|
||||
*
|
||||
* The buffer is always NUL terminated, unless it's zero-sized.
|
||||
* Return
|
||||
* Number of character copied (not including the trailing NUL).
|
||||
*
|
||||
* **-E2BIG** if the buffer wasn't big enough (*buf* will contain
|
||||
* truncated name in this case).
|
||||
*
|
||||
* **-EINVAL** if current value was unavailable, e.g. because
|
||||
* sysctl is uninitialized and read returns -EIO for it.
|
||||
*
|
||||
* int bpf_sysctl_get_new_value(struct bpf_sysctl *ctx, char *buf, size_t buf_len)
|
||||
* Description
|
||||
* Get new value being written by user space to sysctl (before
|
||||
* the actual write happens) and copy it as a string into
|
||||
* provided by program buffer *buf* of size *buf_len*.
|
||||
*
|
||||
* User space may write new value at file position > 0.
|
||||
*
|
||||
* The buffer is always NUL terminated, unless it's zero-sized.
|
||||
* Return
|
||||
* Number of character copied (not including the trailing NUL).
|
||||
*
|
||||
* **-E2BIG** if the buffer wasn't big enough (*buf* will contain
|
||||
* truncated name in this case).
|
||||
*
|
||||
* **-EINVAL** if sysctl is being read.
|
||||
*
|
||||
* int bpf_sysctl_set_new_value(struct bpf_sysctl *ctx, const char *buf, size_t buf_len)
|
||||
* Description
|
||||
* Override new value being written by user space to sysctl with
|
||||
* value provided by program in buffer *buf* of size *buf_len*.
|
||||
*
|
||||
* *buf* should contain a string in same form as provided by user
|
||||
* space on sysctl write.
|
||||
*
|
||||
* User space may write new value at file position > 0. To override
|
||||
* the whole sysctl value file position should be set to zero.
|
||||
* Return
|
||||
* 0 on success.
|
||||
*
|
||||
* **-E2BIG** if the *buf_len* is too big.
|
||||
*
|
||||
* **-EINVAL** if sysctl is being read.
|
||||
*
|
||||
* int bpf_strtol(const char *buf, size_t buf_len, u64 flags, long *res)
|
||||
* Description
|
||||
* Convert the initial part of the string from buffer *buf* of
|
||||
* size *buf_len* to a long integer according to the given base
|
||||
* and save the result in *res*.
|
||||
*
|
||||
* The string may begin with an arbitrary amount of white space
|
||||
* (as determined by **isspace**\ (3)) followed by a single
|
||||
* optional '**-**' sign.
|
||||
*
|
||||
* Five least significant bits of *flags* encode base, other bits
|
||||
* are currently unused.
|
||||
*
|
||||
* Base must be either 8, 10, 16 or 0 to detect it automatically
|
||||
* similar to user space **strtol**\ (3).
|
||||
* Return
|
||||
* Number of characters consumed on success. Must be positive but
|
||||
* no more than *buf_len*.
|
||||
*
|
||||
* **-EINVAL** if no valid digits were found or unsupported base
|
||||
* was provided.
|
||||
*
|
||||
* **-ERANGE** if resulting value was out of range.
|
||||
*
|
||||
* int bpf_strtoul(const char *buf, size_t buf_len, u64 flags, unsigned long *res)
|
||||
* Description
|
||||
* Convert the initial part of the string from buffer *buf* of
|
||||
* size *buf_len* to an unsigned long integer according to the
|
||||
* given base and save the result in *res*.
|
||||
*
|
||||
* The string may begin with an arbitrary amount of white space
|
||||
* (as determined by **isspace**\ (3)).
|
||||
*
|
||||
* Five least significant bits of *flags* encode base, other bits
|
||||
* are currently unused.
|
||||
*
|
||||
* Base must be either 8, 10, 16 or 0 to detect it automatically
|
||||
* similar to user space **strtoul**\ (3).
|
||||
* Return
|
||||
* Number of characters consumed on success. Must be positive but
|
||||
* no more than *buf_len*.
|
||||
*
|
||||
* **-EINVAL** if no valid digits were found or unsupported base
|
||||
* was provided.
|
||||
*
|
||||
* **-ERANGE** if resulting value was out of range.
|
||||
*
|
||||
* void *bpf_sk_storage_get(struct bpf_map *map, struct bpf_sock *sk, void *value, u64 flags)
|
||||
* Description
|
||||
* Get a bpf-local-storage from a *sk*.
|
||||
*
|
||||
* Logically, it could be thought of getting the value from
|
||||
* a *map* with *sk* as the **key**. From this
|
||||
* perspective, the usage is not much different from
|
||||
* **bpf_map_lookup_elem**\ (*map*, **&**\ *sk*) except this
|
||||
* helper enforces the key must be a full socket and the map must
|
||||
* be a **BPF_MAP_TYPE_SK_STORAGE** also.
|
||||
*
|
||||
* Underneath, the value is stored locally at *sk* instead of
|
||||
* the *map*. The *map* is used as the bpf-local-storage
|
||||
* "type". The bpf-local-storage "type" (i.e. the *map*) is
|
||||
* searched against all bpf-local-storages residing at *sk*.
|
||||
*
|
||||
* An optional *flags* (**BPF_SK_STORAGE_GET_F_CREATE**) can be
|
||||
* used such that a new bpf-local-storage will be
|
||||
* created if one does not exist. *value* can be used
|
||||
* together with **BPF_SK_STORAGE_GET_F_CREATE** to specify
|
||||
* the initial value of a bpf-local-storage. If *value* is
|
||||
* **NULL**, the new bpf-local-storage will be zero initialized.
|
||||
* Return
|
||||
* A bpf-local-storage pointer is returned on success.
|
||||
*
|
||||
* **NULL** if not found or there was an error in adding
|
||||
* a new bpf-local-storage.
|
||||
*
|
||||
* int bpf_sk_storage_delete(struct bpf_map *map, struct bpf_sock *sk)
|
||||
* Description
|
||||
* Delete a bpf-local-storage from a *sk*.
|
||||
* Return
|
||||
* 0 on success.
|
||||
*
|
||||
* **-ENOENT** if the bpf-local-storage cannot be found.
|
||||
*/
|
||||
#define __BPF_FUNC_MAPPER(FN) \
|
||||
FN(unspec), \
|
||||
@@ -2531,7 +2772,17 @@ union bpf_attr {
|
||||
FN(sk_fullsock), \
|
||||
FN(tcp_sock), \
|
||||
FN(skb_ecn_set_ce), \
|
||||
FN(get_listener_sock),
|
||||
FN(get_listener_sock), \
|
||||
FN(skc_lookup_tcp), \
|
||||
FN(tcp_check_syncookie), \
|
||||
FN(sysctl_get_name), \
|
||||
FN(sysctl_get_current_value), \
|
||||
FN(sysctl_get_new_value), \
|
||||
FN(sysctl_set_new_value), \
|
||||
FN(strtol), \
|
||||
FN(strtoul), \
|
||||
FN(sk_storage_get), \
|
||||
FN(sk_storage_delete),
|
||||
|
||||
/* integer value in 'imm' field of BPF_CALL instruction selects which helper
|
||||
* function eBPF program intends to call
|
||||
@@ -2590,9 +2841,30 @@ enum bpf_func_id {
|
||||
/* Current network namespace */
|
||||
#define BPF_F_CURRENT_NETNS (-1L)
|
||||
|
||||
/* BPF_FUNC_skb_adjust_room flags. */
|
||||
#define BPF_F_ADJ_ROOM_FIXED_GSO (1ULL << 0)
|
||||
|
||||
#define BPF_ADJ_ROOM_ENCAP_L2_MASK 0xff
|
||||
#define BPF_ADJ_ROOM_ENCAP_L2_SHIFT 56
|
||||
|
||||
#define BPF_F_ADJ_ROOM_ENCAP_L3_IPV4 (1ULL << 1)
|
||||
#define BPF_F_ADJ_ROOM_ENCAP_L3_IPV6 (1ULL << 2)
|
||||
#define BPF_F_ADJ_ROOM_ENCAP_L4_GRE (1ULL << 3)
|
||||
#define BPF_F_ADJ_ROOM_ENCAP_L4_UDP (1ULL << 4)
|
||||
#define BPF_F_ADJ_ROOM_ENCAP_L2(len) (((__u64)len & \
|
||||
BPF_ADJ_ROOM_ENCAP_L2_MASK) \
|
||||
<< BPF_ADJ_ROOM_ENCAP_L2_SHIFT)
|
||||
|
||||
/* BPF_FUNC_sysctl_get_name flags. */
|
||||
#define BPF_F_SYSCTL_BASE_NAME (1ULL << 0)
|
||||
|
||||
/* BPF_FUNC_sk_storage_get flags */
|
||||
#define BPF_SK_STORAGE_GET_F_CREATE (1ULL << 0)
|
||||
|
||||
/* Mode for BPF_FUNC_skb_adjust_room helper. */
|
||||
enum bpf_adj_room_mode {
|
||||
BPF_ADJ_ROOM_NET,
|
||||
BPF_ADJ_ROOM_MAC,
|
||||
};
|
||||
|
||||
/* Mode for BPF_FUNC_skb_load_bytes_relative helper. */
|
||||
@@ -3218,4 +3490,14 @@ struct bpf_line_info {
|
||||
struct bpf_spin_lock {
|
||||
__u32 val;
|
||||
};
|
||||
|
||||
struct bpf_sysctl {
|
||||
__u32 write; /* Sysctl is being read (= 0) or written (= 1).
|
||||
* Allows 1,2,4-byte read, but no write.
|
||||
*/
|
||||
__u32 file_pos; /* Sysctl file position to read from, write to.
|
||||
* Allows 1,2,4-byte read an 4-byte write.
|
||||
*/
|
||||
};
|
||||
|
||||
#endif /* _UAPI__LINUX_BPF_H__ */
|
||||
|
||||
@@ -39,11 +39,11 @@ struct btf_type {
|
||||
* struct, union and fwd
|
||||
*/
|
||||
__u32 info;
|
||||
/* "size" is used by INT, ENUM, STRUCT and UNION.
|
||||
/* "size" is used by INT, ENUM, STRUCT, UNION and DATASEC.
|
||||
* "size" tells the size of the type it is describing.
|
||||
*
|
||||
* "type" is used by PTR, TYPEDEF, VOLATILE, CONST, RESTRICT,
|
||||
* FUNC and FUNC_PROTO.
|
||||
* FUNC, FUNC_PROTO and VAR.
|
||||
* "type" is a type_id referring to another type.
|
||||
*/
|
||||
union {
|
||||
@@ -70,8 +70,10 @@ struct btf_type {
|
||||
#define BTF_KIND_RESTRICT 11 /* Restrict */
|
||||
#define BTF_KIND_FUNC 12 /* Function */
|
||||
#define BTF_KIND_FUNC_PROTO 13 /* Function Proto */
|
||||
#define BTF_KIND_MAX 13
|
||||
#define NR_BTF_KINDS 14
|
||||
#define BTF_KIND_VAR 14 /* Variable */
|
||||
#define BTF_KIND_DATASEC 15 /* Section */
|
||||
#define BTF_KIND_MAX BTF_KIND_DATASEC
|
||||
#define NR_BTF_KINDS (BTF_KIND_MAX + 1)
|
||||
|
||||
/* For some specific BTF_KIND, "struct btf_type" is immediately
|
||||
* followed by extra data.
|
||||
@@ -138,4 +140,26 @@ struct btf_param {
|
||||
__u32 type;
|
||||
};
|
||||
|
||||
enum {
|
||||
BTF_VAR_STATIC = 0,
|
||||
BTF_VAR_GLOBAL_ALLOCATED,
|
||||
};
|
||||
|
||||
/* BTF_KIND_VAR is followed by a single "struct btf_var" to describe
|
||||
* additional information related to the variable such as its linkage.
|
||||
*/
|
||||
struct btf_var {
|
||||
__u32 linkage;
|
||||
};
|
||||
|
||||
/* BTF_KIND_DATASEC is followed by multiple "struct btf_var_secinfo"
|
||||
* to describe all BTF_KIND_VAR types it contains along with it's
|
||||
* in-section offset as well as size.
|
||||
*/
|
||||
struct btf_var_secinfo {
|
||||
__u32 type;
|
||||
__u32 offset;
|
||||
__u32 size;
|
||||
};
|
||||
|
||||
#endif /* _UAPI__LINUX_BTF_H__ */
|
||||
|
||||
@@ -307,6 +307,8 @@
|
||||
*
|
||||
* Used by:
|
||||
* struct btrfs_dir_item.type
|
||||
*
|
||||
* Values 0..7 must match common file type values in fs_types.h.
|
||||
*/
|
||||
#define BTRFS_FT_UNKNOWN 0
|
||||
#define BTRFS_FT_REG_FILE 1
|
||||
|
||||
@@ -34,14 +34,20 @@
|
||||
#define EM_M32R 88 /* Renesas M32R */
|
||||
#define EM_MN10300 89 /* Panasonic/MEI MN10300, AM33 */
|
||||
#define EM_OPENRISC 92 /* OpenRISC 32-bit embedded processor */
|
||||
#define EM_ARCOMPACT 93 /* ARCompact processor */
|
||||
#define EM_XTENSA 94 /* Tensilica Xtensa Architecture */
|
||||
#define EM_BLACKFIN 106 /* ADI Blackfin Processor */
|
||||
#define EM_UNICORE 110 /* UniCore-32 */
|
||||
#define EM_ALTERA_NIOS2 113 /* Altera Nios II soft-core processor */
|
||||
#define EM_TI_C6000 140 /* TI C6X DSPs */
|
||||
#define EM_HEXAGON 164 /* QUALCOMM Hexagon */
|
||||
#define EM_NDS32 167 /* Andes Technology compact code size
|
||||
embedded RISC processor family */
|
||||
#define EM_AARCH64 183 /* ARM 64 bit */
|
||||
#define EM_TILEPRO 188 /* Tilera TILEPro */
|
||||
#define EM_MICROBLAZE 189 /* Xilinx MicroBlaze */
|
||||
#define EM_TILEGX 191 /* Tilera TILE-Gx */
|
||||
#define EM_ARCV2 195 /* ARCv2 Cores */
|
||||
#define EM_RISCV 243 /* RISC-V */
|
||||
#define EM_BPF 247 /* Linux BPF - in-kernel virtual machine */
|
||||
#define EM_CSKY 252 /* C-SKY */
|
||||
|
||||
@@ -252,9 +252,17 @@ struct ethtool_tunable {
|
||||
#define DOWNSHIFT_DEV_DEFAULT_COUNT 0xff
|
||||
#define DOWNSHIFT_DEV_DISABLE 0
|
||||
|
||||
/* Time in msecs after which link is reported as down
|
||||
* 0 = lowest time supported by the PHY
|
||||
* 0xff = off, link down detection according to standard
|
||||
*/
|
||||
#define ETHTOOL_PHY_FAST_LINK_DOWN_ON 0
|
||||
#define ETHTOOL_PHY_FAST_LINK_DOWN_OFF 0xff
|
||||
|
||||
enum phy_tunable_id {
|
||||
ETHTOOL_PHY_ID_UNSPEC,
|
||||
ETHTOOL_PHY_DOWNSHIFT,
|
||||
ETHTOOL_PHY_FAST_LINK_DOWN,
|
||||
/*
|
||||
* Add your fresh new phy tunable attribute above and remember to update
|
||||
* phy_tunable_strings[] in net/core/ethtool.c
|
||||
@@ -1704,6 +1712,9 @@ static inline int ethtool_validate_duplex(__u8 duplex)
|
||||
#define ETH_MODULE_SFF_8436 0x4
|
||||
#define ETH_MODULE_SFF_8436_LEN 256
|
||||
|
||||
#define ETH_MODULE_SFF_8636_MAX_LEN 640
|
||||
#define ETH_MODULE_SFF_8436_MAX_LEN 640
|
||||
|
||||
/* Reset flags */
|
||||
/* The reset() operation must clear the flags for the components which
|
||||
* were actually reset. On successful return, the flags indicate the
|
||||
|
||||
@@ -91,5 +91,7 @@
|
||||
#define AT_STATX_FORCE_SYNC 0x2000 /* - Force the attributes to be sync'd with the server */
|
||||
#define AT_STATX_DONT_SYNC 0x4000 /* - Don't sync attributes with the server */
|
||||
|
||||
#define AT_RECURSIVE 0x8000 /* Apply to the entire subtree */
|
||||
|
||||
|
||||
#endif /* _UAPI_LINUX_FCNTL_H */
|
||||
|
||||
@@ -16,6 +16,12 @@ enum {
|
||||
FOU_ATTR_IPPROTO, /* u8 */
|
||||
FOU_ATTR_TYPE, /* u8 */
|
||||
FOU_ATTR_REMCSUM_NOPARTIAL, /* flag */
|
||||
FOU_ATTR_LOCAL_V4, /* u32 */
|
||||
FOU_ATTR_LOCAL_V6, /* in6_addr */
|
||||
FOU_ATTR_PEER_V4, /* u32 */
|
||||
FOU_ATTR_PEER_V6, /* in6_addr */
|
||||
FOU_ATTR_PEER_PORT, /* u16 */
|
||||
FOU_ATTR_IFINDEX, /* s32 */
|
||||
|
||||
__FOU_ATTR_MAX,
|
||||
};
|
||||
|
||||
@@ -320,6 +320,9 @@ struct fscrypt_key {
|
||||
#define SYNC_FILE_RANGE_WAIT_BEFORE 1
|
||||
#define SYNC_FILE_RANGE_WRITE 2
|
||||
#define SYNC_FILE_RANGE_WAIT_AFTER 4
|
||||
#define SYNC_FILE_RANGE_WRITE_AND_WAIT (SYNC_FILE_RANGE_WRITE | \
|
||||
SYNC_FILE_RANGE_WAIT_BEFORE | \
|
||||
SYNC_FILE_RANGE_WAIT_AFTER)
|
||||
|
||||
/*
|
||||
* Flags for preadv2/pwritev2:
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
* - add lock_owner field to fuse_setattr_in, fuse_read_in and fuse_write_in
|
||||
* - add blksize field to fuse_attr
|
||||
* - add file flags field to fuse_read_in and fuse_write_in
|
||||
* - Add ATIME_NOW and MTIME_NOW flags to fuse_setattr_in
|
||||
*
|
||||
* 7.10
|
||||
* - add nonseekable open flag
|
||||
@@ -54,7 +55,7 @@
|
||||
* - add POLL message and NOTIFY_POLL notification
|
||||
*
|
||||
* 7.12
|
||||
* - add umask flag to input argument of open, mknod and mkdir
|
||||
* - add umask flag to input argument of create, mknod and mkdir
|
||||
* - add notification messages for invalidation of inodes and
|
||||
* directory entries
|
||||
*
|
||||
@@ -125,6 +126,10 @@
|
||||
*
|
||||
* 7.29
|
||||
* - add FUSE_NO_OPENDIR_SUPPORT flag
|
||||
*
|
||||
* 7.30
|
||||
* - add FUSE_EXPLICIT_INVAL_DATA
|
||||
* - add FUSE_IOCTL_COMPAT_X32
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_FUSE_H
|
||||
@@ -160,7 +165,7 @@
|
||||
#define FUSE_KERNEL_VERSION 7
|
||||
|
||||
/** Minor version number of this interface */
|
||||
#define FUSE_KERNEL_MINOR_VERSION 29
|
||||
#define FUSE_KERNEL_MINOR_VERSION 30
|
||||
|
||||
/** The node ID of the root inode */
|
||||
#define FUSE_ROOT_ID 1
|
||||
@@ -229,11 +234,13 @@ struct fuse_file_lock {
|
||||
* FOPEN_KEEP_CACHE: don't invalidate the data cache on open
|
||||
* FOPEN_NONSEEKABLE: the file is not seekable
|
||||
* FOPEN_CACHE_DIR: allow caching this directory
|
||||
* FOPEN_STREAM: the file is stream-like (no file position at all)
|
||||
*/
|
||||
#define FOPEN_DIRECT_IO (1 << 0)
|
||||
#define FOPEN_KEEP_CACHE (1 << 1)
|
||||
#define FOPEN_NONSEEKABLE (1 << 2)
|
||||
#define FOPEN_CACHE_DIR (1 << 3)
|
||||
#define FOPEN_STREAM (1 << 4)
|
||||
|
||||
/**
|
||||
* INIT request/reply flags
|
||||
@@ -263,6 +270,7 @@ struct fuse_file_lock {
|
||||
* FUSE_MAX_PAGES: init_out.max_pages contains the max number of req pages
|
||||
* FUSE_CACHE_SYMLINKS: cache READLINK responses
|
||||
* FUSE_NO_OPENDIR_SUPPORT: kernel supports zero-message opendir
|
||||
* FUSE_EXPLICIT_INVAL_DATA: only invalidate cached pages on explicit request
|
||||
*/
|
||||
#define FUSE_ASYNC_READ (1 << 0)
|
||||
#define FUSE_POSIX_LOCKS (1 << 1)
|
||||
@@ -289,6 +297,7 @@ struct fuse_file_lock {
|
||||
#define FUSE_MAX_PAGES (1 << 22)
|
||||
#define FUSE_CACHE_SYMLINKS (1 << 23)
|
||||
#define FUSE_NO_OPENDIR_SUPPORT (1 << 24)
|
||||
#define FUSE_EXPLICIT_INVAL_DATA (1 << 25)
|
||||
|
||||
/**
|
||||
* CUSE INIT request/reply flags
|
||||
@@ -335,6 +344,7 @@ struct fuse_file_lock {
|
||||
* FUSE_IOCTL_RETRY: retry with new iovecs
|
||||
* FUSE_IOCTL_32BIT: 32bit ioctl
|
||||
* FUSE_IOCTL_DIR: is a directory
|
||||
* FUSE_IOCTL_COMPAT_X32: x32 compat ioctl on 64bit machine (64bit time_t)
|
||||
*
|
||||
* FUSE_IOCTL_MAX_IOV: maximum of in_iovecs + out_iovecs
|
||||
*/
|
||||
@@ -343,6 +353,7 @@ struct fuse_file_lock {
|
||||
#define FUSE_IOCTL_RETRY (1 << 2)
|
||||
#define FUSE_IOCTL_32BIT (1 << 3)
|
||||
#define FUSE_IOCTL_DIR (1 << 4)
|
||||
#define FUSE_IOCTL_COMPAT_X32 (1 << 5)
|
||||
|
||||
#define FUSE_IOCTL_MAX_IOV 256
|
||||
|
||||
@@ -353,6 +364,13 @@ struct fuse_file_lock {
|
||||
*/
|
||||
#define FUSE_POLL_SCHEDULE_NOTIFY (1 << 0)
|
||||
|
||||
/**
|
||||
* Fsync flags
|
||||
*
|
||||
* FUSE_FSYNC_FDATASYNC: Sync data only, not metadata
|
||||
*/
|
||||
#define FUSE_FSYNC_FDATASYNC (1 << 0)
|
||||
|
||||
enum fuse_opcode {
|
||||
FUSE_LOOKUP = 1,
|
||||
FUSE_FORGET = 2, /* no reply */
|
||||
|
||||
@@ -90,6 +90,8 @@ struct icmp6hdr {
|
||||
#define ICMPV6_TIME_EXCEED 3
|
||||
#define ICMPV6_PARAMPROB 4
|
||||
|
||||
#define ICMPV6_ERRMSG_MAX 127
|
||||
|
||||
#define ICMPV6_INFOMSG_MASK 0x80
|
||||
|
||||
#define ICMPV6_ECHO_REQUEST 128
|
||||
@@ -110,6 +112,8 @@ struct icmp6hdr {
|
||||
|
||||
#define ICMPV6_MRDISC_ADV 151
|
||||
|
||||
#define ICMPV6_MSG_MAX 255
|
||||
|
||||
/*
|
||||
* Codes for Destination Unreachable
|
||||
*/
|
||||
|
||||
@@ -109,6 +109,7 @@
|
||||
#define ETH_P_QINQ2 0x9200 /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ] */
|
||||
#define ETH_P_QINQ3 0x9300 /* deprecated QinQ VLAN [ NOT AN OFFICIALLY REGISTERED ID ] */
|
||||
#define ETH_P_EDSA 0xDADA /* Ethertype DSA [ NOT AN OFFICIALLY REGISTERED ID ] */
|
||||
#define ETH_P_DSA_8021Q 0xDADB /* Fake VLAN Header for DSA [ NOT AN OFFICIALLY REGISTERED ID ] */
|
||||
#define ETH_P_IFE 0xED3E /* ForCES inter-FE LFB type */
|
||||
#define ETH_P_AF_IUCV 0xFBFB /* IBM af_iucv [ NOT AN OFFICIALLY REGISTERED ID ] */
|
||||
|
||||
|
||||
@@ -60,6 +60,7 @@
|
||||
#define TUNSETSTEERINGEBPF _IOR('T', 224, int)
|
||||
#define TUNSETFILTEREBPF _IOR('T', 225, int)
|
||||
#define TUNSETCARRIER _IOW('T', 226, int)
|
||||
#define TUNGETDEVNETNS _IO('T', 227)
|
||||
|
||||
/* TUNSETIFF ifr flags */
|
||||
#define IFF_TUN 0x0001
|
||||
|
||||
@@ -32,10 +32,11 @@ enum vlan_ioctl_cmds {
|
||||
};
|
||||
|
||||
enum vlan_flags {
|
||||
VLAN_FLAG_REORDER_HDR = 0x1,
|
||||
VLAN_FLAG_GVRP = 0x2,
|
||||
VLAN_FLAG_LOOSE_BINDING = 0x4,
|
||||
VLAN_FLAG_MVRP = 0x8,
|
||||
VLAN_FLAG_REORDER_HDR = 0x1,
|
||||
VLAN_FLAG_GVRP = 0x2,
|
||||
VLAN_FLAG_LOOSE_BINDING = 0x4,
|
||||
VLAN_FLAG_MVRP = 0x8,
|
||||
VLAN_FLAG_BRIDGE_BINDING = 0x10,
|
||||
};
|
||||
|
||||
enum vlan_name_types {
|
||||
|
||||
@@ -606,6 +606,7 @@
|
||||
#define KEY_SCREENSAVER 0x245 /* AL Screen Saver */
|
||||
#define KEY_VOICECOMMAND 0x246 /* Listening Voice Command */
|
||||
#define KEY_ASSISTANT 0x247 /* AL Context-aware desktop assistant */
|
||||
#define KEY_KBD_LAYOUT_NEXT 0x248 /* AC Next Keyboard Layout Select */
|
||||
|
||||
#define KEY_BRIGHTNESS_MIN 0x250 /* Set Brightness to Minimum */
|
||||
#define KEY_BRIGHTNESS_MAX 0x251 /* Set Brightness to Maximum */
|
||||
|
||||
@@ -26,6 +26,7 @@ struct io_uring_sqe {
|
||||
__kernel_rwf_t rw_flags;
|
||||
__u32 fsync_flags;
|
||||
__u16 poll_events;
|
||||
__u32 sync_range_flags;
|
||||
};
|
||||
__u64 user_data; /* data to be passed back at completion time */
|
||||
union {
|
||||
@@ -38,6 +39,7 @@ struct io_uring_sqe {
|
||||
* sqe->flags
|
||||
*/
|
||||
#define IOSQE_FIXED_FILE (1U << 0) /* use fixed fileset */
|
||||
#define IOSQE_IO_DRAIN (1U << 1) /* issue after inflight IO */
|
||||
|
||||
/*
|
||||
* io_uring_setup() flags
|
||||
@@ -54,6 +56,7 @@ struct io_uring_sqe {
|
||||
#define IORING_OP_WRITE_FIXED 5
|
||||
#define IORING_OP_POLL_ADD 6
|
||||
#define IORING_OP_POLL_REMOVE 7
|
||||
#define IORING_OP_SYNC_FILE_RANGE 8
|
||||
|
||||
/*
|
||||
* sqe->fsync_flags
|
||||
@@ -133,5 +136,7 @@ struct io_uring_params {
|
||||
#define IORING_UNREGISTER_BUFFERS 1
|
||||
#define IORING_REGISTER_FILES 2
|
||||
#define IORING_UNREGISTER_FILES 3
|
||||
#define IORING_REGISTER_EVENTFD 4
|
||||
#define IORING_UNREGISTER_EVENTFD 5
|
||||
|
||||
#endif
|
||||
|
||||
@@ -124,6 +124,13 @@
|
||||
|
||||
#define IP_VS_PEDATA_MAXLEN 255
|
||||
|
||||
/* Tunnel types */
|
||||
enum {
|
||||
IP_VS_CONN_F_TUNNEL_TYPE_IPIP = 0, /* IPIP */
|
||||
IP_VS_CONN_F_TUNNEL_TYPE_GUE, /* GUE */
|
||||
IP_VS_CONN_F_TUNNEL_TYPE_MAX,
|
||||
};
|
||||
|
||||
/*
|
||||
* The struct ip_vs_service_user and struct ip_vs_dest_user are
|
||||
* used to set IPVS rules through setsockopt.
|
||||
@@ -392,6 +399,10 @@ enum {
|
||||
|
||||
IPVS_DEST_ATTR_STATS64, /* nested attribute for dest stats */
|
||||
|
||||
IPVS_DEST_ATTR_TUN_TYPE, /* tunnel type */
|
||||
|
||||
IPVS_DEST_ATTR_TUN_PORT, /* tunnel port */
|
||||
|
||||
__IPVS_DEST_ATTR_MAX,
|
||||
};
|
||||
|
||||
|
||||
@@ -211,6 +211,11 @@ struct kfd_ioctl_dbg_wave_control_args {
|
||||
#define KFD_HW_EXCEPTION_GPU_HANG 0
|
||||
#define KFD_HW_EXCEPTION_ECC 1
|
||||
|
||||
/* For kfd_hsa_memory_exception_data.ErrorType */
|
||||
#define KFD_MEM_ERR_NO_RAS 0
|
||||
#define KFD_MEM_ERR_SRAM_ECC 1
|
||||
#define KFD_MEM_ERR_POISON_CONSUMED 2
|
||||
#define KFD_MEM_ERR_GPU_HANG 3
|
||||
|
||||
struct kfd_ioctl_create_event_args {
|
||||
__u64 event_page_offset; /* from KFD */
|
||||
@@ -250,7 +255,12 @@ struct kfd_hsa_memory_exception_data {
|
||||
struct kfd_memory_exception_failure failure;
|
||||
__u64 va;
|
||||
__u32 gpu_id;
|
||||
__u32 pad;
|
||||
__u32 ErrorType; /* 0 = no RAS error,
|
||||
* 1 = ECC_SRAM,
|
||||
* 2 = Link_SYNFLOOD (poison),
|
||||
* 3 = GPU hang (not attributable to a specific cause),
|
||||
* other values reserved
|
||||
*/
|
||||
};
|
||||
|
||||
/* hw exception data */
|
||||
|
||||
@@ -986,8 +986,13 @@ struct kvm_ppc_resize_hpt {
|
||||
#define KVM_CAP_HYPERV_ENLIGHTENED_VMCS 163
|
||||
#define KVM_CAP_EXCEPTION_PAYLOAD 164
|
||||
#define KVM_CAP_ARM_VM_IPA_SIZE 165
|
||||
#define KVM_CAP_MANUAL_DIRTY_LOG_PROTECT 166
|
||||
#define KVM_CAP_MANUAL_DIRTY_LOG_PROTECT 166 /* Obsolete */
|
||||
#define KVM_CAP_HYPERV_CPUID 167
|
||||
#define KVM_CAP_MANUAL_DIRTY_LOG_PROTECT2 168
|
||||
#define KVM_CAP_PPC_IRQ_XIVE 169
|
||||
#define KVM_CAP_ARM_SVE 170
|
||||
#define KVM_CAP_ARM_PTRAUTH_ADDRESS 171
|
||||
#define KVM_CAP_ARM_PTRAUTH_GENERIC 172
|
||||
|
||||
#ifdef KVM_CAP_IRQ_ROUTING
|
||||
|
||||
@@ -1145,6 +1150,7 @@ struct kvm_dirty_tlb {
|
||||
#define KVM_REG_SIZE_U256 0x0050000000000000ULL
|
||||
#define KVM_REG_SIZE_U512 0x0060000000000000ULL
|
||||
#define KVM_REG_SIZE_U1024 0x0070000000000000ULL
|
||||
#define KVM_REG_SIZE_U2048 0x0080000000000000ULL
|
||||
|
||||
struct kvm_reg_list {
|
||||
__u64 n; /* number of regs */
|
||||
@@ -1211,6 +1217,8 @@ enum kvm_device_type {
|
||||
#define KVM_DEV_TYPE_ARM_VGIC_V3 KVM_DEV_TYPE_ARM_VGIC_V3
|
||||
KVM_DEV_TYPE_ARM_VGIC_ITS,
|
||||
#define KVM_DEV_TYPE_ARM_VGIC_ITS KVM_DEV_TYPE_ARM_VGIC_ITS
|
||||
KVM_DEV_TYPE_XIVE,
|
||||
#define KVM_DEV_TYPE_XIVE KVM_DEV_TYPE_XIVE
|
||||
KVM_DEV_TYPE_MAX,
|
||||
};
|
||||
|
||||
@@ -1434,12 +1442,15 @@ struct kvm_enc_region {
|
||||
#define KVM_GET_NESTED_STATE _IOWR(KVMIO, 0xbe, struct kvm_nested_state)
|
||||
#define KVM_SET_NESTED_STATE _IOW(KVMIO, 0xbf, struct kvm_nested_state)
|
||||
|
||||
/* Available with KVM_CAP_MANUAL_DIRTY_LOG_PROTECT */
|
||||
/* Available with KVM_CAP_MANUAL_DIRTY_LOG_PROTECT_2 */
|
||||
#define KVM_CLEAR_DIRTY_LOG _IOWR(KVMIO, 0xc0, struct kvm_clear_dirty_log)
|
||||
|
||||
/* Available with KVM_CAP_HYPERV_CPUID */
|
||||
#define KVM_GET_SUPPORTED_HV_CPUID _IOWR(KVMIO, 0xc1, struct kvm_cpuid2)
|
||||
|
||||
/* Available with KVM_CAP_ARM_SVE */
|
||||
#define KVM_ARM_VCPU_FINALIZE _IOW(KVMIO, 0xc2, int)
|
||||
|
||||
/* Secure Encrypted Virtualization command */
|
||||
enum sev_cmd_id {
|
||||
/* Guest initialization commands */
|
||||
|
||||
@@ -195,6 +195,7 @@ struct lirc_scancode {
|
||||
* @RC_PROTO_RCMM12: RC-MM protocol 12 bits
|
||||
* @RC_PROTO_RCMM24: RC-MM protocol 24 bits
|
||||
* @RC_PROTO_RCMM32: RC-MM protocol 32 bits
|
||||
* @RC_PROTO_XBOX_DVD: Xbox DVD Movie Playback Kit protocol
|
||||
*/
|
||||
enum rc_proto {
|
||||
RC_PROTO_UNKNOWN = 0,
|
||||
@@ -224,6 +225,7 @@ enum rc_proto {
|
||||
RC_PROTO_RCMM12 = 24,
|
||||
RC_PROTO_RCMM24 = 25,
|
||||
RC_PROTO_RCMM32 = 26,
|
||||
RC_PROTO_XBOX_DVD = 27,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
#define MEDIA_BUS_FMT_FIXED 0x0001
|
||||
|
||||
/* RGB - next is 0x101b */
|
||||
/* RGB - next is 0x101c */
|
||||
#define MEDIA_BUS_FMT_RGB444_1X12 0x1016
|
||||
#define MEDIA_BUS_FMT_RGB444_2X8_PADHI_BE 0x1001
|
||||
#define MEDIA_BUS_FMT_RGB444_2X8_PADHI_LE 0x1002
|
||||
@@ -50,6 +50,7 @@
|
||||
#define MEDIA_BUS_FMT_RGB666_1X24_CPADHI 0x1015
|
||||
#define MEDIA_BUS_FMT_RGB666_1X7X3_SPWG 0x1010
|
||||
#define MEDIA_BUS_FMT_BGR888_1X24 0x1013
|
||||
#define MEDIA_BUS_FMT_BGR888_3X8 0x101b
|
||||
#define MEDIA_BUS_FMT_GBR888_1X24 0x1014
|
||||
#define MEDIA_BUS_FMT_RGB888_1X24 0x100a
|
||||
#define MEDIA_BUS_FMT_RGB888_2X12_BE 0x100b
|
||||
|
||||
@@ -262,6 +262,11 @@ struct media_links_enum {
|
||||
#define MEDIA_INTF_T_V4L_SWRADIO (MEDIA_INTF_T_V4L_BASE + 4)
|
||||
#define MEDIA_INTF_T_V4L_TOUCH (MEDIA_INTF_T_V4L_BASE + 5)
|
||||
|
||||
#define MEDIA_INTF_T_ALSA_BASE 0x00000300
|
||||
#define MEDIA_INTF_T_ALSA_PCM_CAPTURE (MEDIA_INTF_T_ALSA_BASE)
|
||||
#define MEDIA_INTF_T_ALSA_PCM_PLAYBACK (MEDIA_INTF_T_ALSA_BASE + 1)
|
||||
#define MEDIA_INTF_T_ALSA_CONTROL (MEDIA_INTF_T_ALSA_BASE + 2)
|
||||
|
||||
#if defined(__KERNEL__)
|
||||
|
||||
/*
|
||||
@@ -413,19 +418,19 @@ struct media_v2_topology {
|
||||
#define MEDIA_ENT_F_DTV_DECODER MEDIA_ENT_F_DV_DECODER
|
||||
|
||||
/*
|
||||
* There is still no ALSA support in the media controller. These
|
||||
* There is still no full ALSA support in the media controller. These
|
||||
* defines should not have been added and we leave them here only
|
||||
* in case some application tries to use these defines.
|
||||
*
|
||||
* The ALSA defines that are in use have been moved into __KERNEL__
|
||||
* scope. As support gets added to these interface types, they should
|
||||
* be moved into __KERNEL__ scope with the code that uses them.
|
||||
*/
|
||||
#define MEDIA_INTF_T_ALSA_BASE 0x00000300
|
||||
#define MEDIA_INTF_T_ALSA_PCM_CAPTURE (MEDIA_INTF_T_ALSA_BASE)
|
||||
#define MEDIA_INTF_T_ALSA_PCM_PLAYBACK (MEDIA_INTF_T_ALSA_BASE + 1)
|
||||
#define MEDIA_INTF_T_ALSA_CONTROL (MEDIA_INTF_T_ALSA_BASE + 2)
|
||||
#define MEDIA_INTF_T_ALSA_COMPRESS (MEDIA_INTF_T_ALSA_BASE + 3)
|
||||
#define MEDIA_INTF_T_ALSA_RAWMIDI (MEDIA_INTF_T_ALSA_BASE + 4)
|
||||
#define MEDIA_INTF_T_ALSA_HWDEP (MEDIA_INTF_T_ALSA_BASE + 5)
|
||||
#define MEDIA_INTF_T_ALSA_SEQUENCER (MEDIA_INTF_T_ALSA_BASE + 6)
|
||||
#define MEDIA_INTF_T_ALSA_TIMER (MEDIA_INTF_T_ALSA_BASE + 7)
|
||||
#define MEDIA_INTF_T_ALSA_COMPRESS (MEDIA_INTF_T_ALSA_BASE + 3)
|
||||
#define MEDIA_INTF_T_ALSA_RAWMIDI (MEDIA_INTF_T_ALSA_BASE + 4)
|
||||
#define MEDIA_INTF_T_ALSA_HWDEP (MEDIA_INTF_T_ALSA_BASE + 5)
|
||||
#define MEDIA_INTF_T_ALSA_SEQUENCER (MEDIA_INTF_T_ALSA_BASE + 6)
|
||||
#define MEDIA_INTF_T_ALSA_TIMER (MEDIA_INTF_T_ALSA_BASE + 7)
|
||||
|
||||
/* Obsolete symbol for media_version, no longer used in the kernel */
|
||||
#define MEDIA_API_VERSION ((0 << 16) | (1 << 8) | 0)
|
||||
|
||||
@@ -1,70 +1,9 @@
|
||||
/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
|
||||
/******************************************************************************
|
||||
/*
|
||||
* Copyright(c) 2003-2015 Intel Corporation. All rights reserved.
|
||||
* Intel Management Engine Interface (Intel MEI) Linux driver
|
||||
* Intel MEI Interface Header
|
||||
*
|
||||
* This file is provided under a dual BSD/GPLv2 license. When using or
|
||||
* redistributing this file, you may do so under either license.
|
||||
*
|
||||
* GPL LICENSE SUMMARY
|
||||
*
|
||||
* Copyright(c) 2003 - 2012 Intel Corporation. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of version 2 of the GNU General Public License as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110,
|
||||
* USA
|
||||
*
|
||||
* The full GNU General Public License is included in this distribution
|
||||
* in the file called LICENSE.GPL.
|
||||
*
|
||||
* Contact Information:
|
||||
* Intel Corporation.
|
||||
* linux-mei@linux.intel.com
|
||||
* http://www.intel.com
|
||||
*
|
||||
* BSD LICENSE
|
||||
*
|
||||
* Copyright(c) 2003 - 2012 Intel Corporation. All rights reserved.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* * Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* * Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in
|
||||
* the documentation and/or other materials provided with the
|
||||
* distribution.
|
||||
* * Neither the name Intel Corporation nor the names of its
|
||||
* contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
*/
|
||||
#ifndef _LINUX_MEI_H
|
||||
#define _LINUX_MEI_H
|
||||
|
||||
|
||||
@@ -55,4 +55,66 @@
|
||||
#define MS_MGC_VAL 0xC0ED0000
|
||||
#define MS_MGC_MSK 0xffff0000
|
||||
|
||||
/*
|
||||
* open_tree() flags.
|
||||
*/
|
||||
#define OPEN_TREE_CLONE 1 /* Clone the target tree and attach the clone */
|
||||
#define OPEN_TREE_CLOEXEC O_CLOEXEC /* Close the file on execve() */
|
||||
|
||||
/*
|
||||
* move_mount() flags.
|
||||
*/
|
||||
#define MOVE_MOUNT_F_SYMLINKS 0x00000001 /* Follow symlinks on from path */
|
||||
#define MOVE_MOUNT_F_AUTOMOUNTS 0x00000002 /* Follow automounts on from path */
|
||||
#define MOVE_MOUNT_F_EMPTY_PATH 0x00000004 /* Empty from path permitted */
|
||||
#define MOVE_MOUNT_T_SYMLINKS 0x00000010 /* Follow symlinks on to path */
|
||||
#define MOVE_MOUNT_T_AUTOMOUNTS 0x00000020 /* Follow automounts on to path */
|
||||
#define MOVE_MOUNT_T_EMPTY_PATH 0x00000040 /* Empty to path permitted */
|
||||
#define MOVE_MOUNT__MASK 0x00000077
|
||||
|
||||
/*
|
||||
* fsopen() flags.
|
||||
*/
|
||||
#define FSOPEN_CLOEXEC 0x00000001
|
||||
|
||||
/*
|
||||
* fspick() flags.
|
||||
*/
|
||||
#define FSPICK_CLOEXEC 0x00000001
|
||||
#define FSPICK_SYMLINK_NOFOLLOW 0x00000002
|
||||
#define FSPICK_NO_AUTOMOUNT 0x00000004
|
||||
#define FSPICK_EMPTY_PATH 0x00000008
|
||||
|
||||
/*
|
||||
* The type of fsconfig() call made.
|
||||
*/
|
||||
enum fsconfig_command {
|
||||
FSCONFIG_SET_FLAG = 0, /* Set parameter, supplying no value */
|
||||
FSCONFIG_SET_STRING = 1, /* Set parameter, supplying a string value */
|
||||
FSCONFIG_SET_BINARY = 2, /* Set parameter, supplying a binary blob value */
|
||||
FSCONFIG_SET_PATH = 3, /* Set parameter, supplying an object by path */
|
||||
FSCONFIG_SET_PATH_EMPTY = 4, /* Set parameter, supplying an object by (empty) path */
|
||||
FSCONFIG_SET_FD = 5, /* Set parameter, supplying an object by fd */
|
||||
FSCONFIG_CMD_CREATE = 6, /* Invoke superblock creation */
|
||||
FSCONFIG_CMD_RECONFIGURE = 7, /* Invoke superblock reconfiguration */
|
||||
};
|
||||
|
||||
/*
|
||||
* fsmount() flags.
|
||||
*/
|
||||
#define FSMOUNT_CLOEXEC 0x00000001
|
||||
|
||||
/*
|
||||
* Mount attributes.
|
||||
*/
|
||||
#define MOUNT_ATTR_RDONLY 0x00000001 /* Mount read-only */
|
||||
#define MOUNT_ATTR_NOSUID 0x00000002 /* Ignore suid and sgid bits */
|
||||
#define MOUNT_ATTR_NODEV 0x00000004 /* Disallow access to device special files */
|
||||
#define MOUNT_ATTR_NOEXEC 0x00000008 /* Disallow program execution */
|
||||
#define MOUNT_ATTR__ATIME 0x00000070 /* Setting on how atime should be updated */
|
||||
#define MOUNT_ATTR_RELATIME 0x00000000 /* - Update atime relative to mtime/ctime. */
|
||||
#define MOUNT_ATTR_NOATIME 0x00000010 /* - Do not update access times. */
|
||||
#define MOUNT_ATTR_STRICTATIME 0x00000020 /* - Always perform atime updates */
|
||||
#define MOUNT_ATTR_NODIRATIME 0x00000080 /* Do not update directory access times */
|
||||
|
||||
#endif /* _UAPI_LINUX_MOUNT_H */
|
||||
|
||||
@@ -966,7 +966,7 @@ enum nft_socket_keys {
|
||||
* @NFT_CT_DST_IP: conntrack layer 3 protocol destination (IPv4 address)
|
||||
* @NFT_CT_SRC_IP6: conntrack layer 3 protocol source (IPv6 address)
|
||||
* @NFT_CT_DST_IP6: conntrack layer 3 protocol destination (IPv6 address)
|
||||
* @NFT_CT_TIMEOUT: connection tracking timeout policy assigned to conntrack
|
||||
* @NFT_CT_ID: conntrack id
|
||||
*/
|
||||
enum nft_ct_keys {
|
||||
NFT_CT_STATE,
|
||||
@@ -992,7 +992,7 @@ enum nft_ct_keys {
|
||||
NFT_CT_DST_IP,
|
||||
NFT_CT_SRC_IP6,
|
||||
NFT_CT_DST_IP6,
|
||||
NFT_CT_TIMEOUT,
|
||||
NFT_CT_ID,
|
||||
__NFT_CT_MAX
|
||||
};
|
||||
#define NFT_CT_MAX (__NFT_CT_MAX - 1)
|
||||
@@ -1136,7 +1136,7 @@ enum nft_log_level {
|
||||
NFT_LOGLEVEL_AUDIT,
|
||||
__NFT_LOGLEVEL_MAX
|
||||
};
|
||||
#define NFT_LOGLEVEL_MAX (__NFT_LOGLEVEL_MAX + 1)
|
||||
#define NFT_LOGLEVEL_MAX (__NFT_LOGLEVEL_MAX - 1)
|
||||
|
||||
/**
|
||||
* enum nft_queue_attributes - nf_tables queue expression netlink attributes
|
||||
@@ -1522,15 +1522,21 @@ enum nft_flowtable_hook_attributes {
|
||||
*
|
||||
* @NFTA_OSF_DREG: destination register (NLA_U32: nft_registers)
|
||||
* @NFTA_OSF_TTL: Value of the TTL osf option (NLA_U8)
|
||||
* @NFTA_OSF_FLAGS: flags (NLA_U32)
|
||||
*/
|
||||
enum nft_osf_attributes {
|
||||
NFTA_OSF_UNSPEC,
|
||||
NFTA_OSF_DREG,
|
||||
NFTA_OSF_TTL,
|
||||
NFTA_OSF_FLAGS,
|
||||
__NFTA_OSF_MAX,
|
||||
};
|
||||
#define NFTA_OSF_MAX (__NFTA_OSF_MAX - 1)
|
||||
|
||||
enum nft_osf_flags {
|
||||
NFT_OSF_F_VERSION = (1 << 0),
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nft_device_attributes - nf_tables device netlink attributes
|
||||
*
|
||||
|
||||
@@ -66,13 +66,4 @@ struct nfs_mount_data {
|
||||
#define NFS_MOUNT_UNSHARED 0x8000 /* 5 */
|
||||
#define NFS_MOUNT_FLAGMASK 0xFFFF
|
||||
|
||||
/* The following are for internal use only */
|
||||
#define NFS_MOUNT_LOOKUP_CACHE_NONEG 0x10000
|
||||
#define NFS_MOUNT_LOOKUP_CACHE_NONE 0x20000
|
||||
#define NFS_MOUNT_NORESVPORT 0x40000
|
||||
#define NFS_MOUNT_LEGACY_INTERFACE 0x80000
|
||||
|
||||
#define NFS_MOUNT_LOCAL_FLOCK 0x100000
|
||||
#define NFS_MOUNT_LOCAL_FCNTL 0x200000
|
||||
|
||||
#endif
|
||||
|
||||
@@ -36,6 +36,7 @@ enum cld_command {
|
||||
Cld_Remove, /* remove record of this cm_id */
|
||||
Cld_Check, /* is this cm_id allowed? */
|
||||
Cld_GraceDone, /* grace period is complete */
|
||||
Cld_GraceStart,
|
||||
};
|
||||
|
||||
/* representation of long-form NFSv4 client ID */
|
||||
|
||||
@@ -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 Intel Corporation
|
||||
* Copyright (C) 2018-2019 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
|
||||
@@ -1065,6 +1065,26 @@
|
||||
* indicated by %NL80211_ATTR_WIPHY_FREQ and other attributes
|
||||
* determining the width and type.
|
||||
*
|
||||
* @NL80211_CMD_UPDATE_OWE_INFO: This interface allows the host driver to
|
||||
* offload OWE processing to user space. This intends to support
|
||||
* OWE AKM by the host drivers that implement SME but rely
|
||||
* on the user space for the cryptographic/DH IE processing in AP mode.
|
||||
*
|
||||
* @NL80211_CMD_PROBE_MESH_LINK: The requirement for mesh link metric
|
||||
* refreshing, is that from one mesh point we be able to send some data
|
||||
* frames to other mesh points which are not currently selected as a
|
||||
* primary traffic path, but which are only 1 hop away. The absence of
|
||||
* the primary path to the chosen node makes it necessary to apply some
|
||||
* form of marking on a chosen packet stream so that the packets can be
|
||||
* properly steered to the selected node for testing, and not by the
|
||||
* regular mesh path lookup. Further, the packets must be of type data
|
||||
* so that the rate control (often embedded in firmware) is used for
|
||||
* rate selection.
|
||||
*
|
||||
* Here attribute %NL80211_ATTR_MAC is used to specify connected mesh
|
||||
* peer MAC address and %NL80211_ATTR_FRAME is used to specify the frame
|
||||
* content. The frame is ethernet data.
|
||||
*
|
||||
* @NL80211_CMD_MAX: highest used command number
|
||||
* @__NL80211_CMD_AFTER_LAST: internal use
|
||||
*/
|
||||
@@ -1285,6 +1305,10 @@ enum nl80211_commands {
|
||||
|
||||
NL80211_CMD_NOTIFY_RADAR,
|
||||
|
||||
NL80211_CMD_UPDATE_OWE_INFO,
|
||||
|
||||
NL80211_CMD_PROBE_MESH_LINK,
|
||||
|
||||
/* add new commands above here */
|
||||
|
||||
/* used to define NL80211_CMD_MAX below */
|
||||
@@ -2308,6 +2332,15 @@ enum nl80211_commands {
|
||||
* @NL80211_ATTR_AIRTIME_WEIGHT: Station's weight when scheduled by the airtime
|
||||
* scheduler.
|
||||
*
|
||||
* @NL80211_ATTR_STA_TX_POWER_SETTING: Transmit power setting type (u8) for
|
||||
* station associated with the AP. See &enum nl80211_tx_power_setting for
|
||||
* possible values.
|
||||
* @NL80211_ATTR_STA_TX_POWER: Transmit power level (s16) in dBm units. This
|
||||
* allows to set Tx power for a station. If this attribute is not included,
|
||||
* the default per-interface tx power setting will be overriding. Driver
|
||||
* should be picking up the lowest tx power, either tx power per-interface
|
||||
* or per-station.
|
||||
*
|
||||
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
|
||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||
* @__NL80211_ATTR_AFTER_LAST: internal use
|
||||
@@ -2758,6 +2791,8 @@ enum nl80211_attrs {
|
||||
NL80211_ATTR_PEER_MEASUREMENTS,
|
||||
|
||||
NL80211_ATTR_AIRTIME_WEIGHT,
|
||||
NL80211_ATTR_STA_TX_POWER_SETTING,
|
||||
NL80211_ATTR_STA_TX_POWER,
|
||||
|
||||
/* add attributes here, update the policy in nl80211.c */
|
||||
|
||||
@@ -2802,7 +2837,7 @@ enum nl80211_attrs {
|
||||
|
||||
#define NL80211_MAX_SUPP_RATES 32
|
||||
#define NL80211_MAX_SUPP_HT_RATES 77
|
||||
#define NL80211_MAX_SUPP_REG_RULES 64
|
||||
#define NL80211_MAX_SUPP_REG_RULES 128
|
||||
#define NL80211_TKIP_DATA_OFFSET_ENCR_KEY 0
|
||||
#define NL80211_TKIP_DATA_OFFSET_TX_MIC_KEY 16
|
||||
#define NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY 24
|
||||
@@ -3139,6 +3174,7 @@ enum nl80211_sta_bss_param {
|
||||
* @NL80211_STA_INFO_TX_DURATION: aggregate PPDU duration for all frames
|
||||
* sent to the station (u64, usec)
|
||||
* @NL80211_STA_INFO_AIRTIME_WEIGHT: current airtime weight for station (u16)
|
||||
* @NL80211_STA_INFO_AIRTIME_LINK_METRIC: airtime link metric for mesh station
|
||||
* @__NL80211_STA_INFO_AFTER_LAST: internal
|
||||
* @NL80211_STA_INFO_MAX: highest possible station info attribute
|
||||
*/
|
||||
@@ -3184,6 +3220,7 @@ enum nl80211_sta_info {
|
||||
NL80211_STA_INFO_CONNECTED_TO_GATE,
|
||||
NL80211_STA_INFO_TX_DURATION,
|
||||
NL80211_STA_INFO_AIRTIME_WEIGHT,
|
||||
NL80211_STA_INFO_AIRTIME_LINK_METRIC,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_STA_INFO_AFTER_LAST,
|
||||
@@ -3638,6 +3675,14 @@ enum nl80211_reg_rule_attr {
|
||||
* value as specified by &struct nl80211_bss_select_rssi_adjust.
|
||||
* @NL80211_SCHED_SCAN_MATCH_ATTR_BSSID: BSSID to be used for matching
|
||||
* (this cannot be used together with SSID).
|
||||
* @NL80211_SCHED_SCAN_MATCH_PER_BAND_RSSI: Nested attribute that carries the
|
||||
* band specific minimum rssi thresholds for the bands defined in
|
||||
* enum nl80211_band. The minimum rssi threshold value(s32) specific to a
|
||||
* band shall be encapsulated in attribute with type value equals to one
|
||||
* of the NL80211_BAND_* defined in enum nl80211_band. For example, the
|
||||
* minimum rssi threshold value for 2.4GHZ band shall be encapsulated
|
||||
* within an attribute of type NL80211_BAND_2GHZ. And one or more of such
|
||||
* attributes will be nested within this attribute.
|
||||
* @NL80211_SCHED_SCAN_MATCH_ATTR_MAX: highest scheduled scan filter
|
||||
* attribute number currently defined
|
||||
* @__NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST: internal use
|
||||
@@ -3650,6 +3695,7 @@ enum nl80211_sched_scan_match_attr {
|
||||
NL80211_SCHED_SCAN_MATCH_ATTR_RELATIVE_RSSI,
|
||||
NL80211_SCHED_SCAN_MATCH_ATTR_RSSI_ADJUST,
|
||||
NL80211_SCHED_SCAN_MATCH_ATTR_BSSID,
|
||||
NL80211_SCHED_SCAN_MATCH_PER_BAND_RSSI,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST,
|
||||
@@ -4134,6 +4180,27 @@ enum nl80211_channel_type {
|
||||
NL80211_CHAN_HT40PLUS
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_key_mode - Key mode
|
||||
*
|
||||
* @NL80211_KEY_RX_TX: (Default)
|
||||
* Key can be used for Rx and Tx immediately
|
||||
*
|
||||
* The following modes can only be selected for unicast keys and when the
|
||||
* driver supports @NL80211_EXT_FEATURE_EXT_KEY_ID:
|
||||
*
|
||||
* @NL80211_KEY_NO_TX: Only allowed in combination with @NL80211_CMD_NEW_KEY:
|
||||
* Unicast key can only be used for Rx, Tx not allowed, yet
|
||||
* @NL80211_KEY_SET_TX: Only allowed in combination with @NL80211_CMD_SET_KEY:
|
||||
* The unicast key identified by idx and mac is cleared for Tx and becomes
|
||||
* the preferred Tx key for the station.
|
||||
*/
|
||||
enum nl80211_key_mode {
|
||||
NL80211_KEY_RX_TX,
|
||||
NL80211_KEY_NO_TX,
|
||||
NL80211_KEY_SET_TX
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nl80211_chan_width - channel width definitions
|
||||
*
|
||||
@@ -4377,6 +4444,9 @@ enum nl80211_key_default_types {
|
||||
* @NL80211_KEY_DEFAULT_TYPES: A nested attribute containing flags
|
||||
* attributes, specifying what a key should be set as default as.
|
||||
* See &enum nl80211_key_default_types.
|
||||
* @NL80211_KEY_MODE: the mode from enum nl80211_key_mode.
|
||||
* Defaults to @NL80211_KEY_RX_TX.
|
||||
*
|
||||
* @__NL80211_KEY_AFTER_LAST: internal
|
||||
* @NL80211_KEY_MAX: highest key attribute
|
||||
*/
|
||||
@@ -4390,6 +4460,7 @@ enum nl80211_key_attributes {
|
||||
NL80211_KEY_DEFAULT_MGMT,
|
||||
NL80211_KEY_TYPE,
|
||||
NL80211_KEY_DEFAULT_TYPES,
|
||||
NL80211_KEY_MODE,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_KEY_AFTER_LAST,
|
||||
@@ -5335,6 +5406,8 @@ enum nl80211_feature_flags {
|
||||
* able to rekey an in-use key correctly. Userspace must not rekey PTK keys
|
||||
* if this flag is not set. Ignoring this can leak clear text packets and/or
|
||||
* freeze the connection.
|
||||
* @NL80211_EXT_FEATURE_EXT_KEY_ID: Driver supports "Extended Key ID for
|
||||
* Individually Addressed Frames" from IEEE802.11-2016.
|
||||
*
|
||||
* @NL80211_EXT_FEATURE_AIRTIME_FAIRNESS: Driver supports getting airtime
|
||||
* fairness for transmitted packets and has enabled airtime fairness
|
||||
@@ -5343,6 +5416,12 @@ enum nl80211_feature_flags {
|
||||
* @NL80211_EXT_FEATURE_AP_PMKSA_CACHING: Driver/device supports PMKSA caching
|
||||
* (set/del PMKSA operations) in AP mode.
|
||||
*
|
||||
* @NL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD: Driver supports
|
||||
* filtering of sched scan results using band specific RSSI thresholds.
|
||||
*
|
||||
* @NL80211_EXT_FEATURE_STA_TX_PWR: This driver supports controlling tx power
|
||||
* to a station.
|
||||
*
|
||||
* @NUM_NL80211_EXT_FEATURES: number of extended features.
|
||||
* @MAX_NL80211_EXT_FEATURES: highest extended feature index.
|
||||
*/
|
||||
@@ -5384,6 +5463,9 @@ enum nl80211_ext_feature_index {
|
||||
NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER,
|
||||
NL80211_EXT_FEATURE_AIRTIME_FAIRNESS,
|
||||
NL80211_EXT_FEATURE_AP_PMKSA_CACHING,
|
||||
NL80211_EXT_FEATURE_SCHED_SCAN_BAND_SPECIFIC_RSSI_THOLD,
|
||||
NL80211_EXT_FEATURE_EXT_KEY_ID,
|
||||
NL80211_EXT_FEATURE_STA_TX_PWR,
|
||||
|
||||
/* add new features before the definition below */
|
||||
NUM_NL80211_EXT_FEATURES,
|
||||
|
||||
@@ -364,6 +364,7 @@ enum ovs_tunnel_key_attr {
|
||||
OVS_TUNNEL_KEY_ATTR_IPV6_DST, /* struct in6_addr dst IPv6 address. */
|
||||
OVS_TUNNEL_KEY_ATTR_PAD,
|
||||
OVS_TUNNEL_KEY_ATTR_ERSPAN_OPTS, /* struct erspan_metadata */
|
||||
OVS_TUNNEL_KEY_ATTR_IPV4_INFO_BRIDGE, /* No argument. IPV4_INFO_BRIDGE mode.*/
|
||||
__OVS_TUNNEL_KEY_ATTR_MAX
|
||||
};
|
||||
|
||||
@@ -734,6 +735,7 @@ struct ovs_action_hash {
|
||||
* be received on NFNLGRP_CONNTRACK_NEW and NFNLGRP_CONNTRACK_DESTROY groups,
|
||||
* respectively. Remaining bits control the changes for which an event is
|
||||
* delivered on the NFNLGRP_CONNTRACK_UPDATE group.
|
||||
* @OVS_CT_ATTR_TIMEOUT: Variable length string defining conntrack timeout.
|
||||
*/
|
||||
enum ovs_ct_attr {
|
||||
OVS_CT_ATTR_UNSPEC,
|
||||
@@ -746,6 +748,8 @@ enum ovs_ct_attr {
|
||||
OVS_CT_ATTR_NAT, /* Nested OVS_NAT_ATTR_* */
|
||||
OVS_CT_ATTR_FORCE_COMMIT, /* No argument */
|
||||
OVS_CT_ATTR_EVENTMASK, /* u32 mask of IPCT_* events. */
|
||||
OVS_CT_ATTR_TIMEOUT, /* Associate timeout with this connection for
|
||||
* fine-grain timeout tuning. */
|
||||
__OVS_CT_ATTR_MAX
|
||||
};
|
||||
|
||||
@@ -798,6 +802,44 @@ struct ovs_action_push_eth {
|
||||
struct ovs_key_ethernet addresses;
|
||||
};
|
||||
|
||||
/*
|
||||
* enum ovs_check_pkt_len_attr - Attributes for %OVS_ACTION_ATTR_CHECK_PKT_LEN.
|
||||
*
|
||||
* @OVS_CHECK_PKT_LEN_ATTR_PKT_LEN: u16 Packet length to check for.
|
||||
* @OVS_CHECK_PKT_LEN_ATTR_ACTIONS_IF_GREATER: Nested OVS_ACTION_ATTR_*
|
||||
* actions to apply if the packer length is greater than the specified
|
||||
* length in the attr - OVS_CHECK_PKT_LEN_ATTR_PKT_LEN.
|
||||
* @OVS_CHECK_PKT_LEN_ATTR_ACTIONS_IF_LESS_EQUAL - Nested OVS_ACTION_ATTR_*
|
||||
* actions to apply if the packer length is lesser or equal to the specified
|
||||
* length in the attr - OVS_CHECK_PKT_LEN_ATTR_PKT_LEN.
|
||||
*/
|
||||
enum ovs_check_pkt_len_attr {
|
||||
OVS_CHECK_PKT_LEN_ATTR_UNSPEC,
|
||||
OVS_CHECK_PKT_LEN_ATTR_PKT_LEN,
|
||||
OVS_CHECK_PKT_LEN_ATTR_ACTIONS_IF_GREATER,
|
||||
OVS_CHECK_PKT_LEN_ATTR_ACTIONS_IF_LESS_EQUAL,
|
||||
__OVS_CHECK_PKT_LEN_ATTR_MAX,
|
||||
|
||||
#ifdef __KERNEL__
|
||||
OVS_CHECK_PKT_LEN_ATTR_ARG /* struct check_pkt_len_arg */
|
||||
#endif
|
||||
};
|
||||
|
||||
#define OVS_CHECK_PKT_LEN_ATTR_MAX (__OVS_CHECK_PKT_LEN_ATTR_MAX - 1)
|
||||
|
||||
#ifdef __KERNEL__
|
||||
struct check_pkt_len_arg {
|
||||
u16 pkt_len; /* Same value as OVS_CHECK_PKT_LEN_ATTR_PKT_LEN'. */
|
||||
bool exec_for_greater; /* When true, actions in IF_GREATER will
|
||||
* not change flow keys. False otherwise.
|
||||
*/
|
||||
bool exec_for_lesser_equal; /* When true, actions in IF_LESS_EQUAL
|
||||
* will not change flow keys. False
|
||||
* otherwise.
|
||||
*/
|
||||
};
|
||||
#endif
|
||||
|
||||
/**
|
||||
* enum ovs_action_attr - Action types.
|
||||
*
|
||||
@@ -842,6 +884,9 @@ struct ovs_action_push_eth {
|
||||
* packet, or modify the packet (e.g., change the DSCP field).
|
||||
* @OVS_ACTION_ATTR_CLONE: make a copy of the packet and execute a list of
|
||||
* actions without affecting the original packet and key.
|
||||
* @OVS_ACTION_ATTR_CHECK_PKT_LEN: Check the packet length and execute a set
|
||||
* of actions if greater than the specified packet length, else execute
|
||||
* another set of actions.
|
||||
*
|
||||
* Only a single header can be set with a single %OVS_ACTION_ATTR_SET. Not all
|
||||
* fields within a header are modifiable, e.g. the IPv4 protocol and fragment
|
||||
@@ -876,6 +921,7 @@ enum ovs_action_attr {
|
||||
OVS_ACTION_ATTR_POP_NSH, /* No argument. */
|
||||
OVS_ACTION_ATTR_METER, /* u32 meter ID. */
|
||||
OVS_ACTION_ATTR_CLONE, /* Nested OVS_CLONE_ATTR_*. */
|
||||
OVS_ACTION_ATTR_CHECK_PKT_LEN, /* Nested OVS_CHECK_PKT_LEN_ATTR_*. */
|
||||
|
||||
__OVS_ACTION_ATTR_MAX, /* Nothing past this will be accepted
|
||||
* from userspace. */
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* pci_regs.h
|
||||
*
|
||||
* PCI standard defines
|
||||
* Copyright 1994, Drew Eckhardt
|
||||
* Copyright 1997--1999 Martin Mares <mj@ucw.cz>
|
||||
@@ -15,7 +13,7 @@
|
||||
* PCI System Design Guide
|
||||
*
|
||||
* For HyperTransport information, please consult the following manuals
|
||||
* from http://www.hypertransport.org
|
||||
* from http://www.hypertransport.org :
|
||||
*
|
||||
* The HyperTransport I/O Link Specification
|
||||
*/
|
||||
@@ -301,7 +299,7 @@
|
||||
#define PCI_SID_ESR_FIC 0x20 /* First In Chassis Flag */
|
||||
#define PCI_SID_CHASSIS_NR 3 /* Chassis Number */
|
||||
|
||||
/* Message Signalled Interrupts registers */
|
||||
/* Message Signalled Interrupt registers */
|
||||
|
||||
#define PCI_MSI_FLAGS 2 /* Message Control */
|
||||
#define PCI_MSI_FLAGS_ENABLE 0x0001 /* MSI feature enabled */
|
||||
@@ -319,7 +317,7 @@
|
||||
#define PCI_MSI_MASK_64 16 /* Mask bits register for 64-bit devices */
|
||||
#define PCI_MSI_PENDING_64 20 /* Pending intrs for 64-bit devices */
|
||||
|
||||
/* MSI-X registers */
|
||||
/* MSI-X registers (in MSI-X capability) */
|
||||
#define PCI_MSIX_FLAGS 2 /* Message Control */
|
||||
#define PCI_MSIX_FLAGS_QSIZE 0x07FF /* Table size */
|
||||
#define PCI_MSIX_FLAGS_MASKALL 0x4000 /* Mask all vectors for this function */
|
||||
@@ -333,13 +331,13 @@
|
||||
#define PCI_MSIX_FLAGS_BIRMASK PCI_MSIX_PBA_BIR /* deprecated */
|
||||
#define PCI_CAP_MSIX_SIZEOF 12 /* size of MSIX registers */
|
||||
|
||||
/* MSI-X Table entry format */
|
||||
/* MSI-X Table entry format (in memory mapped by a BAR) */
|
||||
#define PCI_MSIX_ENTRY_SIZE 16
|
||||
#define PCI_MSIX_ENTRY_LOWER_ADDR 0
|
||||
#define PCI_MSIX_ENTRY_UPPER_ADDR 4
|
||||
#define PCI_MSIX_ENTRY_DATA 8
|
||||
#define PCI_MSIX_ENTRY_VECTOR_CTRL 12
|
||||
#define PCI_MSIX_ENTRY_CTRL_MASKBIT 1
|
||||
#define PCI_MSIX_ENTRY_LOWER_ADDR 0 /* Message Address */
|
||||
#define PCI_MSIX_ENTRY_UPPER_ADDR 4 /* Message Upper Address */
|
||||
#define PCI_MSIX_ENTRY_DATA 8 /* Message Data */
|
||||
#define PCI_MSIX_ENTRY_VECTOR_CTRL 12 /* Vector Control */
|
||||
#define PCI_MSIX_ENTRY_CTRL_MASKBIT 0x00000001
|
||||
|
||||
/* CompactPCI Hotswap Register */
|
||||
|
||||
@@ -372,6 +370,12 @@
|
||||
#define PCI_EA_FIRST_ENT_BRIDGE 8 /* First EA Entry for Bridges */
|
||||
#define PCI_EA_ES 0x00000007 /* Entry Size */
|
||||
#define PCI_EA_BEI 0x000000f0 /* BAR Equivalent Indicator */
|
||||
|
||||
/* EA fixed Secondary and Subordinate bus numbers for Bridge */
|
||||
#define PCI_EA_SEC_BUS_MASK 0xff
|
||||
#define PCI_EA_SUB_BUS_MASK 0xff00
|
||||
#define PCI_EA_SUB_BUS_SHIFT 8
|
||||
|
||||
/* 0-5 map to BARs 0-5 respectively */
|
||||
#define PCI_EA_BEI_BAR0 0
|
||||
#define PCI_EA_BEI_BAR5 5
|
||||
@@ -465,19 +469,19 @@
|
||||
/* PCI Express capability registers */
|
||||
|
||||
#define PCI_EXP_FLAGS 2 /* Capabilities register */
|
||||
#define PCI_EXP_FLAGS_VERS 0x000f /* Capability version */
|
||||
#define PCI_EXP_FLAGS_TYPE 0x00f0 /* Device/Port type */
|
||||
#define PCI_EXP_TYPE_ENDPOINT 0x0 /* Express Endpoint */
|
||||
#define PCI_EXP_TYPE_LEG_END 0x1 /* Legacy Endpoint */
|
||||
#define PCI_EXP_TYPE_ROOT_PORT 0x4 /* Root Port */
|
||||
#define PCI_EXP_TYPE_UPSTREAM 0x5 /* Upstream Port */
|
||||
#define PCI_EXP_TYPE_DOWNSTREAM 0x6 /* Downstream Port */
|
||||
#define PCI_EXP_TYPE_PCI_BRIDGE 0x7 /* PCIe to PCI/PCI-X Bridge */
|
||||
#define PCI_EXP_TYPE_PCIE_BRIDGE 0x8 /* PCI/PCI-X to PCIe Bridge */
|
||||
#define PCI_EXP_TYPE_RC_END 0x9 /* Root Complex Integrated Endpoint */
|
||||
#define PCI_EXP_TYPE_RC_EC 0xa /* Root Complex Event Collector */
|
||||
#define PCI_EXP_FLAGS_SLOT 0x0100 /* Slot implemented */
|
||||
#define PCI_EXP_FLAGS_IRQ 0x3e00 /* Interrupt message number */
|
||||
#define PCI_EXP_FLAGS_VERS 0x000f /* Capability version */
|
||||
#define PCI_EXP_FLAGS_TYPE 0x00f0 /* Device/Port type */
|
||||
#define PCI_EXP_TYPE_ENDPOINT 0x0 /* Express Endpoint */
|
||||
#define PCI_EXP_TYPE_LEG_END 0x1 /* Legacy Endpoint */
|
||||
#define PCI_EXP_TYPE_ROOT_PORT 0x4 /* Root Port */
|
||||
#define PCI_EXP_TYPE_UPSTREAM 0x5 /* Upstream Port */
|
||||
#define PCI_EXP_TYPE_DOWNSTREAM 0x6 /* Downstream Port */
|
||||
#define PCI_EXP_TYPE_PCI_BRIDGE 0x7 /* PCIe to PCI/PCI-X Bridge */
|
||||
#define PCI_EXP_TYPE_PCIE_BRIDGE 0x8 /* PCI/PCI-X to PCIe Bridge */
|
||||
#define PCI_EXP_TYPE_RC_END 0x9 /* Root Complex Integrated Endpoint */
|
||||
#define PCI_EXP_TYPE_RC_EC 0xa /* Root Complex Event Collector */
|
||||
#define PCI_EXP_FLAGS_SLOT 0x0100 /* Slot implemented */
|
||||
#define PCI_EXP_FLAGS_IRQ 0x3e00 /* Interrupt message number */
|
||||
#define PCI_EXP_DEVCAP 4 /* Device capabilities */
|
||||
#define PCI_EXP_DEVCAP_PAYLOAD 0x00000007 /* Max_Payload_Size */
|
||||
#define PCI_EXP_DEVCAP_PHANTOM 0x00000018 /* Phantom functions */
|
||||
@@ -616,8 +620,8 @@
|
||||
#define PCI_EXP_RTCAP 30 /* Root Capabilities */
|
||||
#define PCI_EXP_RTCAP_CRSVIS 0x0001 /* CRS Software Visibility capability */
|
||||
#define PCI_EXP_RTSTA 32 /* Root Status */
|
||||
#define PCI_EXP_RTSTA_PME 0x00010000 /* PME status */
|
||||
#define PCI_EXP_RTSTA_PENDING 0x00020000 /* PME pending */
|
||||
#define PCI_EXP_RTSTA_PME 0x00010000 /* PME status */
|
||||
#define PCI_EXP_RTSTA_PENDING 0x00020000 /* PME pending */
|
||||
/*
|
||||
* The Device Capabilities 2, Device Status 2, Device Control 2,
|
||||
* Link Capabilities 2, Link Status 2, Link Control 2,
|
||||
@@ -637,13 +641,13 @@
|
||||
#define PCI_EXP_DEVCAP2_OBFF_MASK 0x000c0000 /* OBFF support mechanism */
|
||||
#define PCI_EXP_DEVCAP2_OBFF_MSG 0x00040000 /* New message signaling */
|
||||
#define PCI_EXP_DEVCAP2_OBFF_WAKE 0x00080000 /* Re-use WAKE# for OBFF */
|
||||
#define PCI_EXP_DEVCAP2_EE_PREFIX 0x00200000 /* End-End TLP Prefix */
|
||||
#define PCI_EXP_DEVCAP2_EE_PREFIX 0x00200000 /* End-End TLP Prefix */
|
||||
#define PCI_EXP_DEVCTL2 40 /* Device Control 2 */
|
||||
#define PCI_EXP_DEVCTL2_COMP_TIMEOUT 0x000f /* Completion Timeout Value */
|
||||
#define PCI_EXP_DEVCTL2_COMP_TMOUT_DIS 0x0010 /* Completion Timeout Disable */
|
||||
#define PCI_EXP_DEVCTL2_ARI 0x0020 /* Alternative Routing-ID */
|
||||
#define PCI_EXP_DEVCTL2_ATOMIC_REQ 0x0040 /* Set Atomic requests */
|
||||
#define PCI_EXP_DEVCTL2_ATOMIC_EGRESS_BLOCK 0x0080 /* Block atomic egress */
|
||||
#define PCI_EXP_DEVCTL2_ATOMIC_REQ 0x0040 /* Set Atomic requests */
|
||||
#define PCI_EXP_DEVCTL2_ATOMIC_EGRESS_BLOCK 0x0080 /* Block atomic egress */
|
||||
#define PCI_EXP_DEVCTL2_IDO_REQ_EN 0x0100 /* Allow IDO for requests */
|
||||
#define PCI_EXP_DEVCTL2_IDO_CMP_EN 0x0200 /* Allow IDO for completions */
|
||||
#define PCI_EXP_DEVCTL2_LTR_EN 0x0400 /* Enable LTR mechanism */
|
||||
@@ -659,11 +663,11 @@
|
||||
#define PCI_EXP_LNKCAP2_SLS_16_0GB 0x00000010 /* Supported Speed 16GT/s */
|
||||
#define PCI_EXP_LNKCAP2_CROSSLINK 0x00000100 /* Crosslink supported */
|
||||
#define PCI_EXP_LNKCTL2 48 /* Link Control 2 */
|
||||
#define PCI_EXP_LNKCTL2_TLS 0x000f
|
||||
#define PCI_EXP_LNKCTL2_TLS_2_5GT 0x0001 /* Supported Speed 2.5GT/s */
|
||||
#define PCI_EXP_LNKCTL2_TLS_5_0GT 0x0002 /* Supported Speed 5GT/s */
|
||||
#define PCI_EXP_LNKCTL2_TLS_8_0GT 0x0003 /* Supported Speed 8GT/s */
|
||||
#define PCI_EXP_LNKCTL2_TLS_16_0GT 0x0004 /* Supported Speed 16GT/s */
|
||||
#define PCI_EXP_LNKCTL2_TLS 0x000f
|
||||
#define PCI_EXP_LNKCTL2_TLS_2_5GT 0x0001 /* Supported Speed 2.5GT/s */
|
||||
#define PCI_EXP_LNKCTL2_TLS_5_0GT 0x0002 /* Supported Speed 5GT/s */
|
||||
#define PCI_EXP_LNKCTL2_TLS_8_0GT 0x0003 /* Supported Speed 8GT/s */
|
||||
#define PCI_EXP_LNKCTL2_TLS_16_0GT 0x0004 /* Supported Speed 16GT/s */
|
||||
#define PCI_EXP_LNKSTA2 50 /* Link Status 2 */
|
||||
#define PCI_CAP_EXP_ENDPOINT_SIZEOF_V2 52 /* v2 endpoints with link end here */
|
||||
#define PCI_EXP_SLTCAP2 52 /* Slot Capabilities 2 */
|
||||
@@ -752,18 +756,18 @@
|
||||
#define PCI_ERR_CAP_ECRC_CHKE 0x00000100 /* ECRC Check Enable */
|
||||
#define PCI_ERR_HEADER_LOG 28 /* Header Log Register (16 bytes) */
|
||||
#define PCI_ERR_ROOT_COMMAND 44 /* Root Error Command */
|
||||
#define PCI_ERR_ROOT_CMD_COR_EN 0x00000001 /* Correctable Err Reporting Enable */
|
||||
#define PCI_ERR_ROOT_CMD_NONFATAL_EN 0x00000002 /* Non-Fatal Err Reporting Enable */
|
||||
#define PCI_ERR_ROOT_CMD_FATAL_EN 0x00000004 /* Fatal Err Reporting Enable */
|
||||
#define PCI_ERR_ROOT_CMD_COR_EN 0x00000001 /* Correctable Err Reporting Enable */
|
||||
#define PCI_ERR_ROOT_CMD_NONFATAL_EN 0x00000002 /* Non-Fatal Err Reporting Enable */
|
||||
#define PCI_ERR_ROOT_CMD_FATAL_EN 0x00000004 /* Fatal Err Reporting Enable */
|
||||
#define PCI_ERR_ROOT_STATUS 48
|
||||
#define PCI_ERR_ROOT_COR_RCV 0x00000001 /* ERR_COR Received */
|
||||
#define PCI_ERR_ROOT_MULTI_COR_RCV 0x00000002 /* Multiple ERR_COR */
|
||||
#define PCI_ERR_ROOT_UNCOR_RCV 0x00000004 /* ERR_FATAL/NONFATAL */
|
||||
#define PCI_ERR_ROOT_MULTI_UNCOR_RCV 0x00000008 /* Multiple FATAL/NONFATAL */
|
||||
#define PCI_ERR_ROOT_FIRST_FATAL 0x00000010 /* First UNC is Fatal */
|
||||
#define PCI_ERR_ROOT_NONFATAL_RCV 0x00000020 /* Non-Fatal Received */
|
||||
#define PCI_ERR_ROOT_FATAL_RCV 0x00000040 /* Fatal Received */
|
||||
#define PCI_ERR_ROOT_AER_IRQ 0xf8000000 /* Advanced Error Interrupt Message Number */
|
||||
#define PCI_ERR_ROOT_COR_RCV 0x00000001 /* ERR_COR Received */
|
||||
#define PCI_ERR_ROOT_MULTI_COR_RCV 0x00000002 /* Multiple ERR_COR */
|
||||
#define PCI_ERR_ROOT_UNCOR_RCV 0x00000004 /* ERR_FATAL/NONFATAL */
|
||||
#define PCI_ERR_ROOT_MULTI_UNCOR_RCV 0x00000008 /* Multiple FATAL/NONFATAL */
|
||||
#define PCI_ERR_ROOT_FIRST_FATAL 0x00000010 /* First UNC is Fatal */
|
||||
#define PCI_ERR_ROOT_NONFATAL_RCV 0x00000020 /* Non-Fatal Received */
|
||||
#define PCI_ERR_ROOT_FATAL_RCV 0x00000040 /* Fatal Received */
|
||||
#define PCI_ERR_ROOT_AER_IRQ 0xf8000000 /* Advanced Error Interrupt Message Number */
|
||||
#define PCI_ERR_ROOT_ERR_SRC 52 /* Error Source Identification */
|
||||
|
||||
/* Virtual Channel */
|
||||
@@ -875,12 +879,12 @@
|
||||
|
||||
/* Page Request Interface */
|
||||
#define PCI_PRI_CTRL 0x04 /* PRI control register */
|
||||
#define PCI_PRI_CTRL_ENABLE 0x01 /* Enable */
|
||||
#define PCI_PRI_CTRL_RESET 0x02 /* Reset */
|
||||
#define PCI_PRI_CTRL_ENABLE 0x0001 /* Enable */
|
||||
#define PCI_PRI_CTRL_RESET 0x0002 /* Reset */
|
||||
#define PCI_PRI_STATUS 0x06 /* PRI status register */
|
||||
#define PCI_PRI_STATUS_RF 0x001 /* Response Failure */
|
||||
#define PCI_PRI_STATUS_UPRGI 0x002 /* Unexpected PRG index */
|
||||
#define PCI_PRI_STATUS_STOPPED 0x100 /* PRI Stopped */
|
||||
#define PCI_PRI_STATUS_RF 0x0001 /* Response Failure */
|
||||
#define PCI_PRI_STATUS_UPRGI 0x0002 /* Unexpected PRG index */
|
||||
#define PCI_PRI_STATUS_STOPPED 0x0100 /* PRI Stopped */
|
||||
#define PCI_PRI_STATUS_PASID 0x8000 /* PRG Response PASID Required */
|
||||
#define PCI_PRI_MAX_REQ 0x08 /* PRI max reqs supported */
|
||||
#define PCI_PRI_ALLOC_REQ 0x0c /* PRI max reqs allowed */
|
||||
@@ -898,16 +902,16 @@
|
||||
|
||||
/* Single Root I/O Virtualization */
|
||||
#define PCI_SRIOV_CAP 0x04 /* SR-IOV Capabilities */
|
||||
#define PCI_SRIOV_CAP_VFM 0x01 /* VF Migration Capable */
|
||||
#define PCI_SRIOV_CAP_VFM 0x00000001 /* VF Migration Capable */
|
||||
#define PCI_SRIOV_CAP_INTR(x) ((x) >> 21) /* Interrupt Message Number */
|
||||
#define PCI_SRIOV_CTRL 0x08 /* SR-IOV Control */
|
||||
#define PCI_SRIOV_CTRL_VFE 0x01 /* VF Enable */
|
||||
#define PCI_SRIOV_CTRL_VFM 0x02 /* VF Migration Enable */
|
||||
#define PCI_SRIOV_CTRL_INTR 0x04 /* VF Migration Interrupt Enable */
|
||||
#define PCI_SRIOV_CTRL_MSE 0x08 /* VF Memory Space Enable */
|
||||
#define PCI_SRIOV_CTRL_ARI 0x10 /* ARI Capable Hierarchy */
|
||||
#define PCI_SRIOV_CTRL_VFE 0x0001 /* VF Enable */
|
||||
#define PCI_SRIOV_CTRL_VFM 0x0002 /* VF Migration Enable */
|
||||
#define PCI_SRIOV_CTRL_INTR 0x0004 /* VF Migration Interrupt Enable */
|
||||
#define PCI_SRIOV_CTRL_MSE 0x0008 /* VF Memory Space Enable */
|
||||
#define PCI_SRIOV_CTRL_ARI 0x0010 /* ARI Capable Hierarchy */
|
||||
#define PCI_SRIOV_STATUS 0x0a /* SR-IOV Status */
|
||||
#define PCI_SRIOV_STATUS_VFM 0x01 /* VF Migration Status */
|
||||
#define PCI_SRIOV_STATUS_VFM 0x0001 /* VF Migration Status */
|
||||
#define PCI_SRIOV_INITIAL_VF 0x0c /* Initial VFs */
|
||||
#define PCI_SRIOV_TOTAL_VF 0x0e /* Total VFs */
|
||||
#define PCI_SRIOV_NUM_VF 0x10 /* Number of VFs */
|
||||
@@ -937,13 +941,13 @@
|
||||
|
||||
/* Access Control Service */
|
||||
#define PCI_ACS_CAP 0x04 /* ACS Capability Register */
|
||||
#define PCI_ACS_SV 0x01 /* Source Validation */
|
||||
#define PCI_ACS_TB 0x02 /* Translation Blocking */
|
||||
#define PCI_ACS_RR 0x04 /* P2P Request Redirect */
|
||||
#define PCI_ACS_CR 0x08 /* P2P Completion Redirect */
|
||||
#define PCI_ACS_UF 0x10 /* Upstream Forwarding */
|
||||
#define PCI_ACS_EC 0x20 /* P2P Egress Control */
|
||||
#define PCI_ACS_DT 0x40 /* Direct Translated P2P */
|
||||
#define PCI_ACS_SV 0x0001 /* Source Validation */
|
||||
#define PCI_ACS_TB 0x0002 /* Translation Blocking */
|
||||
#define PCI_ACS_RR 0x0004 /* P2P Request Redirect */
|
||||
#define PCI_ACS_CR 0x0008 /* P2P Completion Redirect */
|
||||
#define PCI_ACS_UF 0x0010 /* Upstream Forwarding */
|
||||
#define PCI_ACS_EC 0x0020 /* P2P Egress Control */
|
||||
#define PCI_ACS_DT 0x0040 /* Direct Translated P2P */
|
||||
#define PCI_ACS_EGRESS_BITS 0x05 /* ACS Egress Control Vector Size */
|
||||
#define PCI_ACS_CTRL 0x06 /* ACS Control Register */
|
||||
#define PCI_ACS_EGRESS_CTL_V 0x08 /* ACS Egress Control Vector */
|
||||
@@ -993,9 +997,9 @@
|
||||
#define PCI_EXP_DPC_CAP_DL_ACTIVE 0x1000 /* ERR_COR signal on DL_Active supported */
|
||||
|
||||
#define PCI_EXP_DPC_CTL 6 /* DPC control */
|
||||
#define PCI_EXP_DPC_CTL_EN_FATAL 0x0001 /* Enable trigger on ERR_FATAL message */
|
||||
#define PCI_EXP_DPC_CTL_EN_NONFATAL 0x0002 /* Enable trigger on ERR_NONFATAL message */
|
||||
#define PCI_EXP_DPC_CTL_INT_EN 0x0008 /* DPC Interrupt Enable */
|
||||
#define PCI_EXP_DPC_CTL_EN_FATAL 0x0001 /* Enable trigger on ERR_FATAL message */
|
||||
#define PCI_EXP_DPC_CTL_EN_NONFATAL 0x0002 /* Enable trigger on ERR_NONFATAL message */
|
||||
#define PCI_EXP_DPC_CTL_INT_EN 0x0008 /* DPC Interrupt Enable */
|
||||
|
||||
#define PCI_EXP_DPC_STATUS 8 /* DPC Status */
|
||||
#define PCI_EXP_DPC_STATUS_TRIGGER 0x0001 /* Trigger Status */
|
||||
|
||||
@@ -1148,6 +1148,16 @@ enum {
|
||||
|
||||
#define TCA_TAPRIO_SCHED_MAX (__TCA_TAPRIO_SCHED_MAX - 1)
|
||||
|
||||
/* The format for the admin sched (dump only):
|
||||
* [TCA_TAPRIO_SCHED_ADMIN_SCHED]
|
||||
* [TCA_TAPRIO_ATTR_SCHED_BASE_TIME]
|
||||
* [TCA_TAPRIO_ATTR_SCHED_ENTRY_LIST]
|
||||
* [TCA_TAPRIO_ATTR_SCHED_ENTRY]
|
||||
* [TCA_TAPRIO_ATTR_SCHED_ENTRY_CMD]
|
||||
* [TCA_TAPRIO_ATTR_SCHED_ENTRY_GATES]
|
||||
* [TCA_TAPRIO_ATTR_SCHED_ENTRY_INTERVAL]
|
||||
*/
|
||||
|
||||
enum {
|
||||
TCA_TAPRIO_ATTR_UNSPEC,
|
||||
TCA_TAPRIO_ATTR_PRIOMAP, /* struct tc_mqprio_qopt */
|
||||
@@ -1156,6 +1166,9 @@ enum {
|
||||
TCA_TAPRIO_ATTR_SCHED_SINGLE_ENTRY, /* single entry */
|
||||
TCA_TAPRIO_ATTR_SCHED_CLOCKID, /* s32 */
|
||||
TCA_TAPRIO_PAD,
|
||||
TCA_TAPRIO_ATTR_ADMIN_SCHED, /* The admin sched, only used in dump */
|
||||
TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME, /* s64 */
|
||||
TCA_TAPRIO_ATTR_SCHED_CYCLE_TIME_EXTENSION, /* s64 */
|
||||
__TCA_TAPRIO_ATTR_MAX,
|
||||
};
|
||||
|
||||
|
||||
@@ -49,8 +49,11 @@
|
||||
|
||||
#define PSCI_1_0_FN_PSCI_FEATURES PSCI_0_2_FN(10)
|
||||
#define PSCI_1_0_FN_SYSTEM_SUSPEND PSCI_0_2_FN(14)
|
||||
#define PSCI_1_0_FN_SET_SUSPEND_MODE PSCI_0_2_FN(15)
|
||||
#define PSCI_1_1_FN_SYSTEM_RESET2 PSCI_0_2_FN(18)
|
||||
|
||||
#define PSCI_1_0_FN64_SYSTEM_SUSPEND PSCI_0_2_FN64(14)
|
||||
#define PSCI_1_1_FN64_SYSTEM_RESET2 PSCI_0_2_FN64(18)
|
||||
|
||||
/* PSCI v0.2 power state encoding for CPU_SUSPEND function */
|
||||
#define PSCI_0_2_POWER_STATE_ID_MASK 0xffff
|
||||
@@ -97,6 +100,10 @@
|
||||
#define PSCI_1_0_FEATURES_CPU_SUSPEND_PF_MASK \
|
||||
(0x1 << PSCI_1_0_FEATURES_CPU_SUSPEND_PF_SHIFT)
|
||||
|
||||
#define PSCI_1_0_OS_INITIATED BIT(0)
|
||||
#define PSCI_1_0_SUSPEND_MODE_PC 0
|
||||
#define PSCI_1_0_SUSPEND_MODE_OSI 1
|
||||
|
||||
/* PSCI return values (inclusive of all PSCI versions) */
|
||||
#define PSCI_RET_SUCCESS 0
|
||||
#define PSCI_RET_NOT_SUPPORTED -1
|
||||
|
||||
@@ -6,8 +6,7 @@
|
||||
*
|
||||
* Author: Brijesh Singh <brijesh.singh@amd.com>
|
||||
*
|
||||
* SEV spec 0.14 is available at:
|
||||
* http://support.amd.com/TechDocs/55766_SEV-KM%20API_Specification.pdf
|
||||
* SEV API specification is available at: https://developer.amd.com/sev/
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
@@ -30,7 +29,8 @@ enum {
|
||||
SEV_PDH_GEN,
|
||||
SEV_PDH_CERT_EXPORT,
|
||||
SEV_PEK_CERT_IMPORT,
|
||||
SEV_GET_ID,
|
||||
SEV_GET_ID, /* This command is deprecated, use SEV_GET_ID2 */
|
||||
SEV_GET_ID2,
|
||||
|
||||
SEV_MAX,
|
||||
};
|
||||
@@ -125,7 +125,7 @@ struct sev_user_data_pdh_cert_export {
|
||||
} __packed;
|
||||
|
||||
/**
|
||||
* struct sev_user_data_get_id - GET_ID command parameters
|
||||
* struct sev_user_data_get_id - GET_ID command parameters (deprecated)
|
||||
*
|
||||
* @socket1: Buffer to pass unique ID of first socket
|
||||
* @socket2: Buffer to pass unique ID of second socket
|
||||
@@ -135,6 +135,16 @@ struct sev_user_data_get_id {
|
||||
__u8 socket2[64]; /* Out */
|
||||
} __packed;
|
||||
|
||||
/**
|
||||
* struct sev_user_data_get_id2 - GET_ID command parameters
|
||||
* @address: Buffer to store unique ID
|
||||
* @length: length of the unique ID
|
||||
*/
|
||||
struct sev_user_data_get_id2 {
|
||||
__u64 address; /* In */
|
||||
__u32 length; /* In/Out */
|
||||
} __packed;
|
||||
|
||||
/**
|
||||
* struct sev_issue_cmd - SEV ioctl parameters
|
||||
*
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
#define CLONE_FS 0x00000200 /* set if fs info shared between processes */
|
||||
#define CLONE_FILES 0x00000400 /* set if open files shared between processes */
|
||||
#define CLONE_SIGHAND 0x00000800 /* set if signal handlers and blocked signals shared */
|
||||
#define CLONE_PIDFD 0x00001000 /* set if a pidfd should be placed in parent */
|
||||
#define CLONE_PTRACE 0x00002000 /* set if we want to let tracing continue on the child too */
|
||||
#define CLONE_VFORK 0x00004000 /* set if the parent wants the child to wake it up on mm_release */
|
||||
#define CLONE_PARENT 0x00008000 /* set if we want to have the same parent as the cloner */
|
||||
|
||||
@@ -5,15 +5,6 @@
|
||||
* Authors:
|
||||
* Rafael Antognolli <rafael.antognolli@intel.com>
|
||||
* Scott Bauer <scott.bauer@intel.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
* version 2, as published by the Free Software Foundation.
|
||||
*
|
||||
* This program is distributed in the hope it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*/
|
||||
|
||||
#ifndef _UAPI_SED_OPAL_H
|
||||
@@ -58,7 +49,7 @@ struct opal_key {
|
||||
struct opal_lr_act {
|
||||
struct opal_key key;
|
||||
__u32 sum;
|
||||
__u8 num_lrs;
|
||||
__u8 num_lrs;
|
||||
__u8 lr[OPAL_MAX_LRS];
|
||||
__u8 align[2]; /* Align to 8 byte boundary */
|
||||
};
|
||||
|
||||
@@ -287,4 +287,10 @@
|
||||
/* RDA UART */
|
||||
#define PORT_RDA 118
|
||||
|
||||
/* Socionext Milbeaut UART */
|
||||
#define PORT_MLB_USIO 119
|
||||
|
||||
/* SiFive UART */
|
||||
#define PORT_SIFIVE_V0 120
|
||||
|
||||
#endif /* _UAPILINUX_SERIAL_CORE_H */
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#ifndef _LINUX_SOCKIOS_H
|
||||
#define _LINUX_SOCKIOS_H
|
||||
|
||||
#include <asm/bitsperlong.h>
|
||||
#include <asm/sockios.h>
|
||||
|
||||
/* Linux-specific socket ioctls */
|
||||
@@ -27,6 +28,26 @@
|
||||
|
||||
#define SOCK_IOC_TYPE 0x89
|
||||
|
||||
/*
|
||||
* the timeval/timespec data structure layout is defined by libc,
|
||||
* so we need to cover both possible versions on 32-bit.
|
||||
*/
|
||||
/* Get stamp (timeval) */
|
||||
#define SIOCGSTAMP_NEW _IOR(SOCK_IOC_TYPE, 0x06, long long[2])
|
||||
/* Get stamp (timespec) */
|
||||
#define SIOCGSTAMPNS_NEW _IOR(SOCK_IOC_TYPE, 0x07, long long[2])
|
||||
|
||||
#if __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__))
|
||||
/* on 64-bit and x32, avoid the ?: operator */
|
||||
#define SIOCGSTAMP SIOCGSTAMP_OLD
|
||||
#define SIOCGSTAMPNS SIOCGSTAMPNS_OLD
|
||||
#else
|
||||
#define SIOCGSTAMP ((sizeof(struct timeval)) == 8 ? \
|
||||
SIOCGSTAMP_OLD : SIOCGSTAMP_NEW)
|
||||
#define SIOCGSTAMPNS ((sizeof(struct timespec)) == 8 ? \
|
||||
SIOCGSTAMPNS_OLD : SIOCGSTAMPNS_NEW)
|
||||
#endif
|
||||
|
||||
/* Routing table calls. */
|
||||
#define SIOCADDRT 0x890B /* add routing table entry */
|
||||
#define SIOCDELRT 0x890C /* delete routing table entry */
|
||||
|
||||
@@ -66,6 +66,9 @@
|
||||
* @delay_usecs: If nonzero, how long to delay after the last bit transfer
|
||||
* before optionally deselecting the device before the next transfer.
|
||||
* @cs_change: True to deselect device before starting the next transfer.
|
||||
* @word_delay_usecs: If nonzero, how long to wait between words within one
|
||||
* transfer. This property needs explicit support in the SPI controller,
|
||||
* otherwise it is silently ignored.
|
||||
*
|
||||
* This structure is mapped directly to the kernel spi_transfer structure;
|
||||
* the fields have the same meanings, except of course that the pointers
|
||||
@@ -100,7 +103,8 @@ struct spi_ioc_transfer {
|
||||
__u8 cs_change;
|
||||
__u8 tx_nbits;
|
||||
__u8 rx_nbits;
|
||||
__u16 pad;
|
||||
__u8 word_delay_usecs;
|
||||
__u8 pad;
|
||||
|
||||
/* If the contents of 'struct spi_ioc_transfer' ever change
|
||||
* incompatibly, then the ioctl number (currently 0) must change;
|
||||
|
||||
@@ -50,7 +50,7 @@ struct switchtec_ioctl_flash_part_info {
|
||||
__u32 active;
|
||||
};
|
||||
|
||||
struct switchtec_ioctl_event_summary {
|
||||
struct switchtec_ioctl_event_summary_legacy {
|
||||
__u64 global;
|
||||
__u64 part_bitmap;
|
||||
__u32 local_part;
|
||||
@@ -59,6 +59,15 @@ struct switchtec_ioctl_event_summary {
|
||||
__u32 pff[48];
|
||||
};
|
||||
|
||||
struct switchtec_ioctl_event_summary {
|
||||
__u64 global;
|
||||
__u64 part_bitmap;
|
||||
__u32 local_part;
|
||||
__u32 padding;
|
||||
__u32 part[48];
|
||||
__u32 pff[255];
|
||||
};
|
||||
|
||||
#define SWITCHTEC_IOCTL_EVENT_STACK_ERROR 0
|
||||
#define SWITCHTEC_IOCTL_EVENT_PPU_ERROR 1
|
||||
#define SWITCHTEC_IOCTL_EVENT_ISP_ERROR 2
|
||||
@@ -127,6 +136,8 @@ struct switchtec_ioctl_pff_port {
|
||||
_IOWR('W', 0x41, struct switchtec_ioctl_flash_part_info)
|
||||
#define SWITCHTEC_IOCTL_EVENT_SUMMARY \
|
||||
_IOR('W', 0x42, struct switchtec_ioctl_event_summary)
|
||||
#define SWITCHTEC_IOCTL_EVENT_SUMMARY_LEGACY \
|
||||
_IOR('W', 0x42, struct switchtec_ioctl_event_summary_legacy)
|
||||
#define SWITCHTEC_IOCTL_EVENT_CTL \
|
||||
_IOWR('W', 0x43, struct switchtec_ioctl_event_ctl)
|
||||
#define SWITCHTEC_IOCTL_PFF_TO_PORT \
|
||||
|
||||
@@ -160,15 +160,42 @@ enum {
|
||||
#define TCPI_OPT_ECN_SEEN 16 /* we received at least one packet with ECT */
|
||||
#define TCPI_OPT_SYN_DATA 32 /* SYN-ACK acked data in SYN sent or rcvd */
|
||||
|
||||
/*
|
||||
* Sender's congestion state indicating normal or abnormal situations
|
||||
* in the last round of packets sent. The state is driven by the ACK
|
||||
* information and timer events.
|
||||
*/
|
||||
enum tcp_ca_state {
|
||||
/*
|
||||
* Nothing bad has been observed recently.
|
||||
* No apparent reordering, packet loss, or ECN marks.
|
||||
*/
|
||||
TCP_CA_Open = 0,
|
||||
#define TCPF_CA_Open (1<<TCP_CA_Open)
|
||||
/*
|
||||
* The sender enters disordered state when it has received DUPACKs or
|
||||
* SACKs in the last round of packets sent. This could be due to packet
|
||||
* loss or reordering but needs further information to confirm packets
|
||||
* have been lost.
|
||||
*/
|
||||
TCP_CA_Disorder = 1,
|
||||
#define TCPF_CA_Disorder (1<<TCP_CA_Disorder)
|
||||
/*
|
||||
* The sender enters Congestion Window Reduction (CWR) state when it
|
||||
* has received ACKs with ECN-ECE marks, or has experienced congestion
|
||||
* or packet discard on the sender host (e.g. qdisc).
|
||||
*/
|
||||
TCP_CA_CWR = 2,
|
||||
#define TCPF_CA_CWR (1<<TCP_CA_CWR)
|
||||
/*
|
||||
* The sender is in fast recovery and retransmitting lost packets,
|
||||
* typically triggered by ACK events.
|
||||
*/
|
||||
TCP_CA_Recovery = 3,
|
||||
#define TCPF_CA_Recovery (1<<TCP_CA_Recovery)
|
||||
/*
|
||||
* The sender is in loss recovery triggered by retransmission timeout.
|
||||
*/
|
||||
TCP_CA_Loss = 4
|
||||
#define TCPF_CA_Loss (1<<TCP_CA_Loss)
|
||||
};
|
||||
|
||||
@@ -190,6 +190,7 @@ struct sockaddr_tipc {
|
||||
#define TIPC_MCAST_REPLICAST 134 /* Default: TIPC selects. No arg */
|
||||
#define TIPC_GROUP_JOIN 135 /* Takes struct tipc_group_req* */
|
||||
#define TIPC_GROUP_LEAVE 136 /* No argument */
|
||||
#define TIPC_SOCK_RECVQ_USED 137 /* Default: none (read only) */
|
||||
|
||||
/*
|
||||
* Flag values
|
||||
|
||||
@@ -281,6 +281,8 @@ enum {
|
||||
TIPC_NLA_PROP_TOL, /* u32 */
|
||||
TIPC_NLA_PROP_WIN, /* u32 */
|
||||
TIPC_NLA_PROP_MTU, /* u32 */
|
||||
TIPC_NLA_PROP_BROADCAST, /* u32 */
|
||||
TIPC_NLA_PROP_BROADCAST_RATIO, /* u32 */
|
||||
|
||||
__TIPC_NLA_PROP_MAX,
|
||||
TIPC_NLA_PROP_MAX = __TIPC_NLA_PROP_MAX - 1
|
||||
|
||||
@@ -70,6 +70,13 @@
|
||||
#define TLS_CIPHER_AES_GCM_256_TAG_SIZE 16
|
||||
#define TLS_CIPHER_AES_GCM_256_REC_SEQ_SIZE 8
|
||||
|
||||
#define TLS_CIPHER_AES_CCM_128 53
|
||||
#define TLS_CIPHER_AES_CCM_128_IV_SIZE 8
|
||||
#define TLS_CIPHER_AES_CCM_128_KEY_SIZE 16
|
||||
#define TLS_CIPHER_AES_CCM_128_SALT_SIZE 4
|
||||
#define TLS_CIPHER_AES_CCM_128_TAG_SIZE 16
|
||||
#define TLS_CIPHER_AES_CCM_128_REC_SEQ_SIZE 8
|
||||
|
||||
#define TLS_SET_RECORD_TYPE 1
|
||||
#define TLS_GET_RECORD_TYPE 2
|
||||
|
||||
@@ -94,4 +101,12 @@ struct tls12_crypto_info_aes_gcm_256 {
|
||||
unsigned char rec_seq[TLS_CIPHER_AES_GCM_256_REC_SEQ_SIZE];
|
||||
};
|
||||
|
||||
struct tls12_crypto_info_aes_ccm_128 {
|
||||
struct tls_crypto_info info;
|
||||
unsigned char iv[TLS_CIPHER_AES_CCM_128_IV_SIZE];
|
||||
unsigned char key[TLS_CIPHER_AES_CCM_128_KEY_SIZE];
|
||||
unsigned char salt[TLS_CIPHER_AES_CCM_128_SALT_SIZE];
|
||||
unsigned char rec_seq[TLS_CIPHER_AES_CCM_128_REC_SEQ_SIZE];
|
||||
};
|
||||
|
||||
#endif /* _UAPI_LINUX_TLS_H */
|
||||
|
||||
@@ -404,6 +404,10 @@ enum v4l2_mpeg_video_multi_slice_mode {
|
||||
#define V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE (V4L2_CID_MPEG_BASE+228)
|
||||
#define V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME (V4L2_CID_MPEG_BASE+229)
|
||||
|
||||
/* CIDs for the FWHT codec as used by the vicodec driver. */
|
||||
#define V4L2_CID_FWHT_I_FRAME_QP (V4L2_CID_MPEG_BASE + 290)
|
||||
#define V4L2_CID_FWHT_P_FRAME_QP (V4L2_CID_MPEG_BASE + 291)
|
||||
|
||||
#define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP (V4L2_CID_MPEG_BASE+300)
|
||||
#define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP (V4L2_CID_MPEG_BASE+301)
|
||||
#define V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP (V4L2_CID_MPEG_BASE+302)
|
||||
@@ -535,6 +539,10 @@ enum v4l2_mpeg_video_h264_hierarchical_coding_type {
|
||||
#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP (V4L2_CID_MPEG_BASE+382)
|
||||
#define V4L2_CID_MPEG_VIDEO_H264_CONSTRAINED_INTRA_PREDICTION (V4L2_CID_MPEG_BASE+383)
|
||||
#define V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET (V4L2_CID_MPEG_BASE+384)
|
||||
#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP (V4L2_CID_MPEG_BASE+385)
|
||||
#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP (V4L2_CID_MPEG_BASE+386)
|
||||
#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP (V4L2_CID_MPEG_BASE+387)
|
||||
#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP (V4L2_CID_MPEG_BASE+388)
|
||||
#define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (V4L2_CID_MPEG_BASE+400)
|
||||
#define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP (V4L2_CID_MPEG_BASE+401)
|
||||
#define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP (V4L2_CID_MPEG_BASE+402)
|
||||
|
||||
@@ -353,6 +353,10 @@ struct vfio_region_gfx_edid {
|
||||
#define VFIO_DEVICE_GFX_LINK_STATE_DOWN 2
|
||||
};
|
||||
|
||||
#define VFIO_REGION_TYPE_CCW (2)
|
||||
/* ccw sub-types */
|
||||
#define VFIO_REGION_SUBTYPE_CCW_ASYNC_CMD (1)
|
||||
|
||||
/*
|
||||
* 10de vendor sub-type
|
||||
*
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/* used for START SUBCHANNEL, always present */
|
||||
struct ccw_io_region {
|
||||
#define ORB_AREA_SIZE 12
|
||||
__u8 orb_area[ORB_AREA_SIZE];
|
||||
@@ -22,4 +23,15 @@ struct ccw_io_region {
|
||||
__u32 ret_code;
|
||||
} __packed;
|
||||
|
||||
/*
|
||||
* used for processing commands that trigger asynchronous actions
|
||||
* Note: this is controlled by a capability
|
||||
*/
|
||||
#define VFIO_CCW_ASYNC_CMD_HSCH (1 << 0)
|
||||
#define VFIO_CCW_ASYNC_CMD_CSCH (1 << 1)
|
||||
struct ccw_cmd_region {
|
||||
__u32 command;
|
||||
__u32 ret_code;
|
||||
} __packed;
|
||||
|
||||
#endif
|
||||
|
||||
@@ -514,9 +514,21 @@ struct v4l2_pix_format {
|
||||
#define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */
|
||||
#define V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2') /* 16 aaaarrrr ggggbbbb */
|
||||
#define V4L2_PIX_FMT_XRGB444 v4l2_fourcc('X', 'R', '1', '2') /* 16 xxxxrrrr ggggbbbb */
|
||||
#define V4L2_PIX_FMT_RGBA444 v4l2_fourcc('R', 'A', '1', '2') /* 16 rrrrgggg bbbbaaaa */
|
||||
#define V4L2_PIX_FMT_RGBX444 v4l2_fourcc('R', 'X', '1', '2') /* 16 rrrrgggg bbbbxxxx */
|
||||
#define V4L2_PIX_FMT_ABGR444 v4l2_fourcc('A', 'B', '1', '2') /* 16 aaaabbbb ggggrrrr */
|
||||
#define V4L2_PIX_FMT_XBGR444 v4l2_fourcc('X', 'B', '1', '2') /* 16 xxxxbbbb ggggrrrr */
|
||||
#define V4L2_PIX_FMT_BGRA444 v4l2_fourcc('B', 'A', '1', '2') /* 16 bbbbgggg rrrraaaa */
|
||||
#define V4L2_PIX_FMT_BGRX444 v4l2_fourcc('B', 'X', '1', '2') /* 16 bbbbgggg rrrrxxxx */
|
||||
#define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */
|
||||
#define V4L2_PIX_FMT_ARGB555 v4l2_fourcc('A', 'R', '1', '5') /* 16 ARGB-1-5-5-5 */
|
||||
#define V4L2_PIX_FMT_XRGB555 v4l2_fourcc('X', 'R', '1', '5') /* 16 XRGB-1-5-5-5 */
|
||||
#define V4L2_PIX_FMT_RGBA555 v4l2_fourcc('R', 'A', '1', '5') /* 16 RGBA-5-5-5-1 */
|
||||
#define V4L2_PIX_FMT_RGBX555 v4l2_fourcc('R', 'X', '1', '5') /* 16 RGBX-5-5-5-1 */
|
||||
#define V4L2_PIX_FMT_ABGR555 v4l2_fourcc('A', 'B', '1', '5') /* 16 ABGR-1-5-5-5 */
|
||||
#define V4L2_PIX_FMT_XBGR555 v4l2_fourcc('X', 'B', '1', '5') /* 16 XBGR-1-5-5-5 */
|
||||
#define V4L2_PIX_FMT_BGRA555 v4l2_fourcc('B', 'A', '1', '5') /* 16 BGRA-5-5-5-1 */
|
||||
#define V4L2_PIX_FMT_BGRX555 v4l2_fourcc('B', 'X', '1', '5') /* 16 BGRX-5-5-5-1 */
|
||||
#define V4L2_PIX_FMT_RGB565 v4l2_fourcc('R', 'G', 'B', 'P') /* 16 RGB-5-6-5 */
|
||||
#define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q') /* 16 RGB-5-5-5 BE */
|
||||
#define V4L2_PIX_FMT_ARGB555X v4l2_fourcc_be('A', 'R', '1', '5') /* 16 ARGB-5-5-5 BE */
|
||||
@@ -528,7 +540,11 @@ struct v4l2_pix_format {
|
||||
#define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B', 'G', 'R', '4') /* 32 BGR-8-8-8-8 */
|
||||
#define V4L2_PIX_FMT_ABGR32 v4l2_fourcc('A', 'R', '2', '4') /* 32 BGRA-8-8-8-8 */
|
||||
#define V4L2_PIX_FMT_XBGR32 v4l2_fourcc('X', 'R', '2', '4') /* 32 BGRX-8-8-8-8 */
|
||||
#define V4L2_PIX_FMT_BGRA32 v4l2_fourcc('R', 'A', '2', '4') /* 32 ABGR-8-8-8-8 */
|
||||
#define V4L2_PIX_FMT_BGRX32 v4l2_fourcc('R', 'X', '2', '4') /* 32 XBGR-8-8-8-8 */
|
||||
#define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4') /* 32 RGB-8-8-8-8 */
|
||||
#define V4L2_PIX_FMT_RGBA32 v4l2_fourcc('A', 'B', '2', '4') /* 32 RGBA-8-8-8-8 */
|
||||
#define V4L2_PIX_FMT_RGBX32 v4l2_fourcc('X', 'B', '2', '4') /* 32 RGBX-8-8-8-8 */
|
||||
#define V4L2_PIX_FMT_ARGB32 v4l2_fourcc('B', 'A', '2', '4') /* 32 ARGB-8-8-8-8 */
|
||||
#define V4L2_PIX_FMT_XRGB32 v4l2_fourcc('B', 'X', '2', '4') /* 32 XRGB-8-8-8-8 */
|
||||
|
||||
@@ -669,6 +685,7 @@ struct v4l2_pix_format {
|
||||
#define V4L2_PIX_FMT_VP9 v4l2_fourcc('V', 'P', '9', '0') /* VP9 */
|
||||
#define V4L2_PIX_FMT_HEVC v4l2_fourcc('H', 'E', 'V', 'C') /* HEVC aka H.265 */
|
||||
#define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T') /* Fast Walsh Hadamard Transform (vicodec) */
|
||||
#define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H') /* Stateless FWHT (vicodec) */
|
||||
|
||||
/* Vendor-specific formats */
|
||||
#define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */
|
||||
|
||||
@@ -40,8 +40,16 @@
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define VIRTIO_GPU_F_VIRGL 0
|
||||
#define VIRTIO_GPU_F_EDID 1
|
||||
/*
|
||||
* VIRTIO_GPU_CMD_CTX_*
|
||||
* VIRTIO_GPU_CMD_*_3D
|
||||
*/
|
||||
#define VIRTIO_GPU_F_VIRGL 0
|
||||
|
||||
/*
|
||||
* VIRTIO_GPU_CMD_GET_EDID
|
||||
*/
|
||||
#define VIRTIO_GPU_F_EDID 1
|
||||
|
||||
enum virtio_gpu_ctrl_type {
|
||||
VIRTIO_GPU_UNDEFINED = 0,
|
||||
|
||||
@@ -20,8 +20,8 @@
|
||||
/*
|
||||
* Queue Numbering
|
||||
*
|
||||
* The external queues (DMA channels + CPU) MUST be before the internal queues
|
||||
* and each group (DMA channels + CPU and internal) must be contiguous inside
|
||||
* The external queues (PCI DMA channels) MUST be before the internal queues
|
||||
* and each group (PCI DMA channels and internal) must be contiguous inside
|
||||
* itself but there can be a gap between the two groups (although not
|
||||
* recommended)
|
||||
*/
|
||||
@@ -33,7 +33,7 @@ enum goya_queue_id {
|
||||
GOYA_QUEUE_ID_DMA_3,
|
||||
GOYA_QUEUE_ID_DMA_4,
|
||||
GOYA_QUEUE_ID_CPU_PQ,
|
||||
GOYA_QUEUE_ID_MME,
|
||||
GOYA_QUEUE_ID_MME, /* Internal queues start here */
|
||||
GOYA_QUEUE_ID_TPC0,
|
||||
GOYA_QUEUE_ID_TPC1,
|
||||
GOYA_QUEUE_ID_TPC2,
|
||||
@@ -45,11 +45,18 @@ enum goya_queue_id {
|
||||
GOYA_QUEUE_ID_SIZE
|
||||
};
|
||||
|
||||
enum hl_device_status {
|
||||
HL_DEVICE_STATUS_OPERATIONAL,
|
||||
HL_DEVICE_STATUS_IN_RESET,
|
||||
HL_DEVICE_STATUS_MALFUNCTION
|
||||
};
|
||||
|
||||
/* Opcode for management ioctl */
|
||||
#define HL_INFO_HW_IP_INFO 0
|
||||
#define HL_INFO_HW_EVENTS 1
|
||||
#define HL_INFO_DRAM_USAGE 2
|
||||
#define HL_INFO_HW_IDLE 3
|
||||
#define HL_INFO_DEVICE_STATUS 4
|
||||
|
||||
#define HL_INFO_VERSION_MAX_LEN 128
|
||||
|
||||
@@ -82,6 +89,11 @@ struct hl_info_hw_idle {
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
struct hl_info_device_status {
|
||||
__u32 status;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
struct hl_info_args {
|
||||
/* Location of relevant struct in userspace */
|
||||
__u64 return_pointer;
|
||||
@@ -181,7 +193,10 @@ struct hl_cs_in {
|
||||
};
|
||||
|
||||
struct hl_cs_out {
|
||||
/* this holds the sequence number of the CS to pass to wait ioctl */
|
||||
/*
|
||||
* seq holds the sequence number of the CS to pass to wait ioctl. All
|
||||
* values are valid except for 0 and ULLONG_MAX
|
||||
*/
|
||||
__u64 seq;
|
||||
/* HL_CS_STATUS_* */
|
||||
__u32 status;
|
||||
@@ -320,6 +335,110 @@ union hl_mem_args {
|
||||
struct hl_mem_out out;
|
||||
};
|
||||
|
||||
#define HL_DEBUG_MAX_AUX_VALUES 10
|
||||
|
||||
struct hl_debug_params_etr {
|
||||
/* Address in memory to allocate buffer */
|
||||
__u64 buffer_address;
|
||||
|
||||
/* Size of buffer to allocate */
|
||||
__u64 buffer_size;
|
||||
|
||||
/* Sink operation mode: SW fifo, HW fifo, Circular buffer */
|
||||
__u32 sink_mode;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
struct hl_debug_params_etf {
|
||||
/* Address in memory to allocate buffer */
|
||||
__u64 buffer_address;
|
||||
|
||||
/* Size of buffer to allocate */
|
||||
__u64 buffer_size;
|
||||
|
||||
/* Sink operation mode: SW fifo, HW fifo, Circular buffer */
|
||||
__u32 sink_mode;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
struct hl_debug_params_stm {
|
||||
/* Two bit masks for HW event and Stimulus Port */
|
||||
__u64 he_mask;
|
||||
__u64 sp_mask;
|
||||
|
||||
/* Trace source ID */
|
||||
__u32 id;
|
||||
|
||||
/* Frequency for the timestamp register */
|
||||
__u32 frequency;
|
||||
};
|
||||
|
||||
struct hl_debug_params_bmon {
|
||||
/* Two address ranges that the user can request to filter */
|
||||
__u64 start_addr0;
|
||||
__u64 addr_mask0;
|
||||
|
||||
__u64 start_addr1;
|
||||
__u64 addr_mask1;
|
||||
|
||||
/* Capture window configuration */
|
||||
__u32 bw_win;
|
||||
__u32 win_capture;
|
||||
|
||||
/* Trace source ID */
|
||||
__u32 id;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
struct hl_debug_params_spmu {
|
||||
/* Event types selection */
|
||||
__u64 event_types[HL_DEBUG_MAX_AUX_VALUES];
|
||||
|
||||
/* Number of event types selection */
|
||||
__u32 event_types_num;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/* Opcode for ETR component */
|
||||
#define HL_DEBUG_OP_ETR 0
|
||||
/* Opcode for ETF component */
|
||||
#define HL_DEBUG_OP_ETF 1
|
||||
/* Opcode for STM component */
|
||||
#define HL_DEBUG_OP_STM 2
|
||||
/* Opcode for FUNNEL component */
|
||||
#define HL_DEBUG_OP_FUNNEL 3
|
||||
/* Opcode for BMON component */
|
||||
#define HL_DEBUG_OP_BMON 4
|
||||
/* Opcode for SPMU component */
|
||||
#define HL_DEBUG_OP_SPMU 5
|
||||
/* Opcode for timestamp */
|
||||
#define HL_DEBUG_OP_TIMESTAMP 6
|
||||
|
||||
struct hl_debug_args {
|
||||
/*
|
||||
* Pointer to user input structure.
|
||||
* This field is relevant to specific opcodes.
|
||||
*/
|
||||
__u64 input_ptr;
|
||||
/* Pointer to user output structure */
|
||||
__u64 output_ptr;
|
||||
/* Size of user input structure */
|
||||
__u32 input_size;
|
||||
/* Size of user output structure */
|
||||
__u32 output_size;
|
||||
/* HL_DEBUG_OP_* */
|
||||
__u32 op;
|
||||
/*
|
||||
* Register index in the component, taken from the debug_regs_index enum
|
||||
* in the various ASIC header files
|
||||
*/
|
||||
__u32 reg_idx;
|
||||
/* Enable/disable */
|
||||
__u32 enable;
|
||||
/* Context ID - Currently not in use */
|
||||
__u32 ctx_id;
|
||||
};
|
||||
|
||||
/*
|
||||
* Various information operations such as:
|
||||
* - H/W IP information
|
||||
@@ -361,6 +480,12 @@ union hl_mem_args {
|
||||
* Each JOB will be enqueued on a specific queue, according to the user's input.
|
||||
* There can be more then one JOB per queue.
|
||||
*
|
||||
* The CS IOCTL will receive three sets of JOBS. One set is for "restore" phase,
|
||||
* a second set is for "execution" phase and a third set is for "store" phase.
|
||||
* The JOBS on the "restore" phase are enqueued only after context-switch
|
||||
* (or if its the first CS for this context). The user can also order the
|
||||
* driver to run the "restore" phase explicitly
|
||||
*
|
||||
* There are two types of queues - external and internal. External queues
|
||||
* are DMA queues which transfer data from/to the Host. All other queues are
|
||||
* internal. The driver will get completion notifications from the device only
|
||||
@@ -377,19 +502,18 @@ union hl_mem_args {
|
||||
* relevant queues. Therefore, the user mustn't assume the CS has been completed
|
||||
* or has even started to execute.
|
||||
*
|
||||
* Upon successful enqueue, the IOCTL returns an opaque handle which the user
|
||||
* Upon successful enqueue, the IOCTL returns a sequence number which the user
|
||||
* can use with the "Wait for CS" IOCTL to check whether the handle's CS
|
||||
* external JOBS have been completed. Note that if the CS has internal JOBS
|
||||
* which can execute AFTER the external JOBS have finished, the driver might
|
||||
* report that the CS has finished executing BEFORE the internal JOBS have
|
||||
* actually finish executing.
|
||||
*
|
||||
* The CS IOCTL will receive three sets of JOBS. One set is for "restore" phase,
|
||||
* a second set is for "execution" phase and a third set is for "store" phase.
|
||||
* The JOBS on the "restore" phase are enqueued only after context-switch
|
||||
* (or if its the first CS for this context). The user can also order the
|
||||
* driver to run the "restore" phase explicitly
|
||||
*
|
||||
* Even though the sequence number increments per CS, the user can NOT
|
||||
* automatically assume that if CS with sequence number N finished, then CS
|
||||
* with sequence number N-1 also finished. The user can make this assumption if
|
||||
* and only if CS N and CS N-1 are exactly the same (same CBs for the same
|
||||
* queues).
|
||||
*/
|
||||
#define HL_IOCTL_CS \
|
||||
_IOWR('H', 0x03, union hl_cs_args)
|
||||
@@ -444,7 +568,20 @@ union hl_mem_args {
|
||||
#define HL_IOCTL_MEMORY \
|
||||
_IOWR('H', 0x05, union hl_mem_args)
|
||||
|
||||
/*
|
||||
* Debug
|
||||
* - Enable/disable the ETR/ETF/FUNNEL/STM/BMON/SPMU debug traces
|
||||
*
|
||||
* This IOCTL allows the user to get debug traces from the chip.
|
||||
*
|
||||
* The user needs to provide the register index and essential data such as
|
||||
* buffer address and size.
|
||||
*
|
||||
*/
|
||||
#define HL_IOCTL_DEBUG \
|
||||
_IOWR('H', 0x06, struct hl_debug_args)
|
||||
|
||||
#define HL_COMMAND_START 0x01
|
||||
#define HL_COMMAND_END 0x06
|
||||
#define HL_COMMAND_END 0x07
|
||||
|
||||
#endif /* HABANALABS_H_ */
|
||||
|
||||
101
include/uapi/rdma/efa-abi.h
Normal file
101
include/uapi/rdma/efa-abi.h
Normal file
@@ -0,0 +1,101 @@
|
||||
/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */
|
||||
/*
|
||||
* Copyright 2018-2019 Amazon.com, Inc. or its affiliates. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef EFA_ABI_USER_H
|
||||
#define EFA_ABI_USER_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
/*
|
||||
* Increment this value if any changes that break userspace ABI
|
||||
* compatibility are made.
|
||||
*/
|
||||
#define EFA_UVERBS_ABI_VERSION 1
|
||||
|
||||
/*
|
||||
* Keep structs aligned to 8 bytes.
|
||||
* Keep reserved fields as arrays of __u8 named reserved_XXX where XXX is the
|
||||
* hex bit offset of the field.
|
||||
*/
|
||||
|
||||
enum efa_ibv_user_cmds_supp_udata {
|
||||
EFA_USER_CMDS_SUPP_UDATA_QUERY_DEVICE = 1 << 0,
|
||||
EFA_USER_CMDS_SUPP_UDATA_CREATE_AH = 1 << 1,
|
||||
};
|
||||
|
||||
struct efa_ibv_alloc_ucontext_resp {
|
||||
__u32 comp_mask;
|
||||
__u32 cmds_supp_udata_mask;
|
||||
__u16 sub_cqs_per_cq;
|
||||
__u16 inline_buf_size;
|
||||
__u32 max_llq_size; /* bytes */
|
||||
};
|
||||
|
||||
struct efa_ibv_alloc_pd_resp {
|
||||
__u32 comp_mask;
|
||||
__u16 pdn;
|
||||
__u8 reserved_30[2];
|
||||
};
|
||||
|
||||
struct efa_ibv_create_cq {
|
||||
__u32 comp_mask;
|
||||
__u32 cq_entry_size;
|
||||
__u16 num_sub_cqs;
|
||||
__u8 reserved_50[6];
|
||||
};
|
||||
|
||||
struct efa_ibv_create_cq_resp {
|
||||
__u32 comp_mask;
|
||||
__u8 reserved_20[4];
|
||||
__aligned_u64 q_mmap_key;
|
||||
__aligned_u64 q_mmap_size;
|
||||
__u16 cq_idx;
|
||||
__u8 reserved_d0[6];
|
||||
};
|
||||
|
||||
enum {
|
||||
EFA_QP_DRIVER_TYPE_SRD = 0,
|
||||
};
|
||||
|
||||
struct efa_ibv_create_qp {
|
||||
__u32 comp_mask;
|
||||
__u32 rq_ring_size; /* bytes */
|
||||
__u32 sq_ring_size; /* bytes */
|
||||
__u32 driver_qp_type;
|
||||
};
|
||||
|
||||
struct efa_ibv_create_qp_resp {
|
||||
__u32 comp_mask;
|
||||
/* the offset inside the page of the rq db */
|
||||
__u32 rq_db_offset;
|
||||
/* the offset inside the page of the sq db */
|
||||
__u32 sq_db_offset;
|
||||
/* the offset inside the page of descriptors buffer */
|
||||
__u32 llq_desc_offset;
|
||||
__aligned_u64 rq_mmap_key;
|
||||
__aligned_u64 rq_mmap_size;
|
||||
__aligned_u64 rq_db_mmap_key;
|
||||
__aligned_u64 sq_db_mmap_key;
|
||||
__aligned_u64 llq_desc_mmap_key;
|
||||
__u16 send_sub_cq_idx;
|
||||
__u16 recv_sub_cq_idx;
|
||||
__u8 reserved_1e0[4];
|
||||
};
|
||||
|
||||
struct efa_ibv_create_ah_resp {
|
||||
__u32 comp_mask;
|
||||
__u16 efa_address_handle;
|
||||
__u8 reserved_30[2];
|
||||
};
|
||||
|
||||
struct efa_ibv_ex_query_device_resp {
|
||||
__u32 comp_mask;
|
||||
__u32 max_sq_wr;
|
||||
__u32 max_rq_wr;
|
||||
__u16 max_sq_sge;
|
||||
__u16 max_rq_sge;
|
||||
};
|
||||
|
||||
#endif /* EFA_ABI_USER_H */
|
||||
@@ -360,6 +360,7 @@ enum mlx5_ib_create_qp_resp_mask {
|
||||
MLX5_IB_CREATE_QP_RESP_MASK_TISN = 1UL << 1,
|
||||
MLX5_IB_CREATE_QP_RESP_MASK_RQN = 1UL << 2,
|
||||
MLX5_IB_CREATE_QP_RESP_MASK_SQN = 1UL << 3,
|
||||
MLX5_IB_CREATE_QP_RESP_MASK_TIR_ICM_ADDR = 1UL << 4,
|
||||
};
|
||||
|
||||
struct mlx5_ib_create_qp_resp {
|
||||
@@ -371,6 +372,7 @@ struct mlx5_ib_create_qp_resp {
|
||||
__u32 rqn;
|
||||
__u32 sqn;
|
||||
__u32 reserved1;
|
||||
__u64 tir_icm_addr;
|
||||
};
|
||||
|
||||
struct mlx5_ib_alloc_mw {
|
||||
|
||||
@@ -44,6 +44,7 @@ enum mlx5_ib_create_flow_action_attrs {
|
||||
enum mlx5_ib_alloc_dm_attrs {
|
||||
MLX5_IB_ATTR_ALLOC_DM_RESP_START_OFFSET = (1U << UVERBS_ID_NS_SHIFT),
|
||||
MLX5_IB_ATTR_ALLOC_DM_RESP_PAGE_INDEX,
|
||||
MLX5_IB_ATTR_ALLOC_DM_REQ_TYPE,
|
||||
};
|
||||
|
||||
enum mlx5_ib_devx_methods {
|
||||
@@ -144,6 +145,7 @@ enum mlx5_ib_flow_matcher_create_attrs {
|
||||
MLX5_IB_ATTR_FLOW_MATCHER_FLOW_TYPE,
|
||||
MLX5_IB_ATTR_FLOW_MATCHER_MATCH_CRITERIA,
|
||||
MLX5_IB_ATTR_FLOW_MATCHER_FLOW_FLAGS,
|
||||
MLX5_IB_ATTR_FLOW_MATCHER_FT_TYPE,
|
||||
};
|
||||
|
||||
enum mlx5_ib_flow_matcher_destroy_attrs {
|
||||
|
||||
@@ -42,6 +42,7 @@ enum mlx5_ib_uapi_flow_action_flags {
|
||||
enum mlx5_ib_uapi_flow_table_type {
|
||||
MLX5_IB_UAPI_FLOW_TABLE_TYPE_NIC_RX = 0x0,
|
||||
MLX5_IB_UAPI_FLOW_TABLE_TYPE_NIC_TX = 0x1,
|
||||
MLX5_IB_UAPI_FLOW_TABLE_TYPE_FDB = 0x2,
|
||||
};
|
||||
|
||||
enum mlx5_ib_uapi_flow_action_packet_reformat_type {
|
||||
@@ -56,5 +57,11 @@ struct mlx5_ib_uapi_devx_async_cmd_hdr {
|
||||
__u8 out_data[];
|
||||
};
|
||||
|
||||
enum mlx5_ib_uapi_dm_type {
|
||||
MLX5_IB_UAPI_DM_TYPE_MEMIC,
|
||||
MLX5_IB_UAPI_DM_TYPE_STEERING_SW_ICM,
|
||||
MLX5_IB_UAPI_DM_TYPE_HEADER_MODIFY_SW_ICM,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -49,17 +49,6 @@ enum {
|
||||
RDMA_NL_IWPM_NUM_OPS
|
||||
};
|
||||
|
||||
struct rdma_cm_id_stats {
|
||||
__u32 qp_num;
|
||||
__u32 bound_dev_if;
|
||||
__u32 port_space;
|
||||
__s32 pid;
|
||||
__u8 cm_state;
|
||||
__u8 node_type;
|
||||
__u8 port_num;
|
||||
__u8 qp_type;
|
||||
};
|
||||
|
||||
enum {
|
||||
IWPM_NLA_REG_PID_UNSPEC = 0,
|
||||
IWPM_NLA_REG_PID_SEQ,
|
||||
@@ -261,7 +250,10 @@ enum rdma_nldev_command {
|
||||
|
||||
RDMA_NLDEV_CMD_PORT_GET, /* can dump */
|
||||
|
||||
/* 6 - 8 are free to use */
|
||||
RDMA_NLDEV_CMD_SYS_GET,
|
||||
RDMA_NLDEV_CMD_SYS_SET,
|
||||
|
||||
/* 8 is free to use */
|
||||
|
||||
RDMA_NLDEV_CMD_RES_GET = 9, /* can dump */
|
||||
|
||||
@@ -472,6 +464,21 @@ enum rdma_nldev_attr {
|
||||
*/
|
||||
RDMA_NLDEV_ATTR_LINK_TYPE, /* string */
|
||||
|
||||
/*
|
||||
* net namespace mode for rdma subsystem:
|
||||
* either shared or exclusive among multiple net namespaces.
|
||||
*/
|
||||
RDMA_NLDEV_SYS_ATTR_NETNS_MODE, /* u8 */
|
||||
/*
|
||||
* Device protocol, e.g. ib, iw, usnic, roce and opa
|
||||
*/
|
||||
RDMA_NLDEV_ATTR_DEV_PROTOCOL, /* string */
|
||||
|
||||
/*
|
||||
* File descriptor handle of the net namespace object
|
||||
*/
|
||||
RDMA_NLDEV_NET_NS_FD, /* u32 */
|
||||
|
||||
/*
|
||||
* Always the end
|
||||
*/
|
||||
|
||||
@@ -102,6 +102,7 @@ enum rdma_driver_id {
|
||||
RDMA_DRIVER_RXE,
|
||||
RDMA_DRIVER_HFI1,
|
||||
RDMA_DRIVER_QIB,
|
||||
RDMA_DRIVER_EFA,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
@@ -52,6 +52,7 @@ enum fc_els_cmd {
|
||||
ELS_RRQ = 0x12, /* reinstate recovery qualifier */
|
||||
ELS_REC = 0x13, /* read exchange concise */
|
||||
ELS_SRR = 0x14, /* sequence retransmission request */
|
||||
ELS_FPIN = 0x16, /* Fabric Performance Impact Notification */
|
||||
ELS_PRLI = 0x20, /* process login */
|
||||
ELS_PRLO = 0x21, /* process logout */
|
||||
ELS_SCN = 0x22, /* state change notification */
|
||||
@@ -119,6 +120,7 @@ enum fc_els_cmd {
|
||||
[ELS_RRQ] = "RRQ", \
|
||||
[ELS_REC] = "REC", \
|
||||
[ELS_SRR] = "SRR", \
|
||||
[ELS_FPIN] = "FPIN", \
|
||||
[ELS_PRLI] = "PRLI", \
|
||||
[ELS_PRLO] = "PRLO", \
|
||||
[ELS_SCN] = "SCN", \
|
||||
@@ -829,4 +831,35 @@ enum fc_els_clid_ic {
|
||||
ELS_CLID_IC_LIP = 8, /* receiving LIP */
|
||||
};
|
||||
|
||||
|
||||
/*
|
||||
* Fabric Notification Descriptor Tag values
|
||||
*/
|
||||
enum fc_fn_dtag {
|
||||
ELS_FN_DTAG_LNK_INTEGRITY = 0x00020001, /* Link Integrity */
|
||||
ELS_FN_DTAG_PEER_CONGEST = 0x00020003, /* Peer Congestion */
|
||||
ELS_FN_DTAG_CONGESTION = 0x00020004, /* Congestion */
|
||||
};
|
||||
|
||||
/*
|
||||
* Fabric Notification Descriptor
|
||||
*/
|
||||
struct fc_fn_desc {
|
||||
__be32 fn_desc_tag; /* Notification Descriptor Tag */
|
||||
__be32 fn_desc_value_len; /* Length of Descriptor Value field
|
||||
* (in bytes)
|
||||
*/
|
||||
__u8 fn_desc_value[0]; /* Descriptor Value */
|
||||
};
|
||||
|
||||
/*
|
||||
* ELS_FPIN - Fabric Performance Impact Notification
|
||||
*/
|
||||
struct fc_els_fpin {
|
||||
__u8 fpin_cmd; /* command (0x16) */
|
||||
__u8 fpin_zero[3]; /* specified as zero - part of cmd */
|
||||
__be32 fpin_desc_cnt; /* count of descriptors */
|
||||
struct fc_fn_desc fpin_desc[0]; /* Descriptor list */
|
||||
};
|
||||
|
||||
#endif /* _FC_ELS_H_ */
|
||||
|
||||
Reference in New Issue
Block a user