mirror of
https://github.com/ziglang/zig.git
synced 2025-12-06 06:13:07 +00:00
Merge pull request #21004 from alexrp/linux-6.10
Linux 6.10 headers/syscalls
This commit is contained in:
commit
71a27ebd84
20
lib/libc/include/aarch64-linux-any/asm/hwcap.h
vendored
20
lib/libc/include/aarch64-linux-any/asm/hwcap.h
vendored
@ -102,5 +102,25 @@
|
||||
#define HWCAP2_SME_BI32I32 (1UL << 40)
|
||||
#define HWCAP2_SME_B16B16 (1UL << 41)
|
||||
#define HWCAP2_SME_F16F16 (1UL << 42)
|
||||
#define HWCAP2_MOPS (1UL << 43)
|
||||
#define HWCAP2_HBC (1UL << 44)
|
||||
#define HWCAP2_SVE_B16B16 (1UL << 45)
|
||||
#define HWCAP2_LRCPC3 (1UL << 46)
|
||||
#define HWCAP2_LSE128 (1UL << 47)
|
||||
#define HWCAP2_FPMR (1UL << 48)
|
||||
#define HWCAP2_LUT (1UL << 49)
|
||||
#define HWCAP2_FAMINMAX (1UL << 50)
|
||||
#define HWCAP2_F8CVT (1UL << 51)
|
||||
#define HWCAP2_F8FMA (1UL << 52)
|
||||
#define HWCAP2_F8DP4 (1UL << 53)
|
||||
#define HWCAP2_F8DP2 (1UL << 54)
|
||||
#define HWCAP2_F8E4M3 (1UL << 55)
|
||||
#define HWCAP2_F8E5M2 (1UL << 56)
|
||||
#define HWCAP2_SME_LUTV2 (1UL << 57)
|
||||
#define HWCAP2_SME_F8F16 (1UL << 58)
|
||||
#define HWCAP2_SME_F8F32 (1UL << 59)
|
||||
#define HWCAP2_SME_SF8FMA (1UL << 60)
|
||||
#define HWCAP2_SME_SF8DP4 (1UL << 61)
|
||||
#define HWCAP2_SME_SF8DP2 (1UL << 62)
|
||||
|
||||
#endif /* __ASM_HWCAP_H */
|
||||
76
lib/libc/include/aarch64-linux-any/asm/kvm.h
vendored
76
lib/libc/include/aarch64-linux-any/asm/kvm.h
vendored
@ -37,9 +37,7 @@
|
||||
#include <asm/ptrace.h>
|
||||
#include <asm/sve_context.h>
|
||||
|
||||
#define __KVM_HAVE_GUEST_DEBUG
|
||||
#define __KVM_HAVE_IRQ_LINE
|
||||
#define __KVM_HAVE_READONLY_MEM
|
||||
#define __KVM_HAVE_VCPU_EVENTS
|
||||
|
||||
#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
|
||||
@ -76,10 +74,10 @@ struct kvm_regs {
|
||||
|
||||
/* KVM_ARM_SET_DEVICE_ADDR ioctl id encoding */
|
||||
#define KVM_ARM_DEVICE_TYPE_SHIFT 0
|
||||
#define KVM_ARM_DEVICE_TYPE_MASK GENMASK(KVM_ARM_DEVICE_TYPE_SHIFT + 15, \
|
||||
#define KVM_ARM_DEVICE_TYPE_MASK __GENMASK(KVM_ARM_DEVICE_TYPE_SHIFT + 15, \
|
||||
KVM_ARM_DEVICE_TYPE_SHIFT)
|
||||
#define KVM_ARM_DEVICE_ID_SHIFT 16
|
||||
#define KVM_ARM_DEVICE_ID_MASK GENMASK(KVM_ARM_DEVICE_ID_SHIFT + 15, \
|
||||
#define KVM_ARM_DEVICE_ID_MASK __GENMASK(KVM_ARM_DEVICE_ID_SHIFT + 15, \
|
||||
KVM_ARM_DEVICE_ID_SHIFT)
|
||||
|
||||
/* Supported device IDs */
|
||||
@ -162,6 +160,11 @@ struct kvm_sync_regs {
|
||||
__u64 device_irq_level;
|
||||
};
|
||||
|
||||
/* Bits for run->s.regs.device_irq_level */
|
||||
#define KVM_ARM_DEV_EL1_VTIMER (1 << 0)
|
||||
#define KVM_ARM_DEV_EL1_PTIMER (1 << 1)
|
||||
#define KVM_ARM_DEV_PMU (1 << 2)
|
||||
|
||||
/*
|
||||
* PMU filter structure. Describe a range of events with a particular
|
||||
* action. To be used with KVM_ARM_VCPU_PMU_V3_FILTER.
|
||||
@ -198,6 +201,15 @@ struct kvm_arm_copy_mte_tags {
|
||||
__u64 reserved[2];
|
||||
};
|
||||
|
||||
/*
|
||||
* Counter/Timer offset structure. Describe the virtual/physical offset.
|
||||
* To be used with KVM_ARM_SET_COUNTER_OFFSET.
|
||||
*/
|
||||
struct kvm_arm_counter_offset {
|
||||
__u64 counter_offset;
|
||||
__u64 reserved;
|
||||
};
|
||||
|
||||
#define KVM_ARM_TAGS_TO_GUEST 0
|
||||
#define KVM_ARM_TAGS_FROM_GUEST 1
|
||||
|
||||
@ -363,6 +375,10 @@ enum {
|
||||
KVM_REG_ARM_VENDOR_HYP_BIT_PTP = 1,
|
||||
};
|
||||
|
||||
/* Device Control API on vm fd */
|
||||
#define KVM_ARM_VM_SMCCC_CTRL 0
|
||||
#define KVM_ARM_VM_SMCCC_FILTER 0
|
||||
|
||||
/* Device Control API: ARM VGIC */
|
||||
#define KVM_DEV_ARM_VGIC_GRP_ADDR 0
|
||||
#define KVM_DEV_ARM_VGIC_GRP_DIST_REGS 1
|
||||
@ -402,6 +418,8 @@ enum {
|
||||
#define KVM_ARM_VCPU_TIMER_CTRL 1
|
||||
#define KVM_ARM_VCPU_TIMER_IRQ_VTIMER 0
|
||||
#define KVM_ARM_VCPU_TIMER_IRQ_PTIMER 1
|
||||
#define KVM_ARM_VCPU_TIMER_IRQ_HVTIMER 2
|
||||
#define KVM_ARM_VCPU_TIMER_IRQ_HPTIMER 3
|
||||
#define KVM_ARM_VCPU_PVTIME_CTRL 2
|
||||
#define KVM_ARM_VCPU_PVTIME_IPA 0
|
||||
|
||||
@ -458,6 +476,56 @@ enum {
|
||||
/* run->fail_entry.hardware_entry_failure_reason codes. */
|
||||
#define KVM_EXIT_FAIL_ENTRY_CPU_UNSUPPORTED (1ULL << 0)
|
||||
|
||||
enum kvm_smccc_filter_action {
|
||||
KVM_SMCCC_FILTER_HANDLE = 0,
|
||||
KVM_SMCCC_FILTER_DENY,
|
||||
KVM_SMCCC_FILTER_FWD_TO_USER,
|
||||
|
||||
};
|
||||
|
||||
struct kvm_smccc_filter {
|
||||
__u32 base;
|
||||
__u32 nr_functions;
|
||||
__u8 action;
|
||||
__u8 pad[15];
|
||||
};
|
||||
|
||||
/* arm64-specific KVM_EXIT_HYPERCALL flags */
|
||||
#define KVM_HYPERCALL_EXIT_SMC (1U << 0)
|
||||
#define KVM_HYPERCALL_EXIT_16BIT (1U << 1)
|
||||
|
||||
/*
|
||||
* Get feature ID registers userspace writable mask.
|
||||
*
|
||||
* From DDI0487J.a, D19.2.66 ("ID_AA64MMFR2_EL1, AArch64 Memory Model
|
||||
* Feature Register 2"):
|
||||
*
|
||||
* "The Feature ID space is defined as the System register space in
|
||||
* AArch64 with op0==3, op1=={0, 1, 3}, CRn==0, CRm=={0-7},
|
||||
* op2=={0-7}."
|
||||
*
|
||||
* This covers all currently known R/O registers that indicate
|
||||
* anything useful feature wise, including the ID registers.
|
||||
*
|
||||
* If we ever need to introduce a new range, it will be described as
|
||||
* such in the range field.
|
||||
*/
|
||||
#define KVM_ARM_FEATURE_ID_RANGE_IDX(op0, op1, crn, crm, op2) \
|
||||
({ \
|
||||
__u64 __op1 = (op1) & 3; \
|
||||
__op1 -= (__op1 == 3); \
|
||||
(__op1 << 6 | ((crm) & 7) << 3 | (op2)); \
|
||||
})
|
||||
|
||||
#define KVM_ARM_FEATURE_ID_RANGE 0
|
||||
#define KVM_ARM_FEATURE_ID_RANGE_SIZE (3 * 8 * 8)
|
||||
|
||||
struct reg_mask_range {
|
||||
__u64 addr; /* Pointer to mask array */
|
||||
__u32 range; /* Requested range */
|
||||
__u32 reserved[13];
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* __ARM_KVM_H__ */
|
||||
@ -152,6 +152,14 @@ struct tpidr2_context {
|
||||
__u64 tpidr2;
|
||||
};
|
||||
|
||||
/* FPMR context */
|
||||
#define FPMR_MAGIC 0x46504d52
|
||||
|
||||
struct fpmr_context {
|
||||
struct _aarch64_ctx head;
|
||||
__u64 fpmr;
|
||||
};
|
||||
|
||||
#define ZA_MAGIC 0x54366345
|
||||
|
||||
struct za_context {
|
||||
@ -177,7 +185,7 @@ struct zt_context {
|
||||
* vector length beyond its initial architectural limit of 2048 bits
|
||||
* (16 quadwords).
|
||||
*
|
||||
* See linux/Documentation/arm64/sve.rst for a description of the VL/VQ
|
||||
* See linux/Documentation/arch/arm64/sve.rst for a description of the VL/VQ
|
||||
* terminology.
|
||||
*/
|
||||
#define SVE_VQ_BYTES __SVE_VQ_BYTES /* bytes per quadword */
|
||||
|
||||
@ -13,6 +13,17 @@
|
||||
|
||||
#define __SVE_VQ_BYTES 16 /* number of bytes per quadword */
|
||||
|
||||
/*
|
||||
* Yes, __SVE_VQ_MAX is 512 QUADWORDS.
|
||||
*
|
||||
* To help ensure forward portability, this is much larger than the
|
||||
* current maximum value defined by the SVE architecture. While arrays
|
||||
* or static allocations can be sized based on this value, watch out!
|
||||
* It will waste a surprisingly large amount of memory.
|
||||
*
|
||||
* Dynamic sizing based on the actual runtime vector length is likely to
|
||||
* be preferable for most purposes.
|
||||
*/
|
||||
#define __SVE_VQ_MIN 1
|
||||
#define __SVE_VQ_MAX 512
|
||||
|
||||
|
||||
@ -2,6 +2,17 @@
|
||||
#ifndef __ASM_GENERIC_BITS_PER_LONG
|
||||
#define __ASM_GENERIC_BITS_PER_LONG
|
||||
|
||||
#ifndef __BITS_PER_LONG
|
||||
/*
|
||||
* In order to keep safe and avoid regression, only unify uapi
|
||||
* bitsperlong.h for some archs which are using newer toolchains
|
||||
* that have the definitions of __CHAR_BIT__ and __SIZEOF_LONG__.
|
||||
* See the following link for more info:
|
||||
* https://lore.kernel.org/linux-arch/b9624545-2c80-49a1-ac3c-39264a591f7b@app.fastmail.com/
|
||||
*/
|
||||
#if defined(__CHAR_BIT__) && defined(__SIZEOF_LONG__)
|
||||
#define __BITS_PER_LONG (__CHAR_BIT__ * __SIZEOF_LONG__)
|
||||
#else
|
||||
/*
|
||||
* There seems to be no way of detecting this automatically from user
|
||||
* space, so 64 bit architectures should override this in their
|
||||
@ -9,8 +20,12 @@
|
||||
* both 32 and 64 bit user space must not rely on CONFIG_64BIT
|
||||
* to decide it, but rather check a compiler provided macro.
|
||||
*/
|
||||
#ifndef __BITS_PER_LONG
|
||||
#define __BITS_PER_LONG 32
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifndef __BITS_PER_LONG_LONG
|
||||
#define __BITS_PER_LONG_LONG 64
|
||||
#endif
|
||||
|
||||
#endif /* __ASM_GENERIC_BITS_PER_LONG */
|
||||
@ -68,11 +68,6 @@ union __sifields {
|
||||
/* SIGILL, SIGFPE, SIGSEGV, SIGBUS, SIGTRAP, SIGEMT */
|
||||
struct {
|
||||
void *_addr; /* faulting insn/memory ref. */
|
||||
#ifdef __ia64__
|
||||
int _imm; /* immediate value for "break" */
|
||||
unsigned int _flags; /* see ia64 si_flags */
|
||||
unsigned long _isr; /* isr */
|
||||
#endif
|
||||
|
||||
#define __ADDR_BND_PKEY_PAD (__alignof__(void *) < sizeof(short) ? \
|
||||
sizeof(short) : __alignof__(void *))
|
||||
@ -242,7 +237,8 @@ typedef struct siginfo {
|
||||
#define SEGV_ADIPERR 7 /* Precise MCD exception */
|
||||
#define SEGV_MTEAERR 8 /* Asynchronous ARM MTE error */
|
||||
#define SEGV_MTESERR 9 /* Synchronous ARM MTE exception */
|
||||
#define NSIGSEGV 9
|
||||
#define SEGV_CPERR 10 /* Control protection fault */
|
||||
#define NSIGSEGV 10
|
||||
|
||||
/*
|
||||
* SIGBUS si_codes
|
||||
|
||||
@ -132,6 +132,9 @@
|
||||
|
||||
#define SO_RCVMARK 75
|
||||
|
||||
#define SO_PASSPIDFD 76
|
||||
#define SO_PEERPIDFD 77
|
||||
|
||||
|
||||
#if __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__))
|
||||
/* on 64-bit and x32, avoid the ?: operator */
|
||||
|
||||
163
lib/libc/include/any-linux-any/asm-generic/unistd.h
vendored
163
lib/libc/include/any-linux-any/asm-generic/unistd.h
vendored
@ -38,12 +38,12 @@ __SYSCALL(__NR_io_destroy, sys_io_destroy)
|
||||
__SC_COMP(__NR_io_submit, sys_io_submit, compat_sys_io_submit)
|
||||
#define __NR_io_cancel 3
|
||||
__SYSCALL(__NR_io_cancel, sys_io_cancel)
|
||||
|
||||
#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
|
||||
#define __NR_io_getevents 4
|
||||
__SC_3264(__NR_io_getevents, sys_io_getevents_time32, sys_io_getevents)
|
||||
#endif
|
||||
|
||||
/* fs/xattr.c */
|
||||
#define __NR_setxattr 5
|
||||
__SYSCALL(__NR_setxattr, sys_setxattr)
|
||||
#define __NR_lsetxattr 6
|
||||
@ -68,58 +68,38 @@ __SYSCALL(__NR_removexattr, sys_removexattr)
|
||||
__SYSCALL(__NR_lremovexattr, sys_lremovexattr)
|
||||
#define __NR_fremovexattr 16
|
||||
__SYSCALL(__NR_fremovexattr, sys_fremovexattr)
|
||||
|
||||
/* fs/dcache.c */
|
||||
#define __NR_getcwd 17
|
||||
__SYSCALL(__NR_getcwd, sys_getcwd)
|
||||
|
||||
/* fs/cookies.c */
|
||||
#define __NR_lookup_dcookie 18
|
||||
__SC_COMP(__NR_lookup_dcookie, sys_lookup_dcookie, compat_sys_lookup_dcookie)
|
||||
|
||||
/* fs/eventfd.c */
|
||||
__SYSCALL(__NR_lookup_dcookie, sys_ni_syscall)
|
||||
#define __NR_eventfd2 19
|
||||
__SYSCALL(__NR_eventfd2, sys_eventfd2)
|
||||
|
||||
/* fs/eventpoll.c */
|
||||
#define __NR_epoll_create1 20
|
||||
__SYSCALL(__NR_epoll_create1, sys_epoll_create1)
|
||||
#define __NR_epoll_ctl 21
|
||||
__SYSCALL(__NR_epoll_ctl, sys_epoll_ctl)
|
||||
#define __NR_epoll_pwait 22
|
||||
__SC_COMP(__NR_epoll_pwait, sys_epoll_pwait, compat_sys_epoll_pwait)
|
||||
|
||||
/* fs/fcntl.c */
|
||||
#define __NR_dup 23
|
||||
__SYSCALL(__NR_dup, sys_dup)
|
||||
#define __NR_dup3 24
|
||||
__SYSCALL(__NR_dup3, sys_dup3)
|
||||
#define __NR3264_fcntl 25
|
||||
__SC_COMP_3264(__NR3264_fcntl, sys_fcntl64, sys_fcntl, compat_sys_fcntl64)
|
||||
|
||||
/* fs/inotify_user.c */
|
||||
#define __NR_inotify_init1 26
|
||||
__SYSCALL(__NR_inotify_init1, sys_inotify_init1)
|
||||
#define __NR_inotify_add_watch 27
|
||||
__SYSCALL(__NR_inotify_add_watch, sys_inotify_add_watch)
|
||||
#define __NR_inotify_rm_watch 28
|
||||
__SYSCALL(__NR_inotify_rm_watch, sys_inotify_rm_watch)
|
||||
|
||||
/* fs/ioctl.c */
|
||||
#define __NR_ioctl 29
|
||||
__SC_COMP(__NR_ioctl, sys_ioctl, compat_sys_ioctl)
|
||||
|
||||
/* fs/ioprio.c */
|
||||
#define __NR_ioprio_set 30
|
||||
__SYSCALL(__NR_ioprio_set, sys_ioprio_set)
|
||||
#define __NR_ioprio_get 31
|
||||
__SYSCALL(__NR_ioprio_get, sys_ioprio_get)
|
||||
|
||||
/* fs/locks.c */
|
||||
#define __NR_flock 32
|
||||
__SYSCALL(__NR_flock, sys_flock)
|
||||
|
||||
/* fs/namei.c */
|
||||
#define __NR_mknodat 33
|
||||
__SYSCALL(__NR_mknodat, sys_mknodat)
|
||||
#define __NR_mkdirat 34
|
||||
@ -130,25 +110,21 @@ __SYSCALL(__NR_unlinkat, sys_unlinkat)
|
||||
__SYSCALL(__NR_symlinkat, sys_symlinkat)
|
||||
#define __NR_linkat 37
|
||||
__SYSCALL(__NR_linkat, sys_linkat)
|
||||
|
||||
#ifdef __ARCH_WANT_RENAMEAT
|
||||
/* renameat is superseded with flags by renameat2 */
|
||||
#define __NR_renameat 38
|
||||
__SYSCALL(__NR_renameat, sys_renameat)
|
||||
#endif /* __ARCH_WANT_RENAMEAT */
|
||||
|
||||
/* fs/namespace.c */
|
||||
#define __NR_umount2 39
|
||||
__SYSCALL(__NR_umount2, sys_umount)
|
||||
#define __NR_mount 40
|
||||
__SYSCALL(__NR_mount, sys_mount)
|
||||
#define __NR_pivot_root 41
|
||||
__SYSCALL(__NR_pivot_root, sys_pivot_root)
|
||||
|
||||
/* fs/nfsctl.c */
|
||||
#define __NR_nfsservctl 42
|
||||
__SYSCALL(__NR_nfsservctl, sys_ni_syscall)
|
||||
|
||||
/* fs/open.c */
|
||||
#define __NR3264_statfs 43
|
||||
__SC_COMP_3264(__NR3264_statfs, sys_statfs64, sys_statfs, \
|
||||
compat_sys_statfs64)
|
||||
@ -161,7 +137,6 @@ __SC_COMP_3264(__NR3264_truncate, sys_truncate64, sys_truncate, \
|
||||
#define __NR3264_ftruncate 46
|
||||
__SC_COMP_3264(__NR3264_ftruncate, sys_ftruncate64, sys_ftruncate, \
|
||||
compat_sys_ftruncate64)
|
||||
|
||||
#define __NR_fallocate 47
|
||||
__SC_COMP(__NR_fallocate, sys_fallocate, compat_sys_fallocate)
|
||||
#define __NR_faccessat 48
|
||||
@ -186,20 +161,12 @@ __SYSCALL(__NR_openat, sys_openat)
|
||||
__SYSCALL(__NR_close, sys_close)
|
||||
#define __NR_vhangup 58
|
||||
__SYSCALL(__NR_vhangup, sys_vhangup)
|
||||
|
||||
/* fs/pipe.c */
|
||||
#define __NR_pipe2 59
|
||||
__SYSCALL(__NR_pipe2, sys_pipe2)
|
||||
|
||||
/* fs/quota.c */
|
||||
#define __NR_quotactl 60
|
||||
__SYSCALL(__NR_quotactl, sys_quotactl)
|
||||
|
||||
/* fs/readdir.c */
|
||||
#define __NR_getdents64 61
|
||||
__SYSCALL(__NR_getdents64, sys_getdents64)
|
||||
|
||||
/* fs/read_write.c */
|
||||
#define __NR3264_lseek 62
|
||||
__SC_3264(__NR3264_lseek, sys_llseek, sys_lseek)
|
||||
#define __NR_read 63
|
||||
@ -218,12 +185,9 @@ __SC_COMP(__NR_pwrite64, sys_pwrite64, compat_sys_pwrite64)
|
||||
__SC_COMP(__NR_preadv, sys_preadv, compat_sys_preadv)
|
||||
#define __NR_pwritev 70
|
||||
__SC_COMP(__NR_pwritev, sys_pwritev, compat_sys_pwritev)
|
||||
|
||||
/* fs/sendfile.c */
|
||||
#define __NR3264_sendfile 71
|
||||
__SYSCALL(__NR3264_sendfile, sys_sendfile64)
|
||||
|
||||
/* fs/select.c */
|
||||
#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
|
||||
#define __NR_pselect6 72
|
||||
__SC_COMP_3264(__NR_pselect6, sys_pselect6_time32, sys_pselect6, compat_sys_pselect6_time32)
|
||||
@ -231,21 +195,17 @@ __SC_COMP_3264(__NR_pselect6, sys_pselect6_time32, sys_pselect6, compat_sys_psel
|
||||
__SC_COMP_3264(__NR_ppoll, sys_ppoll_time32, sys_ppoll, compat_sys_ppoll_time32)
|
||||
#endif
|
||||
|
||||
/* fs/signalfd.c */
|
||||
#define __NR_signalfd4 74
|
||||
__SC_COMP(__NR_signalfd4, sys_signalfd4, compat_sys_signalfd4)
|
||||
|
||||
/* fs/splice.c */
|
||||
#define __NR_vmsplice 75
|
||||
__SYSCALL(__NR_vmsplice, sys_vmsplice)
|
||||
#define __NR_splice 76
|
||||
__SYSCALL(__NR_splice, sys_splice)
|
||||
#define __NR_tee 77
|
||||
__SYSCALL(__NR_tee, sys_tee)
|
||||
|
||||
/* fs/stat.c */
|
||||
#define __NR_readlinkat 78
|
||||
__SYSCALL(__NR_readlinkat, sys_readlinkat)
|
||||
|
||||
#if defined(__ARCH_WANT_NEW_STAT) || defined(__ARCH_WANT_STAT64)
|
||||
#define __NR3264_fstatat 79
|
||||
__SC_3264(__NR3264_fstatat, sys_fstatat64, sys_newfstatat)
|
||||
@ -253,13 +213,13 @@ __SC_3264(__NR3264_fstatat, sys_fstatat64, sys_newfstatat)
|
||||
__SC_3264(__NR3264_fstat, sys_fstat64, sys_newfstat)
|
||||
#endif
|
||||
|
||||
/* fs/sync.c */
|
||||
#define __NR_sync 81
|
||||
__SYSCALL(__NR_sync, sys_sync)
|
||||
#define __NR_fsync 82
|
||||
__SYSCALL(__NR_fsync, sys_fsync)
|
||||
#define __NR_fdatasync 83
|
||||
__SYSCALL(__NR_fdatasync, sys_fdatasync)
|
||||
|
||||
#ifdef __ARCH_WANT_SYNC_FILE_RANGE2
|
||||
#define __NR_sync_file_range2 84
|
||||
__SC_COMP(__NR_sync_file_range2, sys_sync_file_range2, \
|
||||
@ -270,9 +230,9 @@ __SC_COMP(__NR_sync_file_range, sys_sync_file_range, \
|
||||
compat_sys_sync_file_range)
|
||||
#endif
|
||||
|
||||
/* fs/timerfd.c */
|
||||
#define __NR_timerfd_create 85
|
||||
__SYSCALL(__NR_timerfd_create, sys_timerfd_create)
|
||||
|
||||
#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
|
||||
#define __NR_timerfd_settime 86
|
||||
__SC_3264(__NR_timerfd_settime, sys_timerfd_settime32, \
|
||||
@ -282,45 +242,35 @@ __SC_3264(__NR_timerfd_gettime, sys_timerfd_gettime32, \
|
||||
sys_timerfd_gettime)
|
||||
#endif
|
||||
|
||||
/* fs/utimes.c */
|
||||
#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
|
||||
#define __NR_utimensat 88
|
||||
__SC_3264(__NR_utimensat, sys_utimensat_time32, sys_utimensat)
|
||||
#endif
|
||||
|
||||
/* kernel/acct.c */
|
||||
#define __NR_acct 89
|
||||
__SYSCALL(__NR_acct, sys_acct)
|
||||
|
||||
/* kernel/capability.c */
|
||||
#define __NR_capget 90
|
||||
__SYSCALL(__NR_capget, sys_capget)
|
||||
#define __NR_capset 91
|
||||
__SYSCALL(__NR_capset, sys_capset)
|
||||
|
||||
/* kernel/exec_domain.c */
|
||||
#define __NR_personality 92
|
||||
__SYSCALL(__NR_personality, sys_personality)
|
||||
|
||||
/* kernel/exit.c */
|
||||
#define __NR_exit 93
|
||||
__SYSCALL(__NR_exit, sys_exit)
|
||||
#define __NR_exit_group 94
|
||||
__SYSCALL(__NR_exit_group, sys_exit_group)
|
||||
#define __NR_waitid 95
|
||||
__SC_COMP(__NR_waitid, sys_waitid, compat_sys_waitid)
|
||||
|
||||
/* kernel/fork.c */
|
||||
#define __NR_set_tid_address 96
|
||||
__SYSCALL(__NR_set_tid_address, sys_set_tid_address)
|
||||
#define __NR_unshare 97
|
||||
__SYSCALL(__NR_unshare, sys_unshare)
|
||||
|
||||
/* kernel/futex.c */
|
||||
#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
|
||||
#define __NR_futex 98
|
||||
__SC_3264(__NR_futex, sys_futex_time32, sys_futex)
|
||||
#endif
|
||||
|
||||
#define __NR_set_robust_list 99
|
||||
__SC_COMP(__NR_set_robust_list, sys_set_robust_list, \
|
||||
compat_sys_set_robust_list)
|
||||
@ -328,43 +278,40 @@ __SC_COMP(__NR_set_robust_list, sys_set_robust_list, \
|
||||
__SC_COMP(__NR_get_robust_list, sys_get_robust_list, \
|
||||
compat_sys_get_robust_list)
|
||||
|
||||
/* kernel/hrtimer.c */
|
||||
#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
|
||||
#define __NR_nanosleep 101
|
||||
__SC_3264(__NR_nanosleep, sys_nanosleep_time32, sys_nanosleep)
|
||||
#endif
|
||||
|
||||
/* kernel/itimer.c */
|
||||
#define __NR_getitimer 102
|
||||
__SC_COMP(__NR_getitimer, sys_getitimer, compat_sys_getitimer)
|
||||
#define __NR_setitimer 103
|
||||
__SC_COMP(__NR_setitimer, sys_setitimer, compat_sys_setitimer)
|
||||
|
||||
/* kernel/kexec.c */
|
||||
#define __NR_kexec_load 104
|
||||
__SC_COMP(__NR_kexec_load, sys_kexec_load, compat_sys_kexec_load)
|
||||
|
||||
/* kernel/module.c */
|
||||
#define __NR_init_module 105
|
||||
__SYSCALL(__NR_init_module, sys_init_module)
|
||||
#define __NR_delete_module 106
|
||||
__SYSCALL(__NR_delete_module, sys_delete_module)
|
||||
|
||||
/* kernel/posix-timers.c */
|
||||
#define __NR_timer_create 107
|
||||
__SC_COMP(__NR_timer_create, sys_timer_create, compat_sys_timer_create)
|
||||
|
||||
#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
|
||||
#define __NR_timer_gettime 108
|
||||
__SC_3264(__NR_timer_gettime, sys_timer_gettime32, sys_timer_gettime)
|
||||
#endif
|
||||
|
||||
#define __NR_timer_getoverrun 109
|
||||
__SYSCALL(__NR_timer_getoverrun, sys_timer_getoverrun)
|
||||
|
||||
#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
|
||||
#define __NR_timer_settime 110
|
||||
__SC_3264(__NR_timer_settime, sys_timer_settime32, sys_timer_settime)
|
||||
#endif
|
||||
|
||||
#define __NR_timer_delete 111
|
||||
__SYSCALL(__NR_timer_delete, sys_timer_delete)
|
||||
|
||||
#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
|
||||
#define __NR_clock_settime 112
|
||||
__SC_3264(__NR_clock_settime, sys_clock_settime32, sys_clock_settime)
|
||||
@ -377,15 +324,10 @@ __SC_3264(__NR_clock_nanosleep, sys_clock_nanosleep_time32, \
|
||||
sys_clock_nanosleep)
|
||||
#endif
|
||||
|
||||
/* kernel/printk.c */
|
||||
#define __NR_syslog 116
|
||||
__SYSCALL(__NR_syslog, sys_syslog)
|
||||
|
||||
/* kernel/ptrace.c */
|
||||
#define __NR_ptrace 117
|
||||
__SC_COMP(__NR_ptrace, sys_ptrace, compat_sys_ptrace)
|
||||
|
||||
/* kernel/sched/core.c */
|
||||
#define __NR_sched_setparam 118
|
||||
__SYSCALL(__NR_sched_setparam, sys_sched_setparam)
|
||||
#define __NR_sched_setscheduler 119
|
||||
@ -406,13 +348,13 @@ __SYSCALL(__NR_sched_yield, sys_sched_yield)
|
||||
__SYSCALL(__NR_sched_get_priority_max, sys_sched_get_priority_max)
|
||||
#define __NR_sched_get_priority_min 126
|
||||
__SYSCALL(__NR_sched_get_priority_min, sys_sched_get_priority_min)
|
||||
|
||||
#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
|
||||
#define __NR_sched_rr_get_interval 127
|
||||
__SC_3264(__NR_sched_rr_get_interval, sys_sched_rr_get_interval_time32, \
|
||||
sys_sched_rr_get_interval)
|
||||
#endif
|
||||
|
||||
/* kernel/signal.c */
|
||||
#define __NR_restart_syscall 128
|
||||
__SYSCALL(__NR_restart_syscall, sys_restart_syscall)
|
||||
#define __NR_kill 129
|
||||
@ -431,18 +373,18 @@ __SC_COMP(__NR_rt_sigaction, sys_rt_sigaction, compat_sys_rt_sigaction)
|
||||
__SC_COMP(__NR_rt_sigprocmask, sys_rt_sigprocmask, compat_sys_rt_sigprocmask)
|
||||
#define __NR_rt_sigpending 136
|
||||
__SC_COMP(__NR_rt_sigpending, sys_rt_sigpending, compat_sys_rt_sigpending)
|
||||
|
||||
#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
|
||||
#define __NR_rt_sigtimedwait 137
|
||||
__SC_COMP_3264(__NR_rt_sigtimedwait, sys_rt_sigtimedwait_time32, \
|
||||
sys_rt_sigtimedwait, compat_sys_rt_sigtimedwait_time32)
|
||||
#endif
|
||||
|
||||
#define __NR_rt_sigqueueinfo 138
|
||||
__SC_COMP(__NR_rt_sigqueueinfo, sys_rt_sigqueueinfo, \
|
||||
compat_sys_rt_sigqueueinfo)
|
||||
#define __NR_rt_sigreturn 139
|
||||
__SC_COMP(__NR_rt_sigreturn, sys_rt_sigreturn, compat_sys_rt_sigreturn)
|
||||
|
||||
/* kernel/sys.c */
|
||||
#define __NR_setpriority 140
|
||||
__SYSCALL(__NR_setpriority, sys_setpriority)
|
||||
#define __NR_getpriority 141
|
||||
@ -507,7 +449,6 @@ __SYSCALL(__NR_prctl, sys_prctl)
|
||||
#define __NR_getcpu 168
|
||||
__SYSCALL(__NR_getcpu, sys_getcpu)
|
||||
|
||||
/* kernel/time.c */
|
||||
#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
|
||||
#define __NR_gettimeofday 169
|
||||
__SC_COMP(__NR_gettimeofday, sys_gettimeofday, compat_sys_gettimeofday)
|
||||
@ -517,7 +458,6 @@ __SC_COMP(__NR_settimeofday, sys_settimeofday, compat_sys_settimeofday)
|
||||
__SC_3264(__NR_adjtimex, sys_adjtimex_time32, sys_adjtimex)
|
||||
#endif
|
||||
|
||||
/* kernel/sys.c */
|
||||
#define __NR_getpid 172
|
||||
__SYSCALL(__NR_getpid, sys_getpid)
|
||||
#define __NR_getppid 173
|
||||
@ -534,12 +474,11 @@ __SYSCALL(__NR_getegid, sys_getegid)
|
||||
__SYSCALL(__NR_gettid, sys_gettid)
|
||||
#define __NR_sysinfo 179
|
||||
__SC_COMP(__NR_sysinfo, sys_sysinfo, compat_sys_sysinfo)
|
||||
|
||||
/* ipc/mqueue.c */
|
||||
#define __NR_mq_open 180
|
||||
__SC_COMP(__NR_mq_open, sys_mq_open, compat_sys_mq_open)
|
||||
#define __NR_mq_unlink 181
|
||||
__SYSCALL(__NR_mq_unlink, sys_mq_unlink)
|
||||
|
||||
#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
|
||||
#define __NR_mq_timedsend 182
|
||||
__SC_3264(__NR_mq_timedsend, sys_mq_timedsend_time32, sys_mq_timedsend)
|
||||
@ -547,12 +486,11 @@ __SC_3264(__NR_mq_timedsend, sys_mq_timedsend_time32, sys_mq_timedsend)
|
||||
__SC_3264(__NR_mq_timedreceive, sys_mq_timedreceive_time32, \
|
||||
sys_mq_timedreceive)
|
||||
#endif
|
||||
|
||||
#define __NR_mq_notify 184
|
||||
__SC_COMP(__NR_mq_notify, sys_mq_notify, compat_sys_mq_notify)
|
||||
#define __NR_mq_getsetattr 185
|
||||
__SC_COMP(__NR_mq_getsetattr, sys_mq_getsetattr, compat_sys_mq_getsetattr)
|
||||
|
||||
/* ipc/msg.c */
|
||||
#define __NR_msgget 186
|
||||
__SYSCALL(__NR_msgget, sys_msgget)
|
||||
#define __NR_msgctl 187
|
||||
@ -561,20 +499,18 @@ __SC_COMP(__NR_msgctl, sys_msgctl, compat_sys_msgctl)
|
||||
__SC_COMP(__NR_msgrcv, sys_msgrcv, compat_sys_msgrcv)
|
||||
#define __NR_msgsnd 189
|
||||
__SC_COMP(__NR_msgsnd, sys_msgsnd, compat_sys_msgsnd)
|
||||
|
||||
/* ipc/sem.c */
|
||||
#define __NR_semget 190
|
||||
__SYSCALL(__NR_semget, sys_semget)
|
||||
#define __NR_semctl 191
|
||||
__SC_COMP(__NR_semctl, sys_semctl, compat_sys_semctl)
|
||||
|
||||
#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
|
||||
#define __NR_semtimedop 192
|
||||
__SC_3264(__NR_semtimedop, sys_semtimedop_time32, sys_semtimedop)
|
||||
#endif
|
||||
|
||||
#define __NR_semop 193
|
||||
__SYSCALL(__NR_semop, sys_semop)
|
||||
|
||||
/* ipc/shm.c */
|
||||
#define __NR_shmget 194
|
||||
__SYSCALL(__NR_shmget, sys_shmget)
|
||||
#define __NR_shmctl 195
|
||||
@ -583,8 +519,6 @@ __SC_COMP(__NR_shmctl, sys_shmctl, compat_sys_shmctl)
|
||||
__SC_COMP(__NR_shmat, sys_shmat, compat_sys_shmat)
|
||||
#define __NR_shmdt 197
|
||||
__SYSCALL(__NR_shmdt, sys_shmdt)
|
||||
|
||||
/* net/socket.c */
|
||||
#define __NR_socket 198
|
||||
__SYSCALL(__NR_socket, sys_socket)
|
||||
#define __NR_socketpair 199
|
||||
@ -615,40 +549,30 @@ __SYSCALL(__NR_shutdown, sys_shutdown)
|
||||
__SC_COMP(__NR_sendmsg, sys_sendmsg, compat_sys_sendmsg)
|
||||
#define __NR_recvmsg 212
|
||||
__SC_COMP(__NR_recvmsg, sys_recvmsg, compat_sys_recvmsg)
|
||||
|
||||
/* mm/filemap.c */
|
||||
#define __NR_readahead 213
|
||||
__SC_COMP(__NR_readahead, sys_readahead, compat_sys_readahead)
|
||||
|
||||
/* mm/nommu.c, also with MMU */
|
||||
#define __NR_brk 214
|
||||
__SYSCALL(__NR_brk, sys_brk)
|
||||
#define __NR_munmap 215
|
||||
__SYSCALL(__NR_munmap, sys_munmap)
|
||||
#define __NR_mremap 216
|
||||
__SYSCALL(__NR_mremap, sys_mremap)
|
||||
|
||||
/* security/keys/keyctl.c */
|
||||
#define __NR_add_key 217
|
||||
__SYSCALL(__NR_add_key, sys_add_key)
|
||||
#define __NR_request_key 218
|
||||
__SYSCALL(__NR_request_key, sys_request_key)
|
||||
#define __NR_keyctl 219
|
||||
__SC_COMP(__NR_keyctl, sys_keyctl, compat_sys_keyctl)
|
||||
|
||||
/* arch/example/kernel/sys_example.c */
|
||||
#define __NR_clone 220
|
||||
__SYSCALL(__NR_clone, sys_clone)
|
||||
#define __NR_execve 221
|
||||
__SC_COMP(__NR_execve, sys_execve, compat_sys_execve)
|
||||
|
||||
#define __NR3264_mmap 222
|
||||
__SC_3264(__NR3264_mmap, sys_mmap2, sys_mmap)
|
||||
/* mm/fadvise.c */
|
||||
#define __NR3264_fadvise64 223
|
||||
__SC_COMP(__NR3264_fadvise64, sys_fadvise64_64, compat_sys_fadvise64_64)
|
||||
|
||||
/* mm/, CONFIG_MMU only */
|
||||
/* CONFIG_MMU only */
|
||||
#ifndef __ARCH_NOMMU
|
||||
#define __NR_swapon 224
|
||||
__SYSCALL(__NR_swapon, sys_swapon)
|
||||
@ -691,6 +615,7 @@ __SC_COMP(__NR_rt_tgsigqueueinfo, sys_rt_tgsigqueueinfo, \
|
||||
__SYSCALL(__NR_perf_event_open, sys_perf_event_open)
|
||||
#define __NR_accept4 242
|
||||
__SYSCALL(__NR_accept4, sys_accept4)
|
||||
|
||||
#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
|
||||
#define __NR_recvmmsg 243
|
||||
__SC_COMP_3264(__NR_recvmmsg, sys_recvmmsg_time32, sys_recvmmsg, compat_sys_recvmmsg_time32)
|
||||
@ -706,6 +631,7 @@ __SC_COMP_3264(__NR_recvmmsg, sys_recvmmsg_time32, sys_recvmmsg, compat_sys_recv
|
||||
#define __NR_wait4 260
|
||||
__SC_COMP(__NR_wait4, sys_wait4, compat_sys_wait4)
|
||||
#endif
|
||||
|
||||
#define __NR_prlimit64 261
|
||||
__SYSCALL(__NR_prlimit64, sys_prlimit64)
|
||||
#define __NR_fanotify_init 262
|
||||
@ -716,10 +642,12 @@ __SYSCALL(__NR_fanotify_mark, sys_fanotify_mark)
|
||||
__SYSCALL(__NR_name_to_handle_at, sys_name_to_handle_at)
|
||||
#define __NR_open_by_handle_at 265
|
||||
__SYSCALL(__NR_open_by_handle_at, sys_open_by_handle_at)
|
||||
|
||||
#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
|
||||
#define __NR_clock_adjtime 266
|
||||
__SC_3264(__NR_clock_adjtime, sys_clock_adjtime32, sys_clock_adjtime)
|
||||
#endif
|
||||
|
||||
#define __NR_syncfs 267
|
||||
__SYSCALL(__NR_syncfs, sys_syncfs)
|
||||
#define __NR_setns 268
|
||||
@ -770,15 +698,19 @@ __SYSCALL(__NR_pkey_alloc, sys_pkey_alloc)
|
||||
__SYSCALL(__NR_pkey_free, sys_pkey_free)
|
||||
#define __NR_statx 291
|
||||
__SYSCALL(__NR_statx, sys_statx)
|
||||
|
||||
#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
|
||||
#define __NR_io_pgetevents 292
|
||||
__SC_COMP_3264(__NR_io_pgetevents, sys_io_pgetevents_time32, sys_io_pgetevents, compat_sys_io_pgetevents)
|
||||
#endif
|
||||
|
||||
#define __NR_rseq 293
|
||||
__SYSCALL(__NR_rseq, sys_rseq)
|
||||
#define __NR_kexec_file_load 294
|
||||
__SYSCALL(__NR_kexec_file_load, sys_kexec_file_load)
|
||||
|
||||
/* 295 through 402 are unassigned to sync up with generic numbers, don't use */
|
||||
|
||||
#if defined(__SYSCALL_COMPAT) || __BITS_PER_LONG == 32
|
||||
#define __NR_clock_gettime64 403
|
||||
__SYSCALL(__NR_clock_gettime64, sys_clock_gettime)
|
||||
@ -805,7 +737,7 @@ __SC_COMP(__NR_pselect6_time64, sys_pselect6, compat_sys_pselect6_time64)
|
||||
#define __NR_ppoll_time64 414
|
||||
__SC_COMP(__NR_ppoll_time64, sys_ppoll, compat_sys_ppoll_time64)
|
||||
#define __NR_io_pgetevents_time64 416
|
||||
__SYSCALL(__NR_io_pgetevents_time64, sys_io_pgetevents)
|
||||
__SC_COMP(__NR_io_pgetevents_time64, sys_io_pgetevents, compat_sys_io_pgetevents_time64)
|
||||
#define __NR_recvmmsg_time64 417
|
||||
__SC_COMP(__NR_recvmmsg_time64, sys_recvmmsg, compat_sys_recvmmsg_time64)
|
||||
#define __NR_mq_timedsend_time64 418
|
||||
@ -844,13 +776,14 @@ __SYSCALL(__NR_fsmount, sys_fsmount)
|
||||
__SYSCALL(__NR_fspick, sys_fspick)
|
||||
#define __NR_pidfd_open 434
|
||||
__SYSCALL(__NR_pidfd_open, sys_pidfd_open)
|
||||
|
||||
#ifdef __ARCH_WANT_SYS_CLONE3
|
||||
#define __NR_clone3 435
|
||||
__SYSCALL(__NR_clone3, sys_clone3)
|
||||
#endif
|
||||
|
||||
#define __NR_close_range 436
|
||||
__SYSCALL(__NR_close_range, sys_close_range)
|
||||
|
||||
#define __NR_openat2 437
|
||||
__SYSCALL(__NR_openat2, sys_openat2)
|
||||
#define __NR_pidfd_getfd 438
|
||||
@ -865,7 +798,6 @@ __SC_COMP(__NR_epoll_pwait2, sys_epoll_pwait2, compat_sys_epoll_pwait2)
|
||||
__SYSCALL(__NR_mount_setattr, sys_mount_setattr)
|
||||
#define __NR_quotactl_fd 443
|
||||
__SYSCALL(__NR_quotactl_fd, sys_quotactl_fd)
|
||||
|
||||
#define __NR_landlock_create_ruleset 444
|
||||
__SYSCALL(__NR_landlock_create_ruleset, sys_landlock_create_ruleset)
|
||||
#define __NR_landlock_add_rule 445
|
||||
@ -877,17 +809,44 @@ __SYSCALL(__NR_landlock_restrict_self, sys_landlock_restrict_self)
|
||||
#define __NR_memfd_secret 447
|
||||
__SYSCALL(__NR_memfd_secret, sys_memfd_secret)
|
||||
#endif
|
||||
|
||||
#define __NR_process_mrelease 448
|
||||
__SYSCALL(__NR_process_mrelease, sys_process_mrelease)
|
||||
|
||||
#define __NR_futex_waitv 449
|
||||
__SYSCALL(__NR_futex_waitv, sys_futex_waitv)
|
||||
|
||||
#define __NR_set_mempolicy_home_node 450
|
||||
__SYSCALL(__NR_set_mempolicy_home_node, sys_set_mempolicy_home_node)
|
||||
#define __NR_cachestat 451
|
||||
__SYSCALL(__NR_cachestat, sys_cachestat)
|
||||
#define __NR_fchmodat2 452
|
||||
__SYSCALL(__NR_fchmodat2, sys_fchmodat2)
|
||||
#define __NR_map_shadow_stack 453
|
||||
__SYSCALL(__NR_map_shadow_stack, sys_map_shadow_stack)
|
||||
#define __NR_futex_wake 454
|
||||
__SYSCALL(__NR_futex_wake, sys_futex_wake)
|
||||
#define __NR_futex_wait 455
|
||||
__SYSCALL(__NR_futex_wait, sys_futex_wait)
|
||||
#define __NR_futex_requeue 456
|
||||
__SYSCALL(__NR_futex_requeue, sys_futex_requeue)
|
||||
|
||||
#define __NR_statmount 457
|
||||
__SYSCALL(__NR_statmount, sys_statmount)
|
||||
|
||||
#define __NR_listmount 458
|
||||
__SYSCALL(__NR_listmount, sys_listmount)
|
||||
|
||||
#define __NR_lsm_get_self_attr 459
|
||||
__SYSCALL(__NR_lsm_get_self_attr, sys_lsm_get_self_attr)
|
||||
#define __NR_lsm_set_self_attr 460
|
||||
__SYSCALL(__NR_lsm_set_self_attr, sys_lsm_set_self_attr)
|
||||
#define __NR_lsm_list_modules 461
|
||||
__SYSCALL(__NR_lsm_list_modules, sys_lsm_list_modules)
|
||||
|
||||
#define __NR_mseal 462
|
||||
__SYSCALL(__NR_mseal, sys_mseal)
|
||||
|
||||
#undef __NR_syscalls
|
||||
#define __NR_syscalls 451
|
||||
#define __NR_syscalls 463
|
||||
|
||||
/*
|
||||
* 32 bit systems traditionally used different
|
||||
|
||||
67
lib/libc/include/any-linux-any/drm/amdgpu_drm.h
vendored
67
lib/libc/include/any-linux-any/drm/amdgpu_drm.h
vendored
@ -94,6 +94,9 @@ extern "C" {
|
||||
*
|
||||
* %AMDGPU_GEM_DOMAIN_OA Ordered append, used by 3D or Compute engines
|
||||
* for appending data.
|
||||
*
|
||||
* %AMDGPU_GEM_DOMAIN_DOORBELL Doorbell. It is an MMIO region for
|
||||
* signalling user mode queues.
|
||||
*/
|
||||
#define AMDGPU_GEM_DOMAIN_CPU 0x1
|
||||
#define AMDGPU_GEM_DOMAIN_GTT 0x2
|
||||
@ -101,12 +104,14 @@ extern "C" {
|
||||
#define AMDGPU_GEM_DOMAIN_GDS 0x8
|
||||
#define AMDGPU_GEM_DOMAIN_GWS 0x10
|
||||
#define AMDGPU_GEM_DOMAIN_OA 0x20
|
||||
#define AMDGPU_GEM_DOMAIN_DOORBELL 0x40
|
||||
#define AMDGPU_GEM_DOMAIN_MASK (AMDGPU_GEM_DOMAIN_CPU | \
|
||||
AMDGPU_GEM_DOMAIN_GTT | \
|
||||
AMDGPU_GEM_DOMAIN_VRAM | \
|
||||
AMDGPU_GEM_DOMAIN_GDS | \
|
||||
AMDGPU_GEM_DOMAIN_GWS | \
|
||||
AMDGPU_GEM_DOMAIN_OA)
|
||||
AMDGPU_GEM_DOMAIN_OA | \
|
||||
AMDGPU_GEM_DOMAIN_DOORBELL)
|
||||
|
||||
/* Flag that CPU access will be required for the case of VRAM domain */
|
||||
#define AMDGPU_GEM_CREATE_CPU_ACCESS_REQUIRED (1 << 0)
|
||||
@ -145,7 +150,7 @@ extern "C" {
|
||||
*/
|
||||
#define AMDGPU_GEM_CREATE_DISCARDABLE (1 << 12)
|
||||
/* Flag that BO is shared coherently between multiple devices or CPU threads.
|
||||
* May depend on GPU instructions to flush caches explicitly
|
||||
* May depend on GPU instructions to flush caches to system scope explicitly.
|
||||
*
|
||||
* This influences the choice of MTYPE in the PTEs on GFXv9 and later GPUs and
|
||||
* may override the MTYPE selected in AMDGPU_VA_OP_MAP.
|
||||
@ -158,6 +163,14 @@ extern "C" {
|
||||
* may override the MTYPE selected in AMDGPU_VA_OP_MAP.
|
||||
*/
|
||||
#define AMDGPU_GEM_CREATE_UNCACHED (1 << 14)
|
||||
/* Flag that BO should be coherent across devices when using device-level
|
||||
* atomics. May depend on GPU instructions to flush caches to device scope
|
||||
* explicitly, promoting them to system scope automatically.
|
||||
*
|
||||
* This influences the choice of MTYPE in the PTEs on GFXv9 and later GPUs and
|
||||
* may override the MTYPE selected in AMDGPU_VA_OP_MAP.
|
||||
*/
|
||||
#define AMDGPU_GEM_CREATE_EXT_COHERENT (1 << 15)
|
||||
|
||||
struct drm_amdgpu_gem_create_in {
|
||||
/** the requested memory size */
|
||||
@ -236,15 +249,17 @@ union drm_amdgpu_bo_list {
|
||||
/* unknown cause */
|
||||
#define AMDGPU_CTX_UNKNOWN_RESET 3
|
||||
|
||||
/* indicate gpu reset occured after ctx created */
|
||||
/* indicate gpu reset occurred after ctx created */
|
||||
#define AMDGPU_CTX_QUERY2_FLAGS_RESET (1<<0)
|
||||
/* indicate vram lost occured after ctx created */
|
||||
/* indicate vram lost occurred after ctx created */
|
||||
#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)
|
||||
/* indicate that the reset hasn't completed yet */
|
||||
#define AMDGPU_CTX_QUERY2_FLAGS_RESET_IN_PROGRESS (1<<5)
|
||||
|
||||
/* Context priority level */
|
||||
#define AMDGPU_CTX_PRIORITY_UNSET -2048
|
||||
@ -579,7 +594,8 @@ struct drm_amdgpu_gem_va {
|
||||
*/
|
||||
#define AMDGPU_HW_IP_VCN_ENC 7
|
||||
#define AMDGPU_HW_IP_VCN_JPEG 8
|
||||
#define AMDGPU_HW_IP_NUM 9
|
||||
#define AMDGPU_HW_IP_VPE 9
|
||||
#define AMDGPU_HW_IP_NUM 10
|
||||
|
||||
#define AMDGPU_HW_IP_INSTANCE_MAX_COUNT 1
|
||||
|
||||
@ -592,6 +608,7 @@ struct drm_amdgpu_gem_va {
|
||||
#define AMDGPU_CHUNK_ID_SCHEDULED_DEPENDENCIES 0x07
|
||||
#define AMDGPU_CHUNK_ID_SYNCOBJ_TIMELINE_WAIT 0x08
|
||||
#define AMDGPU_CHUNK_ID_SYNCOBJ_TIMELINE_SIGNAL 0x09
|
||||
#define AMDGPU_CHUNK_ID_CP_GFX_SHADOW 0x0a
|
||||
|
||||
struct drm_amdgpu_cs_chunk {
|
||||
__u32 chunk_id;
|
||||
@ -708,6 +725,15 @@ struct drm_amdgpu_cs_chunk_data {
|
||||
};
|
||||
};
|
||||
|
||||
#define AMDGPU_CS_CHUNK_CP_GFX_SHADOW_FLAGS_INIT_SHADOW 0x1
|
||||
|
||||
struct drm_amdgpu_cs_chunk_cp_gfx_shadow {
|
||||
__u64 shadow_va;
|
||||
__u64 csa_va;
|
||||
__u64 gds_va;
|
||||
__u64 flags;
|
||||
};
|
||||
|
||||
/*
|
||||
* Query h/w info: Flag that this is integrated (a.h.a. fusion) GPU
|
||||
*
|
||||
@ -780,6 +806,8 @@ struct drm_amdgpu_cs_chunk_data {
|
||||
#define AMDGPU_INFO_FW_MES 0x1a
|
||||
/* Subquery id: Query IMU firmware version */
|
||||
#define AMDGPU_INFO_FW_IMU 0x1b
|
||||
/* Subquery id: Query VPE firmware version */
|
||||
#define AMDGPU_INFO_FW_VPE 0x1c
|
||||
|
||||
/* number of bytes moved for TTM migration */
|
||||
#define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f
|
||||
@ -837,6 +865,8 @@ struct drm_amdgpu_cs_chunk_data {
|
||||
#define AMDGPU_INFO_SENSOR_PEAK_PSTATE_GFX_SCLK 0xa
|
||||
/* Subquery id: Query GPU peak pstate memory clock */
|
||||
#define AMDGPU_INFO_SENSOR_PEAK_PSTATE_GFX_MCLK 0xb
|
||||
/* Subquery id: Query input GPU power */
|
||||
#define AMDGPU_INFO_SENSOR_GPU_INPUT_POWER 0xc
|
||||
/* Number of VRAM page faults on CPU access. */
|
||||
#define AMDGPU_INFO_NUM_VRAM_CPU_PAGE_FAULTS 0x1E
|
||||
#define AMDGPU_INFO_VRAM_LOST_COUNTER 0x1F
|
||||
@ -876,6 +906,10 @@ struct drm_amdgpu_cs_chunk_data {
|
||||
#define AMDGPU_INFO_VIDEO_CAPS_DECODE 0
|
||||
/* Subquery id: Encode */
|
||||
#define AMDGPU_INFO_VIDEO_CAPS_ENCODE 1
|
||||
/* Query the max number of IBs per gang per submission */
|
||||
#define AMDGPU_INFO_MAX_IBS 0x22
|
||||
/* query last page fault info */
|
||||
#define AMDGPU_INFO_GPUVM_FAULT 0x23
|
||||
|
||||
#define AMDGPU_INFO_MMR_SE_INDEX_SHIFT 0
|
||||
#define AMDGPU_INFO_MMR_SE_INDEX_MASK 0xff
|
||||
@ -1126,6 +1160,14 @@ struct drm_amdgpu_info_device {
|
||||
__u64 mall_size; /* AKA infinity cache */
|
||||
/* high 32 bits of the rb pipes mask */
|
||||
__u32 enabled_rb_pipes_mask_hi;
|
||||
/* shadow area size for gfx11 */
|
||||
__u32 shadow_size;
|
||||
/* shadow area base virtual alignment for gfx11 */
|
||||
__u32 shadow_alignment;
|
||||
/* context save area size for gfx11 */
|
||||
__u32 csa_size;
|
||||
/* context save area base virtual alignment for gfx11 */
|
||||
__u32 csa_alignment;
|
||||
};
|
||||
|
||||
struct drm_amdgpu_info_hw_ip {
|
||||
@ -1193,6 +1235,20 @@ struct drm_amdgpu_info_video_caps {
|
||||
struct drm_amdgpu_info_video_codec_info codec_info[AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_COUNT];
|
||||
};
|
||||
|
||||
#define AMDGPU_VMHUB_TYPE_MASK 0xff
|
||||
#define AMDGPU_VMHUB_TYPE_SHIFT 0
|
||||
#define AMDGPU_VMHUB_TYPE_GFX 0
|
||||
#define AMDGPU_VMHUB_TYPE_MM0 1
|
||||
#define AMDGPU_VMHUB_TYPE_MM1 2
|
||||
#define AMDGPU_VMHUB_IDX_MASK 0xff00
|
||||
#define AMDGPU_VMHUB_IDX_SHIFT 8
|
||||
|
||||
struct drm_amdgpu_info_gpuvm_fault {
|
||||
__u64 addr;
|
||||
__u32 status;
|
||||
__u32 vmhub;
|
||||
};
|
||||
|
||||
/*
|
||||
* Supported GPU families
|
||||
*/
|
||||
@ -1211,6 +1267,7 @@ struct drm_amdgpu_info_video_caps {
|
||||
#define AMDGPU_FAMILY_GC_11_0_1 148 /* GC 11.0.1 */
|
||||
#define AMDGPU_FAMILY_GC_10_3_6 149 /* GC 10.3.6 */
|
||||
#define AMDGPU_FAMILY_GC_10_3_7 151 /* GC 10.3.7 */
|
||||
#define AMDGPU_FAMILY_GC_11_5_0 150 /* GC 11.5.0 */
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
|
||||
233
lib/libc/include/any-linux-any/drm/drm.h
vendored
233
lib/libc/include/any-linux-any/drm/drm.h
vendored
@ -667,8 +667,11 @@ struct drm_gem_open {
|
||||
* Bitfield of supported PRIME sharing capabilities. See &DRM_PRIME_CAP_IMPORT
|
||||
* and &DRM_PRIME_CAP_EXPORT.
|
||||
*
|
||||
* PRIME buffers are exposed as dma-buf file descriptors. See
|
||||
* Documentation/gpu/drm-mm.rst, section "PRIME Buffer Sharing".
|
||||
* Starting from kernel version 6.6, both &DRM_PRIME_CAP_IMPORT and
|
||||
* &DRM_PRIME_CAP_EXPORT are always advertised.
|
||||
*
|
||||
* PRIME buffers are exposed as dma-buf file descriptors.
|
||||
* See :ref:`prime_buffer_sharing`.
|
||||
*/
|
||||
#define DRM_CAP_PRIME 0x5
|
||||
/**
|
||||
@ -676,6 +679,8 @@ struct drm_gem_open {
|
||||
*
|
||||
* If this bit is set in &DRM_CAP_PRIME, the driver supports importing PRIME
|
||||
* buffers via the &DRM_IOCTL_PRIME_FD_TO_HANDLE ioctl.
|
||||
*
|
||||
* Starting from kernel version 6.6, this bit is always set in &DRM_CAP_PRIME.
|
||||
*/
|
||||
#define DRM_PRIME_CAP_IMPORT 0x1
|
||||
/**
|
||||
@ -683,6 +688,8 @@ struct drm_gem_open {
|
||||
*
|
||||
* If this bit is set in &DRM_CAP_PRIME, the driver supports exporting PRIME
|
||||
* buffers via the &DRM_IOCTL_PRIME_HANDLE_TO_FD ioctl.
|
||||
*
|
||||
* Starting from kernel version 6.6, this bit is always set in &DRM_CAP_PRIME.
|
||||
*/
|
||||
#define DRM_PRIME_CAP_EXPORT 0x2
|
||||
/**
|
||||
@ -700,7 +707,8 @@ struct drm_gem_open {
|
||||
/**
|
||||
* DRM_CAP_ASYNC_PAGE_FLIP
|
||||
*
|
||||
* If set to 1, the driver supports &DRM_MODE_PAGE_FLIP_ASYNC.
|
||||
* If set to 1, the driver supports &DRM_MODE_PAGE_FLIP_ASYNC for legacy
|
||||
* page-flips.
|
||||
*/
|
||||
#define DRM_CAP_ASYNC_PAGE_FLIP 0x7
|
||||
/**
|
||||
@ -750,17 +758,23 @@ struct drm_gem_open {
|
||||
/**
|
||||
* DRM_CAP_SYNCOBJ
|
||||
*
|
||||
* If set to 1, the driver supports sync objects. See
|
||||
* Documentation/gpu/drm-mm.rst, section "DRM Sync Objects".
|
||||
* If set to 1, the driver supports sync objects. See :ref:`drm_sync_objects`.
|
||||
*/
|
||||
#define DRM_CAP_SYNCOBJ 0x13
|
||||
/**
|
||||
* DRM_CAP_SYNCOBJ_TIMELINE
|
||||
*
|
||||
* If set to 1, the driver supports timeline operations on sync objects. See
|
||||
* Documentation/gpu/drm-mm.rst, section "DRM Sync Objects".
|
||||
* :ref:`drm_sync_objects`.
|
||||
*/
|
||||
#define DRM_CAP_SYNCOBJ_TIMELINE 0x14
|
||||
/**
|
||||
* DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP
|
||||
*
|
||||
* If set to 1, the driver supports &DRM_MODE_PAGE_FLIP_ASYNC for atomic
|
||||
* commits.
|
||||
*/
|
||||
#define DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP 0x15
|
||||
|
||||
/* DRM_IOCTL_GET_CAP ioctl argument type */
|
||||
struct drm_get_cap {
|
||||
@ -830,6 +844,31 @@ struct drm_get_cap {
|
||||
*/
|
||||
#define DRM_CLIENT_CAP_WRITEBACK_CONNECTORS 5
|
||||
|
||||
/**
|
||||
* DRM_CLIENT_CAP_CURSOR_PLANE_HOTSPOT
|
||||
*
|
||||
* Drivers for para-virtualized hardware (e.g. vmwgfx, qxl, virtio and
|
||||
* virtualbox) have additional restrictions for cursor planes (thus
|
||||
* making cursor planes on those drivers not truly universal,) e.g.
|
||||
* they need cursor planes to act like one would expect from a mouse
|
||||
* cursor and have correctly set hotspot properties.
|
||||
* If this client cap is not set the DRM core will hide cursor plane on
|
||||
* those virtualized drivers because not setting it implies that the
|
||||
* client is not capable of dealing with those extra restictions.
|
||||
* Clients which do set cursor hotspot and treat the cursor plane
|
||||
* like a mouse cursor should set this property.
|
||||
* The client must enable &DRM_CLIENT_CAP_ATOMIC first.
|
||||
*
|
||||
* Setting this property on drivers which do not special case
|
||||
* cursor planes (i.e. non-virtualized drivers) will return
|
||||
* EOPNOTSUPP, which can be used by userspace to gauge
|
||||
* requirements of the hardware/drivers they're running on.
|
||||
*
|
||||
* This capability is always supported for atomic-capable virtualized
|
||||
* drivers starting from kernel version 6.6.
|
||||
*/
|
||||
#define DRM_CLIENT_CAP_CURSOR_PLANE_HOTSPOT 6
|
||||
|
||||
/* DRM_IOCTL_SET_CLIENT_CAP ioctl argument type */
|
||||
struct drm_set_client_cap {
|
||||
__u64 capability;
|
||||
@ -881,6 +920,7 @@ struct drm_syncobj_transfer {
|
||||
#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 */
|
||||
#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_DEADLINE (1 << 3) /* set fence deadline to deadline_nsec */
|
||||
struct drm_syncobj_wait {
|
||||
__u64 handles;
|
||||
/* absolute timeout */
|
||||
@ -889,6 +929,14 @@ struct drm_syncobj_wait {
|
||||
__u32 flags;
|
||||
__u32 first_signaled; /* only valid when not waiting all */
|
||||
__u32 pad;
|
||||
/**
|
||||
* @deadline_nsec - fence deadline hint
|
||||
*
|
||||
* Deadline hint, in absolute CLOCK_MONOTONIC, to set on backing
|
||||
* fence(s) if the DRM_SYNCOBJ_WAIT_FLAGS_WAIT_DEADLINE flag is
|
||||
* set.
|
||||
*/
|
||||
__u64 deadline_nsec;
|
||||
};
|
||||
|
||||
struct drm_syncobj_timeline_wait {
|
||||
@ -901,6 +949,35 @@ struct drm_syncobj_timeline_wait {
|
||||
__u32 flags;
|
||||
__u32 first_signaled; /* only valid when not waiting all */
|
||||
__u32 pad;
|
||||
/**
|
||||
* @deadline_nsec - fence deadline hint
|
||||
*
|
||||
* Deadline hint, in absolute CLOCK_MONOTONIC, to set on backing
|
||||
* fence(s) if the DRM_SYNCOBJ_WAIT_FLAGS_WAIT_DEADLINE flag is
|
||||
* set.
|
||||
*/
|
||||
__u64 deadline_nsec;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_syncobj_eventfd
|
||||
* @handle: syncobj handle.
|
||||
* @flags: Zero to wait for the point to be signalled, or
|
||||
* &DRM_SYNCOBJ_WAIT_FLAGS_WAIT_AVAILABLE to wait for a fence to be
|
||||
* available for the point.
|
||||
* @point: syncobj timeline point (set to zero for binary syncobjs).
|
||||
* @fd: Existing eventfd to sent events to.
|
||||
* @pad: Must be zero.
|
||||
*
|
||||
* Register an eventfd to be signalled by a syncobj. The eventfd counter will
|
||||
* be incremented by one.
|
||||
*/
|
||||
struct drm_syncobj_eventfd {
|
||||
__u32 handle;
|
||||
__u32 flags;
|
||||
__u64 point;
|
||||
__s32 fd;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
|
||||
@ -966,6 +1043,19 @@ extern "C" {
|
||||
#define DRM_IOCTL_GET_STATS DRM_IOR( 0x06, struct drm_stats)
|
||||
#define DRM_IOCTL_SET_VERSION DRM_IOWR(0x07, struct drm_set_version)
|
||||
#define DRM_IOCTL_MODESET_CTL DRM_IOW(0x08, struct drm_modeset_ctl)
|
||||
/**
|
||||
* DRM_IOCTL_GEM_CLOSE - Close a GEM handle.
|
||||
*
|
||||
* GEM handles are not reference-counted by the kernel. User-space is
|
||||
* responsible for managing their lifetime. For example, if user-space imports
|
||||
* the same memory object twice on the same DRM file description, the same GEM
|
||||
* handle is returned by both imports, and user-space needs to ensure
|
||||
* &DRM_IOCTL_GEM_CLOSE is performed once only. The same situation can happen
|
||||
* when a memory object is allocated, then exported and imported again on the
|
||||
* same DRM file description. The &DRM_IOCTL_MODE_GETFB2 IOCTL is an exception
|
||||
* and always returns fresh new GEM handles even if an existing GEM handle
|
||||
* already refers to the same memory object before the IOCTL is performed.
|
||||
*/
|
||||
#define DRM_IOCTL_GEM_CLOSE DRM_IOW (0x09, struct drm_gem_close)
|
||||
#define DRM_IOCTL_GEM_FLINK DRM_IOWR(0x0a, struct drm_gem_flink)
|
||||
#define DRM_IOCTL_GEM_OPEN DRM_IOWR(0x0b, struct drm_gem_open)
|
||||
@ -1006,7 +1096,37 @@ extern "C" {
|
||||
#define DRM_IOCTL_UNLOCK DRM_IOW( 0x2b, struct drm_lock)
|
||||
#define DRM_IOCTL_FINISH DRM_IOW( 0x2c, struct drm_lock)
|
||||
|
||||
/**
|
||||
* DRM_IOCTL_PRIME_HANDLE_TO_FD - Convert a GEM handle to a DMA-BUF FD.
|
||||
*
|
||||
* User-space sets &drm_prime_handle.handle with the GEM handle to export and
|
||||
* &drm_prime_handle.flags, and gets back a DMA-BUF file descriptor in
|
||||
* &drm_prime_handle.fd.
|
||||
*
|
||||
* The export can fail for any driver-specific reason, e.g. because export is
|
||||
* not supported for this specific GEM handle (but might be for others).
|
||||
*
|
||||
* Support for exporting DMA-BUFs is advertised via &DRM_PRIME_CAP_EXPORT.
|
||||
*/
|
||||
#define DRM_IOCTL_PRIME_HANDLE_TO_FD DRM_IOWR(0x2d, struct drm_prime_handle)
|
||||
/**
|
||||
* DRM_IOCTL_PRIME_FD_TO_HANDLE - Convert a DMA-BUF FD to a GEM handle.
|
||||
*
|
||||
* User-space sets &drm_prime_handle.fd with a DMA-BUF file descriptor to
|
||||
* import, and gets back a GEM handle in &drm_prime_handle.handle.
|
||||
* &drm_prime_handle.flags is unused.
|
||||
*
|
||||
* If an existing GEM handle refers to the memory object backing the DMA-BUF,
|
||||
* that GEM handle is returned. Therefore user-space which needs to handle
|
||||
* arbitrary DMA-BUFs must have a user-space lookup data structure to manually
|
||||
* reference-count duplicated GEM handles. For more information see
|
||||
* &DRM_IOCTL_GEM_CLOSE.
|
||||
*
|
||||
* The import can fail for any driver-specific reason, e.g. because import is
|
||||
* only supported for DMA-BUFs allocated on this DRM device.
|
||||
*
|
||||
* Support for importing DMA-BUFs is advertised via &DRM_PRIME_CAP_IMPORT.
|
||||
*/
|
||||
#define DRM_IOCTL_PRIME_FD_TO_HANDLE DRM_IOWR(0x2e, struct drm_prime_handle)
|
||||
|
||||
#define DRM_IOCTL_AGP_ACQUIRE DRM_IO( 0x30)
|
||||
@ -1058,6 +1178,26 @@ extern "C" {
|
||||
#define DRM_IOCTL_MODE_PAGE_FLIP DRM_IOWR(0xB0, struct drm_mode_crtc_page_flip)
|
||||
#define DRM_IOCTL_MODE_DIRTYFB DRM_IOWR(0xB1, struct drm_mode_fb_dirty_cmd)
|
||||
|
||||
/**
|
||||
* DRM_IOCTL_MODE_CREATE_DUMB - Create a new dumb buffer object.
|
||||
*
|
||||
* KMS dumb buffers provide a very primitive way to allocate a buffer object
|
||||
* suitable for scanout and map it for software rendering. KMS dumb buffers are
|
||||
* not suitable for hardware-accelerated rendering nor video decoding. KMS dumb
|
||||
* buffers are not suitable to be displayed on any other device than the KMS
|
||||
* device where they were allocated from. Also see
|
||||
* :ref:`kms_dumb_buffer_objects`.
|
||||
*
|
||||
* The IOCTL argument is a struct drm_mode_create_dumb.
|
||||
*
|
||||
* User-space is expected to create a KMS dumb buffer via this IOCTL, then add
|
||||
* it as a KMS framebuffer via &DRM_IOCTL_MODE_ADDFB and map it via
|
||||
* &DRM_IOCTL_MODE_MAP_DUMB.
|
||||
*
|
||||
* &DRM_CAP_DUMB_BUFFER indicates whether this IOCTL is supported.
|
||||
* &DRM_CAP_DUMB_PREFERRED_DEPTH and &DRM_CAP_DUMB_PREFER_SHADOW indicate
|
||||
* driver preferences for dumb buffers.
|
||||
*/
|
||||
#define DRM_IOCTL_MODE_CREATE_DUMB DRM_IOWR(0xB2, struct drm_mode_create_dumb)
|
||||
#define DRM_IOCTL_MODE_MAP_DUMB DRM_IOWR(0xB3, struct drm_mode_map_dumb)
|
||||
#define DRM_IOCTL_MODE_DESTROY_DUMB DRM_IOWR(0xB4, struct drm_mode_destroy_dumb)
|
||||
@ -1098,8 +1238,13 @@ extern "C" {
|
||||
* struct as the output.
|
||||
*
|
||||
* If the client is DRM master or has &CAP_SYS_ADMIN, &drm_mode_fb_cmd2.handles
|
||||
* will be filled with GEM buffer handles. Planes are valid until one has a
|
||||
* zero handle -- this can be used to compute the number of planes.
|
||||
* will be filled with GEM buffer handles. Fresh new GEM handles are always
|
||||
* returned, even if another GEM handle referring to the same memory object
|
||||
* already exists on the DRM file description. The caller is responsible for
|
||||
* removing the new handles, e.g. via the &DRM_IOCTL_GEM_CLOSE IOCTL. The same
|
||||
* new handle will be returned for multiple planes in case they use the same
|
||||
* memory object. Planes are valid until one has a zero handle -- this can be
|
||||
* used to compute the number of planes.
|
||||
*
|
||||
* Otherwise, &drm_mode_fb_cmd2.handles will be zeroed and planes are valid
|
||||
* until one has a zero &drm_mode_fb_cmd2.pitches.
|
||||
@ -1107,9 +1252,36 @@ extern "C" {
|
||||
* If the framebuffer has a format modifier, &DRM_MODE_FB_MODIFIERS will be set
|
||||
* in &drm_mode_fb_cmd2.flags and &drm_mode_fb_cmd2.modifier will contain the
|
||||
* modifier. Otherwise, user-space must ignore &drm_mode_fb_cmd2.modifier.
|
||||
*
|
||||
* To obtain DMA-BUF FDs for each plane without leaking GEM handles, user-space
|
||||
* can export each handle via &DRM_IOCTL_PRIME_HANDLE_TO_FD, then immediately
|
||||
* close each unique handle via &DRM_IOCTL_GEM_CLOSE, making sure to not
|
||||
* double-close handles which are specified multiple times in the array.
|
||||
*/
|
||||
#define DRM_IOCTL_MODE_GETFB2 DRM_IOWR(0xCE, struct drm_mode_fb_cmd2)
|
||||
|
||||
#define DRM_IOCTL_SYNCOBJ_EVENTFD DRM_IOWR(0xCF, struct drm_syncobj_eventfd)
|
||||
|
||||
/**
|
||||
* DRM_IOCTL_MODE_CLOSEFB - Close a framebuffer.
|
||||
*
|
||||
* This closes a framebuffer previously added via ADDFB/ADDFB2. The IOCTL
|
||||
* argument is a framebuffer object ID.
|
||||
*
|
||||
* This IOCTL is similar to &DRM_IOCTL_MODE_RMFB, except it doesn't disable
|
||||
* planes and CRTCs. As long as the framebuffer is used by a plane, it's kept
|
||||
* alive. When the plane no longer uses the framebuffer (because the
|
||||
* framebuffer is replaced with another one, or the plane is disabled), the
|
||||
* framebuffer is cleaned up.
|
||||
*
|
||||
* This is useful to implement flicker-free transitions between two processes.
|
||||
*
|
||||
* Depending on the threat model, user-space may want to ensure that the
|
||||
* framebuffer doesn't expose any sensitive user information: closed
|
||||
* framebuffers attached to a plane can be read back by the next DRM master.
|
||||
*/
|
||||
#define DRM_IOCTL_MODE_CLOSEFB DRM_IOWR(0xD0, struct drm_mode_closefb)
|
||||
|
||||
/*
|
||||
* Device specific ioctls should only be in their respective headers
|
||||
* The device specific ioctl range is from 0x40 to 0x9f.
|
||||
@ -1121,25 +1293,50 @@ extern "C" {
|
||||
#define DRM_COMMAND_BASE 0x40
|
||||
#define DRM_COMMAND_END 0xA0
|
||||
|
||||
/*
|
||||
* Header for events written back to userspace on the drm fd. The
|
||||
* type defines the type of event, the length specifies the total
|
||||
* length of the event (including the header), and user_data is
|
||||
* typically a 64 bit value passed with the ioctl that triggered the
|
||||
* event. A read on the drm fd will always only return complete
|
||||
* events, that is, if for example the read buffer is 100 bytes, and
|
||||
* there are two 64 byte events pending, only one will be returned.
|
||||
/**
|
||||
* struct drm_event - Header for DRM events
|
||||
* @type: event type.
|
||||
* @length: total number of payload bytes (including header).
|
||||
*
|
||||
* Event types 0 - 0x7fffffff are generic drm events, 0x80000000 and
|
||||
* up are chipset specific.
|
||||
* This struct is a header for events written back to user-space on the DRM FD.
|
||||
* A read on the DRM FD will always only return complete events: e.g. if the
|
||||
* read buffer is 100 bytes large and there are two 64 byte events pending,
|
||||
* only one will be returned.
|
||||
*
|
||||
* Event types 0 - 0x7fffffff are generic DRM events, 0x80000000 and
|
||||
* up are chipset specific. Generic DRM events include &DRM_EVENT_VBLANK,
|
||||
* &DRM_EVENT_FLIP_COMPLETE and &DRM_EVENT_CRTC_SEQUENCE.
|
||||
*/
|
||||
struct drm_event {
|
||||
__u32 type;
|
||||
__u32 length;
|
||||
};
|
||||
|
||||
/**
|
||||
* DRM_EVENT_VBLANK - vertical blanking event
|
||||
*
|
||||
* This event is sent in response to &DRM_IOCTL_WAIT_VBLANK with the
|
||||
* &_DRM_VBLANK_EVENT flag set.
|
||||
*
|
||||
* The event payload is a struct drm_event_vblank.
|
||||
*/
|
||||
#define DRM_EVENT_VBLANK 0x01
|
||||
/**
|
||||
* DRM_EVENT_FLIP_COMPLETE - page-flip completion event
|
||||
*
|
||||
* This event is sent in response to an atomic commit or legacy page-flip with
|
||||
* the &DRM_MODE_PAGE_FLIP_EVENT flag set.
|
||||
*
|
||||
* The event payload is a struct drm_event_vblank.
|
||||
*/
|
||||
#define DRM_EVENT_FLIP_COMPLETE 0x02
|
||||
/**
|
||||
* DRM_EVENT_CRTC_SEQUENCE - CRTC sequence event
|
||||
*
|
||||
* This event is sent in response to &DRM_IOCTL_CRTC_QUEUE_SEQUENCE.
|
||||
*
|
||||
* The event payload is a struct drm_event_crtc_sequence.
|
||||
*/
|
||||
#define DRM_EVENT_CRTC_SEQUENCE 0x03
|
||||
|
||||
struct drm_event_vblank {
|
||||
|
||||
55
lib/libc/include/any-linux-any/drm/drm_fourcc.h
vendored
55
lib/libc/include/any-linux-any/drm/drm_fourcc.h
vendored
@ -54,7 +54,7 @@ extern "C" {
|
||||
* Format modifiers may change any property of the buffer, including the number
|
||||
* of planes and/or the required allocation size. Format modifiers are
|
||||
* vendor-namespaced, and as such the relationship between a fourcc code and a
|
||||
* modifier is specific to the modifer being used. For example, some modifiers
|
||||
* modifier is specific to the modifier being used. For example, some modifiers
|
||||
* may preserve meaning - such as number of planes - from the fourcc code,
|
||||
* whereas others may not.
|
||||
*
|
||||
@ -79,7 +79,7 @@ extern "C" {
|
||||
* format.
|
||||
* - Higher-level programs interfacing with KMS/GBM/EGL/Vulkan/etc: these users
|
||||
* see modifiers as opaque tokens they can check for equality and intersect.
|
||||
* These users musn't need to know to reason about the modifier value
|
||||
* These users mustn't need to know to reason about the modifier value
|
||||
* (i.e. they are not expected to extract information out of the modifier).
|
||||
*
|
||||
* Vendors should document their modifier usage in as much detail as
|
||||
@ -323,6 +323,8 @@ extern "C" {
|
||||
* index 1 = Cr:Cb plane, [39:0] Cr1:Cb1:Cr0:Cb0 little endian
|
||||
*/
|
||||
#define DRM_FORMAT_NV15 fourcc_code('N', 'V', '1', '5') /* 2x2 subsampled Cr:Cb plane */
|
||||
#define DRM_FORMAT_NV20 fourcc_code('N', 'V', '2', '0') /* 2x1 subsampled Cr:Cb plane */
|
||||
#define DRM_FORMAT_NV30 fourcc_code('N', 'V', '3', '0') /* non-subsampled Cr:Cb plane */
|
||||
|
||||
/*
|
||||
* 2 plane YCbCr MSB aligned
|
||||
@ -538,7 +540,7 @@ extern "C" {
|
||||
* This is a tiled layout using 4Kb tiles in row-major layout.
|
||||
* Within the tile pixels are laid out in 16 256 byte units / sub-tiles which
|
||||
* are arranged in four groups (two wide, two high) with column-major layout.
|
||||
* Each group therefore consits out of four 256 byte units, which are also laid
|
||||
* Each group therefore consists out of four 256 byte units, which are also laid
|
||||
* out as 2x2 column-major.
|
||||
* 256 byte units are made out of four 64 byte blocks of pixels, producing
|
||||
* either a square block or a 2:1 unit.
|
||||
@ -657,6 +659,49 @@ extern "C" {
|
||||
*/
|
||||
#define I915_FORMAT_MOD_4_TILED_DG2_RC_CCS_CC fourcc_mod_code(INTEL, 12)
|
||||
|
||||
/*
|
||||
* Intel Color Control Surfaces (CCS) for display ver. 14 render compression.
|
||||
*
|
||||
* The main surface is tile4 and at plane index 0, the CCS is linear and
|
||||
* at index 1. A 64B CCS cache line corresponds to an area of 4x1 tiles in
|
||||
* main surface. In other words, 4 bits in CCS map to a main surface cache
|
||||
* line pair. The main surface pitch is required to be a multiple of four
|
||||
* tile4 widths.
|
||||
*/
|
||||
#define I915_FORMAT_MOD_4_TILED_MTL_RC_CCS fourcc_mod_code(INTEL, 13)
|
||||
|
||||
/*
|
||||
* Intel Color Control Surfaces (CCS) for display ver. 14 media compression
|
||||
*
|
||||
* The main surface is tile4 and at plane index 0, the CCS is linear and
|
||||
* at index 1. A 64B CCS cache line corresponds to an area of 4x1 tiles in
|
||||
* main surface. In other words, 4 bits in CCS map to a main surface cache
|
||||
* line pair. The main surface pitch is required to be a multiple of four
|
||||
* tile4 widths. For semi-planar formats like NV12, CCS planes follow the
|
||||
* Y and UV planes i.e., planes 0 and 1 are used for Y and UV surfaces,
|
||||
* planes 2 and 3 for the respective CCS.
|
||||
*/
|
||||
#define I915_FORMAT_MOD_4_TILED_MTL_MC_CCS fourcc_mod_code(INTEL, 14)
|
||||
|
||||
/*
|
||||
* Intel Color Control Surface with Clear Color (CCS) for display ver. 14 render
|
||||
* compression.
|
||||
*
|
||||
* The main surface is tile4 and is at plane index 0 whereas CCS is linear
|
||||
* and at index 1. The clear color is stored at index 2, and the pitch should
|
||||
* be ignored. The clear color structure is 256 bits. The first 128 bits
|
||||
* represents Raw Clear Color Red, Green, Blue and Alpha color each represented
|
||||
* by 32 bits. The raw clear color is consumed by the 3d engine and generates
|
||||
* the converted clear color of size 64 bits. The first 32 bits store the Lower
|
||||
* Converted Clear Color value and the next 32 bits store the Higher Converted
|
||||
* Clear Color value when applicable. The Converted Clear Color values are
|
||||
* consumed by the DE. The last 64 bits are used to store Color Discard Enable
|
||||
* and Depth Clear Value Valid which are ignored by the DE. A CCS cache line
|
||||
* corresponds to an area of 4x1 tiles in the main surface. The main surface
|
||||
* pitch is required to be a multiple of 4 tile widths.
|
||||
*/
|
||||
#define I915_FORMAT_MOD_4_TILED_MTL_RC_CCS_CC fourcc_mod_code(INTEL, 15)
|
||||
|
||||
/*
|
||||
* Tiled, NV12MT, grouped in 64 (pixels) x 32 (lines) -sized macroblocks
|
||||
*
|
||||
@ -1058,7 +1103,7 @@ drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)
|
||||
*/
|
||||
|
||||
/*
|
||||
* The top 4 bits (out of the 56 bits alloted for specifying vendor specific
|
||||
* The top 4 bits (out of the 56 bits allotted for specifying vendor specific
|
||||
* modifiers) denote the category for modifiers. Currently we have three
|
||||
* categories of modifiers ie AFBC, MISC and AFRC. We can have a maximum of
|
||||
* sixteen different categories.
|
||||
@ -1374,7 +1419,7 @@ drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier)
|
||||
* Amlogic FBC Memory Saving mode
|
||||
*
|
||||
* Indicates the storage is packed when pixel size is multiple of word
|
||||
* boudaries, i.e. 8bit should be stored in this mode to save allocation
|
||||
* boundaries, i.e. 8bit should be stored in this mode to save allocation
|
||||
* memory.
|
||||
*
|
||||
* This mode reduces body layout to 3072 bytes per 64x32 superblock with
|
||||
|
||||
80
lib/libc/include/any-linux-any/drm/drm_mode.h
vendored
80
lib/libc/include/any-linux-any/drm/drm_mode.h
vendored
@ -36,10 +36,10 @@ extern "C" {
|
||||
/**
|
||||
* DOC: overview
|
||||
*
|
||||
* DRM exposes many UAPI and structure definition to have a consistent
|
||||
* and standardized interface with user.
|
||||
* DRM exposes many UAPI and structure definitions to have a consistent
|
||||
* and standardized interface with users.
|
||||
* Userspace can refer to these structure definitions and UAPI formats
|
||||
* to communicate to driver
|
||||
* to communicate to drivers.
|
||||
*/
|
||||
|
||||
#define DRM_CONNECTOR_NAME_LEN 32
|
||||
@ -488,6 +488,9 @@ struct drm_mode_get_connector {
|
||||
* This is not an object ID. This is a per-type connector number. Each
|
||||
* (type, type_id) combination is unique across all connectors of a DRM
|
||||
* device.
|
||||
*
|
||||
* The (type, type_id) combination is not a stable identifier: the
|
||||
* type_id can change depending on the driver probe order.
|
||||
*/
|
||||
__u32 connector_type_id;
|
||||
|
||||
@ -537,7 +540,7 @@ struct drm_mode_get_connector {
|
||||
/* the PROP_ATOMIC flag is used to hide properties from userspace that
|
||||
* is not aware of atomic properties. This is mostly to work around
|
||||
* older userspace (DDX drivers) that read/write each prop they find,
|
||||
* witout being aware that this could be triggering a lengthy modeset.
|
||||
* without being aware that this could be triggering a lengthy modeset.
|
||||
*/
|
||||
#define DRM_MODE_PROP_ATOMIC 0x80000000
|
||||
|
||||
@ -661,7 +664,7 @@ struct drm_mode_fb_cmd {
|
||||
};
|
||||
|
||||
#define DRM_MODE_FB_INTERLACED (1<<0) /* for interlaced framebuffers */
|
||||
#define DRM_MODE_FB_MODIFIERS (1<<1) /* enables ->modifer[] */
|
||||
#define DRM_MODE_FB_MODIFIERS (1<<1) /* enables ->modifier[] */
|
||||
|
||||
/**
|
||||
* struct drm_mode_fb_cmd2 - Frame-buffer metadata.
|
||||
@ -834,10 +837,23 @@ struct drm_color_ctm {
|
||||
/*
|
||||
* Conversion matrix in S31.32 sign-magnitude
|
||||
* (not two's complement!) format.
|
||||
*
|
||||
* out matrix in
|
||||
* |R| |0 1 2| |R|
|
||||
* |G| = |3 4 5| x |G|
|
||||
* |B| |6 7 8| |B|
|
||||
*/
|
||||
__u64 matrix[9];
|
||||
};
|
||||
|
||||
struct drm_color_ctm_3x4 {
|
||||
/*
|
||||
* Conversion matrix with 3x4 dimensions in S31.32 sign-magnitude
|
||||
* (not two's complement!) format.
|
||||
*/
|
||||
__u64 matrix[12];
|
||||
};
|
||||
|
||||
struct drm_color_lut {
|
||||
/*
|
||||
* Values are mapped linearly to 0.0 - 1.0 range, with 0x0 == 0.0 and
|
||||
@ -849,6 +865,17 @@ struct drm_color_lut {
|
||||
__u16 reserved;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_plane_size_hint - Plane size hints
|
||||
*
|
||||
* The plane SIZE_HINTS property blob contains an
|
||||
* array of struct drm_plane_size_hint.
|
||||
*/
|
||||
struct drm_plane_size_hint {
|
||||
__u16 width;
|
||||
__u16 height;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct hdr_metadata_infoframe - HDR Metadata Infoframe Data.
|
||||
*
|
||||
@ -873,8 +900,8 @@ struct hdr_metadata_infoframe {
|
||||
* These are coded as unsigned 16-bit values in units of
|
||||
* 0.00002, where 0x0000 represents zero and 0xC350
|
||||
* represents 1.0000.
|
||||
* @display_primaries.x: X cordinate of color primary.
|
||||
* @display_primaries.y: Y cordinate of color primary.
|
||||
* @display_primaries.x: X coordinate of color primary.
|
||||
* @display_primaries.y: Y coordinate of color primary.
|
||||
*/
|
||||
struct {
|
||||
__u16 x, y;
|
||||
@ -884,8 +911,8 @@ struct hdr_metadata_infoframe {
|
||||
* These are coded as unsigned 16-bit values in units of
|
||||
* 0.00002, where 0x0000 represents zero and 0xC350
|
||||
* represents 1.0000.
|
||||
* @white_point.x: X cordinate of whitepoint of color primary.
|
||||
* @white_point.y: Y cordinate of whitepoint of color primary.
|
||||
* @white_point.x: X coordinate of whitepoint of color primary.
|
||||
* @white_point.y: Y coordinate of whitepoint of color primary.
|
||||
*/
|
||||
struct {
|
||||
__u16 x, y;
|
||||
@ -949,6 +976,15 @@ struct hdr_output_metadata {
|
||||
* Request that the page-flip is performed as soon as possible, ie. with no
|
||||
* delay due to waiting for vblank. This may cause tearing to be visible on
|
||||
* the screen.
|
||||
*
|
||||
* When used with atomic uAPI, the driver will return an error if the hardware
|
||||
* doesn't support performing an asynchronous page-flip for this update.
|
||||
* User-space should handle this, e.g. by falling back to a regular page-flip.
|
||||
*
|
||||
* Note, some hardware might need to perform one last synchronous page-flip
|
||||
* before being able to switch to asynchronous page-flips. As an exception,
|
||||
* the driver will return success even though that first page-flip is not
|
||||
* asynchronous.
|
||||
*/
|
||||
#define DRM_MODE_PAGE_FLIP_ASYNC 0x02
|
||||
#define DRM_MODE_PAGE_FLIP_TARGET_ABSOLUTE 0x4
|
||||
@ -1024,13 +1060,25 @@ struct drm_mode_crtc_page_flip_target {
|
||||
__u64 user_data;
|
||||
};
|
||||
|
||||
/* create a dumb scanout buffer */
|
||||
/**
|
||||
* struct drm_mode_create_dumb - Create a KMS dumb buffer for scanout.
|
||||
* @height: buffer height in pixels
|
||||
* @width: buffer width in pixels
|
||||
* @bpp: bits per pixel
|
||||
* @flags: must be zero
|
||||
* @handle: buffer object handle
|
||||
* @pitch: number of bytes between two consecutive lines
|
||||
* @size: size of the whole buffer in bytes
|
||||
*
|
||||
* User-space fills @height, @width, @bpp and @flags. If the IOCTL succeeds,
|
||||
* the kernel fills @handle, @pitch and @size.
|
||||
*/
|
||||
struct drm_mode_create_dumb {
|
||||
__u32 height;
|
||||
__u32 width;
|
||||
__u32 bpp;
|
||||
__u32 flags;
|
||||
/* handle, pitch, size will be returned */
|
||||
|
||||
__u32 handle;
|
||||
__u32 pitch;
|
||||
__u64 size;
|
||||
@ -1303,6 +1351,16 @@ struct drm_mode_rect {
|
||||
__s32 y2;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_mode_closefb
|
||||
* @fb_id: Framebuffer ID.
|
||||
* @pad: Must be zero.
|
||||
*/
|
||||
struct drm_mode_closefb {
|
||||
__u32 fb_id;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
|
||||
*
|
||||
* Copyright 2016-2022 HabanaLabs, Ltd.
|
||||
* Copyright 2016-2023 HabanaLabs, Ltd.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
*/
|
||||
@ -8,8 +8,7 @@
|
||||
#ifndef HABANALABS_H_
|
||||
#define HABANALABS_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
#include <drm/drm.h>
|
||||
|
||||
/*
|
||||
* Defines that are asic-specific but constitutes as ABI between kernel driver
|
||||
@ -607,9 +606,9 @@ enum gaudi2_engine_id {
|
||||
/*
|
||||
* ASIC specific PLL index
|
||||
*
|
||||
* Used to retrieve in frequency info of different IPs via
|
||||
* HL_INFO_PLL_FREQUENCY under HL_IOCTL_INFO IOCTL. The enums need to be
|
||||
* used as an index in struct hl_pll_frequency_info
|
||||
* Used to retrieve in frequency info of different IPs via HL_INFO_PLL_FREQUENCY under
|
||||
* DRM_IOCTL_HL_INFO IOCTL.
|
||||
* The enums need to be used as an index in struct hl_pll_frequency_info.
|
||||
*/
|
||||
|
||||
enum hl_goya_pll_index {
|
||||
@ -708,7 +707,8 @@ enum hl_server_type {
|
||||
HL_SERVER_GAUDI_HLS1H = 2,
|
||||
HL_SERVER_GAUDI_TYPE1 = 3,
|
||||
HL_SERVER_GAUDI_TYPE2 = 4,
|
||||
HL_SERVER_GAUDI2_HLS2 = 5
|
||||
HL_SERVER_GAUDI2_HLS2 = 5,
|
||||
HL_SERVER_GAUDI2_TYPE1 = 7
|
||||
};
|
||||
|
||||
/*
|
||||
@ -723,6 +723,10 @@ enum hl_server_type {
|
||||
* HL_NOTIFIER_EVENT_GENERAL_HW_ERR - Indicates device HW error
|
||||
* HL_NOTIFIER_EVENT_RAZWI - Indicates razwi happened
|
||||
* HL_NOTIFIER_EVENT_PAGE_FAULT - Indicates page fault happened
|
||||
* HL_NOTIFIER_EVENT_CRITICAL_HW_ERR - Indicates a HW error that requires SW abort and
|
||||
* HW reset
|
||||
* HL_NOTIFIER_EVENT_CRITICAL_FW_ERR - Indicates a FW error that requires SW abort and
|
||||
* HW reset
|
||||
*/
|
||||
#define HL_NOTIFIER_EVENT_TPC_ASSERT (1ULL << 0)
|
||||
#define HL_NOTIFIER_EVENT_UNDEFINED_OPCODE (1ULL << 1)
|
||||
@ -733,6 +737,8 @@ enum hl_server_type {
|
||||
#define HL_NOTIFIER_EVENT_GENERAL_HW_ERR (1ULL << 6)
|
||||
#define HL_NOTIFIER_EVENT_RAZWI (1ULL << 7)
|
||||
#define HL_NOTIFIER_EVENT_PAGE_FAULT (1ULL << 8)
|
||||
#define HL_NOTIFIER_EVENT_CRITICL_HW_ERR (1ULL << 9)
|
||||
#define HL_NOTIFIER_EVENT_CRITICL_FW_ERR (1ULL << 10)
|
||||
|
||||
/* Opcode for management ioctl
|
||||
*
|
||||
@ -780,16 +786,29 @@ enum hl_server_type {
|
||||
* The address which accessing it caused the razwi.
|
||||
* Razwi initiator.
|
||||
* Razwi cause, was it a page fault or MMU access error.
|
||||
* May return 0 even though no new data is available, in that case
|
||||
* timestamp will be 0.
|
||||
* HL_INFO_DEV_MEM_ALLOC_PAGE_SIZES - Retrieve valid page sizes for device memory allocation
|
||||
* HL_INFO_SECURED_ATTESTATION - Retrieve attestation report of the boot.
|
||||
* HL_INFO_REGISTER_EVENTFD - Register eventfd for event notifications.
|
||||
* HL_INFO_UNREGISTER_EVENTFD - Unregister eventfd
|
||||
* HL_INFO_GET_EVENTS - Retrieve the last occurred events
|
||||
* HL_INFO_UNDEFINED_OPCODE_EVENT - Retrieve last undefined opcode error information.
|
||||
* May return 0 even though no new data is available, in that case
|
||||
* timestamp will be 0.
|
||||
* HL_INFO_ENGINE_STATUS - Retrieve the status of all the h/w engines in the asic.
|
||||
* HL_INFO_PAGE_FAULT_EVENT - Retrieve parameters of captured page fault.
|
||||
* May return 0 even though no new data is available, in that case
|
||||
* timestamp will be 0.
|
||||
* HL_INFO_USER_MAPPINGS - Retrieve user mappings, captured after page fault event.
|
||||
* HL_INFO_FW_GENERIC_REQ - Send generic request to FW.
|
||||
* HL_INFO_HW_ERR_EVENT - Retrieve information on the reported HW error.
|
||||
* May return 0 even though no new data is available, in that case
|
||||
* timestamp will be 0.
|
||||
* HL_INFO_FW_ERR_EVENT - Retrieve information on the reported FW error.
|
||||
* May return 0 even though no new data is available, in that case
|
||||
* timestamp will be 0.
|
||||
* HL_INFO_USER_ENGINE_ERR_EVENT - Retrieve the last engine id that reported an error.
|
||||
*/
|
||||
#define HL_INFO_HW_IP_INFO 0
|
||||
#define HL_INFO_HW_EVENTS 1
|
||||
@ -824,6 +843,10 @@ enum hl_server_type {
|
||||
#define HL_INFO_PAGE_FAULT_EVENT 33
|
||||
#define HL_INFO_USER_MAPPINGS 34
|
||||
#define HL_INFO_FW_GENERIC_REQ 35
|
||||
#define HL_INFO_HW_ERR_EVENT 36
|
||||
#define HL_INFO_FW_ERR_EVENT 37
|
||||
#define HL_INFO_USER_ENGINE_ERR_EVENT 38
|
||||
#define HL_INFO_DEV_SIGNED 40
|
||||
|
||||
#define HL_INFO_VERSION_MAX_LEN 128
|
||||
#define HL_INFO_CARD_NAME_MAX_LEN 16
|
||||
@ -863,11 +886,11 @@ enum hl_server_type {
|
||||
* @dram_enabled: Whether the DRAM is enabled.
|
||||
* @security_enabled: Whether security is enabled on device.
|
||||
* @mme_master_slave_mode: Indicate whether the MME is working in master/slave
|
||||
* configuration. Relevant for Greco and later.
|
||||
* configuration. Relevant for Gaudi2 and later.
|
||||
* @cpucp_version: The CPUCP f/w version.
|
||||
* @card_name: The card name as passed by the f/w.
|
||||
* @tpc_enabled_mask_ext: Bit-mask that represents which TPCs are enabled.
|
||||
* Relevant for Greco and later.
|
||||
* Relevant for Gaudi2 and later.
|
||||
* @dram_page_size: The DRAM physical page size.
|
||||
* @edma_enabled_mask: Bit-mask that represents which EDMAs are enabled.
|
||||
* Relevant for Gaudi2 and later.
|
||||
@ -875,6 +898,12 @@ enum hl_server_type {
|
||||
* application to use. Relevant for Gaudi2 and later.
|
||||
* @device_mem_alloc_default_page_size: default page size used in device memory allocation.
|
||||
* @revision_id: PCI revision ID of the ASIC.
|
||||
* @tpc_interrupt_id: interrupt id for TPC to use in order to raise events towards the host.
|
||||
* @rotator_enabled_mask: Bit-mask that represents which rotators are enabled.
|
||||
* Relevant for Gaudi3 and later.
|
||||
* @engine_core_interrupt_reg_addr: interrupt register address for engine core to use
|
||||
* in order to raise events toward FW.
|
||||
* @reserved_dram_size: DRAM size reserved for driver and firmware.
|
||||
*/
|
||||
struct hl_info_hw_ip_info {
|
||||
__u64 sram_base_address;
|
||||
@ -902,15 +931,20 @@ struct hl_info_hw_ip_info {
|
||||
__u64 dram_page_size;
|
||||
__u32 edma_enabled_mask;
|
||||
__u16 number_of_user_interrupts;
|
||||
__u16 pad2;
|
||||
__u64 reserved4;
|
||||
__u8 reserved1;
|
||||
__u8 reserved2;
|
||||
__u64 reserved3;
|
||||
__u64 device_mem_alloc_default_page_size;
|
||||
__u64 reserved4;
|
||||
__u64 reserved5;
|
||||
__u64 reserved6;
|
||||
__u32 reserved7;
|
||||
__u8 reserved8;
|
||||
__u32 reserved6;
|
||||
__u8 reserved7;
|
||||
__u8 revision_id;
|
||||
__u8 pad[2];
|
||||
__u16 tpc_interrupt_id;
|
||||
__u32 rotator_enabled_mask;
|
||||
__u32 reserved9;
|
||||
__u64 engine_core_interrupt_reg_addr;
|
||||
__u64 reserved_dram_size;
|
||||
};
|
||||
|
||||
struct hl_info_dram_usage {
|
||||
@ -958,6 +992,7 @@ struct hl_info_reset_count {
|
||||
struct hl_info_time_sync {
|
||||
__u64 device_time;
|
||||
__u64 host_time;
|
||||
__u64 tsc_time;
|
||||
};
|
||||
|
||||
/**
|
||||
@ -1161,6 +1196,53 @@ struct hl_info_undefined_opcode_event {
|
||||
__u32 stream_id;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct hl_info_hw_err_event - info about HW error
|
||||
* @timestamp: timestamp of error occurrence
|
||||
* @event_id: The async event ID (specific to each device type).
|
||||
* @pad: size padding for u64 granularity.
|
||||
*/
|
||||
struct hl_info_hw_err_event {
|
||||
__s64 timestamp;
|
||||
__u16 event_id;
|
||||
__u16 pad[3];
|
||||
};
|
||||
|
||||
/* FW error definition for event_type in struct hl_info_fw_err_event */
|
||||
enum hl_info_fw_err_type {
|
||||
HL_INFO_FW_HEARTBEAT_ERR,
|
||||
HL_INFO_FW_REPORTED_ERR,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct hl_info_fw_err_event - info about FW error
|
||||
* @timestamp: time-stamp of error occurrence
|
||||
* @err_type: The type of event as defined in hl_info_fw_err_type.
|
||||
* @event_id: The async event ID (specific to each device type, applicable only when event type is
|
||||
* HL_INFO_FW_REPORTED_ERR).
|
||||
* @pad: size padding for u64 granularity.
|
||||
*/
|
||||
struct hl_info_fw_err_event {
|
||||
__s64 timestamp;
|
||||
__u16 err_type;
|
||||
__u16 event_id;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct hl_info_engine_err_event - engine error info
|
||||
* @timestamp: time-stamp of error occurrence
|
||||
* @engine_id: engine id who reported the error.
|
||||
* @error_count: Amount of errors reported.
|
||||
* @pad: size padding for u64 granularity.
|
||||
*/
|
||||
struct hl_info_engine_err_event {
|
||||
__s64 timestamp;
|
||||
__u16 engine_id;
|
||||
__u16 error_count;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct hl_info_dev_memalloc_page_sizes - valid page sizes in device mem alloc information.
|
||||
* @page_order_bitmask: bitmap in which a set bit represents the order of the supported page size
|
||||
@ -1175,6 +1257,7 @@ struct hl_info_dev_memalloc_page_sizes {
|
||||
#define SEC_SIGNATURE_BUF_SZ 255 /* (256 - 1) 1 byte used for size */
|
||||
#define SEC_PUB_DATA_BUF_SZ 510 /* (512 - 2) 2 bytes used for size */
|
||||
#define SEC_CERTIFICATE_BUF_SZ 2046 /* (2048 - 2) 2 bytes used for size */
|
||||
#define SEC_DEV_INFO_BUF_SZ 5120
|
||||
|
||||
/*
|
||||
* struct hl_info_sec_attest - attestation report of the boot
|
||||
@ -1209,6 +1292,32 @@ struct hl_info_sec_attest {
|
||||
__u8 pad0[2];
|
||||
};
|
||||
|
||||
/*
|
||||
* struct hl_info_signed - device information signed by a secured device.
|
||||
* @nonce: number only used once. random number provided by host. this also passed to the quote
|
||||
* command as a qualifying data.
|
||||
* @pub_data_len: length of the public data (bytes)
|
||||
* @certificate_len: length of the certificate (bytes)
|
||||
* @info_sig_len: length of the attestation signature (bytes)
|
||||
* @public_data: public key info signed info data (outPublic + name + qualifiedName)
|
||||
* @certificate: certificate for the signing key
|
||||
* @info_sig: signature of the info + nonce data.
|
||||
* @dev_info_len: length of device info (bytes)
|
||||
* @dev_info: device info as byte array.
|
||||
*/
|
||||
struct hl_info_signed {
|
||||
__u32 nonce;
|
||||
__u16 pub_data_len;
|
||||
__u16 certificate_len;
|
||||
__u8 info_sig_len;
|
||||
__u8 public_data[SEC_PUB_DATA_BUF_SZ];
|
||||
__u8 certificate[SEC_CERTIFICATE_BUF_SZ];
|
||||
__u8 info_sig[SEC_SIGNATURE_BUF_SZ];
|
||||
__u16 dev_info_len;
|
||||
__u8 dev_info[SEC_DEV_INFO_BUF_SZ];
|
||||
__u8 pad[2];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct hl_page_fault_info - page fault information.
|
||||
* @timestamp: timestamp of page fault.
|
||||
@ -1344,7 +1453,7 @@ union hl_cb_args {
|
||||
*
|
||||
* HL_CS_CHUNK_FLAGS_USER_ALLOC_CB:
|
||||
* Indicates if the CB was allocated and mapped by userspace
|
||||
* (relevant to greco and above). User allocated CB is a command buffer,
|
||||
* (relevant to Gaudi2 and later). User allocated CB is a command buffer,
|
||||
* allocated by the user, via malloc (or similar). After allocating the
|
||||
* CB, the user invokes - “memory ioctl” to map the user memory into a
|
||||
* device virtual address. The user provides this address via the
|
||||
@ -1369,7 +1478,7 @@ struct hl_cs_chunk {
|
||||
* a DRAM address of the internal CB. In Gaudi, this might also
|
||||
* represent a mapped host address of the CB.
|
||||
*
|
||||
* Greco onwards:
|
||||
* Gaudi2 onwards:
|
||||
* For H/W queue, this represents either a Handle of CB on the
|
||||
* Host, or an SRAM, a DRAM, or a mapped host address of the CB.
|
||||
*
|
||||
@ -1486,17 +1595,31 @@ struct hl_cs_chunk {
|
||||
*/
|
||||
#define HL_CS_FLAGS_FLUSH_PCI_HBW_WRITES 0x8000
|
||||
|
||||
/*
|
||||
* The engines CS is merged into the existing CS ioctls.
|
||||
* Use it to control engines modes.
|
||||
*/
|
||||
#define HL_CS_FLAGS_ENGINES_COMMAND 0x10000
|
||||
|
||||
#define HL_CS_STATUS_SUCCESS 0
|
||||
|
||||
#define HL_MAX_JOBS_PER_CS 512
|
||||
|
||||
/* HL_ENGINE_CORE_ values
|
||||
/*
|
||||
* enum hl_engine_command - engine command
|
||||
*
|
||||
* HL_ENGINE_CORE_HALT: engine core halt
|
||||
* HL_ENGINE_CORE_RUN: engine core run
|
||||
* @HL_ENGINE_CORE_HALT: engine core halt
|
||||
* @HL_ENGINE_CORE_RUN: engine core run
|
||||
* @HL_ENGINE_STALL: user engine/s stall
|
||||
* @HL_ENGINE_RESUME: user engine/s resume
|
||||
*/
|
||||
#define HL_ENGINE_CORE_HALT (1 << 0)
|
||||
#define HL_ENGINE_CORE_RUN (1 << 1)
|
||||
enum hl_engine_command {
|
||||
HL_ENGINE_CORE_HALT = 1,
|
||||
HL_ENGINE_CORE_RUN = 2,
|
||||
HL_ENGINE_STALL = 3,
|
||||
HL_ENGINE_RESUME = 4,
|
||||
HL_ENGINE_COMMAND_MAX
|
||||
};
|
||||
|
||||
struct hl_cs_in {
|
||||
|
||||
@ -1520,6 +1643,18 @@ struct hl_cs_in {
|
||||
/* the core command to be sent towards engine cores */
|
||||
__u32 core_command;
|
||||
};
|
||||
|
||||
/* Valid only when HL_CS_FLAGS_ENGINES_COMMAND is set */
|
||||
struct {
|
||||
/* this holds address of array of uint32 for engines */
|
||||
__u64 engines;
|
||||
|
||||
/* number of engines in engines array */
|
||||
__u32 num_engines;
|
||||
|
||||
/* the engine command to be sent towards engines */
|
||||
__u32 engine_command;
|
||||
};
|
||||
};
|
||||
|
||||
union {
|
||||
@ -2056,6 +2191,13 @@ struct hl_debug_args {
|
||||
__u32 ctx_id;
|
||||
};
|
||||
|
||||
#define HL_IOCTL_INFO 0x00
|
||||
#define HL_IOCTL_CB 0x01
|
||||
#define HL_IOCTL_CS 0x02
|
||||
#define HL_IOCTL_WAIT_CS 0x03
|
||||
#define HL_IOCTL_MEMORY 0x04
|
||||
#define HL_IOCTL_DEBUG 0x05
|
||||
|
||||
/*
|
||||
* Various information operations such as:
|
||||
* - H/W IP information
|
||||
@ -2070,8 +2212,7 @@ struct hl_debug_args {
|
||||
* definitions of structures in kernel and userspace, e.g. in case of old
|
||||
* userspace and new kernel driver
|
||||
*/
|
||||
#define HL_IOCTL_INFO \
|
||||
_IOWR('H', 0x01, struct hl_info_args)
|
||||
#define DRM_IOCTL_HL_INFO DRM_IOWR(DRM_COMMAND_BASE + HL_IOCTL_INFO, struct hl_info_args)
|
||||
|
||||
/*
|
||||
* Command Buffer
|
||||
@ -2092,8 +2233,7 @@ struct hl_debug_args {
|
||||
* and won't be returned to user.
|
||||
*
|
||||
*/
|
||||
#define HL_IOCTL_CB \
|
||||
_IOWR('H', 0x02, union hl_cb_args)
|
||||
#define DRM_IOCTL_HL_CB DRM_IOWR(DRM_COMMAND_BASE + HL_IOCTL_CB, union hl_cb_args)
|
||||
|
||||
/*
|
||||
* Command Submission
|
||||
@ -2115,7 +2255,7 @@ struct hl_debug_args {
|
||||
* internal. The driver will get completion notifications from the device only
|
||||
* on JOBS which are enqueued in the external queues.
|
||||
*
|
||||
* Greco onwards:
|
||||
* Gaudi2 onwards:
|
||||
* There is a single type of queue for all types of engines, either DMA engines
|
||||
* for transfers from/to the host or inside the device, or compute engines.
|
||||
* The driver will get completion notifications from the device for all queues.
|
||||
@ -2145,8 +2285,7 @@ struct hl_debug_args {
|
||||
* 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)
|
||||
#define DRM_IOCTL_HL_CS DRM_IOWR(DRM_COMMAND_BASE + HL_IOCTL_CS, union hl_cs_args)
|
||||
|
||||
/*
|
||||
* Wait for Command Submission
|
||||
@ -2178,9 +2317,7 @@ struct hl_debug_args {
|
||||
* HL_WAIT_CS_STATUS_ABORTED - The CS was aborted, usually because the
|
||||
* device was reset (EIO)
|
||||
*/
|
||||
|
||||
#define HL_IOCTL_WAIT_CS \
|
||||
_IOWR('H', 0x04, union hl_wait_cs_args)
|
||||
#define DRM_IOCTL_HL_WAIT_CS DRM_IOWR(DRM_COMMAND_BASE + HL_IOCTL_WAIT_CS, union hl_wait_cs_args)
|
||||
|
||||
/*
|
||||
* Memory
|
||||
@ -2197,8 +2334,7 @@ struct hl_debug_args {
|
||||
* There is an option for the user to specify the requested virtual address.
|
||||
*
|
||||
*/
|
||||
#define HL_IOCTL_MEMORY \
|
||||
_IOWR('H', 0x05, union hl_mem_args)
|
||||
#define DRM_IOCTL_HL_MEMORY DRM_IOWR(DRM_COMMAND_BASE + HL_IOCTL_MEMORY, union hl_mem_args)
|
||||
|
||||
/*
|
||||
* Debug
|
||||
@ -2224,10 +2360,9 @@ struct hl_debug_args {
|
||||
* The driver can decide to "kick out" the user if he abuses this interface.
|
||||
*
|
||||
*/
|
||||
#define HL_IOCTL_DEBUG \
|
||||
_IOWR('H', 0x06, struct hl_debug_args)
|
||||
#define DRM_IOCTL_HL_DEBUG DRM_IOWR(DRM_COMMAND_BASE + HL_IOCTL_DEBUG, struct hl_debug_args)
|
||||
|
||||
#define HL_COMMAND_START 0x01
|
||||
#define HL_COMMAND_END 0x07
|
||||
#define HL_COMMAND_START (DRM_COMMAND_BASE + HL_IOCTL_INFO)
|
||||
#define HL_COMMAND_END (DRM_COMMAND_BASE + HL_IOCTL_DEBUG + 1)
|
||||
|
||||
#endif /* HABANALABS_H_ */
|
||||
185
lib/libc/include/any-linux-any/drm/i915_drm.h
vendored
185
lib/libc/include/any-linux-any/drm/i915_drm.h
vendored
@ -38,13 +38,13 @@ extern "C" {
|
||||
*/
|
||||
|
||||
/**
|
||||
* DOC: uevents generated by i915 on it's device node
|
||||
* DOC: uevents generated by i915 on its device node
|
||||
*
|
||||
* I915_L3_PARITY_UEVENT - Generated when the driver receives a parity mismatch
|
||||
* event from the gpu l3 cache. Additional information supplied is ROW,
|
||||
* event from the GPU L3 cache. Additional information supplied is ROW,
|
||||
* BANK, SUBBANK, SLICE of the affected cacheline. Userspace should keep
|
||||
* track of these events and if a specific cache-line seems to have a
|
||||
* persistent error remap it with the l3 remapping tool supplied in
|
||||
* track of these events, and if a specific cache-line seems to have a
|
||||
* persistent error, remap it with the L3 remapping tool supplied in
|
||||
* intel-gpu-tools. The value supplied with the event is always 1.
|
||||
*
|
||||
* I915_ERROR_UEVENT - Generated upon error detection, currently only via
|
||||
@ -280,7 +280,16 @@ enum drm_i915_pmu_engine_sample {
|
||||
#define I915_PMU_ENGINE_SEMA(class, instance) \
|
||||
__I915_PMU_ENGINE(class, instance, I915_SAMPLE_SEMA)
|
||||
|
||||
#define __I915_PMU_OTHER(x) (__I915_PMU_ENGINE(0xff, 0xff, 0xf) + 1 + (x))
|
||||
/*
|
||||
* Top 4 bits of every non-engine counter are GT id.
|
||||
*/
|
||||
#define __I915_PMU_GT_SHIFT (60)
|
||||
|
||||
#define ___I915_PMU_OTHER(gt, x) \
|
||||
(((__u64)__I915_PMU_ENGINE(0xff, 0xff, 0xf) + 1 + (x)) | \
|
||||
((__u64)(gt) << __I915_PMU_GT_SHIFT))
|
||||
|
||||
#define __I915_PMU_OTHER(x) ___I915_PMU_OTHER(0, x)
|
||||
|
||||
#define I915_PMU_ACTUAL_FREQUENCY __I915_PMU_OTHER(0)
|
||||
#define I915_PMU_REQUESTED_FREQUENCY __I915_PMU_OTHER(1)
|
||||
@ -290,6 +299,12 @@ enum drm_i915_pmu_engine_sample {
|
||||
|
||||
#define I915_PMU_LAST /* Deprecated - do not use */ I915_PMU_RC6_RESIDENCY
|
||||
|
||||
#define __I915_PMU_ACTUAL_FREQUENCY(gt) ___I915_PMU_OTHER(gt, 0)
|
||||
#define __I915_PMU_REQUESTED_FREQUENCY(gt) ___I915_PMU_OTHER(gt, 1)
|
||||
#define __I915_PMU_INTERRUPTS(gt) ___I915_PMU_OTHER(gt, 2)
|
||||
#define __I915_PMU_RC6_RESIDENCY(gt) ___I915_PMU_OTHER(gt, 3)
|
||||
#define __I915_PMU_SOFTWARE_GT_AWAKE_TIME(gt) ___I915_PMU_OTHER(gt, 4)
|
||||
|
||||
/* Each region is a minimum of 16k, and there are at most 255 of them.
|
||||
*/
|
||||
#define I915_NR_TEX_REGIONS 255 /* table size 2k - maximum due to use
|
||||
@ -659,7 +674,8 @@ typedef struct drm_i915_irq_wait {
|
||||
* If the IOCTL is successful, the returned parameter will be set to one of the
|
||||
* following values:
|
||||
* * 0 if HuC firmware load is not complete,
|
||||
* * 1 if HuC firmware is authenticated and running.
|
||||
* * 1 if HuC firmware is loaded and fully authenticated,
|
||||
* * 2 if HuC firmware is loaded and authenticated for clear media only
|
||||
*/
|
||||
#define I915_PARAM_HUC_STATUS 42
|
||||
|
||||
@ -677,7 +693,7 @@ typedef struct drm_i915_irq_wait {
|
||||
#define I915_PARAM_HAS_EXEC_FENCE 44
|
||||
|
||||
/* Query whether DRM_I915_GEM_EXECBUFFER2 supports the ability to capture
|
||||
* user specified bufffers for post-mortem debugging of GPU hangs. See
|
||||
* user-specified buffers for post-mortem debugging of GPU hangs. See
|
||||
* EXEC_OBJECT_CAPTURE.
|
||||
*/
|
||||
#define I915_PARAM_HAS_EXEC_CAPTURE 45
|
||||
@ -771,6 +787,31 @@ typedef struct drm_i915_irq_wait {
|
||||
*/
|
||||
#define I915_PARAM_OA_TIMESTAMP_FREQUENCY 57
|
||||
|
||||
/*
|
||||
* Query the status of PXP support in i915.
|
||||
*
|
||||
* The query can fail in the following scenarios with the listed error codes:
|
||||
* -ENODEV = PXP support is not available on the GPU device or in the
|
||||
* kernel due to missing component drivers or kernel configs.
|
||||
*
|
||||
* If the IOCTL is successful, the returned parameter will be set to one of
|
||||
* the following values:
|
||||
* 1 = PXP feature is supported and is ready for use.
|
||||
* 2 = PXP feature is supported but should be ready soon (pending
|
||||
* initialization of non-i915 system dependencies).
|
||||
*
|
||||
* NOTE: When param is supported (positive return values), user space should
|
||||
* still refer to the GEM PXP context-creation UAPI header specs to be
|
||||
* aware of possible failure due to system state machine at the time.
|
||||
*/
|
||||
#define I915_PARAM_PXP_STATUS 58
|
||||
|
||||
/*
|
||||
* Query if kernel allows marking a context to send a Freq hint to SLPC. This
|
||||
* will enable use of the strategies allowed by the SLPC algorithm.
|
||||
*/
|
||||
#define I915_PARAM_HAS_CONTEXT_FREQ_HINT 59
|
||||
|
||||
/* Must be kept compact -- no holes and well documented */
|
||||
|
||||
/**
|
||||
@ -1571,7 +1612,7 @@ struct drm_i915_gem_busy {
|
||||
* is accurate.
|
||||
*
|
||||
* The returned dword is split into two fields to indicate both
|
||||
* the engine classess on which the object is being read, and the
|
||||
* the engine classes 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
|
||||
@ -1780,7 +1821,7 @@ struct drm_i915_gem_madvise {
|
||||
__u32 handle;
|
||||
|
||||
/* Advice: either the buffer will be needed again in the near future,
|
||||
* or wont be and could be discarded under memory pressure.
|
||||
* or won't be and could be discarded under memory pressure.
|
||||
*/
|
||||
__u32 madv;
|
||||
|
||||
@ -2096,8 +2137,32 @@ struct drm_i915_gem_context_param {
|
||||
*
|
||||
* -ENODEV: feature not available
|
||||
* -EPERM: trying to mark a recoverable or not bannable context as protected
|
||||
* -ENXIO: A dependency such as a component driver or firmware is not yet
|
||||
* loaded so user space may need to attempt again. Depending on the
|
||||
* device, this error may be reported if protected context creation is
|
||||
* attempted very early after kernel start because the internal timeout
|
||||
* waiting for such dependencies is not guaranteed to be larger than
|
||||
* required (numbers differ depending on system and kernel config):
|
||||
* - ADL/RPL: dependencies may take up to 3 seconds from kernel start
|
||||
* while context creation internal timeout is 250 milisecs
|
||||
* - MTL: dependencies may take up to 8 seconds from kernel start
|
||||
* while context creation internal timeout is 250 milisecs
|
||||
* NOTE: such dependencies happen once, so a subsequent call to create a
|
||||
* protected context after a prior successful call will not experience
|
||||
* such timeouts and will not return -ENXIO (unless the driver is reloaded,
|
||||
* or, depending on the device, resumes from a suspended state).
|
||||
* -EIO: The firmware did not succeed in creating the protected context.
|
||||
*/
|
||||
#define I915_CONTEXT_PARAM_PROTECTED_CONTENT 0xd
|
||||
|
||||
/*
|
||||
* I915_CONTEXT_PARAM_LOW_LATENCY:
|
||||
*
|
||||
* Mark this context as a low latency workload which requires aggressive GT
|
||||
* frequency scaling. Use I915_PARAM_HAS_CONTEXT_FREQ_HINT to check if the kernel
|
||||
* supports this per context flag.
|
||||
*/
|
||||
#define I915_CONTEXT_PARAM_LOW_LATENCY 0xe
|
||||
/* Must be kept compact -- no holes and well documented */
|
||||
|
||||
/** @value: Context parameter value to be set or queried */
|
||||
@ -2491,7 +2556,7 @@ struct i915_context_param_engines {
|
||||
#define I915_CONTEXT_ENGINES_EXT_LOAD_BALANCE 0 /* see i915_context_engines_load_balance */
|
||||
#define I915_CONTEXT_ENGINES_EXT_BOND 1 /* see i915_context_engines_bond */
|
||||
#define I915_CONTEXT_ENGINES_EXT_PARALLEL_SUBMIT 2 /* see i915_context_engines_parallel_submit */
|
||||
struct i915_engine_class_instance engines[0];
|
||||
struct i915_engine_class_instance engines[];
|
||||
} __attribute__((packed));
|
||||
|
||||
#define I915_DEFINE_CONTEXT_PARAM_ENGINES(name__, N__) struct { \
|
||||
@ -2573,19 +2638,29 @@ struct drm_i915_reg_read {
|
||||
*
|
||||
*/
|
||||
|
||||
/*
|
||||
* struct drm_i915_reset_stats - Return global reset and other context stats
|
||||
*
|
||||
* Driver keeps few stats for each contexts and also global reset count.
|
||||
* This struct can be used to query those stats.
|
||||
*/
|
||||
struct drm_i915_reset_stats {
|
||||
/** @ctx_id: ID of the requested context */
|
||||
__u32 ctx_id;
|
||||
|
||||
/** @flags: MBZ */
|
||||
__u32 flags;
|
||||
|
||||
/* All resets since boot/module reload, for all contexts */
|
||||
/** @reset_count: All resets since boot/module reload, for all contexts */
|
||||
__u32 reset_count;
|
||||
|
||||
/* Number of batches lost when active in GPU, for this context */
|
||||
/** @batch_active: Number of batches lost when active in GPU, for this context */
|
||||
__u32 batch_active;
|
||||
|
||||
/* Number of batches lost pending for execution, for this context */
|
||||
/** @batch_pending: Number of batches lost pending for execution, for this context */
|
||||
__u32 batch_pending;
|
||||
|
||||
/** @pad: MBZ */
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
@ -2676,6 +2751,10 @@ enum drm_i915_oa_format {
|
||||
I915_OAR_FORMAT_A32u40_A4u32_B8_C8,
|
||||
I915_OA_FORMAT_A24u40_A14u32_B8_C8,
|
||||
|
||||
/* MTL OAM */
|
||||
I915_OAM_FORMAT_MPEC8u64_B8_C8,
|
||||
I915_OAM_FORMAT_MPEC8u32_B8_C8,
|
||||
|
||||
I915_OA_FORMAT_MAX /* non-ABI */
|
||||
};
|
||||
|
||||
@ -2758,6 +2837,25 @@ enum drm_i915_perf_property_id {
|
||||
*/
|
||||
DRM_I915_PERF_PROP_POLL_OA_PERIOD,
|
||||
|
||||
/**
|
||||
* Multiple engines may be mapped to the same OA unit. The OA unit is
|
||||
* identified by class:instance of any engine mapped to it.
|
||||
*
|
||||
* This parameter specifies the engine class and must be passed along
|
||||
* with DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE.
|
||||
*
|
||||
* This property is available in perf revision 6.
|
||||
*/
|
||||
DRM_I915_PERF_PROP_OA_ENGINE_CLASS,
|
||||
|
||||
/**
|
||||
* This parameter specifies the engine instance and must be passed along
|
||||
* with DRM_I915_PERF_PROP_OA_ENGINE_CLASS.
|
||||
*
|
||||
* This property is available in perf revision 6.
|
||||
*/
|
||||
DRM_I915_PERF_PROP_OA_ENGINE_INSTANCE,
|
||||
|
||||
DRM_I915_PERF_PROP_MAX /* non-ABI */
|
||||
};
|
||||
|
||||
@ -2940,6 +3038,7 @@ struct drm_i915_query_item {
|
||||
* - %DRM_I915_QUERY_MEMORY_REGIONS (see struct drm_i915_query_memory_regions)
|
||||
* - %DRM_I915_QUERY_HWCONFIG_BLOB (see `GuC HWCONFIG blob uAPI`)
|
||||
* - %DRM_I915_QUERY_GEOMETRY_SUBSLICES (see struct drm_i915_query_topology_info)
|
||||
* - %DRM_I915_QUERY_GUC_SUBMISSION_VERSION (see struct drm_i915_query_guc_submission_version)
|
||||
*/
|
||||
__u64 query_id;
|
||||
#define DRM_I915_QUERY_TOPOLOGY_INFO 1
|
||||
@ -2948,6 +3047,7 @@ struct drm_i915_query_item {
|
||||
#define DRM_I915_QUERY_MEMORY_REGIONS 4
|
||||
#define DRM_I915_QUERY_HWCONFIG_BLOB 5
|
||||
#define DRM_I915_QUERY_GEOMETRY_SUBSLICES 6
|
||||
#define DRM_I915_QUERY_GUC_SUBMISSION_VERSION 7
|
||||
/* Must be kept compact -- no holes and well documented */
|
||||
|
||||
/**
|
||||
@ -3183,7 +3283,7 @@ struct drm_i915_query_topology_info {
|
||||
* // Now that we allocated the required number of bytes, we call the ioctl
|
||||
* // again, this time with the data_ptr pointing to our newly allocated
|
||||
* // blob, which the kernel can then populate with info on all engines.
|
||||
* item.data_ptr = (uintptr_t)&info,
|
||||
* item.data_ptr = (uintptr_t)&info;
|
||||
*
|
||||
* err = ioctl(fd, DRM_IOCTL_I915_QUERY, &query);
|
||||
* if (err) ...
|
||||
@ -3213,7 +3313,7 @@ struct drm_i915_query_topology_info {
|
||||
/**
|
||||
* struct drm_i915_engine_info
|
||||
*
|
||||
* Describes one engine and it's capabilities as known to the driver.
|
||||
* Describes one engine and its capabilities as known to the driver.
|
||||
*/
|
||||
struct drm_i915_engine_info {
|
||||
/** @engine: Engine class and instance. */
|
||||
@ -3493,6 +3593,20 @@ struct drm_i915_query_memory_regions {
|
||||
struct drm_i915_memory_region_info regions[];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_i915_query_guc_submission_version - query GuC submission interface version
|
||||
*/
|
||||
struct drm_i915_query_guc_submission_version {
|
||||
/** @branch: Firmware branch version. */
|
||||
__u32 branch;
|
||||
/** @major: Firmware major version. */
|
||||
__u32 major;
|
||||
/** @minor: Firmware minor version. */
|
||||
__u32 minor;
|
||||
/** @patch: Firmware patch version. */
|
||||
__u32 patch;
|
||||
};
|
||||
|
||||
/**
|
||||
* DOC: GuC HWCONFIG blob uAPI
|
||||
*
|
||||
@ -3607,9 +3721,13 @@ struct drm_i915_gem_create_ext {
|
||||
*
|
||||
* For I915_GEM_CREATE_EXT_PROTECTED_CONTENT usage see
|
||||
* struct drm_i915_gem_create_ext_protected_content.
|
||||
*
|
||||
* For I915_GEM_CREATE_EXT_SET_PAT usage see
|
||||
* struct drm_i915_gem_create_ext_set_pat.
|
||||
*/
|
||||
#define I915_GEM_CREATE_EXT_MEMORY_REGIONS 0
|
||||
#define I915_GEM_CREATE_EXT_PROTECTED_CONTENT 1
|
||||
#define I915_GEM_CREATE_EXT_SET_PAT 2
|
||||
__u64 extensions;
|
||||
};
|
||||
|
||||
@ -3724,6 +3842,43 @@ struct drm_i915_gem_create_ext_protected_content {
|
||||
__u32 flags;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_i915_gem_create_ext_set_pat - The
|
||||
* I915_GEM_CREATE_EXT_SET_PAT extension.
|
||||
*
|
||||
* If this extension is provided, the specified caching policy (PAT index) is
|
||||
* applied to the buffer object.
|
||||
*
|
||||
* Below is an example on how to create an object with specific caching policy:
|
||||
*
|
||||
* .. code-block:: C
|
||||
*
|
||||
* struct drm_i915_gem_create_ext_set_pat set_pat_ext = {
|
||||
* .base = { .name = I915_GEM_CREATE_EXT_SET_PAT },
|
||||
* .pat_index = 0,
|
||||
* };
|
||||
* struct drm_i915_gem_create_ext create_ext = {
|
||||
* .size = PAGE_SIZE,
|
||||
* .extensions = (uintptr_t)&set_pat_ext,
|
||||
* };
|
||||
*
|
||||
* int err = ioctl(fd, DRM_IOCTL_I915_GEM_CREATE_EXT, &create_ext);
|
||||
* if (err) ...
|
||||
*/
|
||||
struct drm_i915_gem_create_ext_set_pat {
|
||||
/** @base: Extension link. See struct i915_user_extension. */
|
||||
struct i915_user_extension base;
|
||||
/**
|
||||
* @pat_index: PAT index to be set
|
||||
* PAT index is a bit field in Page Table Entry to control caching
|
||||
* behaviors for GPU accesses. The definition of PAT index is
|
||||
* platform dependent and can be found in hardware specifications,
|
||||
*/
|
||||
__u32 pat_index;
|
||||
/** @rsvd: reserved for future use */
|
||||
__u32 rsvd;
|
||||
};
|
||||
|
||||
/* ID of the protected content session managed by i915 when PXP is active */
|
||||
#define I915_PROTECTED_CONTENT_DEFAULT_SESSION 0xf
|
||||
|
||||
|
||||
51
lib/libc/include/any-linux-any/drm/ivpu_accel.h
vendored
51
lib/libc/include/any-linux-any/drm/ivpu_accel.h
vendored
@ -53,21 +53,44 @@ extern "C" {
|
||||
#define DRM_IVPU_PARAM_CORE_CLOCK_RATE 3
|
||||
#define DRM_IVPU_PARAM_NUM_CONTEXTS 4
|
||||
#define DRM_IVPU_PARAM_CONTEXT_BASE_ADDRESS 5
|
||||
#define DRM_IVPU_PARAM_CONTEXT_PRIORITY 6
|
||||
#define DRM_IVPU_PARAM_CONTEXT_PRIORITY 6 /* Deprecated */
|
||||
#define DRM_IVPU_PARAM_CONTEXT_ID 7
|
||||
#define DRM_IVPU_PARAM_FW_API_VERSION 8
|
||||
#define DRM_IVPU_PARAM_ENGINE_HEARTBEAT 9
|
||||
#define DRM_IVPU_PARAM_UNIQUE_INFERENCE_ID 10
|
||||
#define DRM_IVPU_PARAM_TILE_CONFIG 11
|
||||
#define DRM_IVPU_PARAM_SKU 12
|
||||
#define DRM_IVPU_PARAM_CAPABILITIES 13
|
||||
|
||||
#define DRM_IVPU_PLATFORM_TYPE_SILICON 0
|
||||
|
||||
/* Deprecated, use DRM_IVPU_JOB_PRIORITY */
|
||||
#define DRM_IVPU_CONTEXT_PRIORITY_IDLE 0
|
||||
#define DRM_IVPU_CONTEXT_PRIORITY_NORMAL 1
|
||||
#define DRM_IVPU_CONTEXT_PRIORITY_FOCUS 2
|
||||
#define DRM_IVPU_CONTEXT_PRIORITY_REALTIME 3
|
||||
|
||||
#define DRM_IVPU_JOB_PRIORITY_DEFAULT 0
|
||||
#define DRM_IVPU_JOB_PRIORITY_IDLE 1
|
||||
#define DRM_IVPU_JOB_PRIORITY_NORMAL 2
|
||||
#define DRM_IVPU_JOB_PRIORITY_FOCUS 3
|
||||
#define DRM_IVPU_JOB_PRIORITY_REALTIME 4
|
||||
|
||||
/**
|
||||
* DRM_IVPU_CAP_METRIC_STREAMER
|
||||
*
|
||||
* Metric streamer support. Provides sampling of various hardware performance
|
||||
* metrics like DMA bandwidth and cache miss/hits. Can be used for profiling.
|
||||
*/
|
||||
#define DRM_IVPU_CAP_METRIC_STREAMER 1
|
||||
/**
|
||||
* DRM_IVPU_CAP_DMA_MEMORY_RANGE
|
||||
*
|
||||
* Driver has capability to allocate separate memory range
|
||||
* accessible by hardware DMA.
|
||||
*/
|
||||
#define DRM_IVPU_CAP_DMA_MEMORY_RANGE 2
|
||||
|
||||
/**
|
||||
* struct drm_ivpu_param - Get/Set VPU parameters
|
||||
*/
|
||||
@ -96,10 +119,6 @@ struct drm_ivpu_param {
|
||||
* %DRM_IVPU_PARAM_CONTEXT_BASE_ADDRESS:
|
||||
* Lowest VPU virtual address available in the current context (read-only)
|
||||
*
|
||||
* %DRM_IVPU_PARAM_CONTEXT_PRIORITY:
|
||||
* Value of current context scheduling priority (read-write).
|
||||
* See DRM_IVPU_CONTEXT_PRIORITY_* for possible values.
|
||||
*
|
||||
* %DRM_IVPU_PARAM_CONTEXT_ID:
|
||||
* Current context ID, always greater than 0 (read-only)
|
||||
*
|
||||
@ -119,6 +138,8 @@ struct drm_ivpu_param {
|
||||
* %DRM_IVPU_PARAM_SKU:
|
||||
* VPU SKU ID (read-only)
|
||||
*
|
||||
* %DRM_IVPU_PARAM_CAPABILITIES:
|
||||
* Supported capabilities (read-only)
|
||||
*/
|
||||
__u32 param;
|
||||
|
||||
@ -129,8 +150,10 @@ struct drm_ivpu_param {
|
||||
__u64 value;
|
||||
};
|
||||
|
||||
#define DRM_IVPU_BO_HIGH_MEM 0x00000001
|
||||
#define DRM_IVPU_BO_SHAVE_MEM 0x00000001
|
||||
#define DRM_IVPU_BO_HIGH_MEM DRM_IVPU_BO_SHAVE_MEM
|
||||
#define DRM_IVPU_BO_MAPPABLE 0x00000002
|
||||
#define DRM_IVPU_BO_DMA_MEM 0x00000004
|
||||
|
||||
#define DRM_IVPU_BO_CACHED 0x00000000
|
||||
#define DRM_IVPU_BO_UNCACHED 0x00010000
|
||||
@ -140,6 +163,7 @@ struct drm_ivpu_param {
|
||||
#define DRM_IVPU_BO_FLAGS \
|
||||
(DRM_IVPU_BO_HIGH_MEM | \
|
||||
DRM_IVPU_BO_MAPPABLE | \
|
||||
DRM_IVPU_BO_DMA_MEM | \
|
||||
DRM_IVPU_BO_CACHE_MASK)
|
||||
|
||||
/**
|
||||
@ -175,7 +199,7 @@ struct drm_ivpu_bo_create {
|
||||
*
|
||||
* %DRM_IVPU_BO_UNCACHED:
|
||||
*
|
||||
* Allocated BO will not be cached on host side nor snooped on the VPU side.
|
||||
* Not supported. Use DRM_IVPU_BO_WC instead.
|
||||
*
|
||||
* %DRM_IVPU_BO_WC:
|
||||
*
|
||||
@ -265,10 +289,23 @@ struct drm_ivpu_submit {
|
||||
* to be executed. The offset has to be 8-byte aligned.
|
||||
*/
|
||||
__u32 commands_offset;
|
||||
|
||||
/**
|
||||
* @priority:
|
||||
*
|
||||
* Priority to be set for related job command queue, can be one of the following:
|
||||
* %DRM_IVPU_JOB_PRIORITY_DEFAULT
|
||||
* %DRM_IVPU_JOB_PRIORITY_IDLE
|
||||
* %DRM_IVPU_JOB_PRIORITY_NORMAL
|
||||
* %DRM_IVPU_JOB_PRIORITY_FOCUS
|
||||
* %DRM_IVPU_JOB_PRIORITY_REALTIME
|
||||
*/
|
||||
__u32 priority;
|
||||
};
|
||||
|
||||
/* drm_ivpu_bo_wait job status codes */
|
||||
#define DRM_IVPU_JOB_STATUS_SUCCESS 0
|
||||
#define DRM_IVPU_JOB_STATUS_ABORTED 256
|
||||
|
||||
/**
|
||||
* struct drm_ivpu_bo_wait - Wait for BO to become inactive
|
||||
|
||||
21
lib/libc/include/any-linux-any/drm/msm_drm.h
vendored
21
lib/libc/include/any-linux-any/drm/msm_drm.h
vendored
@ -86,6 +86,7 @@ struct drm_msm_timespec {
|
||||
#define MSM_PARAM_CMDLINE 0x0d /* WO: override for task cmdline */
|
||||
#define MSM_PARAM_VA_START 0x0e /* RO: start of valid GPU iova range */
|
||||
#define MSM_PARAM_VA_SIZE 0x0f /* RO: size of valid GPU iova range (bytes) */
|
||||
#define MSM_PARAM_HIGHEST_BANK_BIT 0x10 /* RO */
|
||||
|
||||
/* For backwards compat. The original support for preemption was based on
|
||||
* a single ring per priority level so # of priority levels equals the #
|
||||
@ -139,6 +140,8 @@ struct drm_msm_gem_new {
|
||||
#define MSM_INFO_GET_NAME 0x03 /* get debug name, returned by pointer */
|
||||
#define MSM_INFO_SET_IOVA 0x04 /* set the iova, passed by value */
|
||||
#define MSM_INFO_GET_FLAGS 0x05 /* get the MSM_BO_x flags */
|
||||
#define MSM_INFO_SET_METADATA 0x06 /* set userspace metadata */
|
||||
#define MSM_INFO_GET_METADATA 0x07 /* get userspace metadata */
|
||||
|
||||
struct drm_msm_gem_info {
|
||||
__u32 handle; /* in */
|
||||
@ -151,8 +154,13 @@ struct drm_msm_gem_info {
|
||||
#define MSM_PREP_READ 0x01
|
||||
#define MSM_PREP_WRITE 0x02
|
||||
#define MSM_PREP_NOSYNC 0x04
|
||||
#define MSM_PREP_BOOST 0x08
|
||||
|
||||
#define MSM_PREP_FLAGS (MSM_PREP_READ | MSM_PREP_WRITE | MSM_PREP_NOSYNC)
|
||||
#define MSM_PREP_FLAGS (MSM_PREP_READ | \
|
||||
MSM_PREP_WRITE | \
|
||||
MSM_PREP_NOSYNC | \
|
||||
MSM_PREP_BOOST | \
|
||||
0)
|
||||
|
||||
struct drm_msm_gem_cpu_prep {
|
||||
__u32 handle; /* in */
|
||||
@ -181,7 +189,11 @@ struct drm_msm_gem_cpu_fini {
|
||||
*/
|
||||
struct drm_msm_gem_submit_reloc {
|
||||
__u32 submit_offset; /* in, offset from submit_bo */
|
||||
#ifdef __cplusplus
|
||||
__u32 _or; /* in, value OR'd with result */
|
||||
#else
|
||||
__u32 or; /* in, value OR'd with result */
|
||||
#endif
|
||||
__s32 shift; /* in, amount of left shift (can be negative) */
|
||||
__u32 reloc_idx; /* in, index of reloc_bo buffer */
|
||||
__u64 reloc_offset; /* in, offset from start of reloc_bo */
|
||||
@ -286,6 +298,11 @@ struct drm_msm_gem_submit {
|
||||
|
||||
};
|
||||
|
||||
#define MSM_WAIT_FENCE_BOOST 0x00000001
|
||||
#define MSM_WAIT_FENCE_FLAGS ( \
|
||||
MSM_WAIT_FENCE_BOOST | \
|
||||
0)
|
||||
|
||||
/* The normal way to synchronize with the GPU is just to CPU_PREP on
|
||||
* a buffer if you need to access it from the CPU (other cmdstream
|
||||
* submission from same or other contexts, PAGE_FLIP ioctl, etc, all
|
||||
@ -295,7 +312,7 @@ struct drm_msm_gem_submit {
|
||||
*/
|
||||
struct drm_msm_wait_fence {
|
||||
__u32 fence; /* in */
|
||||
__u32 pad;
|
||||
__u32 flags; /* in, bitmask of MSM_WAIT_FENCE_x */
|
||||
struct drm_msm_timespec timeout; /* in */
|
||||
__u32 queueid; /* in, submitqueue id */
|
||||
};
|
||||
|
||||
322
lib/libc/include/any-linux-any/drm/nouveau_drm.h
vendored
322
lib/libc/include/any-linux-any/drm/nouveau_drm.h
vendored
@ -33,11 +33,104 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define NOUVEAU_GETPARAM_PCI_VENDOR 3
|
||||
#define NOUVEAU_GETPARAM_PCI_DEVICE 4
|
||||
#define NOUVEAU_GETPARAM_BUS_TYPE 5
|
||||
#define NOUVEAU_GETPARAM_FB_SIZE 8
|
||||
#define NOUVEAU_GETPARAM_AGP_SIZE 9
|
||||
#define NOUVEAU_GETPARAM_CHIPSET_ID 11
|
||||
#define NOUVEAU_GETPARAM_VM_VRAM_BASE 12
|
||||
#define NOUVEAU_GETPARAM_GRAPH_UNITS 13
|
||||
#define NOUVEAU_GETPARAM_PTIMER_TIME 14
|
||||
#define NOUVEAU_GETPARAM_HAS_BO_USAGE 15
|
||||
#define NOUVEAU_GETPARAM_HAS_PAGEFLIP 16
|
||||
|
||||
/*
|
||||
* NOUVEAU_GETPARAM_EXEC_PUSH_MAX - query max pushes through getparam
|
||||
*
|
||||
* Query the maximum amount of IBs that can be pushed through a single
|
||||
* &drm_nouveau_exec structure and hence a single &DRM_IOCTL_NOUVEAU_EXEC
|
||||
* ioctl().
|
||||
*/
|
||||
#define NOUVEAU_GETPARAM_EXEC_PUSH_MAX 17
|
||||
|
||||
/*
|
||||
* NOUVEAU_GETPARAM_VRAM_BAR_SIZE - query bar size
|
||||
*
|
||||
* Query the VRAM BAR size.
|
||||
*/
|
||||
#define NOUVEAU_GETPARAM_VRAM_BAR_SIZE 18
|
||||
|
||||
/*
|
||||
* NOUVEAU_GETPARAM_VRAM_USED
|
||||
*
|
||||
* Get remaining VRAM size.
|
||||
*/
|
||||
#define NOUVEAU_GETPARAM_VRAM_USED 19
|
||||
|
||||
/*
|
||||
* NOUVEAU_GETPARAM_HAS_VMA_TILEMODE
|
||||
*
|
||||
* Query whether tile mode and PTE kind are accepted with VM allocs or not.
|
||||
*/
|
||||
#define NOUVEAU_GETPARAM_HAS_VMA_TILEMODE 20
|
||||
|
||||
struct drm_nouveau_getparam {
|
||||
__u64 param;
|
||||
__u64 value;
|
||||
};
|
||||
|
||||
/*
|
||||
* Those are used to support selecting the main engine used on Kepler.
|
||||
* This goes into drm_nouveau_channel_alloc::tt_ctxdma_handle
|
||||
*/
|
||||
#define NOUVEAU_FIFO_ENGINE_GR 0x01
|
||||
#define NOUVEAU_FIFO_ENGINE_VP 0x02
|
||||
#define NOUVEAU_FIFO_ENGINE_PPP 0x04
|
||||
#define NOUVEAU_FIFO_ENGINE_BSP 0x08
|
||||
#define NOUVEAU_FIFO_ENGINE_CE 0x30
|
||||
|
||||
struct drm_nouveau_channel_alloc {
|
||||
__u32 fb_ctxdma_handle;
|
||||
__u32 tt_ctxdma_handle;
|
||||
|
||||
__s32 channel;
|
||||
__u32 pushbuf_domains;
|
||||
|
||||
/* Notifier memory */
|
||||
__u32 notifier_handle;
|
||||
|
||||
/* DRM-enforced subchannel assignments */
|
||||
struct {
|
||||
__u32 handle;
|
||||
__u32 grclass;
|
||||
} subchan[8];
|
||||
__u32 nr_subchan;
|
||||
};
|
||||
|
||||
struct drm_nouveau_channel_free {
|
||||
__s32 channel;
|
||||
};
|
||||
|
||||
struct drm_nouveau_notifierobj_alloc {
|
||||
__u32 channel;
|
||||
__u32 handle;
|
||||
__u32 size;
|
||||
__u32 offset;
|
||||
};
|
||||
|
||||
struct drm_nouveau_gpuobj_free {
|
||||
__s32 channel;
|
||||
__u32 handle;
|
||||
};
|
||||
|
||||
#define NOUVEAU_GEM_DOMAIN_CPU (1 << 0)
|
||||
#define NOUVEAU_GEM_DOMAIN_VRAM (1 << 1)
|
||||
#define NOUVEAU_GEM_DOMAIN_GART (1 << 2)
|
||||
#define NOUVEAU_GEM_DOMAIN_MAPPABLE (1 << 3)
|
||||
#define NOUVEAU_GEM_DOMAIN_COHERENT (1 << 4)
|
||||
/* The BO will never be shared via import or export. */
|
||||
#define NOUVEAU_GEM_DOMAIN_NO_SHARE (1 << 5)
|
||||
|
||||
#define NOUVEAU_GEM_TILE_COMP 0x00030000 /* nv50-only */
|
||||
#define NOUVEAU_GEM_TILE_LAYOUT_MASK 0x0000ff00
|
||||
@ -98,6 +191,7 @@ struct drm_nouveau_gem_pushbuf_push {
|
||||
__u32 pad;
|
||||
__u64 offset;
|
||||
__u64 length;
|
||||
#define NOUVEAU_GEM_PUSHBUF_NO_PREFETCH (1 << 23)
|
||||
};
|
||||
|
||||
struct drm_nouveau_gem_pushbuf {
|
||||
@ -126,16 +220,231 @@ struct drm_nouveau_gem_cpu_fini {
|
||||
__u32 handle;
|
||||
};
|
||||
|
||||
#define DRM_NOUVEAU_GETPARAM 0x00 /* deprecated */
|
||||
/**
|
||||
* struct drm_nouveau_sync - sync object
|
||||
*
|
||||
* This structure serves as synchronization mechanism for (potentially)
|
||||
* asynchronous operations such as EXEC or VM_BIND.
|
||||
*/
|
||||
struct drm_nouveau_sync {
|
||||
/**
|
||||
* @flags: the flags for a sync object
|
||||
*
|
||||
* The first 8 bits are used to determine the type of the sync object.
|
||||
*/
|
||||
__u32 flags;
|
||||
#define DRM_NOUVEAU_SYNC_SYNCOBJ 0x0
|
||||
#define DRM_NOUVEAU_SYNC_TIMELINE_SYNCOBJ 0x1
|
||||
#define DRM_NOUVEAU_SYNC_TYPE_MASK 0xf
|
||||
/**
|
||||
* @handle: the handle of the sync object
|
||||
*/
|
||||
__u32 handle;
|
||||
/**
|
||||
* @timeline_value:
|
||||
*
|
||||
* The timeline point of the sync object in case the syncobj is of
|
||||
* type DRM_NOUVEAU_SYNC_TIMELINE_SYNCOBJ.
|
||||
*/
|
||||
__u64 timeline_value;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_nouveau_vm_init - GPU VA space init structure
|
||||
*
|
||||
* Used to initialize the GPU's VA space for a user client, telling the kernel
|
||||
* which portion of the VA space is managed by the UMD and kernel respectively.
|
||||
*
|
||||
* For the UMD to use the VM_BIND uAPI, this must be called before any BOs or
|
||||
* channels are created; if called afterwards DRM_IOCTL_NOUVEAU_VM_INIT fails
|
||||
* with -ENOSYS.
|
||||
*/
|
||||
struct drm_nouveau_vm_init {
|
||||
/**
|
||||
* @kernel_managed_addr: start address of the kernel managed VA space
|
||||
* region
|
||||
*/
|
||||
__u64 kernel_managed_addr;
|
||||
/**
|
||||
* @kernel_managed_size: size of the kernel managed VA space region in
|
||||
* bytes
|
||||
*/
|
||||
__u64 kernel_managed_size;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_nouveau_vm_bind_op - VM_BIND operation
|
||||
*
|
||||
* This structure represents a single VM_BIND operation. UMDs should pass
|
||||
* an array of this structure via struct drm_nouveau_vm_bind's &op_ptr field.
|
||||
*/
|
||||
struct drm_nouveau_vm_bind_op {
|
||||
/**
|
||||
* @op: the operation type
|
||||
*
|
||||
* Supported values:
|
||||
*
|
||||
* %DRM_NOUVEAU_VM_BIND_OP_MAP - Map a GEM object to the GPU's VA
|
||||
* space. Optionally, the &DRM_NOUVEAU_VM_BIND_SPARSE flag can be
|
||||
* passed to instruct the kernel to create sparse mappings for the
|
||||
* given range.
|
||||
*
|
||||
* %DRM_NOUVEAU_VM_BIND_OP_UNMAP - Unmap an existing mapping in the
|
||||
* GPU's VA space. If the region the mapping is located in is a
|
||||
* sparse region, new sparse mappings are created where the unmapped
|
||||
* (memory backed) mapping was mapped previously. To remove a sparse
|
||||
* region the &DRM_NOUVEAU_VM_BIND_SPARSE must be set.
|
||||
*/
|
||||
__u32 op;
|
||||
#define DRM_NOUVEAU_VM_BIND_OP_MAP 0x0
|
||||
#define DRM_NOUVEAU_VM_BIND_OP_UNMAP 0x1
|
||||
/**
|
||||
* @flags: the flags for a &drm_nouveau_vm_bind_op
|
||||
*
|
||||
* Supported values:
|
||||
*
|
||||
* %DRM_NOUVEAU_VM_BIND_SPARSE - Indicates that an allocated VA
|
||||
* space region should be sparse.
|
||||
*/
|
||||
__u32 flags;
|
||||
#define DRM_NOUVEAU_VM_BIND_SPARSE (1 << 8)
|
||||
/**
|
||||
* @handle: the handle of the DRM GEM object to map
|
||||
*/
|
||||
__u32 handle;
|
||||
/**
|
||||
* @pad: 32 bit padding, should be 0
|
||||
*/
|
||||
__u32 pad;
|
||||
/**
|
||||
* @addr:
|
||||
*
|
||||
* the address the VA space region or (memory backed) mapping should be mapped to
|
||||
*/
|
||||
__u64 addr;
|
||||
/**
|
||||
* @bo_offset: the offset within the BO backing the mapping
|
||||
*/
|
||||
__u64 bo_offset;
|
||||
/**
|
||||
* @range: the size of the requested mapping in bytes
|
||||
*/
|
||||
__u64 range;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_nouveau_vm_bind - structure for DRM_IOCTL_NOUVEAU_VM_BIND
|
||||
*/
|
||||
struct drm_nouveau_vm_bind {
|
||||
/**
|
||||
* @op_count: the number of &drm_nouveau_vm_bind_op
|
||||
*/
|
||||
__u32 op_count;
|
||||
/**
|
||||
* @flags: the flags for a &drm_nouveau_vm_bind ioctl
|
||||
*
|
||||
* Supported values:
|
||||
*
|
||||
* %DRM_NOUVEAU_VM_BIND_RUN_ASYNC - Indicates that the given VM_BIND
|
||||
* operation should be executed asynchronously by the kernel.
|
||||
*
|
||||
* If this flag is not supplied the kernel executes the associated
|
||||
* operations synchronously and doesn't accept any &drm_nouveau_sync
|
||||
* objects.
|
||||
*/
|
||||
__u32 flags;
|
||||
#define DRM_NOUVEAU_VM_BIND_RUN_ASYNC 0x1
|
||||
/**
|
||||
* @wait_count: the number of wait &drm_nouveau_syncs
|
||||
*/
|
||||
__u32 wait_count;
|
||||
/**
|
||||
* @sig_count: the number of &drm_nouveau_syncs to signal when finished
|
||||
*/
|
||||
__u32 sig_count;
|
||||
/**
|
||||
* @wait_ptr: pointer to &drm_nouveau_syncs to wait for
|
||||
*/
|
||||
__u64 wait_ptr;
|
||||
/**
|
||||
* @sig_ptr: pointer to &drm_nouveau_syncs to signal when finished
|
||||
*/
|
||||
__u64 sig_ptr;
|
||||
/**
|
||||
* @op_ptr: pointer to the &drm_nouveau_vm_bind_ops to execute
|
||||
*/
|
||||
__u64 op_ptr;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_nouveau_exec_push - EXEC push operation
|
||||
*
|
||||
* This structure represents a single EXEC push operation. UMDs should pass an
|
||||
* array of this structure via struct drm_nouveau_exec's &push_ptr field.
|
||||
*/
|
||||
struct drm_nouveau_exec_push {
|
||||
/**
|
||||
* @va: the virtual address of the push buffer mapping
|
||||
*/
|
||||
__u64 va;
|
||||
/**
|
||||
* @va_len: the length of the push buffer mapping
|
||||
*/
|
||||
__u32 va_len;
|
||||
/**
|
||||
* @flags: the flags for this push buffer mapping
|
||||
*/
|
||||
__u32 flags;
|
||||
#define DRM_NOUVEAU_EXEC_PUSH_NO_PREFETCH 0x1
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_nouveau_exec - structure for DRM_IOCTL_NOUVEAU_EXEC
|
||||
*/
|
||||
struct drm_nouveau_exec {
|
||||
/**
|
||||
* @channel: the channel to execute the push buffer in
|
||||
*/
|
||||
__u32 channel;
|
||||
/**
|
||||
* @push_count: the number of &drm_nouveau_exec_push ops
|
||||
*/
|
||||
__u32 push_count;
|
||||
/**
|
||||
* @wait_count: the number of wait &drm_nouveau_syncs
|
||||
*/
|
||||
__u32 wait_count;
|
||||
/**
|
||||
* @sig_count: the number of &drm_nouveau_syncs to signal when finished
|
||||
*/
|
||||
__u32 sig_count;
|
||||
/**
|
||||
* @wait_ptr: pointer to &drm_nouveau_syncs to wait for
|
||||
*/
|
||||
__u64 wait_ptr;
|
||||
/**
|
||||
* @sig_ptr: pointer to &drm_nouveau_syncs to signal when finished
|
||||
*/
|
||||
__u64 sig_ptr;
|
||||
/**
|
||||
* @push_ptr: pointer to &drm_nouveau_exec_push ops
|
||||
*/
|
||||
__u64 push_ptr;
|
||||
};
|
||||
|
||||
#define DRM_NOUVEAU_GETPARAM 0x00
|
||||
#define DRM_NOUVEAU_SETPARAM 0x01 /* deprecated */
|
||||
#define DRM_NOUVEAU_CHANNEL_ALLOC 0x02 /* deprecated */
|
||||
#define DRM_NOUVEAU_CHANNEL_FREE 0x03 /* deprecated */
|
||||
#define DRM_NOUVEAU_CHANNEL_ALLOC 0x02
|
||||
#define DRM_NOUVEAU_CHANNEL_FREE 0x03
|
||||
#define DRM_NOUVEAU_GROBJ_ALLOC 0x04 /* deprecated */
|
||||
#define DRM_NOUVEAU_NOTIFIEROBJ_ALLOC 0x05 /* deprecated */
|
||||
#define DRM_NOUVEAU_GPUOBJ_FREE 0x06 /* deprecated */
|
||||
#define DRM_NOUVEAU_NVIF 0x07
|
||||
#define DRM_NOUVEAU_SVM_INIT 0x08
|
||||
#define DRM_NOUVEAU_SVM_BIND 0x09
|
||||
#define DRM_NOUVEAU_VM_INIT 0x10
|
||||
#define DRM_NOUVEAU_VM_BIND 0x11
|
||||
#define DRM_NOUVEAU_EXEC 0x12
|
||||
#define DRM_NOUVEAU_GEM_NEW 0x40
|
||||
#define DRM_NOUVEAU_GEM_PUSHBUF 0x41
|
||||
#define DRM_NOUVEAU_GEM_CPU_PREP 0x42
|
||||
@ -188,6 +497,10 @@ struct drm_nouveau_svm_bind {
|
||||
#define NOUVEAU_SVM_BIND_TARGET__GPU_VRAM (1UL << 31)
|
||||
|
||||
|
||||
#define DRM_IOCTL_NOUVEAU_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GETPARAM, struct drm_nouveau_getparam)
|
||||
#define DRM_IOCTL_NOUVEAU_CHANNEL_ALLOC DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_CHANNEL_ALLOC, struct drm_nouveau_channel_alloc)
|
||||
#define DRM_IOCTL_NOUVEAU_CHANNEL_FREE DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_CHANNEL_FREE, struct drm_nouveau_channel_free)
|
||||
|
||||
#define DRM_IOCTL_NOUVEAU_SVM_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_SVM_INIT, struct drm_nouveau_svm_init)
|
||||
#define DRM_IOCTL_NOUVEAU_SVM_BIND DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_SVM_BIND, struct drm_nouveau_svm_bind)
|
||||
|
||||
@ -197,6 +510,9 @@ struct drm_nouveau_svm_bind {
|
||||
#define DRM_IOCTL_NOUVEAU_GEM_CPU_FINI DRM_IOW (DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_FINI, struct drm_nouveau_gem_cpu_fini)
|
||||
#define DRM_IOCTL_NOUVEAU_GEM_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_INFO, struct drm_nouveau_gem_info)
|
||||
|
||||
#define DRM_IOCTL_NOUVEAU_VM_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_VM_INIT, struct drm_nouveau_vm_init)
|
||||
#define DRM_IOCTL_NOUVEAU_VM_BIND DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_VM_BIND, struct drm_nouveau_vm_bind)
|
||||
#define DRM_IOCTL_NOUVEAU_EXEC DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_EXEC, struct drm_nouveau_exec)
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
962
lib/libc/include/any-linux-any/drm/panthor_drm.h
vendored
Normal file
962
lib/libc/include/any-linux-any/drm/panthor_drm.h
vendored
Normal file
@ -0,0 +1,962 @@
|
||||
/* SPDX-License-Identifier: MIT */
|
||||
/* Copyright (C) 2023 Collabora ltd. */
|
||||
#ifndef _PANTHOR_DRM_H_
|
||||
#define _PANTHOR_DRM_H_
|
||||
|
||||
#include "drm.h"
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* DOC: Introduction
|
||||
*
|
||||
* This documentation describes the Panthor IOCTLs.
|
||||
*
|
||||
* Just a few generic rules about the data passed to the Panthor IOCTLs:
|
||||
*
|
||||
* - Structures must be aligned on 64-bit/8-byte. If the object is not
|
||||
* naturally aligned, a padding field must be added.
|
||||
* - Fields must be explicitly aligned to their natural type alignment with
|
||||
* pad[0..N] fields.
|
||||
* - All padding fields will be checked by the driver to make sure they are
|
||||
* zeroed.
|
||||
* - Flags can be added, but not removed/replaced.
|
||||
* - New fields can be added to the main structures (the structures
|
||||
* directly passed to the ioctl). Those fields can be added at the end of
|
||||
* the structure, or replace existing padding fields. Any new field being
|
||||
* added must preserve the behavior that existed before those fields were
|
||||
* added when a value of zero is passed.
|
||||
* - New fields can be added to indirect objects (objects pointed by the
|
||||
* main structure), iff those objects are passed a size to reflect the
|
||||
* size known by the userspace driver (see drm_panthor_obj_array::stride
|
||||
* or drm_panthor_dev_query::size).
|
||||
* - If the kernel driver is too old to know some fields, those will be
|
||||
* ignored if zero, and otherwise rejected (and so will be zero on output).
|
||||
* - If userspace is too old to know some fields, those will be zeroed
|
||||
* (input) before the structure is parsed by the kernel driver.
|
||||
* - Each new flag/field addition must come with a driver version update so
|
||||
* the userspace driver doesn't have to trial and error to know which
|
||||
* flags are supported.
|
||||
* - Structures should not contain unions, as this would defeat the
|
||||
* extensibility of such structures.
|
||||
* - IOCTLs can't be removed or replaced. New IOCTL IDs should be placed
|
||||
* at the end of the drm_panthor_ioctl_id enum.
|
||||
*/
|
||||
|
||||
/**
|
||||
* DOC: MMIO regions exposed to userspace.
|
||||
*
|
||||
* .. c:macro:: DRM_PANTHOR_USER_MMIO_OFFSET
|
||||
*
|
||||
* File offset for all MMIO regions being exposed to userspace. Don't use
|
||||
* this value directly, use DRM_PANTHOR_USER_<name>_OFFSET values instead.
|
||||
* pgoffset passed to mmap2() is an unsigned long, which forces us to use a
|
||||
* different offset on 32-bit and 64-bit systems.
|
||||
*
|
||||
* .. c:macro:: DRM_PANTHOR_USER_FLUSH_ID_MMIO_OFFSET
|
||||
*
|
||||
* File offset for the LATEST_FLUSH_ID register. The Userspace driver controls
|
||||
* GPU cache flushing through CS instructions, but the flush reduction
|
||||
* mechanism requires a flush_id. This flush_id could be queried with an
|
||||
* ioctl, but Arm provides a well-isolated register page containing only this
|
||||
* read-only register, so let's expose this page through a static mmap offset
|
||||
* and allow direct mapping of this MMIO region so we can avoid the
|
||||
* user <-> kernel round-trip.
|
||||
*/
|
||||
#define DRM_PANTHOR_USER_MMIO_OFFSET_32BIT (1ull << 43)
|
||||
#define DRM_PANTHOR_USER_MMIO_OFFSET_64BIT (1ull << 56)
|
||||
#define DRM_PANTHOR_USER_MMIO_OFFSET (sizeof(unsigned long) < 8 ? \
|
||||
DRM_PANTHOR_USER_MMIO_OFFSET_32BIT : \
|
||||
DRM_PANTHOR_USER_MMIO_OFFSET_64BIT)
|
||||
#define DRM_PANTHOR_USER_FLUSH_ID_MMIO_OFFSET (DRM_PANTHOR_USER_MMIO_OFFSET | 0)
|
||||
|
||||
/**
|
||||
* DOC: IOCTL IDs
|
||||
*
|
||||
* enum drm_panthor_ioctl_id - IOCTL IDs
|
||||
*
|
||||
* Place new ioctls at the end, don't re-order, don't replace or remove entries.
|
||||
*
|
||||
* These IDs are not meant to be used directly. Use the DRM_IOCTL_PANTHOR_xxx
|
||||
* definitions instead.
|
||||
*/
|
||||
enum drm_panthor_ioctl_id {
|
||||
/** @DRM_PANTHOR_DEV_QUERY: Query device information. */
|
||||
DRM_PANTHOR_DEV_QUERY = 0,
|
||||
|
||||
/** @DRM_PANTHOR_VM_CREATE: Create a VM. */
|
||||
DRM_PANTHOR_VM_CREATE,
|
||||
|
||||
/** @DRM_PANTHOR_VM_DESTROY: Destroy a VM. */
|
||||
DRM_PANTHOR_VM_DESTROY,
|
||||
|
||||
/** @DRM_PANTHOR_VM_BIND: Bind/unbind memory to a VM. */
|
||||
DRM_PANTHOR_VM_BIND,
|
||||
|
||||
/** @DRM_PANTHOR_VM_GET_STATE: Get VM state. */
|
||||
DRM_PANTHOR_VM_GET_STATE,
|
||||
|
||||
/** @DRM_PANTHOR_BO_CREATE: Create a buffer object. */
|
||||
DRM_PANTHOR_BO_CREATE,
|
||||
|
||||
/**
|
||||
* @DRM_PANTHOR_BO_MMAP_OFFSET: Get the file offset to pass to
|
||||
* mmap to map a GEM object.
|
||||
*/
|
||||
DRM_PANTHOR_BO_MMAP_OFFSET,
|
||||
|
||||
/** @DRM_PANTHOR_GROUP_CREATE: Create a scheduling group. */
|
||||
DRM_PANTHOR_GROUP_CREATE,
|
||||
|
||||
/** @DRM_PANTHOR_GROUP_DESTROY: Destroy a scheduling group. */
|
||||
DRM_PANTHOR_GROUP_DESTROY,
|
||||
|
||||
/**
|
||||
* @DRM_PANTHOR_GROUP_SUBMIT: Submit jobs to queues belonging
|
||||
* to a specific scheduling group.
|
||||
*/
|
||||
DRM_PANTHOR_GROUP_SUBMIT,
|
||||
|
||||
/** @DRM_PANTHOR_GROUP_GET_STATE: Get the state of a scheduling group. */
|
||||
DRM_PANTHOR_GROUP_GET_STATE,
|
||||
|
||||
/** @DRM_PANTHOR_TILER_HEAP_CREATE: Create a tiler heap. */
|
||||
DRM_PANTHOR_TILER_HEAP_CREATE,
|
||||
|
||||
/** @DRM_PANTHOR_TILER_HEAP_DESTROY: Destroy a tiler heap. */
|
||||
DRM_PANTHOR_TILER_HEAP_DESTROY,
|
||||
};
|
||||
|
||||
/**
|
||||
* DRM_IOCTL_PANTHOR() - Build a Panthor IOCTL number
|
||||
* @__access: Access type. Must be R, W or RW.
|
||||
* @__id: One of the DRM_PANTHOR_xxx id.
|
||||
* @__type: Suffix of the type being passed to the IOCTL.
|
||||
*
|
||||
* Don't use this macro directly, use the DRM_IOCTL_PANTHOR_xxx
|
||||
* values instead.
|
||||
*
|
||||
* Return: An IOCTL number to be passed to ioctl() from userspace.
|
||||
*/
|
||||
#define DRM_IOCTL_PANTHOR(__access, __id, __type) \
|
||||
DRM_IO ## __access(DRM_COMMAND_BASE + DRM_PANTHOR_ ## __id, \
|
||||
struct drm_panthor_ ## __type)
|
||||
|
||||
#define DRM_IOCTL_PANTHOR_DEV_QUERY \
|
||||
DRM_IOCTL_PANTHOR(WR, DEV_QUERY, dev_query)
|
||||
#define DRM_IOCTL_PANTHOR_VM_CREATE \
|
||||
DRM_IOCTL_PANTHOR(WR, VM_CREATE, vm_create)
|
||||
#define DRM_IOCTL_PANTHOR_VM_DESTROY \
|
||||
DRM_IOCTL_PANTHOR(WR, VM_DESTROY, vm_destroy)
|
||||
#define DRM_IOCTL_PANTHOR_VM_BIND \
|
||||
DRM_IOCTL_PANTHOR(WR, VM_BIND, vm_bind)
|
||||
#define DRM_IOCTL_PANTHOR_VM_GET_STATE \
|
||||
DRM_IOCTL_PANTHOR(WR, VM_GET_STATE, vm_get_state)
|
||||
#define DRM_IOCTL_PANTHOR_BO_CREATE \
|
||||
DRM_IOCTL_PANTHOR(WR, BO_CREATE, bo_create)
|
||||
#define DRM_IOCTL_PANTHOR_BO_MMAP_OFFSET \
|
||||
DRM_IOCTL_PANTHOR(WR, BO_MMAP_OFFSET, bo_mmap_offset)
|
||||
#define DRM_IOCTL_PANTHOR_GROUP_CREATE \
|
||||
DRM_IOCTL_PANTHOR(WR, GROUP_CREATE, group_create)
|
||||
#define DRM_IOCTL_PANTHOR_GROUP_DESTROY \
|
||||
DRM_IOCTL_PANTHOR(WR, GROUP_DESTROY, group_destroy)
|
||||
#define DRM_IOCTL_PANTHOR_GROUP_SUBMIT \
|
||||
DRM_IOCTL_PANTHOR(WR, GROUP_SUBMIT, group_submit)
|
||||
#define DRM_IOCTL_PANTHOR_GROUP_GET_STATE \
|
||||
DRM_IOCTL_PANTHOR(WR, GROUP_GET_STATE, group_get_state)
|
||||
#define DRM_IOCTL_PANTHOR_TILER_HEAP_CREATE \
|
||||
DRM_IOCTL_PANTHOR(WR, TILER_HEAP_CREATE, tiler_heap_create)
|
||||
#define DRM_IOCTL_PANTHOR_TILER_HEAP_DESTROY \
|
||||
DRM_IOCTL_PANTHOR(WR, TILER_HEAP_DESTROY, tiler_heap_destroy)
|
||||
|
||||
/**
|
||||
* DOC: IOCTL arguments
|
||||
*/
|
||||
|
||||
/**
|
||||
* struct drm_panthor_obj_array - Object array.
|
||||
*
|
||||
* This object is used to pass an array of objects whose size is subject to changes in
|
||||
* future versions of the driver. In order to support this mutability, we pass a stride
|
||||
* describing the size of the object as known by userspace.
|
||||
*
|
||||
* You shouldn't fill drm_panthor_obj_array fields directly. You should instead use
|
||||
* the DRM_PANTHOR_OBJ_ARRAY() macro that takes care of initializing the stride to
|
||||
* the object size.
|
||||
*/
|
||||
struct drm_panthor_obj_array {
|
||||
/** @stride: Stride of object struct. Used for versioning. */
|
||||
__u32 stride;
|
||||
|
||||
/** @count: Number of objects in the array. */
|
||||
__u32 count;
|
||||
|
||||
/** @array: User pointer to an array of objects. */
|
||||
__u64 array;
|
||||
};
|
||||
|
||||
/**
|
||||
* DRM_PANTHOR_OBJ_ARRAY() - Initialize a drm_panthor_obj_array field.
|
||||
* @cnt: Number of elements in the array.
|
||||
* @ptr: Pointer to the array to pass to the kernel.
|
||||
*
|
||||
* Macro initializing a drm_panthor_obj_array based on the object size as known
|
||||
* by userspace.
|
||||
*/
|
||||
#define DRM_PANTHOR_OBJ_ARRAY(cnt, ptr) \
|
||||
{ .stride = sizeof((ptr)[0]), .count = (cnt), .array = (__u64)(uintptr_t)(ptr) }
|
||||
|
||||
/**
|
||||
* enum drm_panthor_sync_op_flags - Synchronization operation flags.
|
||||
*/
|
||||
enum drm_panthor_sync_op_flags {
|
||||
/** @DRM_PANTHOR_SYNC_OP_HANDLE_TYPE_MASK: Synchronization handle type mask. */
|
||||
DRM_PANTHOR_SYNC_OP_HANDLE_TYPE_MASK = 0xff,
|
||||
|
||||
/** @DRM_PANTHOR_SYNC_OP_HANDLE_TYPE_SYNCOBJ: Synchronization object type. */
|
||||
DRM_PANTHOR_SYNC_OP_HANDLE_TYPE_SYNCOBJ = 0,
|
||||
|
||||
/**
|
||||
* @DRM_PANTHOR_SYNC_OP_HANDLE_TYPE_TIMELINE_SYNCOBJ: Timeline synchronization
|
||||
* object type.
|
||||
*/
|
||||
DRM_PANTHOR_SYNC_OP_HANDLE_TYPE_TIMELINE_SYNCOBJ = 1,
|
||||
|
||||
/** @DRM_PANTHOR_SYNC_OP_WAIT: Wait operation. */
|
||||
DRM_PANTHOR_SYNC_OP_WAIT = 0 << 31,
|
||||
|
||||
/** @DRM_PANTHOR_SYNC_OP_SIGNAL: Signal operation. */
|
||||
DRM_PANTHOR_SYNC_OP_SIGNAL = (int)(1u << 31),
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_sync_op - Synchronization operation.
|
||||
*/
|
||||
struct drm_panthor_sync_op {
|
||||
/** @flags: Synchronization operation flags. Combination of DRM_PANTHOR_SYNC_OP values. */
|
||||
__u32 flags;
|
||||
|
||||
/** @handle: Sync handle. */
|
||||
__u32 handle;
|
||||
|
||||
/**
|
||||
* @timeline_value: MBZ if
|
||||
* (flags & DRM_PANTHOR_SYNC_OP_HANDLE_TYPE_MASK) !=
|
||||
* DRM_PANTHOR_SYNC_OP_HANDLE_TYPE_TIMELINE_SYNCOBJ.
|
||||
*/
|
||||
__u64 timeline_value;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum drm_panthor_dev_query_type - Query type
|
||||
*
|
||||
* Place new types at the end, don't re-order, don't remove or replace.
|
||||
*/
|
||||
enum drm_panthor_dev_query_type {
|
||||
/** @DRM_PANTHOR_DEV_QUERY_GPU_INFO: Query GPU information. */
|
||||
DRM_PANTHOR_DEV_QUERY_GPU_INFO = 0,
|
||||
|
||||
/** @DRM_PANTHOR_DEV_QUERY_CSIF_INFO: Query command-stream interface information. */
|
||||
DRM_PANTHOR_DEV_QUERY_CSIF_INFO,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_gpu_info - GPU information
|
||||
*
|
||||
* Structure grouping all queryable information relating to the GPU.
|
||||
*/
|
||||
struct drm_panthor_gpu_info {
|
||||
/** @gpu_id : GPU ID. */
|
||||
__u32 gpu_id;
|
||||
#define DRM_PANTHOR_ARCH_MAJOR(x) ((x) >> 28)
|
||||
#define DRM_PANTHOR_ARCH_MINOR(x) (((x) >> 24) & 0xf)
|
||||
#define DRM_PANTHOR_ARCH_REV(x) (((x) >> 20) & 0xf)
|
||||
#define DRM_PANTHOR_PRODUCT_MAJOR(x) (((x) >> 16) & 0xf)
|
||||
#define DRM_PANTHOR_VERSION_MAJOR(x) (((x) >> 12) & 0xf)
|
||||
#define DRM_PANTHOR_VERSION_MINOR(x) (((x) >> 4) & 0xff)
|
||||
#define DRM_PANTHOR_VERSION_STATUS(x) ((x) & 0xf)
|
||||
|
||||
/** @gpu_rev: GPU revision. */
|
||||
__u32 gpu_rev;
|
||||
|
||||
/** @csf_id: Command stream frontend ID. */
|
||||
__u32 csf_id;
|
||||
#define DRM_PANTHOR_CSHW_MAJOR(x) (((x) >> 26) & 0x3f)
|
||||
#define DRM_PANTHOR_CSHW_MINOR(x) (((x) >> 20) & 0x3f)
|
||||
#define DRM_PANTHOR_CSHW_REV(x) (((x) >> 16) & 0xf)
|
||||
#define DRM_PANTHOR_MCU_MAJOR(x) (((x) >> 10) & 0x3f)
|
||||
#define DRM_PANTHOR_MCU_MINOR(x) (((x) >> 4) & 0x3f)
|
||||
#define DRM_PANTHOR_MCU_REV(x) ((x) & 0xf)
|
||||
|
||||
/** @l2_features: L2-cache features. */
|
||||
__u32 l2_features;
|
||||
|
||||
/** @tiler_features: Tiler features. */
|
||||
__u32 tiler_features;
|
||||
|
||||
/** @mem_features: Memory features. */
|
||||
__u32 mem_features;
|
||||
|
||||
/** @mmu_features: MMU features. */
|
||||
__u32 mmu_features;
|
||||
#define DRM_PANTHOR_MMU_VA_BITS(x) ((x) & 0xff)
|
||||
|
||||
/** @thread_features: Thread features. */
|
||||
__u32 thread_features;
|
||||
|
||||
/** @max_threads: Maximum number of threads. */
|
||||
__u32 max_threads;
|
||||
|
||||
/** @thread_max_workgroup_size: Maximum workgroup size. */
|
||||
__u32 thread_max_workgroup_size;
|
||||
|
||||
/**
|
||||
* @thread_max_barrier_size: Maximum number of threads that can wait
|
||||
* simultaneously on a barrier.
|
||||
*/
|
||||
__u32 thread_max_barrier_size;
|
||||
|
||||
/** @coherency_features: Coherency features. */
|
||||
__u32 coherency_features;
|
||||
|
||||
/** @texture_features: Texture features. */
|
||||
__u32 texture_features[4];
|
||||
|
||||
/** @as_present: Bitmask encoding the number of address-space exposed by the MMU. */
|
||||
__u32 as_present;
|
||||
|
||||
/** @shader_present: Bitmask encoding the shader cores exposed by the GPU. */
|
||||
__u64 shader_present;
|
||||
|
||||
/** @l2_present: Bitmask encoding the L2 caches exposed by the GPU. */
|
||||
__u64 l2_present;
|
||||
|
||||
/** @tiler_present: Bitmask encoding the tiler units exposed by the GPU. */
|
||||
__u64 tiler_present;
|
||||
|
||||
/** @core_features: Used to discriminate core variants when they exist. */
|
||||
__u32 core_features;
|
||||
|
||||
/** @pad: MBZ. */
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_csif_info - Command stream interface information
|
||||
*
|
||||
* Structure grouping all queryable information relating to the command stream interface.
|
||||
*/
|
||||
struct drm_panthor_csif_info {
|
||||
/** @csg_slot_count: Number of command stream group slots exposed by the firmware. */
|
||||
__u32 csg_slot_count;
|
||||
|
||||
/** @cs_slot_count: Number of command stream slots per group. */
|
||||
__u32 cs_slot_count;
|
||||
|
||||
/** @cs_reg_count: Number of command stream registers. */
|
||||
__u32 cs_reg_count;
|
||||
|
||||
/** @scoreboard_slot_count: Number of scoreboard slots. */
|
||||
__u32 scoreboard_slot_count;
|
||||
|
||||
/**
|
||||
* @unpreserved_cs_reg_count: Number of command stream registers reserved by
|
||||
* the kernel driver to call a userspace command stream.
|
||||
*
|
||||
* All registers can be used by a userspace command stream, but the
|
||||
* [cs_slot_count - unpreserved_cs_reg_count .. cs_slot_count] registers are
|
||||
* used by the kernel when DRM_PANTHOR_IOCTL_GROUP_SUBMIT is called.
|
||||
*/
|
||||
__u32 unpreserved_cs_reg_count;
|
||||
|
||||
/**
|
||||
* @pad: Padding field, set to zero.
|
||||
*/
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_dev_query - Arguments passed to DRM_PANTHOR_IOCTL_DEV_QUERY
|
||||
*/
|
||||
struct drm_panthor_dev_query {
|
||||
/** @type: the query type (see drm_panthor_dev_query_type). */
|
||||
__u32 type;
|
||||
|
||||
/**
|
||||
* @size: size of the type being queried.
|
||||
*
|
||||
* If pointer is NULL, size is updated by the driver to provide the
|
||||
* output structure size. If pointer is not NULL, the driver will
|
||||
* only copy min(size, actual_structure_size) bytes to the pointer,
|
||||
* and update the size accordingly. This allows us to extend query
|
||||
* types without breaking userspace.
|
||||
*/
|
||||
__u32 size;
|
||||
|
||||
/**
|
||||
* @pointer: user pointer to a query type struct.
|
||||
*
|
||||
* Pointer can be NULL, in which case, nothing is copied, but the
|
||||
* actual structure size is returned. If not NULL, it must point to
|
||||
* a location that's large enough to hold size bytes.
|
||||
*/
|
||||
__u64 pointer;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_vm_create - Arguments passed to DRM_PANTHOR_IOCTL_VM_CREATE
|
||||
*/
|
||||
struct drm_panthor_vm_create {
|
||||
/** @flags: VM flags, MBZ. */
|
||||
__u32 flags;
|
||||
|
||||
/** @id: Returned VM ID. */
|
||||
__u32 id;
|
||||
|
||||
/**
|
||||
* @user_va_range: Size of the VA space reserved for user objects.
|
||||
*
|
||||
* The kernel will pick the remaining space to map kernel-only objects to the
|
||||
* VM (heap chunks, heap context, ring buffers, kernel synchronization objects,
|
||||
* ...). If the space left for kernel objects is too small, kernel object
|
||||
* allocation will fail further down the road. One can use
|
||||
* drm_panthor_gpu_info::mmu_features to extract the total virtual address
|
||||
* range, and chose a user_va_range that leaves some space to the kernel.
|
||||
*
|
||||
* If user_va_range is zero, the kernel will pick a sensible value based on
|
||||
* TASK_SIZE and the virtual range supported by the GPU MMU (the kernel/user
|
||||
* split should leave enough VA space for userspace processes to support SVM,
|
||||
* while still allowing the kernel to map some amount of kernel objects in
|
||||
* the kernel VA range). The value chosen by the driver will be returned in
|
||||
* @user_va_range.
|
||||
*
|
||||
* User VA space always starts at 0x0, kernel VA space is always placed after
|
||||
* the user VA range.
|
||||
*/
|
||||
__u64 user_va_range;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_vm_destroy - Arguments passed to DRM_PANTHOR_IOCTL_VM_DESTROY
|
||||
*/
|
||||
struct drm_panthor_vm_destroy {
|
||||
/** @id: ID of the VM to destroy. */
|
||||
__u32 id;
|
||||
|
||||
/** @pad: MBZ. */
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum drm_panthor_vm_bind_op_flags - VM bind operation flags
|
||||
*/
|
||||
enum drm_panthor_vm_bind_op_flags {
|
||||
/**
|
||||
* @DRM_PANTHOR_VM_BIND_OP_MAP_READONLY: Map the memory read-only.
|
||||
*
|
||||
* Only valid with DRM_PANTHOR_VM_BIND_OP_TYPE_MAP.
|
||||
*/
|
||||
DRM_PANTHOR_VM_BIND_OP_MAP_READONLY = 1 << 0,
|
||||
|
||||
/**
|
||||
* @DRM_PANTHOR_VM_BIND_OP_MAP_NOEXEC: Map the memory not-executable.
|
||||
*
|
||||
* Only valid with DRM_PANTHOR_VM_BIND_OP_TYPE_MAP.
|
||||
*/
|
||||
DRM_PANTHOR_VM_BIND_OP_MAP_NOEXEC = 1 << 1,
|
||||
|
||||
/**
|
||||
* @DRM_PANTHOR_VM_BIND_OP_MAP_UNCACHED: Map the memory uncached.
|
||||
*
|
||||
* Only valid with DRM_PANTHOR_VM_BIND_OP_TYPE_MAP.
|
||||
*/
|
||||
DRM_PANTHOR_VM_BIND_OP_MAP_UNCACHED = 1 << 2,
|
||||
|
||||
/**
|
||||
* @DRM_PANTHOR_VM_BIND_OP_TYPE_MASK: Mask used to determine the type of operation.
|
||||
*/
|
||||
DRM_PANTHOR_VM_BIND_OP_TYPE_MASK = (int)(0xfu << 28),
|
||||
|
||||
/** @DRM_PANTHOR_VM_BIND_OP_TYPE_MAP: Map operation. */
|
||||
DRM_PANTHOR_VM_BIND_OP_TYPE_MAP = 0 << 28,
|
||||
|
||||
/** @DRM_PANTHOR_VM_BIND_OP_TYPE_UNMAP: Unmap operation. */
|
||||
DRM_PANTHOR_VM_BIND_OP_TYPE_UNMAP = 1 << 28,
|
||||
|
||||
/**
|
||||
* @DRM_PANTHOR_VM_BIND_OP_TYPE_SYNC_ONLY: No VM operation.
|
||||
*
|
||||
* Just serves as a synchronization point on a VM queue.
|
||||
*
|
||||
* Only valid if %DRM_PANTHOR_VM_BIND_ASYNC is set in drm_panthor_vm_bind::flags,
|
||||
* and drm_panthor_vm_bind_op::syncs contains at least one element.
|
||||
*/
|
||||
DRM_PANTHOR_VM_BIND_OP_TYPE_SYNC_ONLY = 2 << 28,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_vm_bind_op - VM bind operation
|
||||
*/
|
||||
struct drm_panthor_vm_bind_op {
|
||||
/** @flags: Combination of drm_panthor_vm_bind_op_flags flags. */
|
||||
__u32 flags;
|
||||
|
||||
/**
|
||||
* @bo_handle: Handle of the buffer object to map.
|
||||
* MBZ for unmap or sync-only operations.
|
||||
*/
|
||||
__u32 bo_handle;
|
||||
|
||||
/**
|
||||
* @bo_offset: Buffer object offset.
|
||||
* MBZ for unmap or sync-only operations.
|
||||
*/
|
||||
__u64 bo_offset;
|
||||
|
||||
/**
|
||||
* @va: Virtual address to map/unmap.
|
||||
* MBZ for sync-only operations.
|
||||
*/
|
||||
__u64 va;
|
||||
|
||||
/**
|
||||
* @size: Size to map/unmap.
|
||||
* MBZ for sync-only operations.
|
||||
*/
|
||||
__u64 size;
|
||||
|
||||
/**
|
||||
* @syncs: Array of struct drm_panthor_sync_op synchronization
|
||||
* operations.
|
||||
*
|
||||
* This array must be empty if %DRM_PANTHOR_VM_BIND_ASYNC is not set on
|
||||
* the drm_panthor_vm_bind object containing this VM bind operation.
|
||||
*
|
||||
* This array shall not be empty for sync-only operations.
|
||||
*/
|
||||
struct drm_panthor_obj_array syncs;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* enum drm_panthor_vm_bind_flags - VM bind flags
|
||||
*/
|
||||
enum drm_panthor_vm_bind_flags {
|
||||
/**
|
||||
* @DRM_PANTHOR_VM_BIND_ASYNC: VM bind operations are queued to the VM
|
||||
* queue instead of being executed synchronously.
|
||||
*/
|
||||
DRM_PANTHOR_VM_BIND_ASYNC = 1 << 0,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_vm_bind - Arguments passed to DRM_IOCTL_PANTHOR_VM_BIND
|
||||
*/
|
||||
struct drm_panthor_vm_bind {
|
||||
/** @vm_id: VM targeted by the bind request. */
|
||||
__u32 vm_id;
|
||||
|
||||
/** @flags: Combination of drm_panthor_vm_bind_flags flags. */
|
||||
__u32 flags;
|
||||
|
||||
/** @ops: Array of struct drm_panthor_vm_bind_op bind operations. */
|
||||
struct drm_panthor_obj_array ops;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum drm_panthor_vm_state - VM states.
|
||||
*/
|
||||
enum drm_panthor_vm_state {
|
||||
/**
|
||||
* @DRM_PANTHOR_VM_STATE_USABLE: VM is usable.
|
||||
*
|
||||
* New VM operations will be accepted on this VM.
|
||||
*/
|
||||
DRM_PANTHOR_VM_STATE_USABLE,
|
||||
|
||||
/**
|
||||
* @DRM_PANTHOR_VM_STATE_UNUSABLE: VM is unusable.
|
||||
*
|
||||
* Something put the VM in an unusable state (like an asynchronous
|
||||
* VM_BIND request failing for any reason).
|
||||
*
|
||||
* Once the VM is in this state, all new MAP operations will be
|
||||
* rejected, and any GPU job targeting this VM will fail.
|
||||
* UNMAP operations are still accepted.
|
||||
*
|
||||
* The only way to recover from an unusable VM is to create a new
|
||||
* VM, and destroy the old one.
|
||||
*/
|
||||
DRM_PANTHOR_VM_STATE_UNUSABLE,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_vm_get_state - Get VM state.
|
||||
*/
|
||||
struct drm_panthor_vm_get_state {
|
||||
/** @vm_id: VM targeted by the get_state request. */
|
||||
__u32 vm_id;
|
||||
|
||||
/**
|
||||
* @state: state returned by the driver.
|
||||
*
|
||||
* Must be one of the enum drm_panthor_vm_state values.
|
||||
*/
|
||||
__u32 state;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum drm_panthor_bo_flags - Buffer object flags, passed at creation time.
|
||||
*/
|
||||
enum drm_panthor_bo_flags {
|
||||
/** @DRM_PANTHOR_BO_NO_MMAP: The buffer object will never be CPU-mapped in userspace. */
|
||||
DRM_PANTHOR_BO_NO_MMAP = (1 << 0),
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_bo_create - Arguments passed to DRM_IOCTL_PANTHOR_BO_CREATE.
|
||||
*/
|
||||
struct drm_panthor_bo_create {
|
||||
/**
|
||||
* @size: Requested size for the object
|
||||
*
|
||||
* The (page-aligned) allocated size for the object will be returned.
|
||||
*/
|
||||
__u64 size;
|
||||
|
||||
/**
|
||||
* @flags: Flags. Must be a combination of drm_panthor_bo_flags flags.
|
||||
*/
|
||||
__u32 flags;
|
||||
|
||||
/**
|
||||
* @exclusive_vm_id: Exclusive VM this buffer object will be mapped to.
|
||||
*
|
||||
* If not zero, the field must refer to a valid VM ID, and implies that:
|
||||
* - the buffer object will only ever be bound to that VM
|
||||
* - cannot be exported as a PRIME fd
|
||||
*/
|
||||
__u32 exclusive_vm_id;
|
||||
|
||||
/**
|
||||
* @handle: Returned handle for the object.
|
||||
*
|
||||
* Object handles are nonzero.
|
||||
*/
|
||||
__u32 handle;
|
||||
|
||||
/** @pad: MBZ. */
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_bo_mmap_offset - Arguments passed to DRM_IOCTL_PANTHOR_BO_MMAP_OFFSET.
|
||||
*/
|
||||
struct drm_panthor_bo_mmap_offset {
|
||||
/** @handle: Handle of the object we want an mmap offset for. */
|
||||
__u32 handle;
|
||||
|
||||
/** @pad: MBZ. */
|
||||
__u32 pad;
|
||||
|
||||
/** @offset: The fake offset to use for subsequent mmap calls. */
|
||||
__u64 offset;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_queue_create - Queue creation arguments.
|
||||
*/
|
||||
struct drm_panthor_queue_create {
|
||||
/**
|
||||
* @priority: Defines the priority of queues inside a group. Goes from 0 to 15,
|
||||
* 15 being the highest priority.
|
||||
*/
|
||||
__u8 priority;
|
||||
|
||||
/** @pad: Padding fields, MBZ. */
|
||||
__u8 pad[3];
|
||||
|
||||
/** @ringbuf_size: Size of the ring buffer to allocate to this queue. */
|
||||
__u32 ringbuf_size;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum drm_panthor_group_priority - Scheduling group priority
|
||||
*/
|
||||
enum drm_panthor_group_priority {
|
||||
/** @PANTHOR_GROUP_PRIORITY_LOW: Low priority group. */
|
||||
PANTHOR_GROUP_PRIORITY_LOW = 0,
|
||||
|
||||
/** @PANTHOR_GROUP_PRIORITY_MEDIUM: Medium priority group. */
|
||||
PANTHOR_GROUP_PRIORITY_MEDIUM,
|
||||
|
||||
/** @PANTHOR_GROUP_PRIORITY_HIGH: High priority group. */
|
||||
PANTHOR_GROUP_PRIORITY_HIGH,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_group_create - Arguments passed to DRM_IOCTL_PANTHOR_GROUP_CREATE
|
||||
*/
|
||||
struct drm_panthor_group_create {
|
||||
/** @queues: Array of drm_panthor_queue_create elements. */
|
||||
struct drm_panthor_obj_array queues;
|
||||
|
||||
/**
|
||||
* @max_compute_cores: Maximum number of cores that can be used by compute
|
||||
* jobs across CS queues bound to this group.
|
||||
*
|
||||
* Must be less or equal to the number of bits set in @compute_core_mask.
|
||||
*/
|
||||
__u8 max_compute_cores;
|
||||
|
||||
/**
|
||||
* @max_fragment_cores: Maximum number of cores that can be used by fragment
|
||||
* jobs across CS queues bound to this group.
|
||||
*
|
||||
* Must be less or equal to the number of bits set in @fragment_core_mask.
|
||||
*/
|
||||
__u8 max_fragment_cores;
|
||||
|
||||
/**
|
||||
* @max_tiler_cores: Maximum number of tilers that can be used by tiler jobs
|
||||
* across CS queues bound to this group.
|
||||
*
|
||||
* Must be less or equal to the number of bits set in @tiler_core_mask.
|
||||
*/
|
||||
__u8 max_tiler_cores;
|
||||
|
||||
/** @priority: Group priority (see enum drm_panthor_group_priority). */
|
||||
__u8 priority;
|
||||
|
||||
/** @pad: Padding field, MBZ. */
|
||||
__u32 pad;
|
||||
|
||||
/**
|
||||
* @compute_core_mask: Mask encoding cores that can be used for compute jobs.
|
||||
*
|
||||
* This field must have at least @max_compute_cores bits set.
|
||||
*
|
||||
* The bits set here should also be set in drm_panthor_gpu_info::shader_present.
|
||||
*/
|
||||
__u64 compute_core_mask;
|
||||
|
||||
/**
|
||||
* @fragment_core_mask: Mask encoding cores that can be used for fragment jobs.
|
||||
*
|
||||
* This field must have at least @max_fragment_cores bits set.
|
||||
*
|
||||
* The bits set here should also be set in drm_panthor_gpu_info::shader_present.
|
||||
*/
|
||||
__u64 fragment_core_mask;
|
||||
|
||||
/**
|
||||
* @tiler_core_mask: Mask encoding cores that can be used for tiler jobs.
|
||||
*
|
||||
* This field must have at least @max_tiler_cores bits set.
|
||||
*
|
||||
* The bits set here should also be set in drm_panthor_gpu_info::tiler_present.
|
||||
*/
|
||||
__u64 tiler_core_mask;
|
||||
|
||||
/**
|
||||
* @vm_id: VM ID to bind this group to.
|
||||
*
|
||||
* All submission to queues bound to this group will use this VM.
|
||||
*/
|
||||
__u32 vm_id;
|
||||
|
||||
/**
|
||||
* @group_handle: Returned group handle. Passed back when submitting jobs or
|
||||
* destroying a group.
|
||||
*/
|
||||
__u32 group_handle;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_group_destroy - Arguments passed to DRM_IOCTL_PANTHOR_GROUP_DESTROY
|
||||
*/
|
||||
struct drm_panthor_group_destroy {
|
||||
/** @group_handle: Group to destroy */
|
||||
__u32 group_handle;
|
||||
|
||||
/** @pad: Padding field, MBZ. */
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_queue_submit - Job submission arguments.
|
||||
*
|
||||
* This is describing the userspace command stream to call from the kernel
|
||||
* command stream ring-buffer. Queue submission is always part of a group
|
||||
* submission, taking one or more jobs to submit to the underlying queues.
|
||||
*/
|
||||
struct drm_panthor_queue_submit {
|
||||
/** @queue_index: Index of the queue inside a group. */
|
||||
__u32 queue_index;
|
||||
|
||||
/**
|
||||
* @stream_size: Size of the command stream to execute.
|
||||
*
|
||||
* Must be 64-bit/8-byte aligned (the size of a CS instruction)
|
||||
*
|
||||
* Can be zero if stream_addr is zero too.
|
||||
*
|
||||
* When the stream size is zero, the queue submit serves as a
|
||||
* synchronization point.
|
||||
*/
|
||||
__u32 stream_size;
|
||||
|
||||
/**
|
||||
* @stream_addr: GPU address of the command stream to execute.
|
||||
*
|
||||
* Must be aligned on 64-byte.
|
||||
*
|
||||
* Can be zero is stream_size is zero too.
|
||||
*/
|
||||
__u64 stream_addr;
|
||||
|
||||
/**
|
||||
* @latest_flush: FLUSH_ID read at the time the stream was built.
|
||||
*
|
||||
* This allows cache flush elimination for the automatic
|
||||
* flush+invalidate(all) done at submission time, which is needed to
|
||||
* ensure the GPU doesn't get garbage when reading the indirect command
|
||||
* stream buffers. If you want the cache flush to happen
|
||||
* unconditionally, pass a zero here.
|
||||
*
|
||||
* Ignored when stream_size is zero.
|
||||
*/
|
||||
__u32 latest_flush;
|
||||
|
||||
/** @pad: MBZ. */
|
||||
__u32 pad;
|
||||
|
||||
/** @syncs: Array of struct drm_panthor_sync_op sync operations. */
|
||||
struct drm_panthor_obj_array syncs;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_group_submit - Arguments passed to DRM_IOCTL_PANTHOR_GROUP_SUBMIT
|
||||
*/
|
||||
struct drm_panthor_group_submit {
|
||||
/** @group_handle: Handle of the group to queue jobs to. */
|
||||
__u32 group_handle;
|
||||
|
||||
/** @pad: MBZ. */
|
||||
__u32 pad;
|
||||
|
||||
/** @queue_submits: Array of drm_panthor_queue_submit objects. */
|
||||
struct drm_panthor_obj_array queue_submits;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum drm_panthor_group_state_flags - Group state flags
|
||||
*/
|
||||
enum drm_panthor_group_state_flags {
|
||||
/**
|
||||
* @DRM_PANTHOR_GROUP_STATE_TIMEDOUT: Group had unfinished jobs.
|
||||
*
|
||||
* When a group ends up with this flag set, no jobs can be submitted to its queues.
|
||||
*/
|
||||
DRM_PANTHOR_GROUP_STATE_TIMEDOUT = 1 << 0,
|
||||
|
||||
/**
|
||||
* @DRM_PANTHOR_GROUP_STATE_FATAL_FAULT: Group had fatal faults.
|
||||
*
|
||||
* When a group ends up with this flag set, no jobs can be submitted to its queues.
|
||||
*/
|
||||
DRM_PANTHOR_GROUP_STATE_FATAL_FAULT = 1 << 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_group_get_state - Arguments passed to DRM_IOCTL_PANTHOR_GROUP_GET_STATE
|
||||
*
|
||||
* Used to query the state of a group and decide whether a new group should be created to
|
||||
* replace it.
|
||||
*/
|
||||
struct drm_panthor_group_get_state {
|
||||
/** @group_handle: Handle of the group to query state on */
|
||||
__u32 group_handle;
|
||||
|
||||
/**
|
||||
* @state: Combination of DRM_PANTHOR_GROUP_STATE_* flags encoding the
|
||||
* group state.
|
||||
*/
|
||||
__u32 state;
|
||||
|
||||
/** @fatal_queues: Bitmask of queues that faced fatal faults. */
|
||||
__u32 fatal_queues;
|
||||
|
||||
/** @pad: MBZ */
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_tiler_heap_create - Arguments passed to DRM_IOCTL_PANTHOR_TILER_HEAP_CREATE
|
||||
*/
|
||||
struct drm_panthor_tiler_heap_create {
|
||||
/** @vm_id: VM ID the tiler heap should be mapped to */
|
||||
__u32 vm_id;
|
||||
|
||||
/** @initial_chunk_count: Initial number of chunks to allocate. Must be at least one. */
|
||||
__u32 initial_chunk_count;
|
||||
|
||||
/**
|
||||
* @chunk_size: Chunk size.
|
||||
*
|
||||
* Must be page-aligned and lie in the [128k:8M] range.
|
||||
*/
|
||||
__u32 chunk_size;
|
||||
|
||||
/**
|
||||
* @max_chunks: Maximum number of chunks that can be allocated.
|
||||
*
|
||||
* Must be at least @initial_chunk_count.
|
||||
*/
|
||||
__u32 max_chunks;
|
||||
|
||||
/**
|
||||
* @target_in_flight: Maximum number of in-flight render passes.
|
||||
*
|
||||
* If the heap has more than tiler jobs in-flight, the FW will wait for render
|
||||
* passes to finish before queuing new tiler jobs.
|
||||
*/
|
||||
__u32 target_in_flight;
|
||||
|
||||
/** @handle: Returned heap handle. Passed back to DESTROY_TILER_HEAP. */
|
||||
__u32 handle;
|
||||
|
||||
/** @tiler_heap_ctx_gpu_va: Returned heap GPU virtual address returned */
|
||||
__u64 tiler_heap_ctx_gpu_va;
|
||||
|
||||
/**
|
||||
* @first_heap_chunk_gpu_va: First heap chunk.
|
||||
*
|
||||
* The tiler heap is formed of heap chunks forming a single-link list. This
|
||||
* is the first element in the list.
|
||||
*/
|
||||
__u64 first_heap_chunk_gpu_va;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_panthor_tiler_heap_destroy - Arguments passed to DRM_IOCTL_PANTHOR_TILER_HEAP_DESTROY
|
||||
*/
|
||||
struct drm_panthor_tiler_heap_destroy {
|
||||
/**
|
||||
* @handle: Handle of the tiler heap to destroy.
|
||||
*
|
||||
* Must be a valid heap handle returned by DRM_IOCTL_PANTHOR_TILER_HEAP_CREATE.
|
||||
*/
|
||||
__u32 handle;
|
||||
|
||||
/** @pad: Padding field, MBZ. */
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* _PANTHOR_DRM_H_ */
|
||||
1295
lib/libc/include/any-linux-any/drm/pvr_drm.h
vendored
Normal file
1295
lib/libc/include/any-linux-any/drm/pvr_drm.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
399
lib/libc/include/any-linux-any/drm/qaic_accel.h
vendored
Normal file
399
lib/libc/include/any-linux-any/drm/qaic_accel.h
vendored
Normal file
@ -0,0 +1,399 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
|
||||
*
|
||||
* Copyright (c) 2019-2020, The Linux Foundation. All rights reserved.
|
||||
* Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
|
||||
*/
|
||||
|
||||
#ifndef QAIC_ACCEL_H_
|
||||
#define QAIC_ACCEL_H_
|
||||
|
||||
#include "drm.h"
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* The length(4K) includes len and count fields of qaic_manage_msg */
|
||||
#define QAIC_MANAGE_MAX_MSG_LENGTH SZ_4K
|
||||
|
||||
/* semaphore flags */
|
||||
#define QAIC_SEM_INSYNCFENCE 2
|
||||
#define QAIC_SEM_OUTSYNCFENCE 1
|
||||
|
||||
/* Semaphore commands */
|
||||
#define QAIC_SEM_NOP 0
|
||||
#define QAIC_SEM_INIT 1
|
||||
#define QAIC_SEM_INC 2
|
||||
#define QAIC_SEM_DEC 3
|
||||
#define QAIC_SEM_WAIT_EQUAL 4
|
||||
#define QAIC_SEM_WAIT_GT_EQ 5 /* Greater than or equal */
|
||||
#define QAIC_SEM_WAIT_GT_0 6 /* Greater than 0 */
|
||||
|
||||
#define QAIC_TRANS_UNDEFINED 0
|
||||
#define QAIC_TRANS_PASSTHROUGH_FROM_USR 1
|
||||
#define QAIC_TRANS_PASSTHROUGH_TO_USR 2
|
||||
#define QAIC_TRANS_PASSTHROUGH_FROM_DEV 3
|
||||
#define QAIC_TRANS_PASSTHROUGH_TO_DEV 4
|
||||
#define QAIC_TRANS_DMA_XFER_FROM_USR 5
|
||||
#define QAIC_TRANS_DMA_XFER_TO_DEV 6
|
||||
#define QAIC_TRANS_ACTIVATE_FROM_USR 7
|
||||
#define QAIC_TRANS_ACTIVATE_FROM_DEV 8
|
||||
#define QAIC_TRANS_ACTIVATE_TO_DEV 9
|
||||
#define QAIC_TRANS_DEACTIVATE_FROM_USR 10
|
||||
#define QAIC_TRANS_DEACTIVATE_FROM_DEV 11
|
||||
#define QAIC_TRANS_STATUS_FROM_USR 12
|
||||
#define QAIC_TRANS_STATUS_TO_USR 13
|
||||
#define QAIC_TRANS_STATUS_FROM_DEV 14
|
||||
#define QAIC_TRANS_STATUS_TO_DEV 15
|
||||
#define QAIC_TRANS_TERMINATE_FROM_DEV 16
|
||||
#define QAIC_TRANS_TERMINATE_TO_DEV 17
|
||||
#define QAIC_TRANS_DMA_XFER_CONT 18
|
||||
#define QAIC_TRANS_VALIDATE_PARTITION_FROM_DEV 19
|
||||
#define QAIC_TRANS_VALIDATE_PARTITION_TO_DEV 20
|
||||
|
||||
/**
|
||||
* struct qaic_manage_trans_hdr - Header for a transaction in a manage message.
|
||||
* @type: In. Identifies this transaction. See QAIC_TRANS_* defines.
|
||||
* @len: In. Length of this transaction, including this header.
|
||||
*/
|
||||
struct qaic_manage_trans_hdr {
|
||||
__u32 type;
|
||||
__u32 len;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qaic_manage_trans_passthrough - Defines a passthrough transaction.
|
||||
* @hdr: In. Header to identify this transaction.
|
||||
* @data: In. Payload of this ransaction. Opaque to the driver. Userspace must
|
||||
* encode in little endian and align/pad to 64-bit.
|
||||
*/
|
||||
struct qaic_manage_trans_passthrough {
|
||||
struct qaic_manage_trans_hdr hdr;
|
||||
__u8 data[];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qaic_manage_trans_dma_xfer - Defines a DMA transfer transaction.
|
||||
* @hdr: In. Header to identify this transaction.
|
||||
* @tag: In. Identified this transfer in other transactions. Opaque to the
|
||||
* driver.
|
||||
* @pad: Structure padding.
|
||||
* @addr: In. Address of the data to DMA to the device.
|
||||
* @size: In. Length of the data to DMA to the device.
|
||||
*/
|
||||
struct qaic_manage_trans_dma_xfer {
|
||||
struct qaic_manage_trans_hdr hdr;
|
||||
__u32 tag;
|
||||
__u32 pad;
|
||||
__u64 addr;
|
||||
__u64 size;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qaic_manage_trans_activate_to_dev - Defines an activate request.
|
||||
* @hdr: In. Header to identify this transaction.
|
||||
* @queue_size: In. Number of elements for DBC request and response queues.
|
||||
* @eventfd: Unused.
|
||||
* @options: In. Device specific options for this activate.
|
||||
* @pad: Structure padding. Must be 0.
|
||||
*/
|
||||
struct qaic_manage_trans_activate_to_dev {
|
||||
struct qaic_manage_trans_hdr hdr;
|
||||
__u32 queue_size;
|
||||
__u32 eventfd;
|
||||
__u32 options;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qaic_manage_trans_activate_from_dev - Defines an activate response.
|
||||
* @hdr: Out. Header to identify this transaction.
|
||||
* @status: Out. Return code of the request from the device.
|
||||
* @dbc_id: Out. Id of the assigned DBC for successful request.
|
||||
* @options: Out. Device specific options for this activate.
|
||||
*/
|
||||
struct qaic_manage_trans_activate_from_dev {
|
||||
struct qaic_manage_trans_hdr hdr;
|
||||
__u32 status;
|
||||
__u32 dbc_id;
|
||||
__u64 options;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qaic_manage_trans_deactivate - Defines a deactivate request.
|
||||
* @hdr: In. Header to identify this transaction.
|
||||
* @dbc_id: In. Id of assigned DBC.
|
||||
* @pad: Structure padding. Must be 0.
|
||||
*/
|
||||
struct qaic_manage_trans_deactivate {
|
||||
struct qaic_manage_trans_hdr hdr;
|
||||
__u32 dbc_id;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qaic_manage_trans_status_to_dev - Defines a status request.
|
||||
* @hdr: In. Header to identify this transaction.
|
||||
*/
|
||||
struct qaic_manage_trans_status_to_dev {
|
||||
struct qaic_manage_trans_hdr hdr;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qaic_manage_trans_status_from_dev - Defines a status response.
|
||||
* @hdr: Out. Header to identify this transaction.
|
||||
* @major: Out. NNC protocol version major number.
|
||||
* @minor: Out. NNC protocol version minor number.
|
||||
* @status: Out. Return code from device.
|
||||
* @status_flags: Out. Flags from device. Bit 0 indicates if CRCs are required.
|
||||
*/
|
||||
struct qaic_manage_trans_status_from_dev {
|
||||
struct qaic_manage_trans_hdr hdr;
|
||||
__u16 major;
|
||||
__u16 minor;
|
||||
__u32 status;
|
||||
__u64 status_flags;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qaic_manage_msg - Defines a message to the device.
|
||||
* @len: In. Length of all the transactions contained within this message.
|
||||
* @count: In. Number of transactions in this message.
|
||||
* @data: In. Address to an array where the transactions can be found.
|
||||
*/
|
||||
struct qaic_manage_msg {
|
||||
__u32 len;
|
||||
__u32 count;
|
||||
__u64 data;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qaic_create_bo - Defines a request to create a buffer object.
|
||||
* @size: In. Size of the buffer in bytes.
|
||||
* @handle: Out. GEM handle for the BO.
|
||||
* @pad: Structure padding. Must be 0.
|
||||
*/
|
||||
struct qaic_create_bo {
|
||||
__u64 size;
|
||||
__u32 handle;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qaic_mmap_bo - Defines a request to prepare a BO for mmap().
|
||||
* @handle: In. Handle of the GEM BO to prepare for mmap().
|
||||
* @pad: Structure padding. Must be 0.
|
||||
* @offset: Out. Offset value to provide to mmap().
|
||||
*/
|
||||
struct qaic_mmap_bo {
|
||||
__u32 handle;
|
||||
__u32 pad;
|
||||
__u64 offset;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qaic_sem - Defines a semaphore command for a BO slice.
|
||||
* @val: In. Only lower 12 bits are valid.
|
||||
* @index: In. Only lower 5 bits are valid.
|
||||
* @presync: In. 1 if presync operation, 0 if postsync.
|
||||
* @cmd: In. One of QAIC_SEM_*.
|
||||
* @flags: In. Bitfield. See QAIC_SEM_INSYNCFENCE and QAIC_SEM_OUTSYNCFENCE
|
||||
* @pad: Structure padding. Must be 0.
|
||||
*/
|
||||
struct qaic_sem {
|
||||
__u16 val;
|
||||
__u8 index;
|
||||
__u8 presync;
|
||||
__u8 cmd;
|
||||
__u8 flags;
|
||||
__u16 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qaic_attach_slice_entry - Defines a single BO slice.
|
||||
* @size: In. Size of this slice in bytes.
|
||||
* @sem0: In. Semaphore command 0. Must be 0 is not valid.
|
||||
* @sem1: In. Semaphore command 1. Must be 0 is not valid.
|
||||
* @sem2: In. Semaphore command 2. Must be 0 is not valid.
|
||||
* @sem3: In. Semaphore command 3. Must be 0 is not valid.
|
||||
* @dev_addr: In. Device address this slice pushes to or pulls from.
|
||||
* @db_addr: In. Address of the doorbell to ring.
|
||||
* @db_data: In. Data to write to the doorbell.
|
||||
* @db_len: In. Size of the doorbell data in bits - 32, 16, or 8. 0 is for
|
||||
* inactive doorbells.
|
||||
* @offset: In. Start of this slice as an offset from the start of the BO.
|
||||
*/
|
||||
struct qaic_attach_slice_entry {
|
||||
__u64 size;
|
||||
struct qaic_sem sem0;
|
||||
struct qaic_sem sem1;
|
||||
struct qaic_sem sem2;
|
||||
struct qaic_sem sem3;
|
||||
__u64 dev_addr;
|
||||
__u64 db_addr;
|
||||
__u32 db_data;
|
||||
__u32 db_len;
|
||||
__u64 offset;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qaic_attach_slice_hdr - Defines metadata for a set of BO slices.
|
||||
* @count: In. Number of slices for this BO.
|
||||
* @dbc_id: In. Associate the sliced BO with this DBC.
|
||||
* @handle: In. GEM handle of the BO to slice.
|
||||
* @dir: In. Direction of data flow. 1 = DMA_TO_DEVICE, 2 = DMA_FROM_DEVICE
|
||||
* @size: Deprecated. This value is ignored and size of @handle is used instead.
|
||||
*/
|
||||
struct qaic_attach_slice_hdr {
|
||||
__u32 count;
|
||||
__u32 dbc_id;
|
||||
__u32 handle;
|
||||
__u32 dir;
|
||||
__u64 size;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qaic_attach_slice - Defines a set of BO slices.
|
||||
* @hdr: In. Metadata of the set of slices.
|
||||
* @data: In. Pointer to an array containing the slice definitions.
|
||||
*/
|
||||
struct qaic_attach_slice {
|
||||
struct qaic_attach_slice_hdr hdr;
|
||||
__u64 data;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qaic_execute_entry - Defines a BO to submit to the device.
|
||||
* @handle: In. GEM handle of the BO to commit to the device.
|
||||
* @dir: In. Direction of data. 1 = to device, 2 = from device.
|
||||
*/
|
||||
struct qaic_execute_entry {
|
||||
__u32 handle;
|
||||
__u32 dir;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qaic_partial_execute_entry - Defines a BO to resize and submit.
|
||||
* @handle: In. GEM handle of the BO to commit to the device.
|
||||
* @dir: In. Direction of data. 1 = to device, 2 = from device.
|
||||
* @resize: In. New size of the BO. Must be <= the original BO size.
|
||||
* @resize as 0 would be interpreted as no DMA transfer is
|
||||
* involved.
|
||||
*/
|
||||
struct qaic_partial_execute_entry {
|
||||
__u32 handle;
|
||||
__u32 dir;
|
||||
__u64 resize;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qaic_execute_hdr - Defines metadata for BO submission.
|
||||
* @count: In. Number of BOs to submit.
|
||||
* @dbc_id: In. DBC to submit the BOs on.
|
||||
*/
|
||||
struct qaic_execute_hdr {
|
||||
__u32 count;
|
||||
__u32 dbc_id;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qaic_execute - Defines a list of BOs to submit to the device.
|
||||
* @hdr: In. BO list metadata.
|
||||
* @data: In. Pointer to an array of BOs to submit.
|
||||
*/
|
||||
struct qaic_execute {
|
||||
struct qaic_execute_hdr hdr;
|
||||
__u64 data;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qaic_wait - Defines a blocking wait for BO execution.
|
||||
* @handle: In. GEM handle of the BO to wait on.
|
||||
* @timeout: In. Maximum time in ms to wait for the BO.
|
||||
* @dbc_id: In. DBC the BO is submitted to.
|
||||
* @pad: Structure padding. Must be 0.
|
||||
*/
|
||||
struct qaic_wait {
|
||||
__u32 handle;
|
||||
__u32 timeout;
|
||||
__u32 dbc_id;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qaic_perf_stats_hdr - Defines metadata for getting BO perf info.
|
||||
* @count: In. Number of BOs requested.
|
||||
* @pad: Structure padding. Must be 0.
|
||||
* @dbc_id: In. DBC the BO are associated with.
|
||||
*/
|
||||
struct qaic_perf_stats_hdr {
|
||||
__u16 count;
|
||||
__u16 pad;
|
||||
__u32 dbc_id;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qaic_perf_stats - Defines a request for getting BO perf info.
|
||||
* @hdr: In. Request metadata
|
||||
* @data: In. Pointer to array of stats structures that will receive the data.
|
||||
*/
|
||||
struct qaic_perf_stats {
|
||||
struct qaic_perf_stats_hdr hdr;
|
||||
__u64 data;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qaic_perf_stats_entry - Defines a BO perf info.
|
||||
* @handle: In. GEM handle of the BO to get perf stats for.
|
||||
* @queue_level_before: Out. Number of elements in the queue before this BO
|
||||
* was submitted.
|
||||
* @num_queue_element: Out. Number of elements added to the queue to submit
|
||||
* this BO.
|
||||
* @submit_latency_us: Out. Time taken by the driver to submit this BO.
|
||||
* @device_latency_us: Out. Time taken by the device to execute this BO.
|
||||
* @pad: Structure padding. Must be 0.
|
||||
*/
|
||||
struct qaic_perf_stats_entry {
|
||||
__u32 handle;
|
||||
__u32 queue_level_before;
|
||||
__u32 num_queue_element;
|
||||
__u32 submit_latency_us;
|
||||
__u32 device_latency_us;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct qaic_detach_slice - Detaches slicing configuration from BO.
|
||||
* @handle: In. GEM handle of the BO to detach slicing configuration.
|
||||
* @pad: Structure padding. Must be 0.
|
||||
*/
|
||||
struct qaic_detach_slice {
|
||||
__u32 handle;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
#define DRM_QAIC_MANAGE 0x00
|
||||
#define DRM_QAIC_CREATE_BO 0x01
|
||||
#define DRM_QAIC_MMAP_BO 0x02
|
||||
#define DRM_QAIC_ATTACH_SLICE_BO 0x03
|
||||
#define DRM_QAIC_EXECUTE_BO 0x04
|
||||
#define DRM_QAIC_PARTIAL_EXECUTE_BO 0x05
|
||||
#define DRM_QAIC_WAIT_BO 0x06
|
||||
#define DRM_QAIC_PERF_STATS_BO 0x07
|
||||
#define DRM_QAIC_DETACH_SLICE_BO 0x08
|
||||
|
||||
#define DRM_IOCTL_QAIC_MANAGE DRM_IOWR(DRM_COMMAND_BASE + DRM_QAIC_MANAGE, struct qaic_manage_msg)
|
||||
#define DRM_IOCTL_QAIC_CREATE_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_QAIC_CREATE_BO, struct qaic_create_bo)
|
||||
#define DRM_IOCTL_QAIC_MMAP_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_QAIC_MMAP_BO, struct qaic_mmap_bo)
|
||||
#define DRM_IOCTL_QAIC_ATTACH_SLICE_BO DRM_IOW(DRM_COMMAND_BASE + DRM_QAIC_ATTACH_SLICE_BO, struct qaic_attach_slice)
|
||||
#define DRM_IOCTL_QAIC_EXECUTE_BO DRM_IOW(DRM_COMMAND_BASE + DRM_QAIC_EXECUTE_BO, struct qaic_execute)
|
||||
#define DRM_IOCTL_QAIC_PARTIAL_EXECUTE_BO DRM_IOW(DRM_COMMAND_BASE + DRM_QAIC_PARTIAL_EXECUTE_BO, struct qaic_execute)
|
||||
#define DRM_IOCTL_QAIC_WAIT_BO DRM_IOW(DRM_COMMAND_BASE + DRM_QAIC_WAIT_BO, struct qaic_wait)
|
||||
#define DRM_IOCTL_QAIC_PERF_STATS_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_QAIC_PERF_STATS_BO, struct qaic_perf_stats)
|
||||
#define DRM_IOCTL_QAIC_DETACH_SLICE_BO DRM_IOW(DRM_COMMAND_BASE + DRM_QAIC_DETACH_SLICE_BO, struct qaic_detach_slice)
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* QAIC_ACCEL_H_ */
|
||||
243
lib/libc/include/any-linux-any/drm/v3d_drm.h
vendored
243
lib/libc/include/any-linux-any/drm/v3d_drm.h
vendored
@ -41,6 +41,7 @@ extern "C" {
|
||||
#define DRM_V3D_PERFMON_CREATE 0x08
|
||||
#define DRM_V3D_PERFMON_DESTROY 0x09
|
||||
#define DRM_V3D_PERFMON_GET_VALUES 0x0a
|
||||
#define DRM_V3D_SUBMIT_CPU 0x0b
|
||||
|
||||
#define DRM_IOCTL_V3D_SUBMIT_CL DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_SUBMIT_CL, struct drm_v3d_submit_cl)
|
||||
#define DRM_IOCTL_V3D_WAIT_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_WAIT_BO, struct drm_v3d_wait_bo)
|
||||
@ -56,6 +57,7 @@ extern "C" {
|
||||
struct drm_v3d_perfmon_destroy)
|
||||
#define DRM_IOCTL_V3D_PERFMON_GET_VALUES DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_PERFMON_GET_VALUES, \
|
||||
struct drm_v3d_perfmon_get_values)
|
||||
#define DRM_IOCTL_V3D_SUBMIT_CPU DRM_IOW(DRM_COMMAND_BASE + DRM_V3D_SUBMIT_CPU, struct drm_v3d_submit_cpu)
|
||||
|
||||
#define DRM_V3D_SUBMIT_CL_FLUSH_CACHE 0x01
|
||||
#define DRM_V3D_SUBMIT_EXTENSION 0x02
|
||||
@ -70,6 +72,12 @@ struct drm_v3d_extension {
|
||||
__u64 next;
|
||||
__u32 id;
|
||||
#define DRM_V3D_EXT_ID_MULTI_SYNC 0x01
|
||||
#define DRM_V3D_EXT_ID_CPU_INDIRECT_CSD 0x02
|
||||
#define DRM_V3D_EXT_ID_CPU_TIMESTAMP_QUERY 0x03
|
||||
#define DRM_V3D_EXT_ID_CPU_RESET_TIMESTAMP_QUERY 0x04
|
||||
#define DRM_V3D_EXT_ID_CPU_COPY_TIMESTAMP_QUERY 0x05
|
||||
#define DRM_V3D_EXT_ID_CPU_RESET_PERFORMANCE_QUERY 0x06
|
||||
#define DRM_V3D_EXT_ID_CPU_COPY_PERFORMANCE_QUERY 0x07
|
||||
__u32 flags; /* mbz */
|
||||
};
|
||||
|
||||
@ -93,6 +101,7 @@ enum v3d_queue {
|
||||
V3D_TFU,
|
||||
V3D_CSD,
|
||||
V3D_CACHE_CLEAN,
|
||||
V3D_CPU,
|
||||
};
|
||||
|
||||
/**
|
||||
@ -276,6 +285,7 @@ enum drm_v3d_param {
|
||||
DRM_V3D_PARAM_SUPPORTS_CACHE_FLUSH,
|
||||
DRM_V3D_PARAM_SUPPORTS_PERFMON,
|
||||
DRM_V3D_PARAM_SUPPORTS_MULTISYNC_EXT,
|
||||
DRM_V3D_PARAM_SUPPORTS_CPU_QUEUE,
|
||||
};
|
||||
|
||||
struct drm_v3d_get_param {
|
||||
@ -319,6 +329,11 @@ struct drm_v3d_submit_tfu {
|
||||
|
||||
/* Pointer to an array of ioctl extensions*/
|
||||
__u64 extensions;
|
||||
|
||||
struct {
|
||||
__u32 ioc;
|
||||
__u32 pad;
|
||||
} v71;
|
||||
};
|
||||
|
||||
/* Submits a compute shader for dispatch. This job will block on any
|
||||
@ -356,6 +371,234 @@ struct drm_v3d_submit_csd {
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_v3d_indirect_csd - ioctl extension for the CPU job to create an
|
||||
* indirect CSD
|
||||
*
|
||||
* When an extension of DRM_V3D_EXT_ID_CPU_INDIRECT_CSD id is defined, it
|
||||
* points to this extension to define a indirect CSD submission. It creates a
|
||||
* CPU job linked to a CSD job. The CPU job waits for the indirect CSD
|
||||
* dependencies and, once they are signaled, it updates the CSD job config
|
||||
* before allowing the CSD job execution.
|
||||
*/
|
||||
struct drm_v3d_indirect_csd {
|
||||
struct drm_v3d_extension base;
|
||||
|
||||
/* Indirect CSD */
|
||||
struct drm_v3d_submit_csd submit;
|
||||
|
||||
/* Handle of the indirect BO, that should be also attached to the
|
||||
* indirect CSD.
|
||||
*/
|
||||
__u32 indirect;
|
||||
|
||||
/* Offset within the BO where the workgroup counts are stored */
|
||||
__u32 offset;
|
||||
|
||||
/* Workgroups size */
|
||||
__u32 wg_size;
|
||||
|
||||
/* Indices of the uniforms with the workgroup dispatch counts
|
||||
* in the uniform stream. If the uniform rewrite is not needed,
|
||||
* the offset must be 0xffffffff.
|
||||
*/
|
||||
__u32 wg_uniform_offsets[3];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_v3d_timestamp_query - ioctl extension for the CPU job to calculate
|
||||
* a timestamp query
|
||||
*
|
||||
* When an extension DRM_V3D_EXT_ID_TIMESTAMP_QUERY is defined, it points to
|
||||
* this extension to define a timestamp query submission. This CPU job will
|
||||
* calculate the timestamp query and update the query value within the
|
||||
* timestamp BO. Moreover, it will signal the timestamp syncobj to indicate
|
||||
* query availability.
|
||||
*/
|
||||
struct drm_v3d_timestamp_query {
|
||||
struct drm_v3d_extension base;
|
||||
|
||||
/* Array of queries' offsets within the timestamp BO for their value */
|
||||
__u64 offsets;
|
||||
|
||||
/* Array of timestamp's syncobjs to indicate its availability */
|
||||
__u64 syncs;
|
||||
|
||||
/* Number of queries */
|
||||
__u32 count;
|
||||
|
||||
/* mbz */
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_v3d_reset_timestamp_query - ioctl extension for the CPU job to
|
||||
* reset timestamp queries
|
||||
*
|
||||
* When an extension DRM_V3D_EXT_ID_CPU_RESET_TIMESTAMP_QUERY is defined, it
|
||||
* points to this extension to define a reset timestamp submission. This CPU
|
||||
* job will reset the timestamp queries based on value offset of the first
|
||||
* query. Moreover, it will reset the timestamp syncobj to reset query
|
||||
* availability.
|
||||
*/
|
||||
struct drm_v3d_reset_timestamp_query {
|
||||
struct drm_v3d_extension base;
|
||||
|
||||
/* Array of timestamp's syncobjs to indicate its availability */
|
||||
__u64 syncs;
|
||||
|
||||
/* Offset of the first query within the timestamp BO for its value */
|
||||
__u32 offset;
|
||||
|
||||
/* Number of queries */
|
||||
__u32 count;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_v3d_copy_timestamp_query - ioctl extension for the CPU job to copy
|
||||
* query results to a buffer
|
||||
*
|
||||
* When an extension DRM_V3D_EXT_ID_CPU_COPY_TIMESTAMP_QUERY is defined, it
|
||||
* points to this extension to define a copy timestamp query submission. This
|
||||
* CPU job will copy the timestamp queries results to a BO with the offset
|
||||
* and stride defined in the extension.
|
||||
*/
|
||||
struct drm_v3d_copy_timestamp_query {
|
||||
struct drm_v3d_extension base;
|
||||
|
||||
/* Define if should write to buffer using 64 or 32 bits */
|
||||
__u8 do_64bit;
|
||||
|
||||
/* Define if it can write to buffer even if the query is not available */
|
||||
__u8 do_partial;
|
||||
|
||||
/* Define if it should write availability bit to buffer */
|
||||
__u8 availability_bit;
|
||||
|
||||
/* mbz */
|
||||
__u8 pad;
|
||||
|
||||
/* Offset of the buffer in the BO */
|
||||
__u32 offset;
|
||||
|
||||
/* Stride of the buffer in the BO */
|
||||
__u32 stride;
|
||||
|
||||
/* Number of queries */
|
||||
__u32 count;
|
||||
|
||||
/* Array of queries' offsets within the timestamp BO for their value */
|
||||
__u64 offsets;
|
||||
|
||||
/* Array of timestamp's syncobjs to indicate its availability */
|
||||
__u64 syncs;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_v3d_reset_performance_query - ioctl extension for the CPU job to
|
||||
* reset performance queries
|
||||
*
|
||||
* When an extension DRM_V3D_EXT_ID_CPU_RESET_PERFORMANCE_QUERY is defined, it
|
||||
* points to this extension to define a reset performance submission. This CPU
|
||||
* job will reset the performance queries by resetting the values of the
|
||||
* performance monitors. Moreover, it will reset the syncobj to reset query
|
||||
* availability.
|
||||
*/
|
||||
struct drm_v3d_reset_performance_query {
|
||||
struct drm_v3d_extension base;
|
||||
|
||||
/* Array of performance queries's syncobjs to indicate its availability */
|
||||
__u64 syncs;
|
||||
|
||||
/* Number of queries */
|
||||
__u32 count;
|
||||
|
||||
/* Number of performance monitors */
|
||||
__u32 nperfmons;
|
||||
|
||||
/* Array of u64 user-pointers that point to an array of kperfmon_ids */
|
||||
__u64 kperfmon_ids;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_v3d_copy_performance_query - ioctl extension for the CPU job to copy
|
||||
* performance query results to a buffer
|
||||
*
|
||||
* When an extension DRM_V3D_EXT_ID_CPU_COPY_PERFORMANCE_QUERY is defined, it
|
||||
* points to this extension to define a copy performance query submission. This
|
||||
* CPU job will copy the performance queries results to a BO with the offset
|
||||
* and stride defined in the extension.
|
||||
*/
|
||||
struct drm_v3d_copy_performance_query {
|
||||
struct drm_v3d_extension base;
|
||||
|
||||
/* Define if should write to buffer using 64 or 32 bits */
|
||||
__u8 do_64bit;
|
||||
|
||||
/* Define if it can write to buffer even if the query is not available */
|
||||
__u8 do_partial;
|
||||
|
||||
/* Define if it should write availability bit to buffer */
|
||||
__u8 availability_bit;
|
||||
|
||||
/* mbz */
|
||||
__u8 pad;
|
||||
|
||||
/* Offset of the buffer in the BO */
|
||||
__u32 offset;
|
||||
|
||||
/* Stride of the buffer in the BO */
|
||||
__u32 stride;
|
||||
|
||||
/* Number of performance monitors */
|
||||
__u32 nperfmons;
|
||||
|
||||
/* Number of performance counters related to this query pool */
|
||||
__u32 ncounters;
|
||||
|
||||
/* Number of queries */
|
||||
__u32 count;
|
||||
|
||||
/* Array of performance queries's syncobjs to indicate its availability */
|
||||
__u64 syncs;
|
||||
|
||||
/* Array of u64 user-pointers that point to an array of kperfmon_ids */
|
||||
__u64 kperfmon_ids;
|
||||
};
|
||||
|
||||
struct drm_v3d_submit_cpu {
|
||||
/* Pointer to a u32 array of the BOs that are referenced by the job.
|
||||
*
|
||||
* For DRM_V3D_EXT_ID_CPU_INDIRECT_CSD, it must contain only one BO,
|
||||
* that contains the workgroup counts.
|
||||
*
|
||||
* For DRM_V3D_EXT_ID_TIMESTAMP_QUERY, it must contain only one BO,
|
||||
* that will contain the timestamp.
|
||||
*
|
||||
* For DRM_V3D_EXT_ID_CPU_RESET_TIMESTAMP_QUERY, it must contain only
|
||||
* one BO, that contains the timestamp.
|
||||
*
|
||||
* For DRM_V3D_EXT_ID_CPU_COPY_TIMESTAMP_QUERY, it must contain two
|
||||
* BOs. The first is the BO where the timestamp queries will be written
|
||||
* to. The second is the BO that contains the timestamp.
|
||||
*
|
||||
* For DRM_V3D_EXT_ID_CPU_RESET_PERFORMANCE_QUERY, it must contain no
|
||||
* BOs.
|
||||
*
|
||||
* For DRM_V3D_EXT_ID_CPU_COPY_PERFORMANCE_QUERY, it must contain one
|
||||
* BO, where the performance queries will be written.
|
||||
*/
|
||||
__u64 bo_handles;
|
||||
|
||||
/* Number of BO handles passed in (size is that times 4). */
|
||||
__u32 bo_handle_count;
|
||||
|
||||
__u32 flags;
|
||||
|
||||
/* Pointer to an array of ioctl extensions*/
|
||||
__u64 extensions;
|
||||
};
|
||||
|
||||
enum {
|
||||
V3D_PERFCNT_FEP_VALID_PRIMTS_NO_PIXELS,
|
||||
V3D_PERFCNT_FEP_VALID_PRIMS,
|
||||
|
||||
18
lib/libc/include/any-linux-any/drm/virtgpu_drm.h
vendored
18
lib/libc/include/any-linux-any/drm/virtgpu_drm.h
vendored
@ -64,6 +64,16 @@ struct drm_virtgpu_map {
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
#define VIRTGPU_EXECBUF_SYNCOBJ_RESET 0x01
|
||||
#define VIRTGPU_EXECBUF_SYNCOBJ_FLAGS ( \
|
||||
VIRTGPU_EXECBUF_SYNCOBJ_RESET | \
|
||||
0)
|
||||
struct drm_virtgpu_execbuffer_syncobj {
|
||||
__u32 handle;
|
||||
__u32 flags;
|
||||
__u64 point;
|
||||
};
|
||||
|
||||
/* fence_fd is modified on success if VIRTGPU_EXECBUF_FENCE_FD_OUT flag is set. */
|
||||
struct drm_virtgpu_execbuffer {
|
||||
__u32 flags;
|
||||
@ -73,7 +83,11 @@ struct drm_virtgpu_execbuffer {
|
||||
__u32 num_bo_handles;
|
||||
__s32 fence_fd; /* in/out fence fd (see VIRTGPU_EXECBUF_FENCE_FD_IN/OUT) */
|
||||
__u32 ring_idx; /* command ring index (see VIRTGPU_EXECBUF_RING_IDX) */
|
||||
__u32 pad;
|
||||
__u32 syncobj_stride; /* size of @drm_virtgpu_execbuffer_syncobj */
|
||||
__u32 num_in_syncobjs;
|
||||
__u32 num_out_syncobjs;
|
||||
__u64 in_syncobjs;
|
||||
__u64 out_syncobjs;
|
||||
};
|
||||
|
||||
#define VIRTGPU_PARAM_3D_FEATURES 1 /* do we have 3D features in the hw */
|
||||
@ -83,6 +97,7 @@ struct drm_virtgpu_execbuffer {
|
||||
#define VIRTGPU_PARAM_CROSS_DEVICE 5 /* Cross virtio-device resource sharing */
|
||||
#define VIRTGPU_PARAM_CONTEXT_INIT 6 /* DRM_VIRTGPU_CONTEXT_INIT */
|
||||
#define VIRTGPU_PARAM_SUPPORTED_CAPSET_IDs 7 /* Bitmask of supported capability set ids */
|
||||
#define VIRTGPU_PARAM_EXPLICIT_DEBUG_NAME 8 /* Ability to set debug name from userspace */
|
||||
|
||||
struct drm_virtgpu_getparam {
|
||||
__u64 param;
|
||||
@ -184,6 +199,7 @@ struct drm_virtgpu_resource_create_blob {
|
||||
#define VIRTGPU_CONTEXT_PARAM_CAPSET_ID 0x0001
|
||||
#define VIRTGPU_CONTEXT_PARAM_NUM_RINGS 0x0002
|
||||
#define VIRTGPU_CONTEXT_PARAM_POLL_RINGS_MASK 0x0003
|
||||
#define VIRTGPU_CONTEXT_PARAM_DEBUG_NAME 0x0004
|
||||
struct drm_virtgpu_context_set_param {
|
||||
__u64 param;
|
||||
__u64 value;
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
/* SPDX-License-Identifier: (GPL-2.0 WITH Linux-syscall-note) OR MIT */
|
||||
/**************************************************************************
|
||||
*
|
||||
* Copyright © 2009-2022 VMware, Inc., Palo Alto, CA., USA
|
||||
* Copyright © 2009-2023 VMware, Inc., Palo Alto, CA., USA
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
@ -902,7 +903,8 @@ struct drm_vmw_shader_arg {
|
||||
/**
|
||||
* enum drm_vmw_surface_flags
|
||||
*
|
||||
* @drm_vmw_surface_flag_shareable: Whether the surface is shareable
|
||||
* @drm_vmw_surface_flag_shareable: Deprecated - all userspace surfaces are
|
||||
* shareable.
|
||||
* @drm_vmw_surface_flag_scanout: Whether the surface is a scanout
|
||||
* surface.
|
||||
* @drm_vmw_surface_flag_create_buffer: Create a backup buffer if none is
|
||||
|
||||
1375
lib/libc/include/any-linux-any/drm/xe_drm.h
vendored
Normal file
1375
lib/libc/include/any-linux-any/drm/xe_drm.h
vendored
Normal file
File diff suppressed because it is too large
Load Diff
@ -7,42 +7,42 @@
|
||||
/* Just the needed definitions for the RDB of an Amiga HD. */
|
||||
|
||||
struct RigidDiskBlock {
|
||||
__u32 rdb_ID;
|
||||
__be32 rdb_ID;
|
||||
__be32 rdb_SummedLongs;
|
||||
__s32 rdb_ChkSum;
|
||||
__u32 rdb_HostID;
|
||||
__be32 rdb_ChkSum;
|
||||
__be32 rdb_HostID;
|
||||
__be32 rdb_BlockBytes;
|
||||
__u32 rdb_Flags;
|
||||
__u32 rdb_BadBlockList;
|
||||
__be32 rdb_Flags;
|
||||
__be32 rdb_BadBlockList;
|
||||
__be32 rdb_PartitionList;
|
||||
__u32 rdb_FileSysHeaderList;
|
||||
__u32 rdb_DriveInit;
|
||||
__u32 rdb_Reserved1[6];
|
||||
__u32 rdb_Cylinders;
|
||||
__u32 rdb_Sectors;
|
||||
__u32 rdb_Heads;
|
||||
__u32 rdb_Interleave;
|
||||
__u32 rdb_Park;
|
||||
__u32 rdb_Reserved2[3];
|
||||
__u32 rdb_WritePreComp;
|
||||
__u32 rdb_ReducedWrite;
|
||||
__u32 rdb_StepRate;
|
||||
__u32 rdb_Reserved3[5];
|
||||
__u32 rdb_RDBBlocksLo;
|
||||
__u32 rdb_RDBBlocksHi;
|
||||
__u32 rdb_LoCylinder;
|
||||
__u32 rdb_HiCylinder;
|
||||
__u32 rdb_CylBlocks;
|
||||
__u32 rdb_AutoParkSeconds;
|
||||
__u32 rdb_HighRDSKBlock;
|
||||
__u32 rdb_Reserved4;
|
||||
__be32 rdb_FileSysHeaderList;
|
||||
__be32 rdb_DriveInit;
|
||||
__be32 rdb_Reserved1[6];
|
||||
__be32 rdb_Cylinders;
|
||||
__be32 rdb_Sectors;
|
||||
__be32 rdb_Heads;
|
||||
__be32 rdb_Interleave;
|
||||
__be32 rdb_Park;
|
||||
__be32 rdb_Reserved2[3];
|
||||
__be32 rdb_WritePreComp;
|
||||
__be32 rdb_ReducedWrite;
|
||||
__be32 rdb_StepRate;
|
||||
__be32 rdb_Reserved3[5];
|
||||
__be32 rdb_RDBBlocksLo;
|
||||
__be32 rdb_RDBBlocksHi;
|
||||
__be32 rdb_LoCylinder;
|
||||
__be32 rdb_HiCylinder;
|
||||
__be32 rdb_CylBlocks;
|
||||
__be32 rdb_AutoParkSeconds;
|
||||
__be32 rdb_HighRDSKBlock;
|
||||
__be32 rdb_Reserved4;
|
||||
char rdb_DiskVendor[8];
|
||||
char rdb_DiskProduct[16];
|
||||
char rdb_DiskRevision[4];
|
||||
char rdb_ControllerVendor[8];
|
||||
char rdb_ControllerProduct[16];
|
||||
char rdb_ControllerRevision[4];
|
||||
__u32 rdb_Reserved5[10];
|
||||
__be32 rdb_Reserved5[10];
|
||||
};
|
||||
|
||||
#define IDNAME_RIGIDDISK 0x5244534B /* "RDSK" */
|
||||
@ -50,16 +50,16 @@ struct RigidDiskBlock {
|
||||
struct PartitionBlock {
|
||||
__be32 pb_ID;
|
||||
__be32 pb_SummedLongs;
|
||||
__s32 pb_ChkSum;
|
||||
__u32 pb_HostID;
|
||||
__be32 pb_ChkSum;
|
||||
__be32 pb_HostID;
|
||||
__be32 pb_Next;
|
||||
__u32 pb_Flags;
|
||||
__u32 pb_Reserved1[2];
|
||||
__u32 pb_DevFlags;
|
||||
__be32 pb_Flags;
|
||||
__be32 pb_Reserved1[2];
|
||||
__be32 pb_DevFlags;
|
||||
__u8 pb_DriveName[32];
|
||||
__u32 pb_Reserved2[15];
|
||||
__be32 pb_Reserved2[15];
|
||||
__be32 pb_Environment[17];
|
||||
__u32 pb_EReserved[15];
|
||||
__be32 pb_EReserved[15];
|
||||
};
|
||||
|
||||
#define IDNAME_PARTITION 0x50415254 /* "PART" */
|
||||
|
||||
@ -251,20 +251,22 @@ struct binder_extended_error {
|
||||
__s32 param;
|
||||
};
|
||||
|
||||
#define BINDER_WRITE_READ _IOWR('b', 1, struct binder_write_read)
|
||||
#define BINDER_SET_IDLE_TIMEOUT _IOW('b', 3, __s64)
|
||||
#define BINDER_SET_MAX_THREADS _IOW('b', 5, __u32)
|
||||
#define BINDER_SET_IDLE_PRIORITY _IOW('b', 6, __s32)
|
||||
#define BINDER_SET_CONTEXT_MGR _IOW('b', 7, __s32)
|
||||
#define BINDER_THREAD_EXIT _IOW('b', 8, __s32)
|
||||
#define BINDER_VERSION _IOWR('b', 9, struct binder_version)
|
||||
#define BINDER_GET_NODE_DEBUG_INFO _IOWR('b', 11, struct binder_node_debug_info)
|
||||
#define BINDER_GET_NODE_INFO_FOR_REF _IOWR('b', 12, struct binder_node_info_for_ref)
|
||||
#define BINDER_SET_CONTEXT_MGR_EXT _IOW('b', 13, struct flat_binder_object)
|
||||
#define BINDER_FREEZE _IOW('b', 14, struct binder_freeze_info)
|
||||
#define BINDER_GET_FROZEN_INFO _IOWR('b', 15, struct binder_frozen_status_info)
|
||||
#define BINDER_ENABLE_ONEWAY_SPAM_DETECTION _IOW('b', 16, __u32)
|
||||
#define BINDER_GET_EXTENDED_ERROR _IOWR('b', 17, struct binder_extended_error)
|
||||
enum {
|
||||
BINDER_WRITE_READ = _IOWR('b', 1, struct binder_write_read),
|
||||
BINDER_SET_IDLE_TIMEOUT = _IOW('b', 3, __s64),
|
||||
BINDER_SET_MAX_THREADS = _IOW('b', 5, __u32),
|
||||
BINDER_SET_IDLE_PRIORITY = _IOW('b', 6, __s32),
|
||||
BINDER_SET_CONTEXT_MGR = _IOW('b', 7, __s32),
|
||||
BINDER_THREAD_EXIT = _IOW('b', 8, __s32),
|
||||
BINDER_VERSION = _IOWR('b', 9, struct binder_version),
|
||||
BINDER_GET_NODE_DEBUG_INFO = _IOWR('b', 11, struct binder_node_debug_info),
|
||||
BINDER_GET_NODE_INFO_FOR_REF = _IOWR('b', 12, struct binder_node_info_for_ref),
|
||||
BINDER_SET_CONTEXT_MGR_EXT = _IOW('b', 13, struct flat_binder_object),
|
||||
BINDER_FREEZE = _IOW('b', 14, struct binder_freeze_info),
|
||||
BINDER_GET_FROZEN_INFO = _IOWR('b', 15, struct binder_frozen_status_info),
|
||||
BINDER_ENABLE_ONEWAY_SPAM_DETECTION = _IOW('b', 16, __u32),
|
||||
BINDER_GET_EXTENDED_ERROR = _IOWR('b', 17, struct binder_extended_error),
|
||||
};
|
||||
|
||||
/*
|
||||
* NOTE: Two special error codes you should check for when calling
|
||||
|
||||
@ -101,10 +101,6 @@ struct atm_dev_stats {
|
||||
/* use backend to make new if */
|
||||
#define ATM_ADDPARTY _IOW('a', ATMIOC_SPECIAL+4,struct atm_iobuf)
|
||||
/* add party to p2mp call */
|
||||
#ifdef CONFIG_COMPAT
|
||||
/* It actually takes struct sockaddr_atmsvc, not struct atm_iobuf */
|
||||
#define COMPAT_ATM_ADDPARTY _IOW('a', ATMIOC_SPECIAL+4,struct compat_atm_iobuf)
|
||||
#endif
|
||||
#define ATM_DROPPARTY _IOW('a', ATMIOC_SPECIAL+5,int)
|
||||
/* drop party from p2mp call */
|
||||
|
||||
|
||||
@ -109,7 +109,7 @@ struct autofs_dev_ioctl {
|
||||
struct args_ismountpoint ismountpoint;
|
||||
};
|
||||
|
||||
char path[0];
|
||||
char path[];
|
||||
};
|
||||
|
||||
static __inline__ void init_autofs_dev_ioctl(struct autofs_dev_ioctl *in)
|
||||
|
||||
@ -32,6 +32,8 @@
|
||||
#define AT_HWCAP2 26 /* extension of AT_HWCAP */
|
||||
#define AT_RSEQ_FEATURE_SIZE 27 /* rseq supported feature size */
|
||||
#define AT_RSEQ_ALIGN 28 /* rseq allocation alignment */
|
||||
#define AT_HWCAP3 29 /* extension of AT_HWCAP */
|
||||
#define AT_HWCAP4 30 /* extension of AT_HWCAP */
|
||||
|
||||
#define AT_EXECFN 31 /* filename of program */
|
||||
|
||||
|
||||
@ -116,6 +116,9 @@ enum batadv_icmp_packettype {
|
||||
* only need routable IPv4 multicast packets we signed up for explicitly
|
||||
* @BATADV_MCAST_WANT_NO_RTR6: we have no IPv6 multicast router and therefore
|
||||
* only need routable IPv6 multicast packets we signed up for explicitly
|
||||
* @BATADV_MCAST_HAVE_MC_PTYPE_CAPA: we can parse, receive and forward
|
||||
* batman-adv multicast packets with a multicast tracker TVLV. And all our
|
||||
* hard interfaces have an MTU of at least 1280 bytes.
|
||||
*/
|
||||
enum batadv_mcast_flags {
|
||||
BATADV_MCAST_WANT_ALL_UNSNOOPABLES = 1UL << 0,
|
||||
@ -123,6 +126,7 @@ enum batadv_mcast_flags {
|
||||
BATADV_MCAST_WANT_ALL_IPV6 = 1UL << 2,
|
||||
BATADV_MCAST_WANT_NO_RTR4 = 1UL << 3,
|
||||
BATADV_MCAST_WANT_NO_RTR6 = 1UL << 4,
|
||||
BATADV_MCAST_HAVE_MC_PTYPE_CAPA = 1UL << 5,
|
||||
};
|
||||
|
||||
/* tt data subtypes */
|
||||
@ -174,6 +178,7 @@ enum batadv_bla_claimframe {
|
||||
* @BATADV_TVLV_TT: translation table tvlv
|
||||
* @BATADV_TVLV_ROAM: roaming advertisement tvlv
|
||||
* @BATADV_TVLV_MCAST: multicast capability tvlv
|
||||
* @BATADV_TVLV_MCAST_TRACKER: multicast tracker tvlv
|
||||
*/
|
||||
enum batadv_tvlv_type {
|
||||
BATADV_TVLV_GW = 0x01,
|
||||
@ -182,6 +187,7 @@ enum batadv_tvlv_type {
|
||||
BATADV_TVLV_TT = 0x04,
|
||||
BATADV_TVLV_ROAM = 0x05,
|
||||
BATADV_TVLV_MCAST = 0x06,
|
||||
BATADV_TVLV_MCAST_TRACKER = 0x07,
|
||||
};
|
||||
|
||||
#pragma pack(2)
|
||||
@ -487,6 +493,25 @@ struct batadv_bcast_packet {
|
||||
*/
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_mcast_packet - multicast packet for network payload
|
||||
* @packet_type: batman-adv packet type, part of the general header
|
||||
* @version: batman-adv protocol version, part of the general header
|
||||
* @ttl: time to live for this packet, part of the general header
|
||||
* @reserved: reserved byte for alignment
|
||||
* @tvlv_len: length of the appended tvlv buffer (in bytes)
|
||||
*/
|
||||
struct batadv_mcast_packet {
|
||||
__u8 packet_type;
|
||||
__u8 version;
|
||||
__u8 ttl;
|
||||
__u8 reserved;
|
||||
__be16 tvlv_len;
|
||||
/* "4 bytes boundary + 2 bytes" long to make the payload after the
|
||||
* following ethernet header again 4 bytes boundary aligned
|
||||
*/
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_coded_packet - network coded packet
|
||||
* @packet_type: batman-adv packet type, part of the general header
|
||||
@ -628,6 +653,14 @@ struct batadv_tvlv_mcast_data {
|
||||
__u8 reserved[3];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct batadv_tvlv_mcast_tracker - payload of a multicast tracker tvlv
|
||||
* @num_dests: number of subsequent destination originator MAC addresses
|
||||
*/
|
||||
struct batadv_tvlv_mcast_tracker {
|
||||
__be16 num_dests;
|
||||
};
|
||||
|
||||
#pragma pack()
|
||||
|
||||
#endif /* _LINUX_BATADV_PACKET_H_ */
|
||||
15
lib/libc/include/any-linux-any/linux/bits.h
vendored
Normal file
15
lib/libc/include/any-linux-any/linux/bits.h
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* bits.h: Macros for dealing with bitmasks. */
|
||||
|
||||
#ifndef _LINUX_BITS_H
|
||||
#define _LINUX_BITS_H
|
||||
|
||||
#define __GENMASK(h, l) \
|
||||
(((~_UL(0)) - (_UL(1) << (l)) + 1) & \
|
||||
(~_UL(0) >> (__BITS_PER_LONG - 1 - (h))))
|
||||
|
||||
#define __GENMASK_ULL(h, l) \
|
||||
(((~_ULL(0)) - (_ULL(1) << (l)) + 1) & \
|
||||
(~_ULL(0) >> (__BITS_PER_LONG_LONG - 1 - (h))))
|
||||
|
||||
#endif /* _LINUX_BITS_H */
|
||||
10
lib/libc/include/any-linux-any/linux/blkzoned.h
vendored
10
lib/libc/include/any-linux-any/linux/blkzoned.h
vendored
@ -51,13 +51,13 @@ enum blk_zone_type {
|
||||
*
|
||||
* The Zone Condition state machine in the ZBC/ZAC standards maps the above
|
||||
* deinitions as:
|
||||
* - ZC1: Empty | BLK_ZONE_EMPTY
|
||||
* - ZC1: Empty | BLK_ZONE_COND_EMPTY
|
||||
* - ZC2: Implicit Open | BLK_ZONE_COND_IMP_OPEN
|
||||
* - ZC3: Explicit Open | BLK_ZONE_COND_EXP_OPEN
|
||||
* - ZC4: Closed | BLK_ZONE_CLOSED
|
||||
* - ZC5: Full | BLK_ZONE_FULL
|
||||
* - ZC6: Read Only | BLK_ZONE_READONLY
|
||||
* - ZC7: Offline | BLK_ZONE_OFFLINE
|
||||
* - ZC4: Closed | BLK_ZONE_COND_CLOSED
|
||||
* - ZC5: Full | BLK_ZONE_COND_FULL
|
||||
* - ZC6: Read Only | BLK_ZONE_COND_READONLY
|
||||
* - ZC7: Offline | BLK_ZONE_COND_OFFLINE
|
||||
*
|
||||
* Conditions 0x5 to 0xC are reserved by the current ZBC/ZAC spec and should
|
||||
* be considered invalid.
|
||||
|
||||
524
lib/libc/include/any-linux-any/linux/bpf.h
vendored
524
lib/libc/include/any-linux-any/linux/bpf.h
vendored
@ -19,6 +19,7 @@
|
||||
|
||||
/* ld/ldx fields */
|
||||
#define BPF_DW 0x18 /* double word (64-bit) */
|
||||
#define BPF_MEMSX 0x80 /* load with sign extension */
|
||||
#define BPF_ATOMIC 0xc0 /* atomic memory ops - op type in immediate */
|
||||
#define BPF_XADD 0xc0 /* exclusive add - legacy name */
|
||||
|
||||
@ -41,6 +42,7 @@
|
||||
#define BPF_JSGE 0x70 /* SGE is signed '>=', GE in x86 */
|
||||
#define BPF_JSLT 0xc0 /* SLT is signed, '<' */
|
||||
#define BPF_JSLE 0xd0 /* SLE is signed, '<=' */
|
||||
#define BPF_JCOND 0xe0 /* conditional pseudo jumps: may_goto, goto_or_nop */
|
||||
#define BPF_CALL 0x80 /* function call */
|
||||
#define BPF_EXIT 0x90 /* function return */
|
||||
|
||||
@ -49,6 +51,10 @@
|
||||
#define BPF_XCHG (0xe0 | BPF_FETCH) /* atomic exchange */
|
||||
#define BPF_CMPXCHG (0xf0 | BPF_FETCH) /* atomic compare-and-write */
|
||||
|
||||
enum bpf_cond_pseudo_jmp {
|
||||
BPF_MAY_GOTO = 0,
|
||||
};
|
||||
|
||||
/* Register numbers */
|
||||
enum {
|
||||
BPF_REG_0 = 0,
|
||||
@ -76,12 +82,29 @@ struct bpf_insn {
|
||||
__s32 imm; /* signed immediate constant */
|
||||
};
|
||||
|
||||
/* Key of an a BPF_MAP_TYPE_LPM_TRIE entry */
|
||||
/* Deprecated: use struct bpf_lpm_trie_key_u8 (when the "data" member is needed for
|
||||
* byte access) or struct bpf_lpm_trie_key_hdr (when using an alternative type for
|
||||
* the trailing flexible array member) instead.
|
||||
*/
|
||||
struct bpf_lpm_trie_key {
|
||||
__u32 prefixlen; /* up to 32 for AF_INET, 128 for AF_INET6 */
|
||||
__u8 data[0]; /* Arbitrary size */
|
||||
};
|
||||
|
||||
/* Header for bpf_lpm_trie_key structs */
|
||||
struct bpf_lpm_trie_key_hdr {
|
||||
__u32 prefixlen;
|
||||
};
|
||||
|
||||
/* Key of an a BPF_MAP_TYPE_LPM_TRIE entry, with trailing byte array. */
|
||||
struct bpf_lpm_trie_key_u8 {
|
||||
union {
|
||||
struct bpf_lpm_trie_key_hdr hdr;
|
||||
__u32 prefixlen;
|
||||
};
|
||||
__u8 data[]; /* Arbitrary size */
|
||||
};
|
||||
|
||||
struct bpf_cgroup_storage_key {
|
||||
__u64 cgroup_inode_id; /* cgroup inode id */
|
||||
__u32 attach_type; /* program attach type (enum bpf_attach_type) */
|
||||
@ -616,7 +639,11 @@ union bpf_iter_link_info {
|
||||
* to NULL to begin the batched operation. After each subsequent
|
||||
* **BPF_MAP_LOOKUP_BATCH**, the caller should pass the resultant
|
||||
* *out_batch* as the *in_batch* for the next operation to
|
||||
* continue iteration from the current point.
|
||||
* continue iteration from the current point. Both *in_batch* and
|
||||
* *out_batch* must point to memory large enough to hold a key,
|
||||
* except for maps of type **BPF_MAP_TYPE_{HASH, PERCPU_HASH,
|
||||
* LRU_HASH, LRU_PERCPU_HASH}**, for which batch parameters
|
||||
* must be at least 4 bytes wide regardless of key size.
|
||||
*
|
||||
* The *keys* and *values* are output parameters which must point
|
||||
* to memory large enough to hold *count* items based on the key
|
||||
@ -846,6 +873,36 @@ union bpf_iter_link_info {
|
||||
* Returns zero on success. On error, -1 is returned and *errno*
|
||||
* is set appropriately.
|
||||
*
|
||||
* BPF_TOKEN_CREATE
|
||||
* Description
|
||||
* Create BPF token with embedded information about what
|
||||
* BPF-related functionality it allows:
|
||||
* - a set of allowed bpf() syscall commands;
|
||||
* - a set of allowed BPF map types to be created with
|
||||
* BPF_MAP_CREATE command, if BPF_MAP_CREATE itself is allowed;
|
||||
* - a set of allowed BPF program types and BPF program attach
|
||||
* types to be loaded with BPF_PROG_LOAD command, if
|
||||
* BPF_PROG_LOAD itself is allowed.
|
||||
*
|
||||
* BPF token is created (derived) from an instance of BPF FS,
|
||||
* assuming it has necessary delegation mount options specified.
|
||||
* This BPF token can be passed as an extra parameter to various
|
||||
* bpf() syscall commands to grant BPF subsystem functionality to
|
||||
* unprivileged processes.
|
||||
*
|
||||
* When created, BPF token is "associated" with the owning
|
||||
* user namespace of BPF FS instance (super block) that it was
|
||||
* derived from, and subsequent BPF operations performed with
|
||||
* BPF token would be performing capabilities checks (i.e.,
|
||||
* CAP_BPF, CAP_PERFMON, CAP_NET_ADMIN, CAP_SYS_ADMIN) within
|
||||
* that user namespace. Without BPF token, such capabilities
|
||||
* have to be granted in init user namespace, making bpf()
|
||||
* syscall incompatible with user namespace, for the most part.
|
||||
*
|
||||
* Return
|
||||
* A new file descriptor (a nonnegative integer), or -1 if an
|
||||
* error occurred (in which case, *errno* is set appropriately).
|
||||
*
|
||||
* NOTES
|
||||
* eBPF objects (maps and programs) can be shared between processes.
|
||||
*
|
||||
@ -900,6 +957,8 @@ enum bpf_cmd {
|
||||
BPF_ITER_CREATE,
|
||||
BPF_LINK_DETACH,
|
||||
BPF_PROG_BIND_MAP,
|
||||
BPF_TOKEN_CREATE,
|
||||
__MAX_BPF_CMD,
|
||||
};
|
||||
|
||||
enum bpf_map_type {
|
||||
@ -931,7 +990,14 @@ enum bpf_map_type {
|
||||
*/
|
||||
BPF_MAP_TYPE_CGROUP_STORAGE = BPF_MAP_TYPE_CGROUP_STORAGE_DEPRECATED,
|
||||
BPF_MAP_TYPE_REUSEPORT_SOCKARRAY,
|
||||
BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE,
|
||||
BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE_DEPRECATED,
|
||||
/* BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE is available to bpf programs
|
||||
* attaching to a cgroup. The new mechanism (BPF_MAP_TYPE_CGRP_STORAGE +
|
||||
* local percpu kptr) supports all BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE
|
||||
* functionality and more. So mark * BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE
|
||||
* deprecated.
|
||||
*/
|
||||
BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE_DEPRECATED,
|
||||
BPF_MAP_TYPE_QUEUE,
|
||||
BPF_MAP_TYPE_STACK,
|
||||
BPF_MAP_TYPE_SK_STORAGE,
|
||||
@ -943,6 +1009,8 @@ enum bpf_map_type {
|
||||
BPF_MAP_TYPE_BLOOM_FILTER,
|
||||
BPF_MAP_TYPE_USER_RINGBUF,
|
||||
BPF_MAP_TYPE_CGRP_STORAGE,
|
||||
BPF_MAP_TYPE_ARENA,
|
||||
__MAX_BPF_MAP_TYPE
|
||||
};
|
||||
|
||||
/* Note that tracing related programs such as
|
||||
@ -986,6 +1054,8 @@ enum bpf_prog_type {
|
||||
BPF_PROG_TYPE_LSM,
|
||||
BPF_PROG_TYPE_SK_LOOKUP,
|
||||
BPF_PROG_TYPE_SYSCALL, /* a program that can execute syscalls */
|
||||
BPF_PROG_TYPE_NETFILTER,
|
||||
__MAX_BPF_PROG_TYPE
|
||||
};
|
||||
|
||||
enum bpf_attach_type {
|
||||
@ -1033,6 +1103,19 @@ enum bpf_attach_type {
|
||||
BPF_PERF_EVENT,
|
||||
BPF_TRACE_KPROBE_MULTI,
|
||||
BPF_LSM_CGROUP,
|
||||
BPF_STRUCT_OPS,
|
||||
BPF_NETFILTER,
|
||||
BPF_TCX_INGRESS,
|
||||
BPF_TCX_EGRESS,
|
||||
BPF_TRACE_UPROBE_MULTI,
|
||||
BPF_CGROUP_UNIX_CONNECT,
|
||||
BPF_CGROUP_UNIX_SENDMSG,
|
||||
BPF_CGROUP_UNIX_RECVMSG,
|
||||
BPF_CGROUP_UNIX_GETPEERNAME,
|
||||
BPF_CGROUP_UNIX_GETSOCKNAME,
|
||||
BPF_NETKIT_PRIMARY,
|
||||
BPF_NETKIT_PEER,
|
||||
BPF_TRACE_KPROBE_SESSION,
|
||||
__MAX_BPF_ATTACH_TYPE
|
||||
};
|
||||
|
||||
@ -1049,8 +1132,24 @@ enum bpf_link_type {
|
||||
BPF_LINK_TYPE_PERF_EVENT = 7,
|
||||
BPF_LINK_TYPE_KPROBE_MULTI = 8,
|
||||
BPF_LINK_TYPE_STRUCT_OPS = 9,
|
||||
BPF_LINK_TYPE_NETFILTER = 10,
|
||||
BPF_LINK_TYPE_TCX = 11,
|
||||
BPF_LINK_TYPE_UPROBE_MULTI = 12,
|
||||
BPF_LINK_TYPE_NETKIT = 13,
|
||||
BPF_LINK_TYPE_SOCKMAP = 14,
|
||||
__MAX_BPF_LINK_TYPE,
|
||||
};
|
||||
|
||||
MAX_BPF_LINK_TYPE,
|
||||
#define MAX_BPF_LINK_TYPE __MAX_BPF_LINK_TYPE
|
||||
|
||||
enum bpf_perf_event_type {
|
||||
BPF_PERF_EVENT_UNSPEC = 0,
|
||||
BPF_PERF_EVENT_UPROBE = 1,
|
||||
BPF_PERF_EVENT_URETPROBE = 2,
|
||||
BPF_PERF_EVENT_KPROBE = 3,
|
||||
BPF_PERF_EVENT_KRETPROBE = 4,
|
||||
BPF_PERF_EVENT_TRACEPOINT = 5,
|
||||
BPF_PERF_EVENT_EVENT = 6,
|
||||
};
|
||||
|
||||
/* cgroup-bpf attach flags used in BPF_PROG_ATTACH command
|
||||
@ -1099,7 +1198,12 @@ enum bpf_link_type {
|
||||
*/
|
||||
#define BPF_F_ALLOW_OVERRIDE (1U << 0)
|
||||
#define BPF_F_ALLOW_MULTI (1U << 1)
|
||||
/* Generic attachment flags. */
|
||||
#define BPF_F_REPLACE (1U << 2)
|
||||
#define BPF_F_BEFORE (1U << 3)
|
||||
#define BPF_F_AFTER (1U << 4)
|
||||
#define BPF_F_ID (1U << 5)
|
||||
#define BPF_F_LINK BPF_F_LINK /* 1 << 13 */
|
||||
|
||||
/* If BPF_F_STRICT_ALIGNMENT is used in BPF_PROG_LOAD command, the
|
||||
* verifier will perform strict alignment checking as if the kernel
|
||||
@ -1108,7 +1212,7 @@ enum bpf_link_type {
|
||||
*/
|
||||
#define BPF_F_STRICT_ALIGNMENT (1U << 0)
|
||||
|
||||
/* If BPF_F_ANY_ALIGNMENT is used in BPF_PROF_LOAD command, the
|
||||
/* If BPF_F_ANY_ALIGNMENT is used in BPF_PROG_LOAD command, the
|
||||
* verifier will allow any alignment whatsoever. On platforms
|
||||
* with strict alignment requirements for loads ands stores (such
|
||||
* as sparc and mips) the verifier validates that all loads and
|
||||
@ -1161,10 +1265,27 @@ enum bpf_link_type {
|
||||
*/
|
||||
#define BPF_F_XDP_DEV_BOUND_ONLY (1U << 6)
|
||||
|
||||
/* The verifier internal test flag. Behavior is undefined */
|
||||
#define BPF_F_TEST_REG_INVARIANTS (1U << 7)
|
||||
|
||||
/* link_create.kprobe_multi.flags used in LINK_CREATE command for
|
||||
* BPF_TRACE_KPROBE_MULTI attach type to create return probe.
|
||||
*/
|
||||
#define BPF_F_KPROBE_MULTI_RETURN (1U << 0)
|
||||
enum {
|
||||
BPF_F_KPROBE_MULTI_RETURN = (1U << 0)
|
||||
};
|
||||
|
||||
/* link_create.uprobe_multi.flags used in LINK_CREATE command for
|
||||
* BPF_TRACE_UPROBE_MULTI attach type to create return probe.
|
||||
*/
|
||||
enum {
|
||||
BPF_F_UPROBE_MULTI_RETURN = (1U << 0)
|
||||
};
|
||||
|
||||
/* link_create.netfilter.flags used in LINK_CREATE command for
|
||||
* BPF_PROG_TYPE_NETFILTER to enable IP packet defragmentation.
|
||||
*/
|
||||
#define BPF_F_NETFILTER_IP_DEFRAG (1U << 0)
|
||||
|
||||
/* When BPF ldimm64's insn[0].src_reg != 0 then this can have
|
||||
* the following extensions:
|
||||
@ -1220,6 +1341,10 @@ enum bpf_link_type {
|
||||
*/
|
||||
#define BPF_PSEUDO_KFUNC_CALL 2
|
||||
|
||||
enum bpf_addr_space_cast {
|
||||
BPF_ADDR_SPACE_CAST = 1,
|
||||
};
|
||||
|
||||
/* flags for BPF_MAP_UPDATE_ELEM command */
|
||||
enum {
|
||||
BPF_ANY = 0, /* create new element or update existing */
|
||||
@ -1266,6 +1391,24 @@ enum {
|
||||
|
||||
/* Create a map that is suitable to be an inner map with dynamic max entries */
|
||||
BPF_F_INNER_MAP = (1U << 12),
|
||||
|
||||
/* Create a map that will be registered/unregesitered by the backed bpf_link */
|
||||
BPF_F_LINK = (1U << 13),
|
||||
|
||||
/* Get path from provided FD in BPF_OBJ_PIN/BPF_OBJ_GET commands */
|
||||
BPF_F_PATH_FD = (1U << 14),
|
||||
|
||||
/* Flag for value_type_btf_obj_fd, the fd is available */
|
||||
BPF_F_VTYPE_BTF_OBJ_FD = (1U << 15),
|
||||
|
||||
/* BPF token FD is passed in a corresponding command's token_fd field */
|
||||
BPF_F_TOKEN_FD = (1U << 16),
|
||||
|
||||
/* When user space page faults in bpf_arena send SIGSEGV instead of inserting new page */
|
||||
BPF_F_SEGV_ON_FAULT = (1U << 17),
|
||||
|
||||
/* Do not translate kernel bpf_arena pointers to user pointers */
|
||||
BPF_F_NO_USER_CONV = (1U << 18),
|
||||
};
|
||||
|
||||
/* Flags for BPF_PROG_QUERY. */
|
||||
@ -1337,8 +1480,20 @@ union bpf_attr {
|
||||
* BPF_MAP_TYPE_BLOOM_FILTER - the lowest 4 bits indicate the
|
||||
* number of hash functions (if 0, the bloom filter will default
|
||||
* to using 5 hash functions).
|
||||
*
|
||||
* BPF_MAP_TYPE_ARENA - contains the address where user space
|
||||
* is going to mmap() the arena. It has to be page aligned.
|
||||
*/
|
||||
__u64 map_extra;
|
||||
|
||||
__s32 value_type_btf_obj_fd; /* fd pointing to a BTF
|
||||
* type data for
|
||||
* btf_vmlinux_value_type_id.
|
||||
*/
|
||||
/* BPF token FD to use with BPF_MAP_CREATE operation.
|
||||
* If provided, map_flags should have BPF_F_TOKEN_FD flag set.
|
||||
*/
|
||||
__s32 map_token_fd;
|
||||
};
|
||||
|
||||
struct { /* anonymous struct used by BPF_MAP_*_ELEM commands */
|
||||
@ -1403,23 +1558,44 @@ union bpf_attr {
|
||||
__aligned_u64 fd_array; /* array of FDs */
|
||||
__aligned_u64 core_relos;
|
||||
__u32 core_relo_rec_size; /* sizeof(struct bpf_core_relo) */
|
||||
/* output: actual total log contents size (including termintaing zero).
|
||||
* It could be both larger than original log_size (if log was
|
||||
* truncated), or smaller (if log buffer wasn't filled completely).
|
||||
*/
|
||||
__u32 log_true_size;
|
||||
/* BPF token FD to use with BPF_PROG_LOAD operation.
|
||||
* If provided, prog_flags should have BPF_F_TOKEN_FD flag set.
|
||||
*/
|
||||
__s32 prog_token_fd;
|
||||
};
|
||||
|
||||
struct { /* anonymous struct used by BPF_OBJ_* commands */
|
||||
__aligned_u64 pathname;
|
||||
__u32 bpf_fd;
|
||||
__u32 file_flags;
|
||||
/* Same as dirfd in openat() syscall; see openat(2)
|
||||
* manpage for details of path FD and pathname semantics;
|
||||
* path_fd should accompanied by BPF_F_PATH_FD flag set in
|
||||
* file_flags field, otherwise it should be set to zero;
|
||||
* if BPF_F_PATH_FD flag is not set, AT_FDCWD is assumed.
|
||||
*/
|
||||
__s32 path_fd;
|
||||
};
|
||||
|
||||
struct { /* anonymous struct used by BPF_PROG_ATTACH/DETACH commands */
|
||||
__u32 target_fd; /* container object to attach to */
|
||||
__u32 attach_bpf_fd; /* eBPF program to attach */
|
||||
union {
|
||||
__u32 target_fd; /* target object to attach to or ... */
|
||||
__u32 target_ifindex; /* target ifindex */
|
||||
};
|
||||
__u32 attach_bpf_fd;
|
||||
__u32 attach_type;
|
||||
__u32 attach_flags;
|
||||
__u32 replace_bpf_fd; /* previously attached eBPF
|
||||
* program to replace if
|
||||
* BPF_F_REPLACE is used
|
||||
*/
|
||||
__u32 replace_bpf_fd;
|
||||
union {
|
||||
__u32 relative_fd;
|
||||
__u32 relative_id;
|
||||
};
|
||||
__u64 expected_revision;
|
||||
};
|
||||
|
||||
struct { /* anonymous struct used by BPF_PROG_TEST_RUN command */
|
||||
@ -1465,21 +1641,33 @@ union bpf_attr {
|
||||
} info;
|
||||
|
||||
struct { /* anonymous struct used by BPF_PROG_QUERY command */
|
||||
__u32 target_fd; /* container object to query */
|
||||
union {
|
||||
__u32 target_fd; /* target object to query or ... */
|
||||
__u32 target_ifindex; /* target ifindex */
|
||||
};
|
||||
__u32 attach_type;
|
||||
__u32 query_flags;
|
||||
__u32 attach_flags;
|
||||
__aligned_u64 prog_ids;
|
||||
union {
|
||||
__u32 prog_cnt;
|
||||
__u32 count;
|
||||
};
|
||||
__u32 :32;
|
||||
/* output: per-program attach_flags.
|
||||
* not allowed to be set during effective query.
|
||||
*/
|
||||
__aligned_u64 prog_attach_flags;
|
||||
__aligned_u64 link_ids;
|
||||
__aligned_u64 link_attach_flags;
|
||||
__u64 revision;
|
||||
} query;
|
||||
|
||||
struct { /* anonymous struct used by BPF_RAW_TRACEPOINT_OPEN command */
|
||||
__u64 name;
|
||||
__u32 prog_fd;
|
||||
__u32 :32;
|
||||
__aligned_u64 cookie;
|
||||
} raw_tracepoint;
|
||||
|
||||
struct { /* anonymous struct for BPF_BTF_LOAD */
|
||||
@ -1488,6 +1676,16 @@ union bpf_attr {
|
||||
__u32 btf_size;
|
||||
__u32 btf_log_size;
|
||||
__u32 btf_log_level;
|
||||
/* output: actual total log contents size (including termintaing zero).
|
||||
* It could be both larger than original log_size (if log was
|
||||
* truncated), or smaller (if log buffer wasn't filled completely).
|
||||
*/
|
||||
__u32 btf_log_true_size;
|
||||
__u32 btf_flags;
|
||||
/* BPF token FD to use with BPF_BTF_LOAD operation.
|
||||
* If provided, btf_flags should have BPF_F_TOKEN_FD flag set.
|
||||
*/
|
||||
__s32 btf_token_fd;
|
||||
};
|
||||
|
||||
struct {
|
||||
@ -1507,9 +1705,12 @@ union bpf_attr {
|
||||
} task_fd_query;
|
||||
|
||||
struct { /* struct used by BPF_LINK_CREATE command */
|
||||
__u32 prog_fd; /* eBPF program to attach */
|
||||
union {
|
||||
__u32 target_fd; /* object to attach to */
|
||||
__u32 prog_fd; /* eBPF program to attach */
|
||||
__u32 map_fd; /* struct_ops to attach */
|
||||
};
|
||||
union {
|
||||
__u32 target_fd; /* target object to attach to or ... */
|
||||
__u32 target_ifindex; /* target ifindex */
|
||||
};
|
||||
__u32 attach_type; /* attach type */
|
||||
@ -1543,17 +1744,57 @@ union bpf_attr {
|
||||
*/
|
||||
__u64 cookie;
|
||||
} tracing;
|
||||
struct {
|
||||
__u32 pf;
|
||||
__u32 hooknum;
|
||||
__s32 priority;
|
||||
__u32 flags;
|
||||
} netfilter;
|
||||
struct {
|
||||
union {
|
||||
__u32 relative_fd;
|
||||
__u32 relative_id;
|
||||
};
|
||||
__u64 expected_revision;
|
||||
} tcx;
|
||||
struct {
|
||||
__aligned_u64 path;
|
||||
__aligned_u64 offsets;
|
||||
__aligned_u64 ref_ctr_offsets;
|
||||
__aligned_u64 cookies;
|
||||
__u32 cnt;
|
||||
__u32 flags;
|
||||
__u32 pid;
|
||||
} uprobe_multi;
|
||||
struct {
|
||||
union {
|
||||
__u32 relative_fd;
|
||||
__u32 relative_id;
|
||||
};
|
||||
__u64 expected_revision;
|
||||
} netkit;
|
||||
};
|
||||
} link_create;
|
||||
|
||||
struct { /* struct used by BPF_LINK_UPDATE command */
|
||||
__u32 link_fd; /* link fd */
|
||||
union {
|
||||
/* new program fd to update link with */
|
||||
__u32 new_prog_fd;
|
||||
/* new struct_ops map fd to update link with */
|
||||
__u32 new_map_fd;
|
||||
};
|
||||
__u32 flags; /* extra flags */
|
||||
union {
|
||||
/* expected link's program fd; is specified only if
|
||||
* BPF_F_REPLACE flag is set in flags */
|
||||
* BPF_F_REPLACE flag is set in flags.
|
||||
*/
|
||||
__u32 old_prog_fd;
|
||||
/* expected link's map fd; is specified only
|
||||
* if BPF_F_REPLACE flag is set.
|
||||
*/
|
||||
__u32 old_map_fd;
|
||||
};
|
||||
} link_update;
|
||||
|
||||
struct {
|
||||
@ -1575,6 +1816,11 @@ union bpf_attr {
|
||||
__u32 flags; /* extra flags */
|
||||
} prog_bind_map;
|
||||
|
||||
struct { /* struct used by BPF_TOKEN_CREATE command */
|
||||
__u32 flags;
|
||||
__u32 bpffs_fd;
|
||||
} token_create;
|
||||
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
/* The description below is an attempt at providing documentation to eBPF
|
||||
@ -1647,17 +1893,17 @@ union bpf_attr {
|
||||
* Description
|
||||
* This helper is a "printk()-like" facility for debugging. It
|
||||
* prints a message defined by format *fmt* (of size *fmt_size*)
|
||||
* to file *\/sys/kernel/debug/tracing/trace* from DebugFS, if
|
||||
* to file *\/sys/kernel/tracing/trace* from TraceFS, if
|
||||
* available. It can take up to three additional **u64**
|
||||
* arguments (as an eBPF helpers, the total number of arguments is
|
||||
* limited to five).
|
||||
*
|
||||
* Each time the helper is called, it appends a line to the trace.
|
||||
* Lines are discarded while *\/sys/kernel/debug/tracing/trace* is
|
||||
* open, use *\/sys/kernel/debug/tracing/trace_pipe* to avoid this.
|
||||
* Lines are discarded while *\/sys/kernel/tracing/trace* is
|
||||
* open, use *\/sys/kernel/tracing/trace_pipe* to avoid this.
|
||||
* The format of the trace is customizable, and the exact output
|
||||
* one will get depends on the options set in
|
||||
* *\/sys/kernel/debug/tracing/trace_options* (see also the
|
||||
* *\/sys/kernel/tracing/trace_options* (see also the
|
||||
* *README* file under the same directory). However, it usually
|
||||
* defaults to something like:
|
||||
*
|
||||
@ -1850,7 +2096,9 @@ union bpf_attr {
|
||||
* performed again, if the helper is used in combination with
|
||||
* direct packet access.
|
||||
* Return
|
||||
* 0 on success, or a negative error in case of failure.
|
||||
* 0 on success, or a negative error in case of failure. Positive
|
||||
* error indicates a potential drop or congestion in the target
|
||||
* device. The particular positive error codes are not defined.
|
||||
*
|
||||
* u64 bpf_get_current_pid_tgid(void)
|
||||
* Description
|
||||
@ -2583,8 +2831,8 @@ union bpf_attr {
|
||||
* *bpf_socket* should be one of the following:
|
||||
*
|
||||
* * **struct bpf_sock_ops** for **BPF_PROG_TYPE_SOCK_OPS**.
|
||||
* * **struct bpf_sock_addr** for **BPF_CGROUP_INET4_CONNECT**
|
||||
* and **BPF_CGROUP_INET6_CONNECT**.
|
||||
* * **struct bpf_sock_addr** for **BPF_CGROUP_INET4_CONNECT**,
|
||||
* **BPF_CGROUP_INET6_CONNECT** and **BPF_CGROUP_UNIX_CONNECT**.
|
||||
*
|
||||
* This helper actually implements a subset of **setsockopt()**.
|
||||
* It supports the following *level*\ s:
|
||||
@ -2822,8 +3070,8 @@ union bpf_attr {
|
||||
* *bpf_socket* should be one of the following:
|
||||
*
|
||||
* * **struct bpf_sock_ops** for **BPF_PROG_TYPE_SOCK_OPS**.
|
||||
* * **struct bpf_sock_addr** for **BPF_CGROUP_INET4_CONNECT**
|
||||
* and **BPF_CGROUP_INET6_CONNECT**.
|
||||
* * **struct bpf_sock_addr** for **BPF_CGROUP_INET4_CONNECT**,
|
||||
* **BPF_CGROUP_INET6_CONNECT** and **BPF_CGROUP_UNIX_CONNECT**.
|
||||
*
|
||||
* This helper actually implements a subset of **getsockopt()**.
|
||||
* It supports the same set of *optname*\ s that is supported by
|
||||
@ -3131,6 +3379,10 @@ union bpf_attr {
|
||||
* **BPF_FIB_LOOKUP_DIRECT**
|
||||
* Do a direct table lookup vs full lookup using FIB
|
||||
* rules.
|
||||
* **BPF_FIB_LOOKUP_TBID**
|
||||
* Used with BPF_FIB_LOOKUP_DIRECT.
|
||||
* Use the routing table ID present in *params*->tbid
|
||||
* for the fib lookup.
|
||||
* **BPF_FIB_LOOKUP_OUTPUT**
|
||||
* Perform lookup from an egress perspective (default is
|
||||
* ingress).
|
||||
@ -3139,6 +3391,15 @@ union bpf_attr {
|
||||
* and *params*->smac will not be set as output. A common
|
||||
* use case is to call **bpf_redirect_neigh**\ () after
|
||||
* doing **bpf_fib_lookup**\ ().
|
||||
* **BPF_FIB_LOOKUP_SRC**
|
||||
* Derive and set source IP addr in *params*->ipv{4,6}_src
|
||||
* for the nexthop. If the src addr cannot be derived,
|
||||
* **BPF_FIB_LKUP_RET_NO_SRC_ADDR** is returned. In this
|
||||
* case, *params*->dmac and *params*->smac are not set either.
|
||||
* **BPF_FIB_LOOKUP_MARK**
|
||||
* Use the mark present in *params*->mark for the fib lookup.
|
||||
* This option should not be used with BPF_FIB_LOOKUP_DIRECT,
|
||||
* as it only has meaning for full lookups.
|
||||
*
|
||||
* *ctx* is either **struct xdp_md** for XDP programs or
|
||||
* **struct sk_buff** tc cls_act programs.
|
||||
@ -4108,9 +4369,6 @@ union bpf_attr {
|
||||
* **-EOPNOTSUPP** if the operation is not supported, for example
|
||||
* a call from outside of TC ingress.
|
||||
*
|
||||
* **-ESOCKTNOSUPPORT** if the socket type is not supported
|
||||
* (reuseport).
|
||||
*
|
||||
* long bpf_sk_assign(struct bpf_sk_lookup *ctx, struct bpf_sock *sk, u64 flags)
|
||||
* Description
|
||||
* Helper is overloaded depending on BPF program type. This
|
||||
@ -4375,6 +4633,8 @@ union bpf_attr {
|
||||
* long bpf_get_task_stack(struct task_struct *task, void *buf, u32 size, u64 flags)
|
||||
* Description
|
||||
* Return a user or a kernel stack in bpf program provided buffer.
|
||||
* Note: the user stack will only be populated if the *task* is
|
||||
* the current task; all other tasks will return -EOPNOTSUPP.
|
||||
* To achieve this, the helper needs *task*, which is a valid
|
||||
* pointer to **struct task_struct**. To store the stacktrace, the
|
||||
* bpf program provides *buf* with a nonnegative *size*.
|
||||
@ -4386,6 +4646,7 @@ union bpf_attr {
|
||||
*
|
||||
* **BPF_F_USER_STACK**
|
||||
* Collect a user space stack instead of a kernel stack.
|
||||
* The *task* must be the current task.
|
||||
* **BPF_F_USER_BUILD_ID**
|
||||
* Collect buildid+offset instead of ips for user stack,
|
||||
* only valid if **BPF_F_USER_STACK** is also specified.
|
||||
@ -4689,9 +4950,9 @@ union bpf_attr {
|
||||
* going through the CPU's backlog queue.
|
||||
*
|
||||
* The *flags* argument is reserved and must be 0. The helper is
|
||||
* currently only supported for tc BPF program types at the ingress
|
||||
* hook and for veth device types. The peer device must reside in a
|
||||
* different network namespace.
|
||||
* currently only supported for tc BPF program types at the
|
||||
* ingress hook and for veth and netkit target device types. The
|
||||
* peer device must reside in a different network namespace.
|
||||
* Return
|
||||
* The helper returns **TC_ACT_REDIRECT** on success or
|
||||
* **TC_ACT_SHOT** on error.
|
||||
@ -4767,7 +5028,7 @@ union bpf_attr {
|
||||
* bytes will be copied to *dst*
|
||||
* Return
|
||||
* The **hash_algo** is returned on success,
|
||||
* **-EOPNOTSUP** if IMA is disabled or **-EINVAL** if
|
||||
* **-EOPNOTSUPP** if IMA is disabled or **-EINVAL** if
|
||||
* invalid arguments are passed.
|
||||
*
|
||||
* struct socket *bpf_sock_from_file(struct file *file)
|
||||
@ -4969,6 +5230,14 @@ union bpf_attr {
|
||||
* different maps if key/value layout matches across maps.
|
||||
* Every bpf_timer_set_callback() can have different callback_fn.
|
||||
*
|
||||
* *flags* can be one of:
|
||||
*
|
||||
* **BPF_F_TIMER_ABS**
|
||||
* Start the timer in absolute expire value instead of the
|
||||
* default relative one.
|
||||
* **BPF_F_TIMER_CPU_PIN**
|
||||
* Timer will be pinned to the CPU of the caller.
|
||||
*
|
||||
* Return
|
||||
* 0 on success.
|
||||
* **-EINVAL** if *timer* was not initialized with bpf_timer_init() earlier
|
||||
@ -4987,9 +5256,14 @@ union bpf_attr {
|
||||
* u64 bpf_get_func_ip(void *ctx)
|
||||
* Description
|
||||
* Get address of the traced function (for tracing and kprobe programs).
|
||||
*
|
||||
* When called for kprobe program attached as uprobe it returns
|
||||
* probe address for both entry and return uprobe.
|
||||
*
|
||||
* Return
|
||||
* Address of the traced function.
|
||||
* Address of the traced function for kprobe.
|
||||
* 0 for kprobes placed within the function (not at the entry).
|
||||
* Address of the probe for uprobe and return uprobe.
|
||||
*
|
||||
* u64 bpf_get_attach_cookie(void *ctx)
|
||||
* Description
|
||||
@ -5240,7 +5514,7 @@ union bpf_attr {
|
||||
* bytes will be copied to *dst*
|
||||
* Return
|
||||
* The **hash_algo** is returned on success,
|
||||
* **-EOPNOTSUP** if the hash calculation failed or **-EINVAL** if
|
||||
* **-EOPNOTSUPP** if the hash calculation failed or **-EINVAL** if
|
||||
* invalid arguments are passed.
|
||||
*
|
||||
* void *bpf_kptr_xchg(void *map_value, void *ptr)
|
||||
@ -5325,11 +5599,22 @@ union bpf_attr {
|
||||
* Description
|
||||
* Write *len* bytes from *src* into *dst*, starting from *offset*
|
||||
* into *dst*.
|
||||
* *flags* is currently unused.
|
||||
*
|
||||
* *flags* must be 0 except for skb-type dynptrs.
|
||||
*
|
||||
* For skb-type dynptrs:
|
||||
* * All data slices of the dynptr are automatically
|
||||
* invalidated after **bpf_dynptr_write**\ (). This is
|
||||
* because writing may pull the skb and change the
|
||||
* underlying packet buffer.
|
||||
*
|
||||
* * For *flags*, please see the flags accepted by
|
||||
* **bpf_skb_store_bytes**\ ().
|
||||
* Return
|
||||
* 0 on success, -E2BIG if *offset* + *len* exceeds the length
|
||||
* of *dst*'s data, -EINVAL if *dst* is an invalid dynptr or if *dst*
|
||||
* is a read-only dynptr or if *flags* is not 0.
|
||||
* is a read-only dynptr or if *flags* is not correct. For skb-type dynptrs,
|
||||
* other errors correspond to errors returned by **bpf_skb_store_bytes**\ ().
|
||||
*
|
||||
* void *bpf_dynptr_data(const struct bpf_dynptr *ptr, u32 offset, u32 len)
|
||||
* Description
|
||||
@ -5337,6 +5622,9 @@ union bpf_attr {
|
||||
*
|
||||
* *len* must be a statically known value. The returned data slice
|
||||
* is invalidated whenever the dynptr is invalidated.
|
||||
*
|
||||
* skb and xdp type dynptrs may not use bpf_dynptr_data. They should
|
||||
* instead use bpf_dynptr_slice and bpf_dynptr_slice_rdwr.
|
||||
* Return
|
||||
* Pointer to the underlying dynptr data, NULL if the dynptr is
|
||||
* read-only, if the dynptr is invalid, or if the offset and length
|
||||
@ -6116,6 +6404,19 @@ struct bpf_sock_tuple {
|
||||
};
|
||||
};
|
||||
|
||||
/* (Simplified) user return codes for tcx prog type.
|
||||
* A valid tcx program must return one of these defined values. All other
|
||||
* return codes are reserved for future use. Must remain compatible with
|
||||
* their TC_ACT_* counter-parts. For compatibility in behavior, unknown
|
||||
* return codes are mapped to TCX_NEXT.
|
||||
*/
|
||||
enum tcx_action_base {
|
||||
TCX_NEXT = -1,
|
||||
TCX_PASS = 0,
|
||||
TCX_DROP = 2,
|
||||
TCX_REDIRECT = 7,
|
||||
};
|
||||
|
||||
struct bpf_xdp_sock {
|
||||
__u32 queue_id;
|
||||
};
|
||||
@ -6297,7 +6598,7 @@ struct bpf_map_info {
|
||||
__u32 btf_id;
|
||||
__u32 btf_key_type_id;
|
||||
__u32 btf_value_type_id;
|
||||
__u32 :32; /* alignment pad */
|
||||
__u32 btf_vmlinux_id;
|
||||
__u64 map_extra;
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
@ -6359,6 +6660,76 @@ struct bpf_link_info {
|
||||
struct {
|
||||
__u32 ifindex;
|
||||
} xdp;
|
||||
struct {
|
||||
__u32 map_id;
|
||||
} struct_ops;
|
||||
struct {
|
||||
__u32 pf;
|
||||
__u32 hooknum;
|
||||
__s32 priority;
|
||||
__u32 flags;
|
||||
} netfilter;
|
||||
struct {
|
||||
__aligned_u64 addrs;
|
||||
__u32 count; /* in/out: kprobe_multi function count */
|
||||
__u32 flags;
|
||||
__u64 missed;
|
||||
__aligned_u64 cookies;
|
||||
} kprobe_multi;
|
||||
struct {
|
||||
__aligned_u64 path;
|
||||
__aligned_u64 offsets;
|
||||
__aligned_u64 ref_ctr_offsets;
|
||||
__aligned_u64 cookies;
|
||||
__u32 path_size; /* in/out: real path size on success, including zero byte */
|
||||
__u32 count; /* in/out: uprobe_multi offsets/ref_ctr_offsets/cookies count */
|
||||
__u32 flags;
|
||||
__u32 pid;
|
||||
} uprobe_multi;
|
||||
struct {
|
||||
__u32 type; /* enum bpf_perf_event_type */
|
||||
__u32 :32;
|
||||
union {
|
||||
struct {
|
||||
__aligned_u64 file_name; /* in/out */
|
||||
__u32 name_len;
|
||||
__u32 offset; /* offset from file_name */
|
||||
__u64 cookie;
|
||||
} uprobe; /* BPF_PERF_EVENT_UPROBE, BPF_PERF_EVENT_URETPROBE */
|
||||
struct {
|
||||
__aligned_u64 func_name; /* in/out */
|
||||
__u32 name_len;
|
||||
__u32 offset; /* offset from func_name */
|
||||
__u64 addr;
|
||||
__u64 missed;
|
||||
__u64 cookie;
|
||||
} kprobe; /* BPF_PERF_EVENT_KPROBE, BPF_PERF_EVENT_KRETPROBE */
|
||||
struct {
|
||||
__aligned_u64 tp_name; /* in/out */
|
||||
__u32 name_len;
|
||||
__u32 :32;
|
||||
__u64 cookie;
|
||||
} tracepoint; /* BPF_PERF_EVENT_TRACEPOINT */
|
||||
struct {
|
||||
__u64 config;
|
||||
__u32 type;
|
||||
__u32 :32;
|
||||
__u64 cookie;
|
||||
} event; /* BPF_PERF_EVENT_EVENT */
|
||||
};
|
||||
} perf_event;
|
||||
struct {
|
||||
__u32 ifindex;
|
||||
__u32 attach_type;
|
||||
} tcx;
|
||||
struct {
|
||||
__u32 ifindex;
|
||||
__u32 attach_type;
|
||||
} netkit;
|
||||
struct {
|
||||
__u32 map_id;
|
||||
__u32 attach_type;
|
||||
} sockmap;
|
||||
};
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
@ -6577,6 +6948,8 @@ enum {
|
||||
* socket transition to LISTEN state.
|
||||
*/
|
||||
BPF_SOCK_OPS_RTT_CB, /* Called on every RTT.
|
||||
* Arg1: measured RTT input (mrtt)
|
||||
* Arg2: updated srtt
|
||||
*/
|
||||
BPF_SOCK_OPS_PARSE_HDR_OPT_CB, /* Parse the header option.
|
||||
* It will be called to handle
|
||||
@ -6655,6 +7028,7 @@ enum {
|
||||
BPF_TCP_LISTEN,
|
||||
BPF_TCP_CLOSING, /* Now a valid state */
|
||||
BPF_TCP_NEW_SYN_RECV,
|
||||
BPF_TCP_BOUND_INACTIVE,
|
||||
|
||||
BPF_TCP_MAX_STATES /* Leave at the end! */
|
||||
};
|
||||
@ -6756,6 +7130,9 @@ enum {
|
||||
BPF_FIB_LOOKUP_DIRECT = (1U << 0),
|
||||
BPF_FIB_LOOKUP_OUTPUT = (1U << 1),
|
||||
BPF_FIB_LOOKUP_SKIP_NEIGH = (1U << 2),
|
||||
BPF_FIB_LOOKUP_TBID = (1U << 3),
|
||||
BPF_FIB_LOOKUP_SRC = (1U << 4),
|
||||
BPF_FIB_LOOKUP_MARK = (1U << 5),
|
||||
};
|
||||
|
||||
enum {
|
||||
@ -6768,6 +7145,7 @@ enum {
|
||||
BPF_FIB_LKUP_RET_UNSUPP_LWT, /* fwd requires encapsulation */
|
||||
BPF_FIB_LKUP_RET_NO_NEIGH, /* no neighbor entry for nh */
|
||||
BPF_FIB_LKUP_RET_FRAG_NEEDED, /* fragmentation required to fwd */
|
||||
BPF_FIB_LKUP_RET_NO_SRC_ADDR, /* failed to derive IP src addr */
|
||||
};
|
||||
|
||||
struct bpf_fib_lookup {
|
||||
@ -6787,7 +7165,7 @@ struct bpf_fib_lookup {
|
||||
|
||||
/* output: MTU value */
|
||||
__u16 mtu_result;
|
||||
};
|
||||
} __attribute__((packed, aligned(2)));
|
||||
/* input: L3 device index for lookup
|
||||
* output: device index from FIB lookup
|
||||
*/
|
||||
@ -6802,6 +7180,9 @@ struct bpf_fib_lookup {
|
||||
__u32 rt_metric;
|
||||
};
|
||||
|
||||
/* input: source address to consider for lookup
|
||||
* output: source address result from lookup
|
||||
*/
|
||||
union {
|
||||
__be32 ipv4_src;
|
||||
__u32 ipv6_src[4]; /* in6_addr; network order */
|
||||
@ -6816,12 +7197,33 @@ struct bpf_fib_lookup {
|
||||
__u32 ipv6_dst[4]; /* in6_addr; network order */
|
||||
};
|
||||
|
||||
union {
|
||||
struct {
|
||||
/* output */
|
||||
__be16 h_vlan_proto;
|
||||
__be16 h_vlan_TCI;
|
||||
};
|
||||
/* input: when accompanied with the
|
||||
* 'BPF_FIB_LOOKUP_DIRECT | BPF_FIB_LOOKUP_TBID` flags, a
|
||||
* specific routing table to use for the fib lookup.
|
||||
*/
|
||||
__u32 tbid;
|
||||
};
|
||||
|
||||
union {
|
||||
/* input */
|
||||
struct {
|
||||
__u32 mark; /* policy routing */
|
||||
/* 2 4-byte holes for input */
|
||||
};
|
||||
|
||||
/* output: source and dest mac */
|
||||
struct {
|
||||
__u8 smac[6]; /* ETH_ALEN */
|
||||
__u8 dmac[6]; /* ETH_ALEN */
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
struct bpf_redir_neigh {
|
||||
/* network family for lookup (AF_INET, AF_INET6) */
|
||||
@ -6904,36 +7306,37 @@ struct bpf_spin_lock {
|
||||
};
|
||||
|
||||
struct bpf_timer {
|
||||
__u64 :64;
|
||||
__u64 :64;
|
||||
__u64 __opaque[2];
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
struct bpf_wq {
|
||||
__u64 __opaque[2];
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
struct bpf_dynptr {
|
||||
__u64 :64;
|
||||
__u64 :64;
|
||||
__u64 __opaque[2];
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
struct bpf_list_head {
|
||||
__u64 :64;
|
||||
__u64 :64;
|
||||
__u64 __opaque[2];
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
struct bpf_list_node {
|
||||
__u64 :64;
|
||||
__u64 :64;
|
||||
__u64 __opaque[3];
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
struct bpf_rb_root {
|
||||
__u64 :64;
|
||||
__u64 :64;
|
||||
__u64 __opaque[2];
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
struct bpf_rb_node {
|
||||
__u64 :64;
|
||||
__u64 :64;
|
||||
__u64 :64;
|
||||
__u64 __opaque[4];
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
struct bpf_refcount {
|
||||
__u32 __opaque[1];
|
||||
} __attribute__((aligned(4)));
|
||||
|
||||
struct bpf_sysctl {
|
||||
__u32 write; /* Sysctl is being read (= 0) or written (= 1).
|
||||
* Allows 1,2,4-byte read, but no write.
|
||||
@ -7083,4 +7486,23 @@ struct bpf_core_relo {
|
||||
enum bpf_core_relo_kind kind;
|
||||
};
|
||||
|
||||
/*
|
||||
* Flags to control bpf_timer_start() behaviour.
|
||||
* - BPF_F_TIMER_ABS: Timeout passed is absolute time, by default it is
|
||||
* relative to current time.
|
||||
* - BPF_F_TIMER_CPU_PIN: Timer will be pinned to the CPU of the caller.
|
||||
*/
|
||||
enum {
|
||||
BPF_F_TIMER_ABS = (1ULL << 0),
|
||||
BPF_F_TIMER_CPU_PIN = (1ULL << 1),
|
||||
};
|
||||
|
||||
/* BPF numbers iterator state */
|
||||
struct bpf_iter_num {
|
||||
/* opaque iterator state; having __u64 here allows to preserve correct
|
||||
* alignment requirements in vmlinux.h, generated from BTF
|
||||
*/
|
||||
__u64 __opaque[1];
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
#endif /* __LINUX_BPF_H__ */
|
||||
21
lib/libc/include/any-linux-any/linux/bpfilter.h
vendored
21
lib/libc/include/any-linux-any/linux/bpfilter.h
vendored
@ -1,21 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _LINUX_BPFILTER_H
|
||||
#define _LINUX_BPFILTER_H
|
||||
|
||||
#include <linux/if.h>
|
||||
|
||||
enum {
|
||||
BPFILTER_IPT_SO_SET_REPLACE = 64,
|
||||
BPFILTER_IPT_SO_SET_ADD_COUNTERS = 65,
|
||||
BPFILTER_IPT_SET_MAX,
|
||||
};
|
||||
|
||||
enum {
|
||||
BPFILTER_IPT_SO_GET_INFO = 64,
|
||||
BPFILTER_IPT_SO_GET_ENTRIES = 65,
|
||||
BPFILTER_IPT_SO_GET_REVISION_MATCH = 66,
|
||||
BPFILTER_IPT_SO_GET_REVISION_TARGET = 67,
|
||||
BPFILTER_IPT_GET_MAX,
|
||||
};
|
||||
|
||||
#endif /* _LINUX_BPFILTER_H */
|
||||
7
lib/libc/include/any-linux-any/linux/btrfs.h
vendored
7
lib/libc/include/any-linux-any/linux/btrfs.h
vendored
@ -90,6 +90,7 @@ struct btrfs_qgroup_limit {
|
||||
* struct btrfs_qgroup_inherit.flags
|
||||
*/
|
||||
#define BTRFS_QGROUP_INHERIT_SET_LIMITS (1ULL << 0)
|
||||
#define BTRFS_QGROUP_INHERIT_FLAGS_SUPP (BTRFS_QGROUP_INHERIT_SET_LIMITS)
|
||||
|
||||
struct btrfs_qgroup_inherit {
|
||||
__u64 flags;
|
||||
@ -331,6 +332,8 @@ struct btrfs_ioctl_fs_info_args {
|
||||
#define BTRFS_FEATURE_INCOMPAT_RAID1C34 (1ULL << 11)
|
||||
#define BTRFS_FEATURE_INCOMPAT_ZONED (1ULL << 12)
|
||||
#define BTRFS_FEATURE_INCOMPAT_EXTENT_TREE_V2 (1ULL << 13)
|
||||
#define BTRFS_FEATURE_INCOMPAT_RAID_STRIPE_TREE (1ULL << 14)
|
||||
#define BTRFS_FEATURE_INCOMPAT_SIMPLE_QUOTA (1ULL << 16)
|
||||
|
||||
struct btrfs_ioctl_feature_flags {
|
||||
__u64 compat_flags;
|
||||
@ -610,6 +613,9 @@ struct btrfs_ioctl_clone_range_args {
|
||||
*/
|
||||
#define BTRFS_DEFRAG_RANGE_COMPRESS 1
|
||||
#define BTRFS_DEFRAG_RANGE_START_IO 2
|
||||
#define BTRFS_DEFRAG_RANGE_FLAGS_SUPP (BTRFS_DEFRAG_RANGE_COMPRESS | \
|
||||
BTRFS_DEFRAG_RANGE_START_IO)
|
||||
|
||||
struct btrfs_ioctl_defrag_range_args {
|
||||
/* start of the defrag operation */
|
||||
__u64 start;
|
||||
@ -751,6 +757,7 @@ struct btrfs_ioctl_get_dev_stats {
|
||||
#define BTRFS_QUOTA_CTL_ENABLE 1
|
||||
#define BTRFS_QUOTA_CTL_DISABLE 2
|
||||
#define BTRFS_QUOTA_CTL_RESCAN__NOTUSED 3
|
||||
#define BTRFS_QUOTA_CTL_ENABLE_SIMPLE_QUOTA 4
|
||||
struct btrfs_ioctl_quota_ctl_args {
|
||||
__u64 cmd;
|
||||
__u64 status;
|
||||
|
||||
@ -69,6 +69,9 @@
|
||||
/* Holds the block group items for extent tree v2. */
|
||||
#define BTRFS_BLOCK_GROUP_TREE_OBJECTID 11ULL
|
||||
|
||||
/* Tracks RAID stripes in block groups. */
|
||||
#define BTRFS_RAID_STRIPE_TREE_OBJECTID 12ULL
|
||||
|
||||
/* device stats in the device tree */
|
||||
#define BTRFS_DEV_STATS_OBJECTID 0ULL
|
||||
|
||||
@ -212,11 +215,31 @@
|
||||
*/
|
||||
#define BTRFS_METADATA_ITEM_KEY 169
|
||||
|
||||
/*
|
||||
* Special __inline__ ref key which stores the id of the subvolume which originally
|
||||
* created the extent. This subvolume owns the extent permanently from the
|
||||
* perspective of simple quotas. Needed to know which subvolume to free quota
|
||||
* usage from when the extent is deleted.
|
||||
*
|
||||
* Stored as an __inline__ ref rather to avoid wasting space on a separate item on
|
||||
* top of the existing extent item. However, unlike the other __inline__ refs,
|
||||
* there is one one owner ref per extent rather than one per extent.
|
||||
*
|
||||
* Because of this, it goes at the front of the list of __inline__ refs, and thus
|
||||
* must have a lower type value than any other __inline__ ref type (to satisfy the
|
||||
* disk format rule that __inline__ refs have non-decreasing type).
|
||||
*/
|
||||
#define BTRFS_EXTENT_OWNER_REF_KEY 172
|
||||
|
||||
#define BTRFS_TREE_BLOCK_REF_KEY 176
|
||||
|
||||
#define BTRFS_EXTENT_DATA_REF_KEY 178
|
||||
|
||||
#define BTRFS_EXTENT_REF_V0_KEY 180
|
||||
/*
|
||||
* Obsolete key. Defintion removed in 6.6, value may be reused in the future.
|
||||
*
|
||||
* #define BTRFS_EXTENT_REF_V0_KEY 180
|
||||
*/
|
||||
|
||||
#define BTRFS_SHARED_BLOCK_REF_KEY 182
|
||||
|
||||
@ -253,6 +276,8 @@
|
||||
#define BTRFS_DEV_ITEM_KEY 216
|
||||
#define BTRFS_CHUNK_ITEM_KEY 228
|
||||
|
||||
#define BTRFS_RAID_STRIPE_KEY 230
|
||||
|
||||
/*
|
||||
* Records the overall state of the qgroups.
|
||||
* There's only one instance of this key present,
|
||||
@ -711,6 +736,30 @@ struct btrfs_free_space_header {
|
||||
__le64 num_bitmaps;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_raid_stride {
|
||||
/* The id of device this raid extent lives on. */
|
||||
__le64 devid;
|
||||
/* The physical location on disk. */
|
||||
__le64 physical;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
/* The stripe_extent::encoding, 1:1 mapping of enum btrfs_raid_types. */
|
||||
#define BTRFS_STRIPE_RAID0 1
|
||||
#define BTRFS_STRIPE_RAID1 2
|
||||
#define BTRFS_STRIPE_DUP 3
|
||||
#define BTRFS_STRIPE_RAID10 4
|
||||
#define BTRFS_STRIPE_RAID5 5
|
||||
#define BTRFS_STRIPE_RAID6 6
|
||||
#define BTRFS_STRIPE_RAID1C3 7
|
||||
#define BTRFS_STRIPE_RAID1C4 8
|
||||
|
||||
struct btrfs_stripe_extent {
|
||||
__u8 encoding;
|
||||
__u8 reserved[7];
|
||||
/* An array of raid strides this stripe is composed of. */
|
||||
struct btrfs_raid_stride strides[];
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
#define BTRFS_HEADER_FLAG_WRITTEN (1ULL << 0)
|
||||
#define BTRFS_HEADER_FLAG_RELOC (1ULL << 1)
|
||||
|
||||
@ -779,6 +828,10 @@ struct btrfs_shared_data_ref {
|
||||
__le32 count;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_extent_owner_ref {
|
||||
__le64 root_id;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_extent_inline_ref {
|
||||
__u8 type;
|
||||
__le64 offset;
|
||||
@ -1196,9 +1249,17 @@ static __inline__ __u16 btrfs_qgroup_level(__u64 qgroupid)
|
||||
*/
|
||||
#define BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT (1ULL << 2)
|
||||
|
||||
/*
|
||||
* Whether or not this filesystem is using simple quotas. Not exactly the
|
||||
* incompat bit, because we support using simple quotas, disabling it, then
|
||||
* going back to full qgroup quotas.
|
||||
*/
|
||||
#define BTRFS_QGROUP_STATUS_FLAG_SIMPLE_MODE (1ULL << 3)
|
||||
|
||||
#define BTRFS_QGROUP_STATUS_FLAGS_MASK (BTRFS_QGROUP_STATUS_FLAG_ON | \
|
||||
BTRFS_QGROUP_STATUS_FLAG_RESCAN | \
|
||||
BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT)
|
||||
BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT | \
|
||||
BTRFS_QGROUP_STATUS_FLAG_SIMPLE_MODE)
|
||||
|
||||
#define BTRFS_QGROUP_STATUS_VERSION 1
|
||||
|
||||
@ -1220,6 +1281,15 @@ struct btrfs_qgroup_status_item {
|
||||
* of the scan. It contains a logical address
|
||||
*/
|
||||
__le64 rescan;
|
||||
|
||||
/*
|
||||
* The generation when quotas were last enabled. Used by simple quotas to
|
||||
* avoid decrementing when freeing an extent that was written before
|
||||
* enable.
|
||||
*
|
||||
* Set only if flags contain BTRFS_QGROUP_STATUS_FLAG_SIMPLE_MODE.
|
||||
*/
|
||||
__le64 enable_gen;
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
struct btrfs_qgroup_info_item {
|
||||
|
||||
10
lib/libc/include/any-linux-any/linux/can.h
vendored
10
lib/libc/include/any-linux-any/linux/can.h
vendored
@ -193,9 +193,14 @@ struct canfd_frame {
|
||||
#define CANXL_XLF 0x80 /* mandatory CAN XL frame flag (must always be set!) */
|
||||
#define CANXL_SEC 0x01 /* Simple Extended Content (security/segmentation) */
|
||||
|
||||
/* the 8-bit VCID is optionally placed in the canxl_frame.prio element */
|
||||
#define CANXL_VCID_OFFSET 16 /* bit offset of VCID in prio element */
|
||||
#define CANXL_VCID_VAL_MASK 0xFFUL /* VCID is an 8-bit value */
|
||||
#define CANXL_VCID_MASK (CANXL_VCID_VAL_MASK << CANXL_VCID_OFFSET)
|
||||
|
||||
/**
|
||||
* struct canxl_frame - CAN with e'X'tended frame 'L'ength frame structure
|
||||
* @prio: 11 bit arbitration priority with zero'ed CAN_*_FLAG flags
|
||||
* @prio: 11 bit arbitration priority with zero'ed CAN_*_FLAG flags / VCID
|
||||
* @flags: additional flags for CAN XL
|
||||
* @sdt: SDU (service data unit) type
|
||||
* @len: frame payload length in byte (CANXL_MIN_DLEN .. CANXL_MAX_DLEN)
|
||||
@ -205,7 +210,7 @@ struct canfd_frame {
|
||||
* @prio shares the same position as @can_id from struct can[fd]_frame.
|
||||
*/
|
||||
struct canxl_frame {
|
||||
canid_t prio; /* 11 bit priority for arbitration (canid_t) */
|
||||
canid_t prio; /* 11 bit priority for arbitration / 8 bit VCID */
|
||||
__u8 flags; /* additional flags for CAN XL */
|
||||
__u8 sdt; /* SDU (service data unit) type */
|
||||
__u16 len; /* frame payload length in byte */
|
||||
@ -285,6 +290,5 @@ struct can_filter {
|
||||
};
|
||||
|
||||
#define CAN_INV_FILTER 0x20000000U /* to be set in can_filter.can_id */
|
||||
#define CAN_RAW_FILTER_MAX 512 /* maximum number of can_filter set via setsockopt() */
|
||||
|
||||
#endif /* !_UAPI_CAN_H */
|
||||
@ -137,6 +137,7 @@ struct can_isotp_ll_options {
|
||||
#define CAN_ISOTP_WAIT_TX_DONE 0x0400 /* wait for tx completion */
|
||||
#define CAN_ISOTP_SF_BROADCAST 0x0800 /* 1-to-N functional addressing */
|
||||
#define CAN_ISOTP_CF_BROADCAST 0x1000 /* 1-to-N transmission w/o FC */
|
||||
#define CAN_ISOTP_DYN_FC_PARMS 0x2000 /* dynamic FC parameters BS/STmin */
|
||||
|
||||
/* protocol machine default values */
|
||||
|
||||
|
||||
18
lib/libc/include/any-linux-any/linux/can/raw.h
vendored
18
lib/libc/include/any-linux-any/linux/can/raw.h
vendored
@ -49,6 +49,8 @@
|
||||
#include <linux/can.h>
|
||||
|
||||
#define SOL_CAN_RAW (SOL_CAN_BASE + CAN_RAW)
|
||||
#define CAN_RAW_FILTER_MAX 512 /* maximum number of can_filter set via setsockopt() */
|
||||
|
||||
enum {
|
||||
SCM_CAN_RAW_ERRQUEUE = 1,
|
||||
};
|
||||
@ -63,6 +65,22 @@ enum {
|
||||
CAN_RAW_FD_FRAMES, /* allow CAN FD frames (default:off) */
|
||||
CAN_RAW_JOIN_FILTERS, /* all filters must match to trigger */
|
||||
CAN_RAW_XL_FRAMES, /* allow CAN XL frames (default:off) */
|
||||
CAN_RAW_XL_VCID_OPTS, /* CAN XL VCID configuration options */
|
||||
};
|
||||
|
||||
/* configuration for CAN XL virtual CAN identifier (VCID) handling */
|
||||
struct can_raw_vcid_options {
|
||||
|
||||
__u8 flags; /* flags for vcid (filter) behaviour */
|
||||
__u8 tx_vcid; /* VCID value set into canxl_frame.prio */
|
||||
__u8 rx_vcid; /* VCID value for VCID filter */
|
||||
__u8 rx_vcid_mask; /* VCID mask for VCID filter */
|
||||
|
||||
};
|
||||
|
||||
/* can_raw_vcid_options.flags for CAN XL virtual CAN identifier handling */
|
||||
#define CAN_RAW_XL_VCID_TX_SET 0x01
|
||||
#define CAN_RAW_XL_VCID_TX_PASS 0x02
|
||||
#define CAN_RAW_XL_VCID_RX_FILTER 0x04
|
||||
|
||||
#endif /* !_UAPI_CAN_RAW_H */
|
||||
@ -41,11 +41,12 @@ typedef struct __user_cap_header_struct {
|
||||
int pid;
|
||||
} *cap_user_header_t;
|
||||
|
||||
typedef struct __user_cap_data_struct {
|
||||
struct __user_cap_data_struct {
|
||||
__u32 effective;
|
||||
__u32 permitted;
|
||||
__u32 inheritable;
|
||||
} *cap_user_data_t;
|
||||
};
|
||||
typedef struct __user_cap_data_struct *cap_user_data_t;
|
||||
|
||||
|
||||
#define VFS_CAP_REVISION_MASK 0xFF000000
|
||||
|
||||
@ -24,8 +24,6 @@
|
||||
* basis. This data is shared using taskstats.
|
||||
*
|
||||
* Most of these states are derived by looking at the task->state value
|
||||
* For the nr_io_wait state, a flag in the delay accounting structure
|
||||
* indicates that the task is waiting on IO
|
||||
*
|
||||
* Each member is aligned to a 8 byte boundary.
|
||||
*/
|
||||
|
||||
64
lib/libc/include/any-linux-any/linux/cm4000_cs.h
vendored
64
lib/libc/include/any-linux-any/linux/cm4000_cs.h
vendored
@ -1,64 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _CM4000_H_
|
||||
#define _CM4000_H_
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
|
||||
#define MAX_ATR 33
|
||||
|
||||
#define CM4000_MAX_DEV 4
|
||||
|
||||
/* those two structures are passed via ioctl() from/to userspace. They are
|
||||
* used by existing userspace programs, so I kepth the awkward "bIFSD" naming
|
||||
* not to break compilation of userspace apps. -HW */
|
||||
|
||||
typedef struct atreq {
|
||||
__s32 atr_len;
|
||||
unsigned char atr[64];
|
||||
__s32 power_act;
|
||||
unsigned char bIFSD;
|
||||
unsigned char bIFSC;
|
||||
} atreq_t;
|
||||
|
||||
|
||||
/* what is particularly stupid in the original driver is the arch-dependent
|
||||
* member sizes. This leads to CONFIG_COMPAT breakage, since 32bit userspace
|
||||
* will lay out the structure members differently than the 64bit kernel.
|
||||
*
|
||||
* I've changed "ptsreq.protocol" from "unsigned long" to "__u32".
|
||||
* On 32bit this will make no difference. With 64bit kernels, it will make
|
||||
* 32bit apps work, too.
|
||||
*/
|
||||
|
||||
typedef struct ptsreq {
|
||||
__u32 protocol; /*T=0: 2^0, T=1: 2^1*/
|
||||
unsigned char flags;
|
||||
unsigned char pts1;
|
||||
unsigned char pts2;
|
||||
unsigned char pts3;
|
||||
} ptsreq_t;
|
||||
|
||||
#define CM_IOC_MAGIC 'c'
|
||||
#define CM_IOC_MAXNR 255
|
||||
|
||||
#define CM_IOCGSTATUS _IOR (CM_IOC_MAGIC, 0, unsigned char *)
|
||||
#define CM_IOCGATR _IOWR(CM_IOC_MAGIC, 1, atreq_t *)
|
||||
#define CM_IOCSPTS _IOW (CM_IOC_MAGIC, 2, ptsreq_t *)
|
||||
#define CM_IOCSRDR _IO (CM_IOC_MAGIC, 3)
|
||||
#define CM_IOCARDOFF _IO (CM_IOC_MAGIC, 4)
|
||||
|
||||
#define CM_IOSDBGLVL _IOW(CM_IOC_MAGIC, 250, int*)
|
||||
|
||||
/* card and device states */
|
||||
#define CM_CARD_INSERTED 0x01
|
||||
#define CM_CARD_POWERED 0x02
|
||||
#define CM_ATR_PRESENT 0x04
|
||||
#define CM_ATR_VALID 0x08
|
||||
#define CM_STATE_VALID 0x0f
|
||||
/* extra info only from CM4000 */
|
||||
#define CM_NO_READER 0x10
|
||||
#define CM_BAD_CARD 0x20
|
||||
|
||||
|
||||
#endif /* _CM4000_H_ */
|
||||
61
lib/libc/include/any-linux-any/linux/cn_proc.h
vendored
61
lib/libc/include/any-linux-any/linux/cn_proc.h
vendored
@ -30,6 +30,48 @@ enum proc_cn_mcast_op {
|
||||
PROC_CN_MCAST_IGNORE = 2
|
||||
};
|
||||
|
||||
#define PROC_EVENT_ALL (PROC_EVENT_FORK | PROC_EVENT_EXEC | PROC_EVENT_UID | \
|
||||
PROC_EVENT_GID | PROC_EVENT_SID | PROC_EVENT_PTRACE | \
|
||||
PROC_EVENT_COMM | PROC_EVENT_NONZERO_EXIT | \
|
||||
PROC_EVENT_COREDUMP | PROC_EVENT_EXIT)
|
||||
|
||||
/*
|
||||
* If you add an entry in proc_cn_event, make sure you add it in
|
||||
* PROC_EVENT_ALL above as well.
|
||||
*/
|
||||
enum proc_cn_event {
|
||||
/* Use successive bits so the enums can be used to record
|
||||
* sets of events as well
|
||||
*/
|
||||
PROC_EVENT_NONE = 0x00000000,
|
||||
PROC_EVENT_FORK = 0x00000001,
|
||||
PROC_EVENT_EXEC = 0x00000002,
|
||||
PROC_EVENT_UID = 0x00000004,
|
||||
PROC_EVENT_GID = 0x00000040,
|
||||
PROC_EVENT_SID = 0x00000080,
|
||||
PROC_EVENT_PTRACE = 0x00000100,
|
||||
PROC_EVENT_COMM = 0x00000200,
|
||||
/* "next" should be 0x00000400 */
|
||||
/* "last" is the last process event: exit,
|
||||
* while "next to last" is coredumping event
|
||||
* before that is report only if process dies
|
||||
* with non-zero exit status
|
||||
*/
|
||||
PROC_EVENT_NONZERO_EXIT = 0x20000000,
|
||||
PROC_EVENT_COREDUMP = 0x40000000,
|
||||
PROC_EVENT_EXIT = 0x80000000
|
||||
};
|
||||
|
||||
struct proc_input {
|
||||
enum proc_cn_mcast_op mcast_op;
|
||||
enum proc_cn_event event_type;
|
||||
};
|
||||
|
||||
static __inline__ enum proc_cn_event valid_event(enum proc_cn_event ev_type)
|
||||
{
|
||||
return (enum proc_cn_event)(ev_type & PROC_EVENT_ALL);
|
||||
}
|
||||
|
||||
/*
|
||||
* From the user's point of view, the process
|
||||
* ID is the thread group ID and thread ID is the internal
|
||||
@ -44,24 +86,7 @@ enum proc_cn_mcast_op {
|
||||
*/
|
||||
|
||||
struct proc_event {
|
||||
enum what {
|
||||
/* Use successive bits so the enums can be used to record
|
||||
* sets of events as well
|
||||
*/
|
||||
PROC_EVENT_NONE = 0x00000000,
|
||||
PROC_EVENT_FORK = 0x00000001,
|
||||
PROC_EVENT_EXEC = 0x00000002,
|
||||
PROC_EVENT_UID = 0x00000004,
|
||||
PROC_EVENT_GID = 0x00000040,
|
||||
PROC_EVENT_SID = 0x00000080,
|
||||
PROC_EVENT_PTRACE = 0x00000100,
|
||||
PROC_EVENT_COMM = 0x00000200,
|
||||
/* "next" should be 0x00000400 */
|
||||
/* "last" is the last process event: exit,
|
||||
* while "next to last" is coredumping event */
|
||||
PROC_EVENT_COREDUMP = 0x40000000,
|
||||
PROC_EVENT_EXIT = 0x80000000
|
||||
} what;
|
||||
enum proc_cn_event what;
|
||||
__u32 cpu;
|
||||
__u64 __attribute__((aligned(8))) timestamp_ns;
|
||||
/* Number of nano seconds since system boot */
|
||||
|
||||
@ -38,7 +38,7 @@ enum counter_scope {
|
||||
*
|
||||
* For example, if the Count 2 ceiling extension of Counter device 4 is desired,
|
||||
* set type equal to COUNTER_COMPONENT_EXTENSION, scope equal to
|
||||
* COUNTER_COUNT_SCOPE, parent equal to 2, and id equal to the value provided by
|
||||
* COUNTER_SCOPE_COUNT, parent equal to 2, and id equal to the value provided by
|
||||
* the respective /sys/bus/counter/devices/counter4/count2/ceiling_component_id
|
||||
* sysfs attribute.
|
||||
*/
|
||||
@ -127,6 +127,12 @@ enum counter_count_mode {
|
||||
COUNTER_COUNT_MODE_RANGE_LIMIT,
|
||||
COUNTER_COUNT_MODE_NON_RECYCLE,
|
||||
COUNTER_COUNT_MODE_MODULO_N,
|
||||
COUNTER_COUNT_MODE_INTERRUPT_ON_TERMINAL_COUNT,
|
||||
COUNTER_COUNT_MODE_HARDWARE_RETRIGGERABLE_ONESHOT,
|
||||
COUNTER_COUNT_MODE_RATE_GENERATOR,
|
||||
COUNTER_COUNT_MODE_SQUARE_WAVE_MODE,
|
||||
COUNTER_COUNT_MODE_SOFTWARE_TRIGGERED_STROBE,
|
||||
COUNTER_COUNT_MODE_HARDWARE_TRIGGERED_STROBE,
|
||||
};
|
||||
|
||||
/* Count function values */
|
||||
|
||||
@ -32,7 +32,7 @@ enum {
|
||||
CRYPTO_MSG_UPDATEALG,
|
||||
CRYPTO_MSG_GETALG,
|
||||
CRYPTO_MSG_DELRNG,
|
||||
CRYPTO_MSG_GETSTAT,
|
||||
CRYPTO_MSG_GETSTAT, /* No longer supported, do not use. */
|
||||
__CRYPTO_MSG_MAX
|
||||
};
|
||||
#define CRYPTO_MSG_MAX (__CRYPTO_MSG_MAX - 1)
|
||||
@ -54,16 +54,16 @@ enum crypto_attr_type_t {
|
||||
CRYPTOCFGA_REPORT_AKCIPHER, /* struct crypto_report_akcipher */
|
||||
CRYPTOCFGA_REPORT_KPP, /* struct crypto_report_kpp */
|
||||
CRYPTOCFGA_REPORT_ACOMP, /* struct crypto_report_acomp */
|
||||
CRYPTOCFGA_STAT_LARVAL, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_HASH, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_BLKCIPHER, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_AEAD, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_COMPRESS, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_RNG, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_CIPHER, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_AKCIPHER, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_KPP, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_ACOMP, /* struct crypto_stat */
|
||||
CRYPTOCFGA_STAT_LARVAL, /* No longer supported, do not use. */
|
||||
CRYPTOCFGA_STAT_HASH, /* No longer supported, do not use. */
|
||||
CRYPTOCFGA_STAT_BLKCIPHER, /* No longer supported, do not use. */
|
||||
CRYPTOCFGA_STAT_AEAD, /* No longer supported, do not use. */
|
||||
CRYPTOCFGA_STAT_COMPRESS, /* No longer supported, do not use. */
|
||||
CRYPTOCFGA_STAT_RNG, /* No longer supported, do not use. */
|
||||
CRYPTOCFGA_STAT_CIPHER, /* No longer supported, do not use. */
|
||||
CRYPTOCFGA_STAT_AKCIPHER, /* No longer supported, do not use. */
|
||||
CRYPTOCFGA_STAT_KPP, /* No longer supported, do not use. */
|
||||
CRYPTOCFGA_STAT_ACOMP, /* No longer supported, do not use. */
|
||||
__CRYPTOCFGA_MAX
|
||||
|
||||
#define CRYPTOCFGA_MAX (__CRYPTOCFGA_MAX - 1)
|
||||
@ -79,6 +79,7 @@ struct crypto_user_alg {
|
||||
__u32 cru_flags;
|
||||
};
|
||||
|
||||
/* No longer supported, do not use. */
|
||||
struct crypto_stat_aead {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
__u64 stat_encrypt_cnt;
|
||||
@ -88,6 +89,7 @@ struct crypto_stat_aead {
|
||||
__u64 stat_err_cnt;
|
||||
};
|
||||
|
||||
/* No longer supported, do not use. */
|
||||
struct crypto_stat_akcipher {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
__u64 stat_encrypt_cnt;
|
||||
@ -99,6 +101,7 @@ struct crypto_stat_akcipher {
|
||||
__u64 stat_err_cnt;
|
||||
};
|
||||
|
||||
/* No longer supported, do not use. */
|
||||
struct crypto_stat_cipher {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
__u64 stat_encrypt_cnt;
|
||||
@ -108,6 +111,7 @@ struct crypto_stat_cipher {
|
||||
__u64 stat_err_cnt;
|
||||
};
|
||||
|
||||
/* No longer supported, do not use. */
|
||||
struct crypto_stat_compress {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
__u64 stat_compress_cnt;
|
||||
@ -117,6 +121,7 @@ struct crypto_stat_compress {
|
||||
__u64 stat_err_cnt;
|
||||
};
|
||||
|
||||
/* No longer supported, do not use. */
|
||||
struct crypto_stat_hash {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
__u64 stat_hash_cnt;
|
||||
@ -124,6 +129,7 @@ struct crypto_stat_hash {
|
||||
__u64 stat_err_cnt;
|
||||
};
|
||||
|
||||
/* No longer supported, do not use. */
|
||||
struct crypto_stat_kpp {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
__u64 stat_setsecret_cnt;
|
||||
@ -132,6 +138,7 @@ struct crypto_stat_kpp {
|
||||
__u64 stat_err_cnt;
|
||||
};
|
||||
|
||||
/* No longer supported, do not use. */
|
||||
struct crypto_stat_rng {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
__u64 stat_generate_cnt;
|
||||
@ -140,6 +147,7 @@ struct crypto_stat_rng {
|
||||
__u64 stat_err_cnt;
|
||||
};
|
||||
|
||||
/* No longer supported, do not use. */
|
||||
struct crypto_stat_larval {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
};
|
||||
|
||||
39
lib/libc/include/any-linux-any/linux/cxl_mem.h
vendored
39
lib/libc/include/any-linux-any/linux/cxl_mem.h
vendored
@ -40,19 +40,26 @@
|
||||
___C(SET_ALERT_CONFIG, "Set Alert Configuration"), \
|
||||
___C(GET_SHUTDOWN_STATE, "Get Shutdown State"), \
|
||||
___C(SET_SHUTDOWN_STATE, "Set Shutdown State"), \
|
||||
___C(GET_POISON, "Get Poison List"), \
|
||||
___C(INJECT_POISON, "Inject Poison"), \
|
||||
___C(CLEAR_POISON, "Clear Poison"), \
|
||||
___DEPRECATED(GET_POISON, "Get Poison List"), \
|
||||
___DEPRECATED(INJECT_POISON, "Inject Poison"), \
|
||||
___DEPRECATED(CLEAR_POISON, "Clear Poison"), \
|
||||
___C(GET_SCAN_MEDIA_CAPS, "Get Scan Media Capabilities"), \
|
||||
___C(SCAN_MEDIA, "Scan Media"), \
|
||||
___C(GET_SCAN_MEDIA, "Get Scan Media Results"), \
|
||||
___DEPRECATED(SCAN_MEDIA, "Scan Media"), \
|
||||
___DEPRECATED(GET_SCAN_MEDIA, "Get Scan Media Results"), \
|
||||
___C(GET_TIMESTAMP, "Get Timestamp"), \
|
||||
___C(GET_LOG_CAPS, "Get Log Capabilities"), \
|
||||
___C(CLEAR_LOG, "Clear Log"), \
|
||||
___C(GET_SUP_LOG_SUBLIST, "Get Supported Logs Sub-List"), \
|
||||
___C(MAX, "invalid / last command")
|
||||
|
||||
#define ___C(a, b) CXL_MEM_COMMAND_ID_##a
|
||||
#define ___DEPRECATED(a, b) CXL_MEM_DEPRECATED_ID_##a
|
||||
enum { CXL_CMDS };
|
||||
|
||||
#undef ___C
|
||||
#undef ___DEPRECATED
|
||||
#define ___C(a, b) { b }
|
||||
#define ___DEPRECATED(a, b) { "Deprecated " b }
|
||||
static const struct {
|
||||
const char *name;
|
||||
} cxl_command_names[] __attribute__((__unused__)) = { CXL_CMDS };
|
||||
@ -68,6 +75,28 @@ static const struct {
|
||||
*/
|
||||
|
||||
#undef ___C
|
||||
#undef ___DEPRECATED
|
||||
#define ___C(a, b) (0)
|
||||
#define ___DEPRECATED(a, b) (1)
|
||||
|
||||
static const __u8 cxl_deprecated_commands[]
|
||||
__attribute__((__unused__)) = { CXL_CMDS };
|
||||
|
||||
/*
|
||||
* Here's how this actually breaks out:
|
||||
* cxl_deprecated_commands[] = {
|
||||
* [CXL_MEM_COMMAND_ID_INVALID] = 0,
|
||||
* [CXL_MEM_COMMAND_ID_IDENTIFY] = 0,
|
||||
* ...
|
||||
* [CXL_MEM_DEPRECATED_ID_GET_POISON] = 1,
|
||||
* [CXL_MEM_DEPRECATED_ID_INJECT_POISON] = 1,
|
||||
* [CXL_MEM_DEPRECATED_ID_CLEAR_POISON] = 1,
|
||||
* ...
|
||||
* };
|
||||
*/
|
||||
|
||||
#undef ___C
|
||||
#undef ___DEPRECATED
|
||||
|
||||
/**
|
||||
* struct cxl_command_info - Command information returned from a query.
|
||||
|
||||
15
lib/libc/include/any-linux-any/linux/devlink.h
vendored
15
lib/libc/include/any-linux-any/linux/devlink.h
vendored
@ -139,6 +139,8 @@ enum devlink_command {
|
||||
DEVLINK_CMD_SELFTESTS_GET, /* can dump */
|
||||
DEVLINK_CMD_SELFTESTS_RUN,
|
||||
|
||||
DEVLINK_CMD_NOTIFY_FILTER_SET,
|
||||
|
||||
/* add new commands above here */
|
||||
__DEVLINK_CMD_MAX,
|
||||
DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1
|
||||
@ -265,7 +267,7 @@ enum {
|
||||
* Documentation/networking/devlink/devlink-flash.rst
|
||||
*
|
||||
*/
|
||||
enum {
|
||||
enum devlink_flash_overwrite {
|
||||
DEVLINK_FLASH_OVERWRITE_SETTINGS_BIT,
|
||||
DEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT,
|
||||
|
||||
@ -612,7 +614,10 @@ enum devlink_attr {
|
||||
|
||||
DEVLINK_ATTR_REGION_DIRECT, /* flag */
|
||||
|
||||
/* add new attributes above here, update the policy in devlink.c */
|
||||
/* Add new attributes above here, update the spec in
|
||||
* Documentation/netlink/specs/devlink.yaml and re-generate
|
||||
* net/devlink/netlink_gen.c.
|
||||
*/
|
||||
|
||||
__DEVLINK_ATTR_MAX,
|
||||
DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1
|
||||
@ -661,6 +666,8 @@ enum devlink_resource_unit {
|
||||
enum devlink_port_fn_attr_cap {
|
||||
DEVLINK_PORT_FN_ATTR_CAP_ROCE_BIT,
|
||||
DEVLINK_PORT_FN_ATTR_CAP_MIGRATABLE_BIT,
|
||||
DEVLINK_PORT_FN_ATTR_CAP_IPSEC_CRYPTO_BIT,
|
||||
DEVLINK_PORT_FN_ATTR_CAP_IPSEC_PACKET_BIT,
|
||||
|
||||
/* Add new caps above */
|
||||
__DEVLINK_PORT_FN_ATTR_CAPS_MAX,
|
||||
@ -669,6 +676,8 @@ enum devlink_port_fn_attr_cap {
|
||||
#define DEVLINK_PORT_FN_CAP_ROCE _BITUL(DEVLINK_PORT_FN_ATTR_CAP_ROCE_BIT)
|
||||
#define DEVLINK_PORT_FN_CAP_MIGRATABLE \
|
||||
_BITUL(DEVLINK_PORT_FN_ATTR_CAP_MIGRATABLE_BIT)
|
||||
#define DEVLINK_PORT_FN_CAP_IPSEC_CRYPTO _BITUL(DEVLINK_PORT_FN_ATTR_CAP_IPSEC_CRYPTO_BIT)
|
||||
#define DEVLINK_PORT_FN_CAP_IPSEC_PACKET _BITUL(DEVLINK_PORT_FN_ATTR_CAP_IPSEC_PACKET_BIT)
|
||||
|
||||
enum devlink_port_function_attr {
|
||||
DEVLINK_PORT_FUNCTION_ATTR_UNSPEC,
|
||||
@ -676,6 +685,8 @@ enum devlink_port_function_attr {
|
||||
DEVLINK_PORT_FN_ATTR_STATE, /* u8 */
|
||||
DEVLINK_PORT_FN_ATTR_OPSTATE, /* u8 */
|
||||
DEVLINK_PORT_FN_ATTR_CAPS, /* bitfield32 */
|
||||
DEVLINK_PORT_FN_ATTR_DEVLINK, /* nested */
|
||||
DEVLINK_PORT_FN_ATTR_MAX_IO_EQS, /* u32 */
|
||||
|
||||
__DEVLINK_PORT_FUNCTION_ATTR_MAX,
|
||||
DEVLINK_PORT_FUNCTION_ATTR_MAX = __DEVLINK_PORT_FUNCTION_ATTR_MAX - 1
|
||||
|
||||
1
lib/libc/include/any-linux-any/linux/dlm.h
vendored
1
lib/libc/include/any-linux-any/linux/dlm.h
vendored
@ -68,6 +68,7 @@ struct dlm_lksb {
|
||||
|
||||
/* dlm_new_lockspace() flags */
|
||||
|
||||
/* DLM_LSFL_TIMEWARN is deprecated and reserved. DO NOT USE! */
|
||||
#define DLM_LSFL_TIMEWARN 0x00000002
|
||||
#define DLM_LSFL_NEWEXCL 0x00000008
|
||||
|
||||
|
||||
@ -1,60 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* Copyright (C) 2007 Red Hat, Inc. All rights reserved.
|
||||
*
|
||||
* This copyrighted material is made available to anyone wishing to use,
|
||||
* modify, copy, or redistribute it subject to the terms and conditions
|
||||
* of the GNU General Public License v.2.
|
||||
*/
|
||||
|
||||
#ifndef _DLM_NETLINK_H
|
||||
#define _DLM_NETLINK_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/dlmconstants.h>
|
||||
|
||||
enum {
|
||||
DLM_STATUS_WAITING = 1,
|
||||
DLM_STATUS_GRANTED = 2,
|
||||
DLM_STATUS_CONVERT = 3,
|
||||
};
|
||||
|
||||
#define DLM_LOCK_DATA_VERSION 1
|
||||
|
||||
struct dlm_lock_data {
|
||||
__u16 version;
|
||||
__u32 lockspace_id;
|
||||
int nodeid;
|
||||
int ownpid;
|
||||
__u32 id;
|
||||
__u32 remid;
|
||||
__u64 xid;
|
||||
__s8 status;
|
||||
__s8 grmode;
|
||||
__s8 rqmode;
|
||||
unsigned long timestamp;
|
||||
int resource_namelen;
|
||||
char resource_name[DLM_RESNAME_MAXLEN];
|
||||
};
|
||||
|
||||
enum {
|
||||
DLM_CMD_UNSPEC = 0,
|
||||
DLM_CMD_HELLO, /* user->kernel */
|
||||
DLM_CMD_TIMEOUT, /* kernel->user */
|
||||
__DLM_CMD_MAX,
|
||||
};
|
||||
|
||||
#define DLM_CMD_MAX (__DLM_CMD_MAX - 1)
|
||||
|
||||
enum {
|
||||
DLM_TYPE_UNSPEC = 0,
|
||||
DLM_TYPE_LOCK,
|
||||
__DLM_TYPE_MAX,
|
||||
};
|
||||
|
||||
#define DLM_TYPE_MAX (__DLM_TYPE_MAX - 1)
|
||||
|
||||
#define DLM_GENL_VERSION 0x1
|
||||
#define DLM_GENL_NAME "DLM"
|
||||
|
||||
#endif /* _DLM_NETLINK_H */
|
||||
@ -22,6 +22,7 @@ enum {
|
||||
DLM_PLOCK_OP_LOCK = 1,
|
||||
DLM_PLOCK_OP_UNLOCK,
|
||||
DLM_PLOCK_OP_GET,
|
||||
DLM_PLOCK_OP_CANCEL,
|
||||
};
|
||||
|
||||
#define DLM_PLOCK_FL_CLOSE 1
|
||||
|
||||
@ -87,7 +87,6 @@
|
||||
* DLM_LKF_NODLCKWT
|
||||
*
|
||||
* Do not cancel the lock if it gets into conversion deadlock.
|
||||
* Exclude this lock from being monitored due to DLM_LSFL_TIMEWARN.
|
||||
*
|
||||
* DLM_LKF_NODLCKBLK
|
||||
*
|
||||
@ -132,6 +131,10 @@
|
||||
* Unlock the lock even if it is converting or waiting or has sublocks.
|
||||
* Only really for use by the userland device.c code.
|
||||
*
|
||||
* DLM_LKF_TIMEOUT
|
||||
*
|
||||
* This value is deprecated and reserved. DO NOT USE!
|
||||
*
|
||||
*/
|
||||
|
||||
#define DLM_LKF_NOQUEUE 0x00000001
|
||||
|
||||
@ -286,9 +286,9 @@ enum {
|
||||
#define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)
|
||||
|
||||
#define DM_VERSION_MAJOR 4
|
||||
#define DM_VERSION_MINOR 47
|
||||
#define DM_VERSION_MINOR 48
|
||||
#define DM_VERSION_PATCHLEVEL 0
|
||||
#define DM_VERSION_EXTRA "-ioctl (2022-07-28)"
|
||||
#define DM_VERSION_EXTRA "-ioctl (2023-03-01)"
|
||||
|
||||
/* Status bits */
|
||||
#define DM_READONLY_FLAG (1 << 0) /* In/Out */
|
||||
|
||||
238
lib/libc/include/any-linux-any/linux/dpll.h
vendored
Normal file
238
lib/libc/include/any-linux-any/linux/dpll.h
vendored
Normal file
@ -0,0 +1,238 @@
|
||||
/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
|
||||
/* Do not edit directly, auto-generated from: */
|
||||
/* Documentation/netlink/specs/dpll.yaml */
|
||||
/* YNL-GEN uapi header */
|
||||
|
||||
#ifndef _LINUX_DPLL_H
|
||||
#define _LINUX_DPLL_H
|
||||
|
||||
#define DPLL_FAMILY_NAME "dpll"
|
||||
#define DPLL_FAMILY_VERSION 1
|
||||
|
||||
/**
|
||||
* enum dpll_mode - working modes a dpll can support, differentiates if and how
|
||||
* dpll selects one of its inputs to syntonize with it, valid values for
|
||||
* DPLL_A_MODE attribute
|
||||
* @DPLL_MODE_MANUAL: input can be only selected by sending a request to dpll
|
||||
* @DPLL_MODE_AUTOMATIC: highest prio input pin auto selected by dpll
|
||||
*/
|
||||
enum dpll_mode {
|
||||
DPLL_MODE_MANUAL = 1,
|
||||
DPLL_MODE_AUTOMATIC,
|
||||
|
||||
/* private: */
|
||||
__DPLL_MODE_MAX,
|
||||
DPLL_MODE_MAX = (__DPLL_MODE_MAX - 1)
|
||||
};
|
||||
|
||||
/**
|
||||
* enum dpll_lock_status - provides information of dpll device lock status,
|
||||
* valid values for DPLL_A_LOCK_STATUS attribute
|
||||
* @DPLL_LOCK_STATUS_UNLOCKED: dpll was not yet locked to any valid input (or
|
||||
* forced by setting DPLL_A_MODE to DPLL_MODE_DETACHED)
|
||||
* @DPLL_LOCK_STATUS_LOCKED: dpll is locked to a valid signal, but no holdover
|
||||
* available
|
||||
* @DPLL_LOCK_STATUS_LOCKED_HO_ACQ: dpll is locked and holdover acquired
|
||||
* @DPLL_LOCK_STATUS_HOLDOVER: dpll is in holdover state - lost a valid lock or
|
||||
* was forced by disconnecting all the pins (latter possible only when dpll
|
||||
* lock-state was already DPLL_LOCK_STATUS_LOCKED_HO_ACQ, if dpll lock-state
|
||||
* was not DPLL_LOCK_STATUS_LOCKED_HO_ACQ, the dpll's lock-state shall remain
|
||||
* DPLL_LOCK_STATUS_UNLOCKED)
|
||||
*/
|
||||
enum dpll_lock_status {
|
||||
DPLL_LOCK_STATUS_UNLOCKED = 1,
|
||||
DPLL_LOCK_STATUS_LOCKED,
|
||||
DPLL_LOCK_STATUS_LOCKED_HO_ACQ,
|
||||
DPLL_LOCK_STATUS_HOLDOVER,
|
||||
|
||||
/* private: */
|
||||
__DPLL_LOCK_STATUS_MAX,
|
||||
DPLL_LOCK_STATUS_MAX = (__DPLL_LOCK_STATUS_MAX - 1)
|
||||
};
|
||||
|
||||
/**
|
||||
* enum dpll_lock_status_error - if previous status change was done due to a
|
||||
* failure, this provides information of dpll device lock status error. Valid
|
||||
* values for DPLL_A_LOCK_STATUS_ERROR attribute
|
||||
* @DPLL_LOCK_STATUS_ERROR_NONE: dpll device lock status was changed without
|
||||
* any error
|
||||
* @DPLL_LOCK_STATUS_ERROR_UNDEFINED: dpll device lock status was changed due
|
||||
* to undefined error. Driver fills this value up in case it is not able to
|
||||
* obtain suitable exact error type.
|
||||
* @DPLL_LOCK_STATUS_ERROR_MEDIA_DOWN: dpll device lock status was changed
|
||||
* because of associated media got down. This may happen for example if dpll
|
||||
* device was previously locked on an input pin of type
|
||||
* PIN_TYPE_SYNCE_ETH_PORT.
|
||||
* @DPLL_LOCK_STATUS_ERROR_FRACTIONAL_FREQUENCY_OFFSET_TOO_HIGH: the FFO
|
||||
* (Fractional Frequency Offset) between the RX and TX symbol rate on the
|
||||
* media got too high. This may happen for example if dpll device was
|
||||
* previously locked on an input pin of type PIN_TYPE_SYNCE_ETH_PORT.
|
||||
*/
|
||||
enum dpll_lock_status_error {
|
||||
DPLL_LOCK_STATUS_ERROR_NONE = 1,
|
||||
DPLL_LOCK_STATUS_ERROR_UNDEFINED,
|
||||
DPLL_LOCK_STATUS_ERROR_MEDIA_DOWN,
|
||||
DPLL_LOCK_STATUS_ERROR_FRACTIONAL_FREQUENCY_OFFSET_TOO_HIGH,
|
||||
|
||||
/* private: */
|
||||
__DPLL_LOCK_STATUS_ERROR_MAX,
|
||||
DPLL_LOCK_STATUS_ERROR_MAX = (__DPLL_LOCK_STATUS_ERROR_MAX - 1)
|
||||
};
|
||||
|
||||
#define DPLL_TEMP_DIVIDER 1000
|
||||
|
||||
/**
|
||||
* enum dpll_type - type of dpll, valid values for DPLL_A_TYPE attribute
|
||||
* @DPLL_TYPE_PPS: dpll produces Pulse-Per-Second signal
|
||||
* @DPLL_TYPE_EEC: dpll drives the Ethernet Equipment Clock
|
||||
*/
|
||||
enum dpll_type {
|
||||
DPLL_TYPE_PPS = 1,
|
||||
DPLL_TYPE_EEC,
|
||||
|
||||
/* private: */
|
||||
__DPLL_TYPE_MAX,
|
||||
DPLL_TYPE_MAX = (__DPLL_TYPE_MAX - 1)
|
||||
};
|
||||
|
||||
/**
|
||||
* enum dpll_pin_type - defines possible types of a pin, valid values for
|
||||
* DPLL_A_PIN_TYPE attribute
|
||||
* @DPLL_PIN_TYPE_MUX: aggregates another layer of selectable pins
|
||||
* @DPLL_PIN_TYPE_EXT: external input
|
||||
* @DPLL_PIN_TYPE_SYNCE_ETH_PORT: ethernet port PHY's recovered clock
|
||||
* @DPLL_PIN_TYPE_INT_OSCILLATOR: device internal oscillator
|
||||
* @DPLL_PIN_TYPE_GNSS: GNSS recovered clock
|
||||
*/
|
||||
enum dpll_pin_type {
|
||||
DPLL_PIN_TYPE_MUX = 1,
|
||||
DPLL_PIN_TYPE_EXT,
|
||||
DPLL_PIN_TYPE_SYNCE_ETH_PORT,
|
||||
DPLL_PIN_TYPE_INT_OSCILLATOR,
|
||||
DPLL_PIN_TYPE_GNSS,
|
||||
|
||||
/* private: */
|
||||
__DPLL_PIN_TYPE_MAX,
|
||||
DPLL_PIN_TYPE_MAX = (__DPLL_PIN_TYPE_MAX - 1)
|
||||
};
|
||||
|
||||
/**
|
||||
* enum dpll_pin_direction - defines possible direction of a pin, valid values
|
||||
* for DPLL_A_PIN_DIRECTION attribute
|
||||
* @DPLL_PIN_DIRECTION_INPUT: pin used as a input of a signal
|
||||
* @DPLL_PIN_DIRECTION_OUTPUT: pin used to output the signal
|
||||
*/
|
||||
enum dpll_pin_direction {
|
||||
DPLL_PIN_DIRECTION_INPUT = 1,
|
||||
DPLL_PIN_DIRECTION_OUTPUT,
|
||||
|
||||
/* private: */
|
||||
__DPLL_PIN_DIRECTION_MAX,
|
||||
DPLL_PIN_DIRECTION_MAX = (__DPLL_PIN_DIRECTION_MAX - 1)
|
||||
};
|
||||
|
||||
#define DPLL_PIN_FREQUENCY_1_HZ 1
|
||||
#define DPLL_PIN_FREQUENCY_10_KHZ 10000
|
||||
#define DPLL_PIN_FREQUENCY_77_5_KHZ 77500
|
||||
#define DPLL_PIN_FREQUENCY_10_MHZ 10000000
|
||||
|
||||
/**
|
||||
* enum dpll_pin_state - defines possible states of a pin, valid values for
|
||||
* DPLL_A_PIN_STATE attribute
|
||||
* @DPLL_PIN_STATE_CONNECTED: pin connected, active input of phase locked loop
|
||||
* @DPLL_PIN_STATE_DISCONNECTED: pin disconnected, not considered as a valid
|
||||
* input
|
||||
* @DPLL_PIN_STATE_SELECTABLE: pin enabled for automatic input selection
|
||||
*/
|
||||
enum dpll_pin_state {
|
||||
DPLL_PIN_STATE_CONNECTED = 1,
|
||||
DPLL_PIN_STATE_DISCONNECTED,
|
||||
DPLL_PIN_STATE_SELECTABLE,
|
||||
|
||||
/* private: */
|
||||
__DPLL_PIN_STATE_MAX,
|
||||
DPLL_PIN_STATE_MAX = (__DPLL_PIN_STATE_MAX - 1)
|
||||
};
|
||||
|
||||
/**
|
||||
* enum dpll_pin_capabilities - defines possible capabilities of a pin, valid
|
||||
* flags on DPLL_A_PIN_CAPABILITIES attribute
|
||||
* @DPLL_PIN_CAPABILITIES_DIRECTION_CAN_CHANGE: pin direction can be changed
|
||||
* @DPLL_PIN_CAPABILITIES_PRIORITY_CAN_CHANGE: pin priority can be changed
|
||||
* @DPLL_PIN_CAPABILITIES_STATE_CAN_CHANGE: pin state can be changed
|
||||
*/
|
||||
enum dpll_pin_capabilities {
|
||||
DPLL_PIN_CAPABILITIES_DIRECTION_CAN_CHANGE = 1,
|
||||
DPLL_PIN_CAPABILITIES_PRIORITY_CAN_CHANGE = 2,
|
||||
DPLL_PIN_CAPABILITIES_STATE_CAN_CHANGE = 4,
|
||||
};
|
||||
|
||||
#define DPLL_PHASE_OFFSET_DIVIDER 1000
|
||||
|
||||
enum dpll_a {
|
||||
DPLL_A_ID = 1,
|
||||
DPLL_A_MODULE_NAME,
|
||||
DPLL_A_PAD,
|
||||
DPLL_A_CLOCK_ID,
|
||||
DPLL_A_MODE,
|
||||
DPLL_A_MODE_SUPPORTED,
|
||||
DPLL_A_LOCK_STATUS,
|
||||
DPLL_A_TEMP,
|
||||
DPLL_A_TYPE,
|
||||
DPLL_A_LOCK_STATUS_ERROR,
|
||||
|
||||
__DPLL_A_MAX,
|
||||
DPLL_A_MAX = (__DPLL_A_MAX - 1)
|
||||
};
|
||||
|
||||
enum dpll_a_pin {
|
||||
DPLL_A_PIN_ID = 1,
|
||||
DPLL_A_PIN_PARENT_ID,
|
||||
DPLL_A_PIN_MODULE_NAME,
|
||||
DPLL_A_PIN_PAD,
|
||||
DPLL_A_PIN_CLOCK_ID,
|
||||
DPLL_A_PIN_BOARD_LABEL,
|
||||
DPLL_A_PIN_PANEL_LABEL,
|
||||
DPLL_A_PIN_PACKAGE_LABEL,
|
||||
DPLL_A_PIN_TYPE,
|
||||
DPLL_A_PIN_DIRECTION,
|
||||
DPLL_A_PIN_FREQUENCY,
|
||||
DPLL_A_PIN_FREQUENCY_SUPPORTED,
|
||||
DPLL_A_PIN_FREQUENCY_MIN,
|
||||
DPLL_A_PIN_FREQUENCY_MAX,
|
||||
DPLL_A_PIN_PRIO,
|
||||
DPLL_A_PIN_STATE,
|
||||
DPLL_A_PIN_CAPABILITIES,
|
||||
DPLL_A_PIN_PARENT_DEVICE,
|
||||
DPLL_A_PIN_PARENT_PIN,
|
||||
DPLL_A_PIN_PHASE_ADJUST_MIN,
|
||||
DPLL_A_PIN_PHASE_ADJUST_MAX,
|
||||
DPLL_A_PIN_PHASE_ADJUST,
|
||||
DPLL_A_PIN_PHASE_OFFSET,
|
||||
DPLL_A_PIN_FRACTIONAL_FREQUENCY_OFFSET,
|
||||
|
||||
__DPLL_A_PIN_MAX,
|
||||
DPLL_A_PIN_MAX = (__DPLL_A_PIN_MAX - 1)
|
||||
};
|
||||
|
||||
enum dpll_cmd {
|
||||
DPLL_CMD_DEVICE_ID_GET = 1,
|
||||
DPLL_CMD_DEVICE_GET,
|
||||
DPLL_CMD_DEVICE_SET,
|
||||
DPLL_CMD_DEVICE_CREATE_NTF,
|
||||
DPLL_CMD_DEVICE_DELETE_NTF,
|
||||
DPLL_CMD_DEVICE_CHANGE_NTF,
|
||||
DPLL_CMD_PIN_ID_GET,
|
||||
DPLL_CMD_PIN_GET,
|
||||
DPLL_CMD_PIN_SET,
|
||||
DPLL_CMD_PIN_CREATE_NTF,
|
||||
DPLL_CMD_PIN_DELETE_NTF,
|
||||
DPLL_CMD_PIN_CHANGE_NTF,
|
||||
|
||||
__DPLL_CMD_MAX,
|
||||
DPLL_CMD_MAX = (__DPLL_CMD_MAX - 1)
|
||||
};
|
||||
|
||||
#define DPLL_MCGRP_MONITOR "monitor"
|
||||
|
||||
#endif /* _LINUX_DPLL_H */
|
||||
@ -296,6 +296,10 @@ enum fe_spectral_inversion {
|
||||
* @FEC_28_45: Forward Error Correction Code 28/45
|
||||
* @FEC_32_45: Forward Error Correction Code 32/45
|
||||
* @FEC_77_90: Forward Error Correction Code 77/90
|
||||
* @FEC_11_45: Forward Error Correction Code 11/45
|
||||
* @FEC_4_15: Forward Error Correction Code 4/15
|
||||
* @FEC_14_45: Forward Error Correction Code 14/45
|
||||
* @FEC_7_15: Forward Error Correction Code 7/15
|
||||
*
|
||||
* Please note that not all FEC types are supported by a given standard.
|
||||
*/
|
||||
@ -329,6 +333,10 @@ enum fe_code_rate {
|
||||
FEC_28_45,
|
||||
FEC_32_45,
|
||||
FEC_77_90,
|
||||
FEC_11_45,
|
||||
FEC_4_15,
|
||||
FEC_14_45,
|
||||
FEC_7_15,
|
||||
};
|
||||
|
||||
/**
|
||||
@ -846,7 +854,7 @@ struct dtv_stats {
|
||||
union {
|
||||
__u64 uvalue; /* for counters and relative scales */
|
||||
__s64 svalue; /* for 0.001 dB measures */
|
||||
};
|
||||
} __attribute__ ((packed));
|
||||
} __attribute__ ((packed));
|
||||
|
||||
|
||||
|
||||
@ -10,6 +10,6 @@
|
||||
#define _DVBVERSION_H_
|
||||
|
||||
#define DVB_API_VERSION 5
|
||||
#define DVB_API_VERSION_MINOR 11
|
||||
#define DVB_API_VERSION_MINOR 12
|
||||
|
||||
#endif /*_DVBVERSION_H_*/
|
||||
15
lib/libc/include/any-linux-any/linux/elf-fdpic.h
vendored
15
lib/libc/include/any-linux-any/linux/elf-fdpic.h
vendored
@ -32,4 +32,19 @@ struct elf32_fdpic_loadmap {
|
||||
|
||||
#define ELF32_FDPIC_LOADMAP_VERSION 0x0000
|
||||
|
||||
/* segment mappings for ELF FDPIC libraries/executables/interpreters */
|
||||
struct elf64_fdpic_loadseg {
|
||||
Elf64_Addr addr; /* core address to which mapped */
|
||||
Elf64_Addr p_vaddr; /* VMA recorded in file */
|
||||
Elf64_Word p_memsz; /* allocation size recorded in file */
|
||||
};
|
||||
|
||||
struct elf64_fdpic_loadmap {
|
||||
Elf64_Half version; /* version of these structures, just in case... */
|
||||
Elf64_Half nsegs; /* number of segments */
|
||||
struct elf64_fdpic_loadseg segs[];
|
||||
};
|
||||
|
||||
#define ELF64_FDPIC_LOADMAP_VERSION 0x0000
|
||||
|
||||
#endif /* _LINUX_ELF_FDPIC_H */
|
||||
12
lib/libc/include/any-linux-any/linux/elf.h
vendored
12
lib/libc/include/any-linux-any/linux/elf.h
vendored
@ -140,7 +140,7 @@ typedef __s64 Elf64_Sxword;
|
||||
#define ELF64_ST_BIND(x) ELF_ST_BIND(x)
|
||||
#define ELF64_ST_TYPE(x) ELF_ST_TYPE(x)
|
||||
|
||||
typedef struct dynamic {
|
||||
typedef struct {
|
||||
Elf32_Sword d_tag;
|
||||
union {
|
||||
Elf32_Sword d_val;
|
||||
@ -372,7 +372,8 @@ typedef struct elf64_shdr {
|
||||
* Notes used in ET_CORE. Architectures export some of the arch register sets
|
||||
* using the corresponding note types via the PTRACE_GETREGSET and
|
||||
* PTRACE_SETREGSET requests.
|
||||
* The note name for all these is "LINUX".
|
||||
* The note name for these types is "LINUX", except NT_PRFPREG that is named
|
||||
* "CORE".
|
||||
*/
|
||||
#define NT_PRSTATUS 1
|
||||
#define NT_PRFPREG 2
|
||||
@ -403,9 +404,13 @@ typedef struct elf64_shdr {
|
||||
#define NT_PPC_TM_CPPR 0x10e /* TM checkpointed Program Priority Register */
|
||||
#define NT_PPC_TM_CDSCR 0x10f /* TM checkpointed Data Stream Control Register */
|
||||
#define NT_PPC_PKEY 0x110 /* Memory Protection Keys registers */
|
||||
#define NT_PPC_DEXCR 0x111 /* PowerPC DEXCR registers */
|
||||
#define NT_PPC_HASHKEYR 0x112 /* PowerPC HASHKEYR register */
|
||||
#define NT_386_TLS 0x200 /* i386 TLS slots (struct user_desc) */
|
||||
#define NT_386_IOPERM 0x201 /* x86 io permission bitmap (1=deny) */
|
||||
#define NT_X86_XSTATE 0x202 /* x86 extended state using xsave */
|
||||
/* Old binutils treats 0x203 as a CET state */
|
||||
#define NT_X86_SHSTK 0x204 /* x86 SHSTK state */
|
||||
#define NT_S390_HIGH_GPRS 0x300 /* s390 upper register halves */
|
||||
#define NT_S390_TIMER 0x301 /* s390 timer register */
|
||||
#define NT_S390_TODCMP 0x302 /* s390 TOD clock comparator register */
|
||||
@ -435,11 +440,14 @@ typedef struct elf64_shdr {
|
||||
#define NT_ARM_SSVE 0x40b /* ARM Streaming SVE registers */
|
||||
#define NT_ARM_ZA 0x40c /* ARM SME ZA registers */
|
||||
#define NT_ARM_ZT 0x40d /* ARM SME ZT registers */
|
||||
#define NT_ARM_FPMR 0x40e /* ARM floating point mode register */
|
||||
#define NT_ARC_V2 0x600 /* ARCv2 accumulator/extra registers */
|
||||
#define NT_VMCOREDD 0x700 /* Vmcore Device Dump Note */
|
||||
#define NT_MIPS_DSP 0x800 /* MIPS DSP ASE registers */
|
||||
#define NT_MIPS_FP_MODE 0x801 /* MIPS floating-point mode */
|
||||
#define NT_MIPS_MSA 0x802 /* MIPS SIMD registers */
|
||||
#define NT_RISCV_CSR 0x900 /* RISC-V Control and Status Registers */
|
||||
#define NT_RISCV_VECTOR 0x901 /* RISC-V vector registers */
|
||||
#define NT_LOONGARCH_CPUCFG 0xa00 /* LoongArch CPU config registers */
|
||||
#define NT_LOONGARCH_CSR 0xa01 /* LoongArch control and status registers */
|
||||
#define NT_LOONGARCH_LSX 0xa02 /* LoongArch Loongson SIMD Extension registers */
|
||||
|
||||
144
lib/libc/include/any-linux-any/linux/ethtool.h
vendored
144
lib/libc/include/any-linux-any/linux/ethtool.h
vendored
@ -750,6 +750,61 @@ enum ethtool_module_power_mode {
|
||||
ETHTOOL_MODULE_POWER_MODE_HIGH,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_pse_types - Types of PSE controller.
|
||||
* @ETHTOOL_PSE_UNKNOWN: Type of PSE controller is unknown
|
||||
* @ETHTOOL_PSE_PODL: PSE controller which support PoDL
|
||||
* @ETHTOOL_PSE_C33: PSE controller which support Clause 33 (PoE)
|
||||
*/
|
||||
enum ethtool_pse_types {
|
||||
ETHTOOL_PSE_UNKNOWN = 1 << 0,
|
||||
ETHTOOL_PSE_PODL = 1 << 1,
|
||||
ETHTOOL_PSE_C33 = 1 << 2,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_c33_pse_admin_state - operational state of the PoDL PSE
|
||||
* functions. IEEE 802.3-2022 30.9.1.1.2 aPSEAdminState
|
||||
* @ETHTOOL_C33_PSE_ADMIN_STATE_UNKNOWN: state of PSE functions is unknown
|
||||
* @ETHTOOL_C33_PSE_ADMIN_STATE_DISABLED: PSE functions are disabled
|
||||
* @ETHTOOL_C33_PSE_ADMIN_STATE_ENABLED: PSE functions are enabled
|
||||
*/
|
||||
enum ethtool_c33_pse_admin_state {
|
||||
ETHTOOL_C33_PSE_ADMIN_STATE_UNKNOWN = 1,
|
||||
ETHTOOL_C33_PSE_ADMIN_STATE_DISABLED,
|
||||
ETHTOOL_C33_PSE_ADMIN_STATE_ENABLED,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_c33_pse_pw_d_status - power detection status of the PSE.
|
||||
* IEEE 802.3-2022 30.9.1.1.3 aPoDLPSEPowerDetectionStatus:
|
||||
* @ETHTOOL_C33_PSE_PW_D_STATUS_UNKNOWN: PSE status is unknown
|
||||
* @ETHTOOL_C33_PSE_PW_D_STATUS_DISABLED: The enumeration "disabled"
|
||||
* indicates that the PSE State diagram is in the state DISABLED.
|
||||
* @ETHTOOL_C33_PSE_PW_D_STATUS_SEARCHING: The enumeration "searching"
|
||||
* indicates the PSE State diagram is in a state other than those
|
||||
* listed.
|
||||
* @ETHTOOL_C33_PSE_PW_D_STATUS_DELIVERING: The enumeration
|
||||
* "deliveringPower" indicates that the PSE State diagram is in the
|
||||
* state POWER_ON.
|
||||
* @ETHTOOL_C33_PSE_PW_D_STATUS_TEST: The enumeration "test" indicates that
|
||||
* the PSE State diagram is in the state TEST_MODE.
|
||||
* @ETHTOOL_C33_PSE_PW_D_STATUS_FAULT: The enumeration "fault" indicates that
|
||||
* the PSE State diagram is in the state TEST_ERROR.
|
||||
* @ETHTOOL_C33_PSE_PW_D_STATUS_OTHERFAULT: The enumeration "otherFault"
|
||||
* indicates that the PSE State diagram is in the state IDLE due to
|
||||
* the variable error_condition = true.
|
||||
*/
|
||||
enum ethtool_c33_pse_pw_d_status {
|
||||
ETHTOOL_C33_PSE_PW_D_STATUS_UNKNOWN = 1,
|
||||
ETHTOOL_C33_PSE_PW_D_STATUS_DISABLED,
|
||||
ETHTOOL_C33_PSE_PW_D_STATUS_SEARCHING,
|
||||
ETHTOOL_C33_PSE_PW_D_STATUS_DELIVERING,
|
||||
ETHTOOL_C33_PSE_PW_D_STATUS_TEST,
|
||||
ETHTOOL_C33_PSE_PW_D_STATUS_FAULT,
|
||||
ETHTOOL_C33_PSE_PW_D_STATUS_OTHERFAULT,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ethtool_podl_pse_admin_state - operational state of the PoDL PSE
|
||||
* functions. IEEE 802.3-2018 30.15.1.1.2 aPoDLPSEAdminState
|
||||
@ -1264,6 +1319,8 @@ struct ethtool_rxfh_indir {
|
||||
* hardware hash key.
|
||||
* @hfunc: Defines the current RSS hash function used by HW (or to be set to).
|
||||
* Valid values are one of the %ETH_RSS_HASH_*.
|
||||
* @input_xfrm: Defines how the input data is transformed. Valid values are one
|
||||
* of %RXH_XFRM_*.
|
||||
* @rsvd8: Reserved for future use; see the note on reserved space.
|
||||
* @rsvd32: Reserved for future use; see the note on reserved space.
|
||||
* @rss_config: RX ring/queue index for each hash value i.e., indirection table
|
||||
@ -1283,7 +1340,8 @@ struct ethtool_rxfh {
|
||||
__u32 indir_size;
|
||||
__u32 key_size;
|
||||
__u8 hfunc;
|
||||
__u8 rsvd8[3];
|
||||
__u8 input_xfrm;
|
||||
__u8 rsvd8[2];
|
||||
__u32 rsvd32;
|
||||
__u32 rss_config[];
|
||||
};
|
||||
@ -1990,6 +2048,15 @@ static __inline__ int ethtool_validate_duplex(__u8 duplex)
|
||||
|
||||
#define WOL_MODE_COUNT 8
|
||||
|
||||
/* RSS hash function data
|
||||
* XOR the corresponding source and destination fields of each specified
|
||||
* protocol. Both copies of the XOR'ed fields are fed into the RSS and RXHASH
|
||||
* calculation. Note that this XORing reduces the input set entropy and could
|
||||
* be exploited to reduce the RSS queue spread.
|
||||
*/
|
||||
#define RXH_XFRM_SYM_XOR (1 << 0)
|
||||
#define RXH_XFRM_NO_CHANGE 0xff
|
||||
|
||||
/* L2-L4 network traffic flow types */
|
||||
#define TCP_V4_FLOW 0x01 /* hash or spec (tcp_ip4_spec) */
|
||||
#define UDP_V4_FLOW 0x02 /* hash or spec (udp_ip4_spec) */
|
||||
@ -2009,6 +2076,53 @@ static __inline__ int ethtool_validate_duplex(__u8 duplex)
|
||||
#define IPV4_FLOW 0x10 /* hash only */
|
||||
#define IPV6_FLOW 0x11 /* hash only */
|
||||
#define ETHER_FLOW 0x12 /* spec only (ether_spec) */
|
||||
|
||||
/* Used for GTP-U IPv4 and IPv6.
|
||||
* The format of GTP packets only includes
|
||||
* elements such as TEID and GTP version.
|
||||
* It is primarily intended for data communication of the UE.
|
||||
*/
|
||||
#define GTPU_V4_FLOW 0x13 /* hash only */
|
||||
#define GTPU_V6_FLOW 0x14 /* hash only */
|
||||
|
||||
/* Use for GTP-C IPv4 and v6.
|
||||
* The format of these GTP packets does not include TEID.
|
||||
* Primarily expected to be used for communication
|
||||
* to create sessions for UE data communication,
|
||||
* commonly referred to as CSR (Create Session Request).
|
||||
*/
|
||||
#define GTPC_V4_FLOW 0x15 /* hash only */
|
||||
#define GTPC_V6_FLOW 0x16 /* hash only */
|
||||
|
||||
/* Use for GTP-C IPv4 and v6.
|
||||
* Unlike GTPC_V4_FLOW, the format of these GTP packets includes TEID.
|
||||
* After session creation, it becomes this packet.
|
||||
* This is mainly used for requests to realize UE handover.
|
||||
*/
|
||||
#define GTPC_TEID_V4_FLOW 0x17 /* hash only */
|
||||
#define GTPC_TEID_V6_FLOW 0x18 /* hash only */
|
||||
|
||||
/* Use for GTP-U and extended headers for the PSC (PDU Session Container).
|
||||
* The format of these GTP packets includes TEID and QFI.
|
||||
* In 5G communication using UPF (User Plane Function),
|
||||
* data communication with this extended header is performed.
|
||||
*/
|
||||
#define GTPU_EH_V4_FLOW 0x19 /* hash only */
|
||||
#define GTPU_EH_V6_FLOW 0x1a /* hash only */
|
||||
|
||||
/* Use for GTP-U IPv4 and v6 PSC (PDU Session Container) extended headers.
|
||||
* This differs from GTPU_EH_V(4|6)_FLOW in that it is distinguished by
|
||||
* UL/DL included in the PSC.
|
||||
* There are differences in the data included based on Downlink/Uplink,
|
||||
* and can be used to distinguish packets.
|
||||
* The functions described so far are useful when you want to
|
||||
* handle communication from the mobile network in UPF, PGW, etc.
|
||||
*/
|
||||
#define GTPU_UL_V4_FLOW 0x1b /* hash only */
|
||||
#define GTPU_UL_V6_FLOW 0x1c /* hash only */
|
||||
#define GTPU_DL_V4_FLOW 0x1d /* hash only */
|
||||
#define GTPU_DL_V6_FLOW 0x1e /* hash only */
|
||||
|
||||
/* Flag to enable additional fields in struct ethtool_rx_flow_spec */
|
||||
#define FLOW_EXT 0x80000000
|
||||
#define FLOW_MAC_EXT 0x40000000
|
||||
@ -2023,6 +2137,7 @@ static __inline__ int ethtool_validate_duplex(__u8 duplex)
|
||||
#define RXH_IP_DST (1 << 5)
|
||||
#define RXH_L4_B_0_1 (1 << 6) /* src port in case of TCP/UDP/SCTP */
|
||||
#define RXH_L4_B_2_3 (1 << 7) /* dst port in case of TCP/UDP/SCTP */
|
||||
#define RXH_GTP_TEID (1 << 8) /* teid in case of GTP */
|
||||
#define RXH_DISCARD (1 << 31)
|
||||
|
||||
#define RX_CLS_FLOW_DISC 0xffffffffffffffffULL
|
||||
@ -2126,18 +2241,6 @@ enum ethtool_reset_flags {
|
||||
* refused. For drivers: ignore this field (use kernel's
|
||||
* __ETHTOOL_LINK_MODE_MASK_NBITS instead), any change to it will
|
||||
* be overwritten by kernel.
|
||||
* @supported: Bitmap with each bit meaning given by
|
||||
* %ethtool_link_mode_bit_indices for the link modes, physical
|
||||
* connectors and other link features for which the interface
|
||||
* supports autonegotiation or auto-detection. Read-only.
|
||||
* @advertising: Bitmap with each bit meaning given by
|
||||
* %ethtool_link_mode_bit_indices for the link modes, physical
|
||||
* connectors and other link features that are advertised through
|
||||
* autonegotiation or enabled for auto-detection.
|
||||
* @lp_advertising: Bitmap with each bit meaning given by
|
||||
* %ethtool_link_mode_bit_indices for the link modes, and other
|
||||
* link features that the link partner advertised through
|
||||
* autonegotiation; 0 if unknown or not applicable. Read-only.
|
||||
* @transceiver: Used to distinguish different possible PHY types,
|
||||
* reported consistently by PHYLIB. Read-only.
|
||||
* @master_slave_cfg: Master/slave port mode.
|
||||
@ -2179,6 +2282,21 @@ enum ethtool_reset_flags {
|
||||
* %set_link_ksettings() should validate all fields other than @cmd
|
||||
* and @link_mode_masks_nwords that are not described as read-only or
|
||||
* deprecated, and must ignore all fields described as read-only.
|
||||
*
|
||||
* @link_mode_masks is divided into three bitfields, each of length
|
||||
* @link_mode_masks_nwords:
|
||||
* - supported: Bitmap with each bit meaning given by
|
||||
* %ethtool_link_mode_bit_indices for the link modes, physical
|
||||
* connectors and other link features for which the interface
|
||||
* supports autonegotiation or auto-detection. Read-only.
|
||||
* - advertising: Bitmap with each bit meaning given by
|
||||
* %ethtool_link_mode_bit_indices for the link modes, physical
|
||||
* connectors and other link features that are advertised through
|
||||
* autonegotiation or enabled for auto-detection.
|
||||
* - lp_advertising: Bitmap with each bit meaning given by
|
||||
* %ethtool_link_mode_bit_indices for the link modes, and other
|
||||
* link features that the link partner advertised through
|
||||
* autonegotiation; 0 if unknown or not applicable. Read-only.
|
||||
*/
|
||||
struct ethtool_link_settings {
|
||||
__u32 cmd;
|
||||
|
||||
@ -117,12 +117,11 @@ enum {
|
||||
|
||||
/* request header */
|
||||
|
||||
/* use compact bitsets in reply */
|
||||
#define ETHTOOL_FLAG_COMPACT_BITSETS (1 << 0)
|
||||
/* provide optional reply for SET or ACT requests */
|
||||
#define ETHTOOL_FLAG_OMIT_REPLY (1 << 1)
|
||||
/* request statistics, if supported by the driver */
|
||||
#define ETHTOOL_FLAG_STATS (1 << 2)
|
||||
enum ethtool_header_flags {
|
||||
ETHTOOL_FLAG_COMPACT_BITSETS = 1 << 0, /* use compact bitsets in reply */
|
||||
ETHTOOL_FLAG_OMIT_REPLY = 1 << 1, /* provide optional reply for SET or ACT requests */
|
||||
ETHTOOL_FLAG_STATS = 1 << 2, /* request statistics, if supported by the driver */
|
||||
};
|
||||
|
||||
#define ETHTOOL_FLAG_ALL (ETHTOOL_FLAG_COMPACT_BITSETS | \
|
||||
ETHTOOL_FLAG_OMIT_REPLY | \
|
||||
@ -357,6 +356,8 @@ enum {
|
||||
ETHTOOL_A_RINGS_CQE_SIZE, /* u32 */
|
||||
ETHTOOL_A_RINGS_TX_PUSH, /* u8 */
|
||||
ETHTOOL_A_RINGS_RX_PUSH, /* u8 */
|
||||
ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN, /* u32 */
|
||||
ETHTOOL_A_RINGS_TX_PUSH_BUF_LEN_MAX, /* u32 */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_RINGS_CNT,
|
||||
@ -476,12 +477,26 @@ enum {
|
||||
ETHTOOL_A_TSINFO_TX_TYPES, /* bitset */
|
||||
ETHTOOL_A_TSINFO_RX_FILTERS, /* bitset */
|
||||
ETHTOOL_A_TSINFO_PHC_INDEX, /* u32 */
|
||||
ETHTOOL_A_TSINFO_STATS, /* nest - _A_TSINFO_STAT */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_TSINFO_CNT,
|
||||
ETHTOOL_A_TSINFO_MAX = (__ETHTOOL_A_TSINFO_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
ETHTOOL_A_TS_STAT_UNSPEC,
|
||||
|
||||
ETHTOOL_A_TS_STAT_TX_PKTS, /* uint */
|
||||
ETHTOOL_A_TS_STAT_TX_LOST, /* uint */
|
||||
ETHTOOL_A_TS_STAT_TX_ERR, /* uint */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_TS_STAT_CNT,
|
||||
ETHTOOL_A_TS_STAT_MAX = (__ETHTOOL_A_TS_STAT_CNT - 1)
|
||||
|
||||
};
|
||||
|
||||
/* PHC VCLOCKS */
|
||||
|
||||
enum {
|
||||
@ -513,6 +528,10 @@ enum {
|
||||
ETHTOOL_A_CABLE_RESULT_CODE_OPEN,
|
||||
ETHTOOL_A_CABLE_RESULT_CODE_SAME_SHORT,
|
||||
ETHTOOL_A_CABLE_RESULT_CODE_CROSS_SHORT,
|
||||
/* detected reflection caused by the impedance discontinuity between
|
||||
* a regular 100 Ohm cable and a part with the abnormal impedance value
|
||||
*/
|
||||
ETHTOOL_A_CABLE_RESULT_CODE_IMPEDANCE_MISMATCH,
|
||||
};
|
||||
|
||||
enum {
|
||||
@ -781,7 +800,7 @@ enum {
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_STATS_GRP_CNT,
|
||||
ETHTOOL_A_STATS_GRP_MAX = (__ETHTOOL_A_STATS_CNT - 1)
|
||||
ETHTOOL_A_STATS_GRP_MAX = (__ETHTOOL_A_STATS_GRP_CNT - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
@ -893,6 +912,9 @@ enum {
|
||||
ETHTOOL_A_PODL_PSE_ADMIN_STATE, /* u32 */
|
||||
ETHTOOL_A_PODL_PSE_ADMIN_CONTROL, /* u32 */
|
||||
ETHTOOL_A_PODL_PSE_PW_D_STATUS, /* u32 */
|
||||
ETHTOOL_A_C33_PSE_ADMIN_STATE, /* u32 */
|
||||
ETHTOOL_A_C33_PSE_ADMIN_CONTROL, /* u32 */
|
||||
ETHTOOL_A_C33_PSE_PW_D_STATUS, /* u32 */
|
||||
|
||||
/* add new constants above here */
|
||||
__ETHTOOL_A_PSE_CNT,
|
||||
@ -906,6 +928,7 @@ enum {
|
||||
ETHTOOL_A_RSS_HFUNC, /* u32 */
|
||||
ETHTOOL_A_RSS_INDIR, /* binary */
|
||||
ETHTOOL_A_RSS_HKEY, /* binary */
|
||||
ETHTOOL_A_RSS_INPUT_XFRM, /* u32 */
|
||||
|
||||
__ETHTOOL_A_RSS_CNT,
|
||||
ETHTOOL_A_RSS_MAX = (__ETHTOOL_A_RSS_CNT - 1),
|
||||
|
||||
11
lib/libc/include/any-linux-any/linux/eventfd.h
vendored
Normal file
11
lib/libc/include/any-linux-any/linux/eventfd.h
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
#ifndef _LINUX_EVENTFD_H
|
||||
#define _LINUX_EVENTFD_H
|
||||
|
||||
#include <linux/fcntl.h>
|
||||
|
||||
#define EFD_SEMAPHORE (1 << 0)
|
||||
#define EFD_CLOEXEC O_CLOEXEC
|
||||
#define EFD_NONBLOCK O_NONBLOCK
|
||||
|
||||
#endif /* _LINUX_EVENTFD_H */
|
||||
25
lib/libc/include/any-linux-any/linux/eventpoll.h
vendored
25
lib/libc/include/any-linux-any/linux/eventpoll.h
vendored
@ -85,16 +85,17 @@ struct epoll_event {
|
||||
__u64 data;
|
||||
} EPOLL_PACKED;
|
||||
|
||||
#ifdef CONFIG_PM_SLEEP
|
||||
static __inline__ void ep_take_care_of_epollwakeup(struct epoll_event *epev)
|
||||
{
|
||||
if ((epev->events & EPOLLWAKEUP) && !capable(CAP_BLOCK_SUSPEND))
|
||||
epev->events &= ~EPOLLWAKEUP;
|
||||
}
|
||||
#else
|
||||
static __inline__ void ep_take_care_of_epollwakeup(struct epoll_event *epev)
|
||||
{
|
||||
epev->events &= ~EPOLLWAKEUP;
|
||||
}
|
||||
#endif
|
||||
struct epoll_params {
|
||||
__u32 busy_poll_usecs;
|
||||
__u16 busy_poll_budget;
|
||||
__u8 prefer_busy_poll;
|
||||
|
||||
/* pad the struct to a multiple of 64bits */
|
||||
__u8 __pad;
|
||||
};
|
||||
|
||||
#define EPOLL_IOC_TYPE 0x8A
|
||||
#define EPIOCSPARAMS _IOW(EPOLL_IOC_TYPE, 0x01, struct epoll_params)
|
||||
#define EPIOCGPARAMS _IOR(EPOLL_IOC_TYPE, 0x02, struct epoll_params)
|
||||
|
||||
#endif /* _LINUX_EVENTPOLL_H */
|
||||
117
lib/libc/include/any-linux-any/linux/ext4.h
vendored
Normal file
117
lib/libc/include/any-linux-any/linux/ext4.h
vendored
Normal file
@ -0,0 +1,117 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
|
||||
#ifndef _LINUX_EXT4_H
|
||||
#define _LINUX_EXT4_H
|
||||
#include <linux/fiemap.h>
|
||||
#include <linux/fs.h>
|
||||
#include <linux/ioctl.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
/*
|
||||
* ext4-specific ioctl commands
|
||||
*/
|
||||
#define EXT4_IOC_GETVERSION _IOR('f', 3, long)
|
||||
#define EXT4_IOC_SETVERSION _IOW('f', 4, long)
|
||||
#define EXT4_IOC_GETVERSION_OLD FS_IOC_GETVERSION
|
||||
#define EXT4_IOC_SETVERSION_OLD FS_IOC_SETVERSION
|
||||
#define EXT4_IOC_GETRSVSZ _IOR('f', 5, long)
|
||||
#define EXT4_IOC_SETRSVSZ _IOW('f', 6, long)
|
||||
#define EXT4_IOC_GROUP_EXTEND _IOW('f', 7, unsigned long)
|
||||
#define EXT4_IOC_GROUP_ADD _IOW('f', 8, struct ext4_new_group_input)
|
||||
#define EXT4_IOC_MIGRATE _IO('f', 9)
|
||||
/* note ioctl 10 reserved for an early version of the FIEMAP ioctl */
|
||||
/* note ioctl 11 reserved for filesystem-independent FIEMAP ioctl */
|
||||
#define EXT4_IOC_ALLOC_DA_BLKS _IO('f', 12)
|
||||
#define EXT4_IOC_MOVE_EXT _IOWR('f', 15, struct move_extent)
|
||||
#define EXT4_IOC_RESIZE_FS _IOW('f', 16, __u64)
|
||||
#define EXT4_IOC_SWAP_BOOT _IO('f', 17)
|
||||
#define EXT4_IOC_PRECACHE_EXTENTS _IO('f', 18)
|
||||
/* ioctl codes 19--39 are reserved for fscrypt */
|
||||
#define EXT4_IOC_CLEAR_ES_CACHE _IO('f', 40)
|
||||
#define EXT4_IOC_GETSTATE _IOW('f', 41, __u32)
|
||||
#define EXT4_IOC_GET_ES_CACHE _IOWR('f', 42, struct fiemap)
|
||||
#define EXT4_IOC_CHECKPOINT _IOW('f', 43, __u32)
|
||||
#define EXT4_IOC_GETFSUUID _IOR('f', 44, struct fsuuid)
|
||||
#define EXT4_IOC_SETFSUUID _IOW('f', 44, struct fsuuid)
|
||||
|
||||
#define EXT4_IOC_SHUTDOWN _IOR('X', 125, __u32)
|
||||
|
||||
/*
|
||||
* ioctl commands in 32 bit emulation
|
||||
*/
|
||||
#define EXT4_IOC32_GETVERSION _IOR('f', 3, int)
|
||||
#define EXT4_IOC32_SETVERSION _IOW('f', 4, int)
|
||||
#define EXT4_IOC32_GETRSVSZ _IOR('f', 5, int)
|
||||
#define EXT4_IOC32_SETRSVSZ _IOW('f', 6, int)
|
||||
#define EXT4_IOC32_GROUP_EXTEND _IOW('f', 7, unsigned int)
|
||||
#define EXT4_IOC32_GROUP_ADD _IOW('f', 8, struct compat_ext4_new_group_input)
|
||||
#define EXT4_IOC32_GETVERSION_OLD FS_IOC32_GETVERSION
|
||||
#define EXT4_IOC32_SETVERSION_OLD FS_IOC32_SETVERSION
|
||||
|
||||
/*
|
||||
* Flags returned by EXT4_IOC_GETSTATE
|
||||
*
|
||||
* We only expose to userspace a subset of the state flags in
|
||||
* i_state_flags
|
||||
*/
|
||||
#define EXT4_STATE_FLAG_EXT_PRECACHED 0x00000001
|
||||
#define EXT4_STATE_FLAG_NEW 0x00000002
|
||||
#define EXT4_STATE_FLAG_NEWENTRY 0x00000004
|
||||
#define EXT4_STATE_FLAG_DA_ALLOC_CLOSE 0x00000008
|
||||
|
||||
/*
|
||||
* Flags for ioctl EXT4_IOC_CHECKPOINT
|
||||
*/
|
||||
#define EXT4_IOC_CHECKPOINT_FLAG_DISCARD 0x1
|
||||
#define EXT4_IOC_CHECKPOINT_FLAG_ZEROOUT 0x2
|
||||
#define EXT4_IOC_CHECKPOINT_FLAG_DRY_RUN 0x4
|
||||
#define EXT4_IOC_CHECKPOINT_FLAG_VALID (EXT4_IOC_CHECKPOINT_FLAG_DISCARD | \
|
||||
EXT4_IOC_CHECKPOINT_FLAG_ZEROOUT | \
|
||||
EXT4_IOC_CHECKPOINT_FLAG_DRY_RUN)
|
||||
|
||||
/*
|
||||
* Structure for EXT4_IOC_GETFSUUID/EXT4_IOC_SETFSUUID
|
||||
*/
|
||||
struct fsuuid {
|
||||
__u32 fsu_len;
|
||||
__u32 fsu_flags;
|
||||
__u8 fsu_uuid[];
|
||||
};
|
||||
|
||||
/*
|
||||
* Structure for EXT4_IOC_MOVE_EXT
|
||||
*/
|
||||
struct move_extent {
|
||||
__u32 reserved; /* should be zero */
|
||||
__u32 donor_fd; /* donor file descriptor */
|
||||
__u64 orig_start; /* logical start offset in block for orig */
|
||||
__u64 donor_start; /* logical start offset in block for donor */
|
||||
__u64 len; /* block length to be moved */
|
||||
__u64 moved_len; /* moved block length */
|
||||
};
|
||||
|
||||
/*
|
||||
* Flags used by EXT4_IOC_SHUTDOWN
|
||||
*/
|
||||
#define EXT4_GOING_FLAGS_DEFAULT 0x0 /* going down */
|
||||
#define EXT4_GOING_FLAGS_LOGFLUSH 0x1 /* flush log but not data */
|
||||
#define EXT4_GOING_FLAGS_NOLOGFLUSH 0x2 /* don't flush log nor data */
|
||||
|
||||
/* Used to pass group descriptor data when online resize is done */
|
||||
struct ext4_new_group_input {
|
||||
__u32 group; /* Group number for this data */
|
||||
__u64 block_bitmap; /* Absolute block number of block bitmap */
|
||||
__u64 inode_bitmap; /* Absolute block number of inode bitmap */
|
||||
__u64 inode_table; /* Absolute block number of inode table start */
|
||||
__u32 blocks_count; /* Total number of blocks in this group */
|
||||
__u16 reserved_blocks; /* Number of reserved blocks in this group */
|
||||
__u16 unused;
|
||||
};
|
||||
|
||||
/*
|
||||
* Returned by EXT4_IOC_GET_ES_CACHE as an additional possible flag.
|
||||
* It indicates that the entry in extent status cache is for a hole.
|
||||
*/
|
||||
#define EXT4_FIEMAP_EXTENT_HOLE 0x08000000
|
||||
|
||||
#endif /* _LINUX_EXT4_H */
|
||||
@ -8,8 +8,8 @@
|
||||
#define FAN_ACCESS 0x00000001 /* File was accessed */
|
||||
#define FAN_MODIFY 0x00000002 /* File was modified */
|
||||
#define FAN_ATTRIB 0x00000004 /* Metadata changed */
|
||||
#define FAN_CLOSE_WRITE 0x00000008 /* Writtable file closed */
|
||||
#define FAN_CLOSE_NOWRITE 0x00000010 /* Unwrittable file closed */
|
||||
#define FAN_CLOSE_WRITE 0x00000008 /* Writable file closed */
|
||||
#define FAN_CLOSE_NOWRITE 0x00000010 /* Unwritable file closed */
|
||||
#define FAN_OPEN 0x00000020 /* File was opened */
|
||||
#define FAN_MOVED_FROM 0x00000040 /* File was moved from X */
|
||||
#define FAN_MOVED_TO 0x00000080 /* File was moved to Y */
|
||||
|
||||
8
lib/libc/include/any-linux-any/linux/fb.h
vendored
8
lib/libc/include/any-linux-any/linux/fb.h
vendored
@ -4,6 +4,7 @@
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/i2c.h>
|
||||
#include <linux/vesa.h>
|
||||
|
||||
/* Definitions of frame buffers */
|
||||
|
||||
@ -291,13 +292,6 @@ struct fb_con2fbmap {
|
||||
__u32 framebuffer;
|
||||
};
|
||||
|
||||
/* VESA Blanking Levels */
|
||||
#define VESA_NO_BLANKING 0
|
||||
#define VESA_VSYNC_SUSPEND 1
|
||||
#define VESA_HSYNC_SUSPEND 2
|
||||
#define VESA_POWERDOWN 3
|
||||
|
||||
|
||||
enum {
|
||||
/* screen: unblanked, hsync: on, vsync: on */
|
||||
FB_BLANK_UNBLANK = VESA_NO_BLANKING,
|
||||
|
||||
19
lib/libc/include/any-linux-any/linux/fcntl.h
vendored
19
lib/libc/include/any-linux-any/linux/fcntl.h
vendored
@ -8,6 +8,14 @@
|
||||
#define F_SETLEASE (F_LINUX_SPECIFIC_BASE + 0)
|
||||
#define F_GETLEASE (F_LINUX_SPECIFIC_BASE + 1)
|
||||
|
||||
/*
|
||||
* Request nofications on a directory.
|
||||
* See below for events that may be notified.
|
||||
*/
|
||||
#define F_NOTIFY (F_LINUX_SPECIFIC_BASE + 2)
|
||||
|
||||
#define F_DUPFD_QUERY (F_LINUX_SPECIFIC_BASE + 3)
|
||||
|
||||
/*
|
||||
* Cancel a blocking posix lock; internal use only until we expose an
|
||||
* asynchronous lock api to userspace:
|
||||
@ -17,12 +25,6 @@
|
||||
/* Create a file descriptor with FD_CLOEXEC set. */
|
||||
#define F_DUPFD_CLOEXEC (F_LINUX_SPECIFIC_BASE + 6)
|
||||
|
||||
/*
|
||||
* Request nofications on a directory.
|
||||
* See below for events that may be notified.
|
||||
*/
|
||||
#define F_NOTIFY (F_LINUX_SPECIFIC_BASE+2)
|
||||
|
||||
/*
|
||||
* Set and get of pipe page size array
|
||||
*/
|
||||
@ -112,4 +114,9 @@
|
||||
|
||||
#define AT_RECURSIVE 0x8000 /* Apply to the entire subtree */
|
||||
|
||||
/* Flags for name_to_handle_at(2). We reuse AT_ flag space to save bits... */
|
||||
#define AT_HANDLE_FID AT_REMOVEDIR /* file handle is needed to
|
||||
compare object identity and may not
|
||||
be usable to open_by_handle_at(2) */
|
||||
|
||||
#endif /* _LINUX_FCNTL_H */
|
||||
180
lib/libc/include/any-linux-any/linux/firewire-cdev.h
vendored
180
lib/libc/include/any-linux-any/linux/firewire-cdev.h
vendored
@ -46,6 +46,12 @@
|
||||
#define FW_CDEV_EVENT_PHY_PACKET_RECEIVED 0x08
|
||||
#define FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL 0x09
|
||||
|
||||
/* available since kernel version 6.5 */
|
||||
#define FW_CDEV_EVENT_REQUEST3 0x0a
|
||||
#define FW_CDEV_EVENT_RESPONSE2 0x0b
|
||||
#define FW_CDEV_EVENT_PHY_PACKET_SENT2 0x0c
|
||||
#define FW_CDEV_EVENT_PHY_PACKET_RECEIVED2 0x0d
|
||||
|
||||
/**
|
||||
* struct fw_cdev_event_common - Common part of all fw_cdev_event_* types
|
||||
* @closure: For arbitrary use by userspace
|
||||
@ -103,6 +109,32 @@ struct fw_cdev_event_bus_reset {
|
||||
* @length: Data length, i.e. the response's payload size in bytes
|
||||
* @data: Payload data, if any
|
||||
*
|
||||
* This event is sent instead of &fw_cdev_event_response if the kernel or the client implements
|
||||
* ABI version <= 5. It has the lack of time stamp field comparing to &fw_cdev_event_response2.
|
||||
*/
|
||||
struct fw_cdev_event_response {
|
||||
__u64 closure;
|
||||
__u32 type;
|
||||
__u32 rcode;
|
||||
__u32 length;
|
||||
__u32 data[];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct fw_cdev_event_response2 - Sent when a response packet was received
|
||||
* @closure: See &fw_cdev_event_common; set by %FW_CDEV_IOC_SEND_REQUEST
|
||||
* or %FW_CDEV_IOC_SEND_BROADCAST_REQUEST
|
||||
* or %FW_CDEV_IOC_SEND_STREAM_PACKET ioctl
|
||||
* @type: See &fw_cdev_event_common; always %FW_CDEV_EVENT_RESPONSE
|
||||
* @rcode: Response code returned by the remote node
|
||||
* @length: Data length, i.e. the response's payload size in bytes
|
||||
* @request_tstamp: The time stamp of isochronous cycle at which the request was sent.
|
||||
* @response_tstamp: The time stamp of isochronous cycle at which the response was sent.
|
||||
* @padding: Padding to keep the size of structure as multiples of 8 in various architectures
|
||||
* since 4 byte alignment is used for 8 byte of object type in System V ABI for i386
|
||||
* architecture.
|
||||
* @data: Payload data, if any
|
||||
*
|
||||
* This event is sent when the stack receives a response to an outgoing request
|
||||
* sent by %FW_CDEV_IOC_SEND_REQUEST ioctl. The payload data for responses
|
||||
* carrying data (read and lock responses) follows immediately and can be
|
||||
@ -112,12 +144,21 @@ struct fw_cdev_event_bus_reset {
|
||||
* involve response packets. This includes unified write transactions,
|
||||
* broadcast write transactions, and transmission of asynchronous stream
|
||||
* packets. @rcode indicates success or failure of such transmissions.
|
||||
*
|
||||
* The value of @request_tstamp expresses the isochronous cycle at which the request was sent to
|
||||
* initiate the transaction. The value of @response_tstamp expresses the isochronous cycle at which
|
||||
* the response arrived to complete the transaction. Each value is unsigned 16 bit integer
|
||||
* containing three low order bits of second field and all 13 bits of cycle field in format of
|
||||
* CYCLE_TIMER register.
|
||||
*/
|
||||
struct fw_cdev_event_response {
|
||||
struct fw_cdev_event_response2 {
|
||||
__u64 closure;
|
||||
__u32 type;
|
||||
__u32 rcode;
|
||||
__u32 length;
|
||||
__u32 request_tstamp;
|
||||
__u32 response_tstamp;
|
||||
__u32 padding;
|
||||
__u32 data[];
|
||||
};
|
||||
|
||||
@ -159,6 +200,41 @@ struct fw_cdev_event_request {
|
||||
* @length: Data length, i.e. the request's payload size in bytes
|
||||
* @data: Incoming data, if any
|
||||
*
|
||||
* This event is sent instead of &fw_cdev_event_request3 if the kernel or the client implements
|
||||
* ABI version <= 5. It has the lack of time stamp field comparing to &fw_cdev_event_request3.
|
||||
*/
|
||||
struct fw_cdev_event_request2 {
|
||||
__u64 closure;
|
||||
__u32 type;
|
||||
__u32 tcode;
|
||||
__u64 offset;
|
||||
__u32 source_node_id;
|
||||
__u32 destination_node_id;
|
||||
__u32 card;
|
||||
__u32 generation;
|
||||
__u32 handle;
|
||||
__u32 length;
|
||||
__u32 data[];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct fw_cdev_event_request3 - Sent on incoming request to an address region
|
||||
* @closure: See &fw_cdev_event_common; set by %FW_CDEV_IOC_ALLOCATE ioctl
|
||||
* @type: See &fw_cdev_event_common; always %FW_CDEV_EVENT_REQUEST2
|
||||
* @tcode: Transaction code of the incoming request
|
||||
* @offset: The offset into the 48-bit per-node address space
|
||||
* @source_node_id: Sender node ID
|
||||
* @destination_node_id: Destination node ID
|
||||
* @card: The index of the card from which the request came
|
||||
* @generation: Bus generation in which the request is valid
|
||||
* @handle: Reference to the kernel-side pending request
|
||||
* @length: Data length, i.e. the request's payload size in bytes
|
||||
* @tstamp: The time stamp of isochronous cycle at which the request arrived.
|
||||
* @padding: Padding to keep the size of structure as multiples of 8 in various architectures
|
||||
* since 4 byte alignment is used for 8 byte of object type in System V ABI for i386
|
||||
* architecture.
|
||||
* @data: Incoming data, if any
|
||||
*
|
||||
* This event is sent when the stack receives an incoming request to an address
|
||||
* region registered using the %FW_CDEV_IOC_ALLOCATE ioctl. The request is
|
||||
* guaranteed to be completely contained in the specified region. Userspace is
|
||||
@ -191,10 +267,14 @@ struct fw_cdev_event_request {
|
||||
* sent.
|
||||
*
|
||||
* If the client subsequently needs to initiate requests to the sender node of
|
||||
* an &fw_cdev_event_request2, it needs to use a device file with matching
|
||||
* an &fw_cdev_event_request3, it needs to use a device file with matching
|
||||
* card index, node ID, and generation for outbound requests.
|
||||
*
|
||||
* @tstamp is isochronous cycle at which the request arrived. It is 16 bit integer value and the
|
||||
* higher 3 bits expresses three low order bits of second field in the format of CYCLE_TIME
|
||||
* register and the rest 13 bits expresses cycle field.
|
||||
*/
|
||||
struct fw_cdev_event_request2 {
|
||||
struct fw_cdev_event_request3 {
|
||||
__u64 closure;
|
||||
__u32 type;
|
||||
__u32 tcode;
|
||||
@ -205,6 +285,8 @@ struct fw_cdev_event_request2 {
|
||||
__u32 generation;
|
||||
__u32 handle;
|
||||
__u32 length;
|
||||
__u32 tstamp;
|
||||
__u32 padding;
|
||||
__u32 data[];
|
||||
};
|
||||
|
||||
@ -341,14 +423,12 @@ struct fw_cdev_event_iso_resource {
|
||||
* @type: %FW_CDEV_EVENT_PHY_PACKET_SENT or %..._RECEIVED
|
||||
* @rcode: %RCODE_..., indicates success or failure of transmission
|
||||
* @length: Data length in bytes
|
||||
* @data: Incoming data
|
||||
* @data: Incoming data for %FW_CDEV_IOC_RECEIVE_PHY_PACKETS. For %FW_CDEV_IOC_SEND_PHY_PACKET
|
||||
* the field has the same data in the request, thus the length of 8 bytes.
|
||||
*
|
||||
* If @type is %FW_CDEV_EVENT_PHY_PACKET_SENT, @length is 0 and @data empty,
|
||||
* except in case of a ping packet: Then, @length is 4, and @data[0] is the
|
||||
* ping time in 49.152MHz clocks if @rcode is %RCODE_COMPLETE.
|
||||
*
|
||||
* If @type is %FW_CDEV_EVENT_PHY_PACKET_RECEIVED, @length is 8 and @data
|
||||
* consists of the two PHY packet quadlets, in host byte order.
|
||||
* This event is sent instead of &fw_cdev_event_phy_packet2 if the kernel or
|
||||
* the client implements ABI version <= 5. It has the lack of time stamp field comparing to
|
||||
* &fw_cdev_event_phy_packet2.
|
||||
*/
|
||||
struct fw_cdev_event_phy_packet {
|
||||
__u64 closure;
|
||||
@ -358,6 +438,47 @@ struct fw_cdev_event_phy_packet {
|
||||
__u32 data[];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct fw_cdev_event_phy_packet2 - A PHY packet was transmitted or received with time stamp.
|
||||
* @closure: See &fw_cdev_event_common; set by %FW_CDEV_IOC_SEND_PHY_PACKET
|
||||
* or %FW_CDEV_IOC_RECEIVE_PHY_PACKETS ioctl
|
||||
* @type: %FW_CDEV_EVENT_PHY_PACKET_SENT2 or %FW_CDEV_EVENT_PHY_PACKET_RECEIVED2
|
||||
* @rcode: %RCODE_..., indicates success or failure of transmission
|
||||
* @length: Data length in bytes
|
||||
* @tstamp: For %FW_CDEV_EVENT_PHY_PACKET_RECEIVED2, the time stamp of isochronous cycle at
|
||||
* which the packet arrived. For %FW_CDEV_EVENT_PHY_PACKET_SENT2 and non-ping packet,
|
||||
* the time stamp of isochronous cycle at which the packet was sent. For ping packet,
|
||||
* the tick count for round-trip time measured by 1394 OHCI controller.
|
||||
* The time stamp of isochronous cycle at which either the response was sent for
|
||||
* %FW_CDEV_EVENT_PHY_PACKET_SENT2 or the request arrived for
|
||||
* %FW_CDEV_EVENT_PHY_PACKET_RECEIVED2.
|
||||
* @data: Incoming data
|
||||
*
|
||||
* If @type is %FW_CDEV_EVENT_PHY_PACKET_SENT2, @length is 8 and @data consists of the two PHY
|
||||
* packet quadlets to be sent, in host byte order,
|
||||
*
|
||||
* If @type is %FW_CDEV_EVENT_PHY_PACKET_RECEIVED2, @length is 8 and @data consists of the two PHY
|
||||
* packet quadlets, in host byte order.
|
||||
*
|
||||
* For %FW_CDEV_EVENT_PHY_PACKET_RECEIVED2, the @tstamp is the isochronous cycle at which the
|
||||
* packet arrived. It is 16 bit integer value and the higher 3 bits expresses three low order bits
|
||||
* of second field and the rest 13 bits expresses cycle field in the format of CYCLE_TIME register.
|
||||
*
|
||||
* For %FW_CDEV_EVENT_PHY_PACKET_SENT2, the @tstamp has different meanings whether to sent the
|
||||
* packet for ping or not. If it's not for ping, the @tstamp is the isochronous cycle at which the
|
||||
* packet was sent, and use the same format as the case of %FW_CDEV_EVENT_PHY_PACKET_SENT2. If it's
|
||||
* for ping, the @tstamp is for round-trip time measured by 1394 OHCI controller with 42.195 MHz
|
||||
* resolution.
|
||||
*/
|
||||
struct fw_cdev_event_phy_packet2 {
|
||||
__u64 closure;
|
||||
__u32 type;
|
||||
__u32 rcode;
|
||||
__u32 length;
|
||||
__u32 tstamp;
|
||||
__u32 data[];
|
||||
};
|
||||
|
||||
/**
|
||||
* union fw_cdev_event - Convenience union of fw_cdev_event_* types
|
||||
* @common: Valid for all types
|
||||
@ -375,6 +496,11 @@ struct fw_cdev_event_phy_packet {
|
||||
* %FW_CDEV_EVENT_PHY_PACKET_SENT or
|
||||
* %FW_CDEV_EVENT_PHY_PACKET_RECEIVED
|
||||
*
|
||||
* @request3: Valid if @common.type == %FW_CDEV_EVENT_REQUEST3
|
||||
* @response2: Valid if @common.type == %FW_CDEV_EVENT_RESPONSE2
|
||||
* @phy_packet2: Valid if @common.type == %FW_CDEV_EVENT_PHY_PACKET_SENT2 or
|
||||
* %FW_CDEV_EVENT_PHY_PACKET_RECEIVED2
|
||||
*
|
||||
* Convenience union for userspace use. Events could be read(2) into an
|
||||
* appropriately aligned char buffer and then cast to this union for further
|
||||
* processing. Note that for a request, response or iso_interrupt event,
|
||||
@ -393,6 +519,9 @@ union fw_cdev_event {
|
||||
struct fw_cdev_event_iso_interrupt_mc iso_interrupt_mc; /* added in 2.6.36 */
|
||||
struct fw_cdev_event_iso_resource iso_resource; /* added in 2.6.30 */
|
||||
struct fw_cdev_event_phy_packet phy_packet; /* added in 2.6.36 */
|
||||
struct fw_cdev_event_request3 request3; /* added in 6.5 */
|
||||
struct fw_cdev_event_response2 response2; /* added in 6.5 */
|
||||
struct fw_cdev_event_phy_packet2 phy_packet2; /* added in 6.5 */
|
||||
};
|
||||
|
||||
/* available since kernel version 2.6.22 */
|
||||
@ -457,6 +586,11 @@ union fw_cdev_event {
|
||||
* 5 (3.4) - send %FW_CDEV_EVENT_ISO_INTERRUPT events when needed to
|
||||
* avoid dropping data
|
||||
* - added %FW_CDEV_IOC_FLUSH_ISO
|
||||
* 6 (6.5) - added some event for subactions of asynchronous transaction with time stamp
|
||||
* - %FW_CDEV_EVENT_REQUEST3
|
||||
* - %FW_CDEV_EVENT_RESPONSE2
|
||||
* - %FW_CDEV_EVENT_PHY_PACKET_SENT2
|
||||
* - %FW_CDEV_EVENT_PHY_PACKET_RECEIVED2
|
||||
*/
|
||||
|
||||
/**
|
||||
@ -502,11 +636,11 @@ struct fw_cdev_get_info {
|
||||
* @data: Userspace pointer to payload
|
||||
* @generation: The bus generation where packet is valid
|
||||
*
|
||||
* Send a request to the device. This ioctl implements all outgoing requests.
|
||||
* Both quadlet and block request specify the payload as a pointer to the data
|
||||
* in the @data field. Once the transaction completes, the kernel writes an
|
||||
* &fw_cdev_event_response event back. The @closure field is passed back to
|
||||
* user space in the response event.
|
||||
* Send a request to the device. This ioctl implements all outgoing requests. Both quadlet and
|
||||
* block request specify the payload as a pointer to the data in the @data field. Once the
|
||||
* transaction completes, the kernel writes either &fw_cdev_event_response event or
|
||||
* &fw_cdev_event_response event back. The @closure field is passed back to user space in the
|
||||
* response event.
|
||||
*/
|
||||
struct fw_cdev_send_request {
|
||||
__u32 tcode;
|
||||
@ -989,10 +1123,9 @@ struct fw_cdev_allocate_iso_resource {
|
||||
* @generation: The bus generation where packet is valid
|
||||
* @speed: Speed to transmit at
|
||||
*
|
||||
* The %FW_CDEV_IOC_SEND_STREAM_PACKET ioctl sends an asynchronous stream packet
|
||||
* to every device which is listening to the specified channel. The kernel
|
||||
* writes an &fw_cdev_event_response event which indicates success or failure of
|
||||
* the transmission.
|
||||
* The %FW_CDEV_IOC_SEND_STREAM_PACKET ioctl sends an asynchronous stream packet to every device
|
||||
* which is listening to the specified channel. The kernel writes either &fw_cdev_event_response
|
||||
* event or &fw_cdev_event_response2 event which indicates success or failure of the transmission.
|
||||
*/
|
||||
struct fw_cdev_send_stream_packet {
|
||||
__u32 length;
|
||||
@ -1011,8 +1144,8 @@ struct fw_cdev_send_stream_packet {
|
||||
* @data: First and second quadlet of the PHY packet
|
||||
* @generation: The bus generation where packet is valid
|
||||
*
|
||||
* The %FW_CDEV_IOC_SEND_PHY_PACKET ioctl sends a PHY packet to all nodes
|
||||
* on the same card as this device. After transmission, an
|
||||
* The %FW_CDEV_IOC_SEND_PHY_PACKET ioctl sends a PHY packet to all nodes on the same card as this
|
||||
* device. After transmission, either %FW_CDEV_EVENT_PHY_PACKET_SENT event or
|
||||
* %FW_CDEV_EVENT_PHY_PACKET_SENT event is generated.
|
||||
*
|
||||
* The payload @data\[\] shall be specified in host byte order. Usually,
|
||||
@ -1031,8 +1164,9 @@ struct fw_cdev_send_phy_packet {
|
||||
* struct fw_cdev_receive_phy_packets - start reception of PHY packets
|
||||
* @closure: Passed back to userspace in phy packet events
|
||||
*
|
||||
* This ioctl activates issuing of %FW_CDEV_EVENT_PHY_PACKET_RECEIVED due to
|
||||
* incoming PHY packets from any node on the same bus as the device.
|
||||
* This ioctl activates issuing of either %FW_CDEV_EVENT_PHY_PACKET_RECEIVED or
|
||||
* %FW_CDEV_EVENT_PHY_PACKET_RECEIVED2 due to incoming PHY packets from any node on the same bus
|
||||
* as the device.
|
||||
*
|
||||
* The ioctl is only permitted on device files which represent a local node.
|
||||
*/
|
||||
|
||||
90
lib/libc/include/any-linux-any/linux/fs.h
vendored
90
lib/libc/include/any-linux-any/linux/fs.h
vendored
@ -60,6 +60,24 @@ struct fstrim_range {
|
||||
__u64 minlen;
|
||||
};
|
||||
|
||||
/*
|
||||
* We include a length field because some filesystems (vfat) have an identifier
|
||||
* that we do want to expose as a UUID, but doesn't have the standard length.
|
||||
*
|
||||
* We use a fixed size buffer beacuse this interface will, by fiat, never
|
||||
* support "UUIDs" longer than 16 bytes; we don't want to force all downstream
|
||||
* users to have to deal with that.
|
||||
*/
|
||||
struct fsuuid2 {
|
||||
__u8 len;
|
||||
__u8 uuid[16];
|
||||
};
|
||||
|
||||
struct fs_sysfs_path {
|
||||
__u8 len;
|
||||
__u8 name[128];
|
||||
};
|
||||
|
||||
/* extent-same (dedupe) ioctls; these MUST match the btrfs ioctl definitions */
|
||||
#define FILE_DEDUPE_RANGE_SAME 0
|
||||
#define FILE_DEDUPE_RANGE_DIFFERS 1
|
||||
@ -211,6 +229,13 @@ struct fsxattr {
|
||||
#define FS_IOC_FSSETXATTR _IOW('X', 32, struct fsxattr)
|
||||
#define FS_IOC_GETFSLABEL _IOR(0x94, 49, char[FSLABEL_MAX])
|
||||
#define FS_IOC_SETFSLABEL _IOW(0x94, 50, char[FSLABEL_MAX])
|
||||
/* Returns the external filesystem UUID, the same one blkid returns */
|
||||
#define FS_IOC_GETFSUUID _IOR(0x15, 0, struct fsuuid2)
|
||||
/*
|
||||
* Returns the path component under /sys/fs/ that refers to this filesystem;
|
||||
* also /sys/kernel/debug/ for filesystems with debugfs exports
|
||||
*/
|
||||
#define FS_IOC_GETFSSYSFSPATH _IOR(0x15, 1, struct fs_sysfs_path)
|
||||
|
||||
/*
|
||||
* Inode flags (FS_IOC_GETFLAGS / FS_IOC_SETFLAGS)
|
||||
@ -297,8 +322,71 @@ typedef int __bitwise __kernel_rwf_t;
|
||||
/* per-IO O_APPEND */
|
||||
#define RWF_APPEND ((__kernel_rwf_t)0x00000010)
|
||||
|
||||
/* per-IO negation of O_APPEND */
|
||||
#define RWF_NOAPPEND ((__kernel_rwf_t)0x00000020)
|
||||
|
||||
/* mask of flags supported by the kernel */
|
||||
#define RWF_SUPPORTED (RWF_HIPRI | RWF_DSYNC | RWF_SYNC | RWF_NOWAIT |\
|
||||
RWF_APPEND)
|
||||
RWF_APPEND | RWF_NOAPPEND)
|
||||
|
||||
/* Pagemap ioctl */
|
||||
#define PAGEMAP_SCAN _IOWR('f', 16, struct pm_scan_arg)
|
||||
|
||||
/* Bitmasks provided in pm_scan_args masks and reported in page_region.categories. */
|
||||
#define PAGE_IS_WPALLOWED (1 << 0)
|
||||
#define PAGE_IS_WRITTEN (1 << 1)
|
||||
#define PAGE_IS_FILE (1 << 2)
|
||||
#define PAGE_IS_PRESENT (1 << 3)
|
||||
#define PAGE_IS_SWAPPED (1 << 4)
|
||||
#define PAGE_IS_PFNZERO (1 << 5)
|
||||
#define PAGE_IS_HUGE (1 << 6)
|
||||
#define PAGE_IS_SOFT_DIRTY (1 << 7)
|
||||
|
||||
/*
|
||||
* struct page_region - Page region with flags
|
||||
* @start: Start of the region
|
||||
* @end: End of the region (exclusive)
|
||||
* @categories: PAGE_IS_* category bitmask for the region
|
||||
*/
|
||||
struct page_region {
|
||||
__u64 start;
|
||||
__u64 end;
|
||||
__u64 categories;
|
||||
};
|
||||
|
||||
/* Flags for PAGEMAP_SCAN ioctl */
|
||||
#define PM_SCAN_WP_MATCHING (1 << 0) /* Write protect the pages matched. */
|
||||
#define PM_SCAN_CHECK_WPASYNC (1 << 1) /* Abort the scan when a non-WP-enabled page is found. */
|
||||
|
||||
/*
|
||||
* struct pm_scan_arg - Pagemap ioctl argument
|
||||
* @size: Size of the structure
|
||||
* @flags: Flags for the IOCTL
|
||||
* @start: Starting address of the region
|
||||
* @end: Ending address of the region
|
||||
* @walk_end Address where the scan stopped (written by kernel).
|
||||
* walk_end == end (address tags cleared) informs that the scan completed on entire range.
|
||||
* @vec: Address of page_region struct array for output
|
||||
* @vec_len: Length of the page_region struct array
|
||||
* @max_pages: Optional limit for number of returned pages (0 = disabled)
|
||||
* @category_inverted: PAGE_IS_* categories which values match if 0 instead of 1
|
||||
* @category_mask: Skip pages for which any category doesn't match
|
||||
* @category_anyof_mask: Skip pages for which no category matches
|
||||
* @return_mask: PAGE_IS_* categories that are to be reported in `page_region`s returned
|
||||
*/
|
||||
struct pm_scan_arg {
|
||||
__u64 size;
|
||||
__u64 flags;
|
||||
__u64 start;
|
||||
__u64 end;
|
||||
__u64 walk_end;
|
||||
__u64 vec;
|
||||
__u64 vec_len;
|
||||
__u64 max_pages;
|
||||
__u64 category_inverted;
|
||||
__u64 category_mask;
|
||||
__u64 category_anyof_mask;
|
||||
__u64 return_mask;
|
||||
};
|
||||
|
||||
#endif /* _LINUX_FS_H */
|
||||
@ -71,7 +71,8 @@ struct fscrypt_policy_v2 {
|
||||
__u8 contents_encryption_mode;
|
||||
__u8 filenames_encryption_mode;
|
||||
__u8 flags;
|
||||
__u8 __reserved[4];
|
||||
__u8 log2_data_unit_size;
|
||||
__u8 __reserved[3];
|
||||
__u8 master_key_identifier[FSCRYPT_KEY_IDENTIFIER_SIZE];
|
||||
};
|
||||
|
||||
|
||||
10
lib/libc/include/any-linux-any/linux/fsi.h
vendored
10
lib/libc/include/any-linux-any/linux/fsi.h
vendored
@ -59,6 +59,16 @@ struct scom_access {
|
||||
* /dev/sbefifo* ioctl interface
|
||||
*/
|
||||
|
||||
/**
|
||||
* FSI_SBEFIFO_CMD_TIMEOUT sets the timeout for writing data to the SBEFIFO.
|
||||
*
|
||||
* The command timeout is specified in seconds. The minimum value of command
|
||||
* timeout is 1 seconds (default) and the maximum value of command timeout is
|
||||
* 120 seconds. A command timeout of 0 will reset the value to the default of
|
||||
* 1 seconds.
|
||||
*/
|
||||
#define FSI_SBEFIFO_CMD_TIMEOUT_SECONDS _IOW('s', 0x01, __u32)
|
||||
|
||||
/**
|
||||
* FSI_SBEFIFO_READ_TIMEOUT sets the read timeout for response from SBE.
|
||||
*
|
||||
|
||||
102
lib/libc/include/any-linux-any/linux/fuse.h
vendored
102
lib/libc/include/any-linux-any/linux/fuse.h
vendored
@ -206,6 +206,17 @@
|
||||
* - add extension header
|
||||
* - add FUSE_EXT_GROUPS
|
||||
* - add FUSE_CREATE_SUPP_GROUP
|
||||
* - add FUSE_HAS_EXPIRE_ONLY
|
||||
*
|
||||
* 7.39
|
||||
* - add FUSE_DIRECT_IO_ALLOW_MMAP
|
||||
* - add FUSE_STATX and related structures
|
||||
*
|
||||
* 7.40
|
||||
* - add max_stack_depth to fuse_init_out, add FUSE_PASSTHROUGH init flag
|
||||
* - add backing_id to fuse_open_out, add FOPEN_PASSTHROUGH open flag
|
||||
* - add FUSE_NO_EXPORT_SUPPORT init flag
|
||||
* - add FUSE_NOTIFY_RESEND, add FUSE_HAS_RESEND init flag
|
||||
*/
|
||||
|
||||
#ifndef _LINUX_FUSE_H
|
||||
@ -237,7 +248,7 @@
|
||||
#define FUSE_KERNEL_VERSION 7
|
||||
|
||||
/** Minor version number of this interface */
|
||||
#define FUSE_KERNEL_MINOR_VERSION 38
|
||||
#define FUSE_KERNEL_MINOR_VERSION 40
|
||||
|
||||
/** The node ID of the root inode */
|
||||
#define FUSE_ROOT_ID 1
|
||||
@ -264,6 +275,40 @@ struct fuse_attr {
|
||||
uint32_t flags;
|
||||
};
|
||||
|
||||
/*
|
||||
* The following structures are bit-for-bit compatible with the statx(2) ABI in
|
||||
* Linux.
|
||||
*/
|
||||
struct fuse_sx_time {
|
||||
int64_t tv_sec;
|
||||
uint32_t tv_nsec;
|
||||
int32_t __reserved;
|
||||
};
|
||||
|
||||
struct fuse_statx {
|
||||
uint32_t mask;
|
||||
uint32_t blksize;
|
||||
uint64_t attributes;
|
||||
uint32_t nlink;
|
||||
uint32_t uid;
|
||||
uint32_t gid;
|
||||
uint16_t mode;
|
||||
uint16_t __spare0[1];
|
||||
uint64_t ino;
|
||||
uint64_t size;
|
||||
uint64_t blocks;
|
||||
uint64_t attributes_mask;
|
||||
struct fuse_sx_time atime;
|
||||
struct fuse_sx_time btime;
|
||||
struct fuse_sx_time ctime;
|
||||
struct fuse_sx_time mtime;
|
||||
uint32_t rdev_major;
|
||||
uint32_t rdev_minor;
|
||||
uint32_t dev_major;
|
||||
uint32_t dev_minor;
|
||||
uint64_t __spare2[14];
|
||||
};
|
||||
|
||||
struct fuse_kstatfs {
|
||||
uint64_t blocks;
|
||||
uint64_t bfree;
|
||||
@ -310,6 +355,7 @@ struct fuse_file_lock {
|
||||
* FOPEN_STREAM: the file is stream-like (no file position at all)
|
||||
* FOPEN_NOFLUSH: don't flush data cache on close (unless FUSE_WRITEBACK_CACHE)
|
||||
* FOPEN_PARALLEL_DIRECT_WRITES: Allow concurrent direct writes on the same inode
|
||||
* FOPEN_PASSTHROUGH: passthrough read/write io for this open file
|
||||
*/
|
||||
#define FOPEN_DIRECT_IO (1 << 0)
|
||||
#define FOPEN_KEEP_CACHE (1 << 1)
|
||||
@ -318,6 +364,7 @@ struct fuse_file_lock {
|
||||
#define FOPEN_STREAM (1 << 4)
|
||||
#define FOPEN_NOFLUSH (1 << 5)
|
||||
#define FOPEN_PARALLEL_DIRECT_WRITES (1 << 6)
|
||||
#define FOPEN_PASSTHROUGH (1 << 7)
|
||||
|
||||
/**
|
||||
* INIT request/reply flags
|
||||
@ -365,6 +412,11 @@ struct fuse_file_lock {
|
||||
* FUSE_HAS_INODE_DAX: use per inode DAX
|
||||
* FUSE_CREATE_SUPP_GROUP: add supplementary group info to create, mkdir,
|
||||
* symlink and mknod (single group that matches parent)
|
||||
* FUSE_HAS_EXPIRE_ONLY: kernel supports expiry-only entry invalidation
|
||||
* FUSE_DIRECT_IO_ALLOW_MMAP: allow shared mmap in FOPEN_DIRECT_IO mode.
|
||||
* FUSE_NO_EXPORT_SUPPORT: explicitly disable export support
|
||||
* FUSE_HAS_RESEND: kernel supports resending pending requests, and the high bit
|
||||
* of the request ID indicates resend requests
|
||||
*/
|
||||
#define FUSE_ASYNC_READ (1 << 0)
|
||||
#define FUSE_POSIX_LOCKS (1 << 1)
|
||||
@ -402,6 +454,14 @@ struct fuse_file_lock {
|
||||
#define FUSE_SECURITY_CTX (1ULL << 32)
|
||||
#define FUSE_HAS_INODE_DAX (1ULL << 33)
|
||||
#define FUSE_CREATE_SUPP_GROUP (1ULL << 34)
|
||||
#define FUSE_HAS_EXPIRE_ONLY (1ULL << 35)
|
||||
#define FUSE_DIRECT_IO_ALLOW_MMAP (1ULL << 36)
|
||||
#define FUSE_PASSTHROUGH (1ULL << 37)
|
||||
#define FUSE_NO_EXPORT_SUPPORT (1ULL << 38)
|
||||
#define FUSE_HAS_RESEND (1ULL << 39)
|
||||
|
||||
/* Obsolete alias for FUSE_DIRECT_IO_ALLOW_MMAP */
|
||||
#define FUSE_DIRECT_IO_RELAX FUSE_DIRECT_IO_ALLOW_MMAP
|
||||
|
||||
/**
|
||||
* CUSE INIT request/reply flags
|
||||
@ -568,6 +628,7 @@ enum fuse_opcode {
|
||||
FUSE_REMOVEMAPPING = 49,
|
||||
FUSE_SYNCFS = 50,
|
||||
FUSE_TMPFILE = 51,
|
||||
FUSE_STATX = 52,
|
||||
|
||||
/* CUSE specific operations */
|
||||
CUSE_INIT = 4096,
|
||||
@ -584,6 +645,7 @@ enum fuse_notify_code {
|
||||
FUSE_NOTIFY_STORE = 4,
|
||||
FUSE_NOTIFY_RETRIEVE = 5,
|
||||
FUSE_NOTIFY_DELETE = 6,
|
||||
FUSE_NOTIFY_RESEND = 7,
|
||||
FUSE_NOTIFY_CODE_MAX,
|
||||
};
|
||||
|
||||
@ -632,6 +694,22 @@ struct fuse_attr_out {
|
||||
struct fuse_attr attr;
|
||||
};
|
||||
|
||||
struct fuse_statx_in {
|
||||
uint32_t getattr_flags;
|
||||
uint32_t reserved;
|
||||
uint64_t fh;
|
||||
uint32_t sx_flags;
|
||||
uint32_t sx_mask;
|
||||
};
|
||||
|
||||
struct fuse_statx_out {
|
||||
uint64_t attr_valid; /* Cache timeout for the attributes */
|
||||
uint32_t attr_valid_nsec;
|
||||
uint32_t flags;
|
||||
uint64_t spare[2];
|
||||
struct fuse_statx stat;
|
||||
};
|
||||
|
||||
#define FUSE_COMPAT_MKNOD_IN_SIZE 8
|
||||
|
||||
struct fuse_mknod_in {
|
||||
@ -694,7 +772,7 @@ struct fuse_create_in {
|
||||
struct fuse_open_out {
|
||||
uint64_t fh;
|
||||
uint32_t open_flags;
|
||||
uint32_t padding;
|
||||
int32_t backing_id;
|
||||
};
|
||||
|
||||
struct fuse_release_in {
|
||||
@ -810,7 +888,8 @@ struct fuse_init_out {
|
||||
uint16_t max_pages;
|
||||
uint16_t map_alignment;
|
||||
uint32_t flags2;
|
||||
uint32_t unused[7];
|
||||
uint32_t max_stack_depth;
|
||||
uint32_t unused[6];
|
||||
};
|
||||
|
||||
#define CUSE_INIT_INFO_MAX 4096
|
||||
@ -893,6 +972,14 @@ struct fuse_fallocate_in {
|
||||
uint32_t padding;
|
||||
};
|
||||
|
||||
/**
|
||||
* FUSE request unique ID flag
|
||||
*
|
||||
* Indicates whether this is a resend request. The receiver should handle this
|
||||
* request accordingly.
|
||||
*/
|
||||
#define FUSE_UNIQUE_RESEND (1ULL << 63)
|
||||
|
||||
struct fuse_in_header {
|
||||
uint32_t len;
|
||||
uint32_t opcode;
|
||||
@ -982,9 +1069,18 @@ struct fuse_notify_retrieve_in {
|
||||
uint64_t dummy4;
|
||||
};
|
||||
|
||||
struct fuse_backing_map {
|
||||
int32_t fd;
|
||||
uint32_t flags;
|
||||
uint64_t padding;
|
||||
};
|
||||
|
||||
/* Device ioctls: */
|
||||
#define FUSE_DEV_IOC_MAGIC 229
|
||||
#define FUSE_DEV_IOC_CLONE _IOR(FUSE_DEV_IOC_MAGIC, 0, uint32_t)
|
||||
#define FUSE_DEV_IOC_BACKING_OPEN _IOW(FUSE_DEV_IOC_MAGIC, 1, \
|
||||
struct fuse_backing_map)
|
||||
#define FUSE_DEV_IOC_BACKING_CLOSE _IOW(FUSE_DEV_IOC_MAGIC, 2, uint32_t)
|
||||
|
||||
struct fuse_lseek_in {
|
||||
uint64_t fh;
|
||||
|
||||
31
lib/libc/include/any-linux-any/linux/futex.h
vendored
31
lib/libc/include/any-linux-any/linux/futex.h
vendored
@ -44,10 +44,35 @@
|
||||
FUTEX_PRIVATE_FLAG)
|
||||
|
||||
/*
|
||||
* Flags to specify the bit length of the futex word for futex2 syscalls.
|
||||
* Currently, only 32 is supported.
|
||||
* Flags for futex2 syscalls.
|
||||
*
|
||||
* NOTE: these are not pure flags, they can also be seen as:
|
||||
*
|
||||
* union {
|
||||
* u32 flags;
|
||||
* struct {
|
||||
* u32 size : 2,
|
||||
* numa : 1,
|
||||
* : 4,
|
||||
* private : 1;
|
||||
* };
|
||||
* };
|
||||
*/
|
||||
#define FUTEX_32 2
|
||||
#define FUTEX2_SIZE_U8 0x00
|
||||
#define FUTEX2_SIZE_U16 0x01
|
||||
#define FUTEX2_SIZE_U32 0x02
|
||||
#define FUTEX2_SIZE_U64 0x03
|
||||
#define FUTEX2_NUMA 0x04
|
||||
/* 0x08 */
|
||||
/* 0x10 */
|
||||
/* 0x20 */
|
||||
/* 0x40 */
|
||||
#define FUTEX2_PRIVATE FUTEX_PRIVATE_FLAG
|
||||
|
||||
#define FUTEX2_SIZE_MASK 0x03
|
||||
|
||||
/* do not use */
|
||||
#define FUTEX_32 FUTEX2_SIZE_U32 /* historical accident :-( */
|
||||
|
||||
/*
|
||||
* Max numbers of elements in a futex_waitv array
|
||||
|
||||
63
lib/libc/include/any-linux-any/linux/gpio.h
vendored
63
lib/libc/include/any-linux-any/linux/gpio.h
vendored
@ -67,7 +67,7 @@ struct gpiochip_info {
|
||||
* @GPIO_V2_LINE_FLAG_BIAS_DISABLED: line has bias disabled
|
||||
* @GPIO_V2_LINE_FLAG_EVENT_CLOCK_REALTIME: line events contain REALTIME timestamps
|
||||
* @GPIO_V2_LINE_FLAG_EVENT_CLOCK_HTE: line events contain timestamps from
|
||||
* hardware timestamp engine
|
||||
* the hardware timestamping engine (HTE) subsystem
|
||||
*/
|
||||
enum gpio_v2_line_flag {
|
||||
GPIO_V2_LINE_FLAG_USED = _BITULL(0),
|
||||
@ -88,10 +88,10 @@ enum gpio_v2_line_flag {
|
||||
/**
|
||||
* struct gpio_v2_line_values - Values of GPIO lines
|
||||
* @bits: a bitmap containing the value of the lines, set to 1 for active
|
||||
* and 0 for inactive.
|
||||
* and 0 for inactive
|
||||
* @mask: a bitmap identifying the lines to get or set, with each bit
|
||||
* number corresponding to the index into &struct
|
||||
* gpio_v2_line_request.offsets.
|
||||
* gpio_v2_line_request.offsets
|
||||
*/
|
||||
struct gpio_v2_line_values {
|
||||
__aligned_u64 bits;
|
||||
@ -123,7 +123,7 @@ enum gpio_v2_line_attr_id {
|
||||
* @values: if id is %GPIO_V2_LINE_ATTR_ID_OUTPUT_VALUES, a bitmap
|
||||
* containing the values to which the lines will be set, with each bit
|
||||
* number corresponding to the index into &struct
|
||||
* gpio_v2_line_request.offsets.
|
||||
* gpio_v2_line_request.offsets
|
||||
* @debounce_period_us: if id is %GPIO_V2_LINE_ATTR_ID_DEBOUNCE, the
|
||||
* desired debounce period, in microseconds
|
||||
*/
|
||||
@ -143,7 +143,7 @@ struct gpio_v2_line_attribute {
|
||||
* @attr: the configurable attribute
|
||||
* @mask: a bitmap identifying the lines to which the attribute applies,
|
||||
* with each bit number corresponding to the index into &struct
|
||||
* gpio_v2_line_request.offsets.
|
||||
* gpio_v2_line_request.offsets
|
||||
*/
|
||||
struct gpio_v2_line_config_attribute {
|
||||
struct gpio_v2_line_attribute attr;
|
||||
@ -178,7 +178,7 @@ struct gpio_v2_line_config {
|
||||
* associated GPIO chip
|
||||
* @consumer: a desired consumer label for the selected GPIO lines such as
|
||||
* "my-bitbanged-relay"
|
||||
* @config: requested configuration for the lines.
|
||||
* @config: requested configuration for the lines
|
||||
* @num_lines: number of lines requested in this request, i.e. the number
|
||||
* of valid fields in the %GPIO_V2_LINES_MAX sized arrays, set to 1 to
|
||||
* request a single line
|
||||
@ -189,9 +189,8 @@ struct gpio_v2_line_config {
|
||||
* buffer. If this field is zero then the buffer size defaults to a minimum
|
||||
* of @num_lines * 16.
|
||||
* @padding: reserved for future use and must be zero filled
|
||||
* @fd: if successful this field will contain a valid anonymous file handle
|
||||
* after a %GPIO_GET_LINE_IOCTL operation, zero or negative value means
|
||||
* error
|
||||
* @fd: after a successful %GPIO_V2_GET_LINE_IOCTL operation, contains
|
||||
* a valid anonymous file descriptor representing the request
|
||||
*/
|
||||
struct gpio_v2_line_request {
|
||||
__u32 offsets[GPIO_V2_LINES_MAX];
|
||||
@ -217,7 +216,7 @@ struct gpio_v2_line_request {
|
||||
* @num_attrs: the number of attributes in @attrs
|
||||
* @flags: flags for this GPIO line, with values from &enum
|
||||
* gpio_v2_line_flag, such as %GPIO_V2_LINE_FLAG_ACTIVE_LOW,
|
||||
* %GPIO_V2_LINE_FLAG_OUTPUT etc, added together.
|
||||
* %GPIO_V2_LINE_FLAG_OUTPUT etc, added together
|
||||
* @attrs: the configuration attributes associated with the line
|
||||
* @padding: reserved for future use
|
||||
*/
|
||||
@ -274,7 +273,7 @@ enum gpio_v2_line_event_id {
|
||||
|
||||
/**
|
||||
* struct gpio_v2_line_event - The actual event being pushed to userspace
|
||||
* @timestamp_ns: best estimate of time of event occurrence, in nanoseconds.
|
||||
* @timestamp_ns: best estimate of time of event occurrence, in nanoseconds
|
||||
* @id: event identifier with value from &enum gpio_v2_line_event_id
|
||||
* @offset: the offset of the line that triggered the event
|
||||
* @seqno: the sequence number for this event in the sequence of events for
|
||||
@ -289,6 +288,10 @@ enum gpio_v2_line_event_id {
|
||||
*
|
||||
* If the %GPIO_V2_LINE_FLAG_EVENT_CLOCK_REALTIME flag is set then the
|
||||
* @timestamp_ns is read from %CLOCK_REALTIME.
|
||||
*
|
||||
* If the %GPIO_V2_LINE_FLAG_EVENT_CLOCK_HTE flag is set then the
|
||||
* @timestamp_ns is provided by the hardware timestamping engine (HTE)
|
||||
* subsystem.
|
||||
*/
|
||||
struct gpio_v2_line_event {
|
||||
__aligned_u64 timestamp_ns;
|
||||
@ -330,7 +333,7 @@ struct gpio_v2_line_event {
|
||||
* also be empty if the consumer doesn't set this up
|
||||
*
|
||||
* Note: This struct is part of ABI v1 and is deprecated.
|
||||
* Use &struct gpio_v2_line_info instead.
|
||||
* Use ABI v2 and &struct gpio_v2_line_info instead.
|
||||
*/
|
||||
struct gpioline_info {
|
||||
__u32 line_offset;
|
||||
@ -365,7 +368,7 @@ enum {
|
||||
* at the end of the structure on 64-bit architectures.
|
||||
*
|
||||
* Note: This struct is part of ABI v1 and is deprecated.
|
||||
* Use &struct gpio_v2_line_info_changed instead.
|
||||
* Use ABI v2 and &struct gpio_v2_line_info_changed instead.
|
||||
*/
|
||||
struct gpioline_info_changed {
|
||||
struct gpioline_info info;
|
||||
@ -396,18 +399,17 @@ struct gpioline_info_changed {
|
||||
* a batch of input or output lines, but they must all have the same
|
||||
* characteristics, i.e. all inputs or all outputs, all active low etc
|
||||
* @default_values: if the %GPIOHANDLE_REQUEST_OUTPUT is set for a requested
|
||||
* line, this specifies the default output value, should be 0 (low) or
|
||||
* 1 (high), anything else than 0 or 1 will be interpreted as 1 (high)
|
||||
* line, this specifies the default output value, should be 0 (inactive) or
|
||||
* 1 (active). Anything other than 0 or 1 will be interpreted as active.
|
||||
* @consumer_label: a desired consumer label for the selected GPIO line(s)
|
||||
* such as "my-bitbanged-relay"
|
||||
* @lines: number of lines requested in this request, i.e. the number of
|
||||
* valid fields in the above arrays, set to 1 to request a single line
|
||||
* @fd: if successful this field will contain a valid anonymous file handle
|
||||
* after a %GPIO_GET_LINEHANDLE_IOCTL operation, zero or negative value
|
||||
* means error
|
||||
* @fd: after a successful %GPIO_GET_LINEHANDLE_IOCTL operation, contains
|
||||
* a valid anonymous file descriptor representing the request
|
||||
*
|
||||
* Note: This struct is part of ABI v1 and is deprecated.
|
||||
* Use &struct gpio_v2_line_request instead.
|
||||
* Use ABI v2 and &struct gpio_v2_line_request instead.
|
||||
*/
|
||||
struct gpiohandle_request {
|
||||
__u32 lineoffsets[GPIOHANDLES_MAX];
|
||||
@ -424,12 +426,12 @@ struct gpiohandle_request {
|
||||
* %GPIOHANDLE_REQUEST_OUTPUT, %GPIOHANDLE_REQUEST_ACTIVE_LOW etc, added
|
||||
* together
|
||||
* @default_values: if the %GPIOHANDLE_REQUEST_OUTPUT is set in flags,
|
||||
* this specifies the default output value, should be 0 (low) or
|
||||
* 1 (high), anything else than 0 or 1 will be interpreted as 1 (high)
|
||||
* this specifies the default output value, should be 0 (inactive) or
|
||||
* 1 (active). Anything other than 0 or 1 will be interpreted as active.
|
||||
* @padding: reserved for future use and should be zero filled
|
||||
*
|
||||
* Note: This struct is part of ABI v1 and is deprecated.
|
||||
* Use &struct gpio_v2_line_config instead.
|
||||
* Use ABI v2 and &struct gpio_v2_line_config instead.
|
||||
*/
|
||||
struct gpiohandle_config {
|
||||
__u32 flags;
|
||||
@ -441,10 +443,11 @@ struct gpiohandle_config {
|
||||
* struct gpiohandle_data - Information of values on a GPIO handle
|
||||
* @values: when getting the state of lines this contains the current
|
||||
* state of a line, when setting the state of lines these should contain
|
||||
* the desired target state
|
||||
* the desired target state. States are 0 (inactive) or 1 (active).
|
||||
* When setting, anything other than 0 or 1 will be interpreted as active.
|
||||
*
|
||||
* Note: This struct is part of ABI v1 and is deprecated.
|
||||
* Use &struct gpio_v2_line_values instead.
|
||||
* Use ABI v2 and &struct gpio_v2_line_values instead.
|
||||
*/
|
||||
struct gpiohandle_data {
|
||||
__u8 values[GPIOHANDLES_MAX];
|
||||
@ -465,12 +468,11 @@ struct gpiohandle_data {
|
||||
* %GPIOEVENT_REQUEST_RISING_EDGE or %GPIOEVENT_REQUEST_FALLING_EDGE
|
||||
* @consumer_label: a desired consumer label for the selected GPIO line(s)
|
||||
* such as "my-listener"
|
||||
* @fd: if successful this field will contain a valid anonymous file handle
|
||||
* after a %GPIO_GET_LINEEVENT_IOCTL operation, zero or negative value
|
||||
* means error
|
||||
* @fd: after a successful %GPIO_GET_LINEEVENT_IOCTL operation, contains a
|
||||
* valid anonymous file descriptor representing the request
|
||||
*
|
||||
* Note: This struct is part of ABI v1 and is deprecated.
|
||||
* Use &struct gpio_v2_line_request instead.
|
||||
* Use ABI v2 and &struct gpio_v2_line_request instead.
|
||||
*/
|
||||
struct gpioevent_request {
|
||||
__u32 lineoffset;
|
||||
@ -489,10 +491,11 @@ struct gpioevent_request {
|
||||
/**
|
||||
* struct gpioevent_data - The actual event being pushed to userspace
|
||||
* @timestamp: best estimate of time of event occurrence, in nanoseconds
|
||||
* @id: event identifier
|
||||
* @id: event identifier, one of %GPIOEVENT_EVENT_RISING_EDGE or
|
||||
* %GPIOEVENT_EVENT_FALLING_EDGE
|
||||
*
|
||||
* Note: This struct is part of ABI v1 and is deprecated.
|
||||
* Use &struct gpio_v2_line_event instead.
|
||||
* Use ABI v2 and &struct gpio_v2_line_event instead.
|
||||
*/
|
||||
struct gpioevent_data {
|
||||
__u64 timestamp;
|
||||
|
||||
116
lib/libc/include/any-linux-any/linux/gsmmux.h
vendored
116
lib/libc/include/any-linux-any/linux/gsmmux.h
vendored
@ -1,11 +1,47 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/* Copyright (c) 2022/23 Siemens Mobility GmbH */
|
||||
#ifndef _LINUX_GSMMUX_H
|
||||
#define _LINUX_GSMMUX_H
|
||||
|
||||
#include <linux/const.h>
|
||||
#include <linux/if.h>
|
||||
#include <linux/ioctl.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
/*
|
||||
* flags definition for n_gsm
|
||||
*
|
||||
* Used by:
|
||||
* struct gsm_config_ext.flags
|
||||
* struct gsm_dlci_config.flags
|
||||
*/
|
||||
/* Forces a DLCI reset if set. Otherwise, a DLCI reset is only done if
|
||||
* incompatible settings were provided. Always cleared on retrieval.
|
||||
*/
|
||||
#define GSM_FL_RESTART _BITUL(0)
|
||||
|
||||
/**
|
||||
* struct gsm_config - n_gsm basic configuration parameters
|
||||
*
|
||||
* This structure is used in combination with GSMIOC_GETCONF and GSMIOC_SETCONF
|
||||
* to retrieve and set the basic parameters of an n_gsm ldisc.
|
||||
* struct gsm_config_ext can be used to configure extended ldisc parameters.
|
||||
*
|
||||
* All timers are in units of 1/100th of a second.
|
||||
*
|
||||
* @adaption: Convergence layer type
|
||||
* @encapsulation: Framing (0 = basic option, 1 = advanced option)
|
||||
* @initiator: Initiator or responder
|
||||
* @t1: Acknowledgment timer
|
||||
* @t2: Response timer for multiplexer control channel
|
||||
* @t3: Response timer for wake-up procedure
|
||||
* @n2: Maximum number of retransmissions
|
||||
* @mru: Maximum incoming frame payload size
|
||||
* @mtu: Maximum outgoing frame payload size
|
||||
* @k: Window size
|
||||
* @i: Frame type (1 = UIH, 2 = UI)
|
||||
* @unused: Can not be used
|
||||
*/
|
||||
struct gsm_config
|
||||
{
|
||||
unsigned int adaption;
|
||||
@ -19,18 +55,32 @@ struct gsm_config
|
||||
unsigned int mtu;
|
||||
unsigned int k;
|
||||
unsigned int i;
|
||||
unsigned int unused[8]; /* Can not be used */
|
||||
unsigned int unused[8];
|
||||
};
|
||||
|
||||
#define GSMIOC_GETCONF _IOR('G', 0, struct gsm_config)
|
||||
#define GSMIOC_SETCONF _IOW('G', 1, struct gsm_config)
|
||||
|
||||
/**
|
||||
* struct gsm_netconfig - n_gsm network configuration parameters
|
||||
*
|
||||
* This structure is used in combination with GSMIOC_ENABLE_NET and
|
||||
* GSMIOC_DISABLE_NET to enable or disable a network data connection
|
||||
* over a mux virtual tty channel. This is for modems that support
|
||||
* data connections with raw IP frames instead of PPP.
|
||||
*
|
||||
* @adaption: Adaption to use in network mode.
|
||||
* @protocol: Protocol to use - only ETH_P_IP supported.
|
||||
* @unused2: Can not be used.
|
||||
* @if_name: Interface name format string.
|
||||
* @unused: Can not be used.
|
||||
*/
|
||||
struct gsm_netconfig {
|
||||
unsigned int adaption; /* Adaption to use in network mode */
|
||||
unsigned short protocol;/* Protocol to use - only ETH_P_IP supported */
|
||||
unsigned short unused2; /* Can not be used */
|
||||
char if_name[IFNAMSIZ]; /* interface name format string */
|
||||
__u8 unused[28]; /* Can not be used */
|
||||
unsigned int adaption;
|
||||
unsigned short protocol;
|
||||
unsigned short unused2;
|
||||
char if_name[IFNAMSIZ];
|
||||
__u8 unused[28];
|
||||
};
|
||||
|
||||
#define GSMIOC_ENABLE_NET _IOW('G', 2, struct gsm_netconfig)
|
||||
@ -39,14 +89,60 @@ struct gsm_netconfig {
|
||||
/* get the base tty number for a configured gsmmux tty */
|
||||
#define GSMIOC_GETFIRST _IOR('G', 4, __u32)
|
||||
|
||||
struct gsm_config_ext {
|
||||
__u32 keep_alive; /* Control channel keep-alive in 1/100th of a
|
||||
* second (0 to disable)
|
||||
/**
|
||||
* struct gsm_config_ext - n_gsm extended configuration parameters
|
||||
*
|
||||
* This structure is used in combination with GSMIOC_GETCONF_EXT and
|
||||
* GSMIOC_SETCONF_EXT to retrieve and set the extended parameters of an
|
||||
* n_gsm ldisc.
|
||||
*
|
||||
* All timers are in units of 1/100th of a second.
|
||||
*
|
||||
* @keep_alive: Control channel keep-alive in 1/100th of a second (0 to disable).
|
||||
* @wait_config: Wait for DLCI config before opening virtual link?
|
||||
* @flags: Mux specific flags.
|
||||
* @reserved: For future use, must be initialized to zero.
|
||||
*/
|
||||
__u32 reserved[7]; /* For future use, must be initialized to zero */
|
||||
struct gsm_config_ext {
|
||||
__u32 keep_alive;
|
||||
__u32 wait_config;
|
||||
__u32 flags;
|
||||
__u32 reserved[5];
|
||||
};
|
||||
|
||||
#define GSMIOC_GETCONF_EXT _IOR('G', 5, struct gsm_config_ext)
|
||||
#define GSMIOC_SETCONF_EXT _IOW('G', 6, struct gsm_config_ext)
|
||||
|
||||
/**
|
||||
* struct gsm_dlci_config - n_gsm channel configuration parameters
|
||||
*
|
||||
* This structure is used in combination with GSMIOC_GETCONF_DLCI and
|
||||
* GSMIOC_SETCONF_DLCI to retrieve and set the channel specific parameters
|
||||
* of an n_gsm ldisc.
|
||||
*
|
||||
* Set the channel accordingly before calling GSMIOC_GETCONF_DLCI.
|
||||
*
|
||||
* @channel: DLCI (0 for the associated DLCI).
|
||||
* @adaption: Convergence layer type.
|
||||
* @mtu: Maximum transfer unit.
|
||||
* @priority: Priority (0 for default value).
|
||||
* @i: Frame type (1 = UIH, 2 = UI).
|
||||
* @k: Window size (0 for default value).
|
||||
* @flags: DLCI specific flags.
|
||||
* @reserved: For future use, must be initialized to zero.
|
||||
*/
|
||||
struct gsm_dlci_config {
|
||||
__u32 channel;
|
||||
__u32 adaption;
|
||||
__u32 mtu;
|
||||
__u32 priority;
|
||||
__u32 i;
|
||||
__u32 k;
|
||||
__u32 flags;
|
||||
__u32 reserved[7];
|
||||
};
|
||||
|
||||
#define GSMIOC_GETCONF_DLCI _IOWR('G', 7, struct gsm_dlci_config)
|
||||
#define GSMIOC_SETCONF_DLCI _IOW('G', 8, struct gsm_dlci_config)
|
||||
|
||||
#endif
|
||||
5
lib/libc/include/any-linux-any/linux/gtp.h
vendored
5
lib/libc/include/any-linux-any/linux/gtp.h
vendored
@ -31,8 +31,11 @@ enum gtp_attrs {
|
||||
GTPA_I_TEI, /* for GTPv1 only */
|
||||
GTPA_O_TEI, /* for GTPv1 only */
|
||||
GTPA_PAD,
|
||||
GTPA_PEER_ADDR6,
|
||||
GTPA_MS_ADDR6,
|
||||
GTPA_FAMILY,
|
||||
__GTPA_MAX,
|
||||
};
|
||||
#define GTPA_MAX (__GTPA_MAX + 1)
|
||||
#define GTPA_MAX (__GTPA_MAX - 1)
|
||||
|
||||
#endif /* _LINUX_GTP_H_ */
|
||||
74
lib/libc/include/any-linux-any/linux/handshake.h
vendored
Normal file
74
lib/libc/include/any-linux-any/linux/handshake.h
vendored
Normal file
@ -0,0 +1,74 @@
|
||||
/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
|
||||
/* Do not edit directly, auto-generated from: */
|
||||
/* Documentation/netlink/specs/handshake.yaml */
|
||||
/* YNL-GEN uapi header */
|
||||
|
||||
#ifndef _LINUX_HANDSHAKE_H
|
||||
#define _LINUX_HANDSHAKE_H
|
||||
|
||||
#define HANDSHAKE_FAMILY_NAME "handshake"
|
||||
#define HANDSHAKE_FAMILY_VERSION 1
|
||||
|
||||
enum handshake_handler_class {
|
||||
HANDSHAKE_HANDLER_CLASS_NONE,
|
||||
HANDSHAKE_HANDLER_CLASS_TLSHD,
|
||||
HANDSHAKE_HANDLER_CLASS_MAX,
|
||||
};
|
||||
|
||||
enum handshake_msg_type {
|
||||
HANDSHAKE_MSG_TYPE_UNSPEC,
|
||||
HANDSHAKE_MSG_TYPE_CLIENTHELLO,
|
||||
HANDSHAKE_MSG_TYPE_SERVERHELLO,
|
||||
};
|
||||
|
||||
enum handshake_auth {
|
||||
HANDSHAKE_AUTH_UNSPEC,
|
||||
HANDSHAKE_AUTH_UNAUTH,
|
||||
HANDSHAKE_AUTH_PSK,
|
||||
HANDSHAKE_AUTH_X509,
|
||||
};
|
||||
|
||||
enum {
|
||||
HANDSHAKE_A_X509_CERT = 1,
|
||||
HANDSHAKE_A_X509_PRIVKEY,
|
||||
|
||||
__HANDSHAKE_A_X509_MAX,
|
||||
HANDSHAKE_A_X509_MAX = (__HANDSHAKE_A_X509_MAX - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
HANDSHAKE_A_ACCEPT_SOCKFD = 1,
|
||||
HANDSHAKE_A_ACCEPT_HANDLER_CLASS,
|
||||
HANDSHAKE_A_ACCEPT_MESSAGE_TYPE,
|
||||
HANDSHAKE_A_ACCEPT_TIMEOUT,
|
||||
HANDSHAKE_A_ACCEPT_AUTH_MODE,
|
||||
HANDSHAKE_A_ACCEPT_PEER_IDENTITY,
|
||||
HANDSHAKE_A_ACCEPT_CERTIFICATE,
|
||||
HANDSHAKE_A_ACCEPT_PEERNAME,
|
||||
|
||||
__HANDSHAKE_A_ACCEPT_MAX,
|
||||
HANDSHAKE_A_ACCEPT_MAX = (__HANDSHAKE_A_ACCEPT_MAX - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
HANDSHAKE_A_DONE_STATUS = 1,
|
||||
HANDSHAKE_A_DONE_SOCKFD,
|
||||
HANDSHAKE_A_DONE_REMOTE_AUTH,
|
||||
|
||||
__HANDSHAKE_A_DONE_MAX,
|
||||
HANDSHAKE_A_DONE_MAX = (__HANDSHAKE_A_DONE_MAX - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
HANDSHAKE_CMD_READY = 1,
|
||||
HANDSHAKE_CMD_ACCEPT,
|
||||
HANDSHAKE_CMD_DONE,
|
||||
|
||||
__HANDSHAKE_CMD_MAX,
|
||||
HANDSHAKE_CMD_MAX = (__HANDSHAKE_CMD_MAX - 1)
|
||||
};
|
||||
|
||||
#define HANDSHAKE_MCGRP_NONE "none"
|
||||
#define HANDSHAKE_MCGRP_TLSHD "tlshd"
|
||||
|
||||
#endif /* _LINUX_HANDSHAKE_H */
|
||||
@ -35,6 +35,9 @@ enum hash_algo {
|
||||
HASH_ALGO_SM3_256,
|
||||
HASH_ALGO_STREEBOG_256,
|
||||
HASH_ALGO_STREEBOG_512,
|
||||
HASH_ALGO_SHA3_256,
|
||||
HASH_ALGO_SHA3_384,
|
||||
HASH_ALGO_SHA3_512,
|
||||
HASH_ALGO__LAST
|
||||
};
|
||||
|
||||
|
||||
@ -22,14 +22,4 @@ enum {
|
||||
HW_BREAKPOINT_INVALID = HW_BREAKPOINT_RW | HW_BREAKPOINT_X,
|
||||
};
|
||||
|
||||
enum bp_type_idx {
|
||||
TYPE_INST = 0,
|
||||
#ifdef CONFIG_HAVE_MIXED_BREAKPOINTS_REGS
|
||||
TYPE_DATA = 0,
|
||||
#else
|
||||
TYPE_DATA = 1,
|
||||
#endif
|
||||
TYPE_MAX
|
||||
};
|
||||
|
||||
#endif /* _LINUX_HW_BREAKPOINT_H */
|
||||
@ -112,6 +112,7 @@ struct icmp6hdr {
|
||||
#define ICMPV6_MOBILE_PREFIX_ADV 147
|
||||
|
||||
#define ICMPV6_MRDISC_ADV 151
|
||||
#define ICMPV6_MRDISC_SOL 152
|
||||
|
||||
#define ICMPV6_MSG_MAX 255
|
||||
|
||||
|
||||
47
lib/libc/include/any-linux-any/linux/idxd.h
vendored
47
lib/libc/include/any-linux-any/linux/idxd.h
vendored
@ -26,6 +26,8 @@ enum idxd_scmd_stat {
|
||||
IDXD_SCMD_WQ_NO_PRIV = 0x800f0000,
|
||||
IDXD_SCMD_WQ_IRQ_ERR = 0x80100000,
|
||||
IDXD_SCMD_WQ_USER_NO_IOMMU = 0x80110000,
|
||||
IDXD_SCMD_DEV_EVL_ERR = 0x80120000,
|
||||
IDXD_SCMD_WQ_NO_DRV_NAME = 0x80200000,
|
||||
};
|
||||
|
||||
#define IDXD_SCMD_SOFTERR_MASK 0x80000000
|
||||
@ -68,12 +70,14 @@ enum dsa_opcode {
|
||||
DSA_OPCODE_CR_DELTA,
|
||||
DSA_OPCODE_AP_DELTA,
|
||||
DSA_OPCODE_DUALCAST,
|
||||
DSA_OPCODE_TRANSL_FETCH,
|
||||
DSA_OPCODE_CRCGEN = 0x10,
|
||||
DSA_OPCODE_COPY_CRC,
|
||||
DSA_OPCODE_DIF_CHECK,
|
||||
DSA_OPCODE_DIF_INS,
|
||||
DSA_OPCODE_DIF_STRP,
|
||||
DSA_OPCODE_DIF_UPDT,
|
||||
DSA_OPCODE_DIX_GEN = 0x17,
|
||||
DSA_OPCODE_CFLUSH = 0x20,
|
||||
};
|
||||
|
||||
@ -128,6 +132,8 @@ enum dsa_completion_status {
|
||||
DSA_COMP_HW_ERR1,
|
||||
DSA_COMP_HW_ERR_DRB,
|
||||
DSA_COMP_TRANSLATION_FAIL,
|
||||
DSA_COMP_DRAIN_EVL = 0x26,
|
||||
DSA_COMP_BATCH_EVL_ERR,
|
||||
};
|
||||
|
||||
enum iax_completion_status {
|
||||
@ -163,6 +169,7 @@ enum iax_completion_status {
|
||||
|
||||
#define DSA_COMP_STATUS_MASK 0x7f
|
||||
#define DSA_COMP_STATUS_WRITE 0x80
|
||||
#define DSA_COMP_STATUS(status) ((status) & DSA_COMP_STATUS_MASK)
|
||||
|
||||
struct dsa_hw_desc {
|
||||
uint32_t pasid:20;
|
||||
@ -176,6 +183,8 @@ struct dsa_hw_desc {
|
||||
uint64_t rdback_addr;
|
||||
uint64_t pattern;
|
||||
uint64_t desc_list_addr;
|
||||
uint64_t pattern_lower;
|
||||
uint64_t transl_fetch_addr;
|
||||
};
|
||||
union {
|
||||
uint64_t dst_addr;
|
||||
@ -186,6 +195,7 @@ struct dsa_hw_desc {
|
||||
union {
|
||||
uint32_t xfer_size;
|
||||
uint32_t desc_count;
|
||||
uint32_t region_size;
|
||||
};
|
||||
uint16_t int_handle;
|
||||
uint16_t rsvd1;
|
||||
@ -240,6 +250,26 @@ struct dsa_hw_desc {
|
||||
uint16_t dest_app_tag_seed;
|
||||
};
|
||||
|
||||
/* Fill */
|
||||
uint64_t pattern_upper;
|
||||
|
||||
/* Translation fetch */
|
||||
struct {
|
||||
uint64_t transl_fetch_res;
|
||||
uint32_t region_stride;
|
||||
};
|
||||
|
||||
/* DIX generate */
|
||||
struct {
|
||||
uint8_t dix_gen_res;
|
||||
uint8_t dest_dif_flags;
|
||||
uint8_t dif_flags;
|
||||
uint8_t dix_gen_res2[13];
|
||||
uint32_t ref_tag_seed;
|
||||
uint16_t app_tag_mask;
|
||||
uint16_t app_tag_seed;
|
||||
};
|
||||
|
||||
uint8_t op_specific[24];
|
||||
};
|
||||
} __attribute__((packed));
|
||||
@ -280,8 +310,12 @@ struct dsa_completion_record {
|
||||
uint8_t result;
|
||||
uint8_t dif_status;
|
||||
};
|
||||
uint16_t rsvd;
|
||||
uint8_t fault_info;
|
||||
uint8_t rsvd;
|
||||
union {
|
||||
uint32_t bytes_completed;
|
||||
uint32_t descs_completed;
|
||||
};
|
||||
uint64_t fault_addr;
|
||||
union {
|
||||
/* common record */
|
||||
@ -318,6 +352,14 @@ struct dsa_completion_record {
|
||||
uint16_t dif_upd_dest_app_tag;
|
||||
};
|
||||
|
||||
/* DIX generate */
|
||||
struct {
|
||||
uint64_t dix_gen_res;
|
||||
uint32_t dix_ref_tag;
|
||||
uint16_t dix_app_tag_mask;
|
||||
uint16_t dix_app_tag;
|
||||
};
|
||||
|
||||
uint8_t op_specific[16];
|
||||
};
|
||||
} __attribute__((packed));
|
||||
@ -329,7 +371,8 @@ struct dsa_raw_completion_record {
|
||||
struct iax_completion_record {
|
||||
__volatile__ uint8_t status;
|
||||
uint8_t error_code;
|
||||
uint16_t rsvd;
|
||||
uint8_t fault_info;
|
||||
uint8_t rsvd;
|
||||
uint32_t bytes_completed;
|
||||
uint64_t fault_addr;
|
||||
uint32_t invalid_flags;
|
||||
|
||||
30
lib/libc/include/any-linux-any/linux/if_bridge.h
vendored
30
lib/libc/include/any-linux-any/linux/if_bridge.h
vendored
@ -525,6 +525,7 @@ enum {
|
||||
BRIDGE_VLANDB_ENTRY_MCAST_ROUTER,
|
||||
BRIDGE_VLANDB_ENTRY_MCAST_N_GROUPS,
|
||||
BRIDGE_VLANDB_ENTRY_MCAST_MAX_GROUPS,
|
||||
BRIDGE_VLANDB_ENTRY_NEIGH_SUPPRESS,
|
||||
__BRIDGE_VLANDB_ENTRY_MAX,
|
||||
};
|
||||
#define BRIDGE_VLANDB_ENTRY_MAX (__BRIDGE_VLANDB_ENTRY_MAX - 1)
|
||||
@ -633,6 +634,11 @@ enum {
|
||||
MDBA_MDB_EATTR_GROUP_MODE,
|
||||
MDBA_MDB_EATTR_SOURCE,
|
||||
MDBA_MDB_EATTR_RTPROT,
|
||||
MDBA_MDB_EATTR_DST,
|
||||
MDBA_MDB_EATTR_DST_PORT,
|
||||
MDBA_MDB_EATTR_VNI,
|
||||
MDBA_MDB_EATTR_IFINDEX,
|
||||
MDBA_MDB_EATTR_SRC_VNI,
|
||||
__MDBA_MDB_EATTR_MAX
|
||||
};
|
||||
#define MDBA_MDB_EATTR_MAX (__MDBA_MDB_EATTR_MAX - 1)
|
||||
@ -717,6 +723,24 @@ enum {
|
||||
};
|
||||
#define MDBA_SET_ENTRY_MAX (__MDBA_SET_ENTRY_MAX - 1)
|
||||
|
||||
/* [MDBA_GET_ENTRY] = {
|
||||
* struct br_mdb_entry
|
||||
* [MDBA_GET_ENTRY_ATTRS] = {
|
||||
* [MDBE_ATTR_SOURCE]
|
||||
* struct in_addr / struct in6_addr
|
||||
* [MDBE_ATTR_SRC_VNI]
|
||||
* u32
|
||||
* }
|
||||
* }
|
||||
*/
|
||||
enum {
|
||||
MDBA_GET_ENTRY_UNSPEC,
|
||||
MDBA_GET_ENTRY,
|
||||
MDBA_GET_ENTRY_ATTRS,
|
||||
__MDBA_GET_ENTRY_MAX,
|
||||
};
|
||||
#define MDBA_GET_ENTRY_MAX (__MDBA_GET_ENTRY_MAX - 1)
|
||||
|
||||
/* [MDBA_SET_ENTRY_ATTRS] = {
|
||||
* [MDBE_ATTR_xxx]
|
||||
* ...
|
||||
@ -728,6 +752,12 @@ enum {
|
||||
MDBE_ATTR_SRC_LIST,
|
||||
MDBE_ATTR_GROUP_MODE,
|
||||
MDBE_ATTR_RTPROT,
|
||||
MDBE_ATTR_DST,
|
||||
MDBE_ATTR_DST_PORT,
|
||||
MDBE_ATTR_VNI,
|
||||
MDBE_ATTR_IFINDEX,
|
||||
MDBE_ATTR_SRC_VNI,
|
||||
MDBE_ATTR_STATE_MASK,
|
||||
__MDBE_ATTR_MAX,
|
||||
};
|
||||
#define MDBE_ATTR_MAX (__MDBE_ATTR_MAX - 1)
|
||||
|
||||
569
lib/libc/include/any-linux-any/linux/if_link.h
vendored
569
lib/libc/include/any-linux-any/linux/if_link.h
vendored
@ -376,7 +376,7 @@ enum {
|
||||
|
||||
IFLA_GSO_IPV4_MAX_SIZE,
|
||||
IFLA_GRO_IPV4_MAX_SIZE,
|
||||
|
||||
IFLA_DPLL_PIN,
|
||||
__IFLA_MAX
|
||||
};
|
||||
|
||||
@ -459,6 +459,286 @@ enum in6_addr_gen_mode {
|
||||
|
||||
/* Bridge section */
|
||||
|
||||
/**
|
||||
* DOC: Bridge enum definition
|
||||
*
|
||||
* Please *note* that the timer values in the following section are expected
|
||||
* in clock_t format, which is seconds multiplied by USER_HZ (generally
|
||||
* defined as 100).
|
||||
*
|
||||
* @IFLA_BR_FORWARD_DELAY
|
||||
* The bridge forwarding delay is the time spent in LISTENING state
|
||||
* (before moving to LEARNING) and in LEARNING state (before moving
|
||||
* to FORWARDING). Only relevant if STP is enabled.
|
||||
*
|
||||
* The valid values are between (2 * USER_HZ) and (30 * USER_HZ).
|
||||
* The default value is (15 * USER_HZ).
|
||||
*
|
||||
* @IFLA_BR_HELLO_TIME
|
||||
* The time between hello packets sent by the bridge, when it is a root
|
||||
* bridge or a designated bridge. Only relevant if STP is enabled.
|
||||
*
|
||||
* The valid values are between (1 * USER_HZ) and (10 * USER_HZ).
|
||||
* The default value is (2 * USER_HZ).
|
||||
*
|
||||
* @IFLA_BR_MAX_AGE
|
||||
* The hello packet timeout is the time until another bridge in the
|
||||
* spanning tree is assumed to be dead, after reception of its last hello
|
||||
* message. Only relevant if STP is enabled.
|
||||
*
|
||||
* The valid values are between (6 * USER_HZ) and (40 * USER_HZ).
|
||||
* The default value is (20 * USER_HZ).
|
||||
*
|
||||
* @IFLA_BR_AGEING_TIME
|
||||
* Configure the bridge's FDB entries aging time. It is the time a MAC
|
||||
* address will be kept in the FDB after a packet has been received from
|
||||
* that address. After this time has passed, entries are cleaned up.
|
||||
* Allow values outside the 802.1 standard specification for special cases:
|
||||
*
|
||||
* * 0 - entry never ages (all permanent)
|
||||
* * 1 - entry disappears (no persistence)
|
||||
*
|
||||
* The default value is (300 * USER_HZ).
|
||||
*
|
||||
* @IFLA_BR_STP_STATE
|
||||
* Turn spanning tree protocol on (*IFLA_BR_STP_STATE* > 0) or off
|
||||
* (*IFLA_BR_STP_STATE* == 0) for this bridge.
|
||||
*
|
||||
* The default value is 0 (disabled).
|
||||
*
|
||||
* @IFLA_BR_PRIORITY
|
||||
* Set this bridge's spanning tree priority, used during STP root bridge
|
||||
* election.
|
||||
*
|
||||
* The valid values are between 0 and 65535.
|
||||
*
|
||||
* @IFLA_BR_VLAN_FILTERING
|
||||
* Turn VLAN filtering on (*IFLA_BR_VLAN_FILTERING* > 0) or off
|
||||
* (*IFLA_BR_VLAN_FILTERING* == 0). When disabled, the bridge will not
|
||||
* consider the VLAN tag when handling packets.
|
||||
*
|
||||
* The default value is 0 (disabled).
|
||||
*
|
||||
* @IFLA_BR_VLAN_PROTOCOL
|
||||
* Set the protocol used for VLAN filtering.
|
||||
*
|
||||
* The valid values are 0x8100(802.1Q) or 0x88A8(802.1AD). The default value
|
||||
* is 0x8100(802.1Q).
|
||||
*
|
||||
* @IFLA_BR_GROUP_FWD_MASK
|
||||
* The group forwarding mask. This is the bitmask that is applied to
|
||||
* decide whether to forward incoming frames destined to link-local
|
||||
* addresses (of the form 01:80:C2:00:00:0X).
|
||||
*
|
||||
* The default value is 0, which means the bridge does not forward any
|
||||
* link-local frames coming on this port.
|
||||
*
|
||||
* @IFLA_BR_ROOT_ID
|
||||
* The bridge root id, read only.
|
||||
*
|
||||
* @IFLA_BR_BRIDGE_ID
|
||||
* The bridge id, read only.
|
||||
*
|
||||
* @IFLA_BR_ROOT_PORT
|
||||
* The bridge root port, read only.
|
||||
*
|
||||
* @IFLA_BR_ROOT_PATH_COST
|
||||
* The bridge root path cost, read only.
|
||||
*
|
||||
* @IFLA_BR_TOPOLOGY_CHANGE
|
||||
* The bridge topology change, read only.
|
||||
*
|
||||
* @IFLA_BR_TOPOLOGY_CHANGE_DETECTED
|
||||
* The bridge topology change detected, read only.
|
||||
*
|
||||
* @IFLA_BR_HELLO_TIMER
|
||||
* The bridge hello timer, read only.
|
||||
*
|
||||
* @IFLA_BR_TCN_TIMER
|
||||
* The bridge tcn timer, read only.
|
||||
*
|
||||
* @IFLA_BR_TOPOLOGY_CHANGE_TIMER
|
||||
* The bridge topology change timer, read only.
|
||||
*
|
||||
* @IFLA_BR_GC_TIMER
|
||||
* The bridge gc timer, read only.
|
||||
*
|
||||
* @IFLA_BR_GROUP_ADDR
|
||||
* Set the MAC address of the multicast group this bridge uses for STP.
|
||||
* The address must be a link-local address in standard Ethernet MAC address
|
||||
* format. It is an address of the form 01:80:C2:00:00:0X, with X in [0, 4..f].
|
||||
*
|
||||
* The default value is 0.
|
||||
*
|
||||
* @IFLA_BR_FDB_FLUSH
|
||||
* Flush bridge's fdb dynamic entries.
|
||||
*
|
||||
* @IFLA_BR_MCAST_ROUTER
|
||||
* Set bridge's multicast router if IGMP snooping is enabled.
|
||||
* The valid values are:
|
||||
*
|
||||
* * 0 - disabled.
|
||||
* * 1 - automatic (queried).
|
||||
* * 2 - permanently enabled.
|
||||
*
|
||||
* The default value is 1.
|
||||
*
|
||||
* @IFLA_BR_MCAST_SNOOPING
|
||||
* Turn multicast snooping on (*IFLA_BR_MCAST_SNOOPING* > 0) or off
|
||||
* (*IFLA_BR_MCAST_SNOOPING* == 0).
|
||||
*
|
||||
* The default value is 1.
|
||||
*
|
||||
* @IFLA_BR_MCAST_QUERY_USE_IFADDR
|
||||
* If enabled use the bridge's own IP address as source address for IGMP
|
||||
* queries (*IFLA_BR_MCAST_QUERY_USE_IFADDR* > 0) or the default of 0.0.0.0
|
||||
* (*IFLA_BR_MCAST_QUERY_USE_IFADDR* == 0).
|
||||
*
|
||||
* The default value is 0 (disabled).
|
||||
*
|
||||
* @IFLA_BR_MCAST_QUERIER
|
||||
* Enable (*IFLA_BR_MULTICAST_QUERIER* > 0) or disable
|
||||
* (*IFLA_BR_MULTICAST_QUERIER* == 0) IGMP querier, ie sending of multicast
|
||||
* queries by the bridge.
|
||||
*
|
||||
* The default value is 0 (disabled).
|
||||
*
|
||||
* @IFLA_BR_MCAST_HASH_ELASTICITY
|
||||
* Set multicast database hash elasticity, It is the maximum chain length in
|
||||
* the multicast hash table. This attribute is *deprecated* and the value
|
||||
* is always 16.
|
||||
*
|
||||
* @IFLA_BR_MCAST_HASH_MAX
|
||||
* Set maximum size of the multicast hash table
|
||||
*
|
||||
* The default value is 4096, the value must be a power of 2.
|
||||
*
|
||||
* @IFLA_BR_MCAST_LAST_MEMBER_CNT
|
||||
* The Last Member Query Count is the number of Group-Specific Queries
|
||||
* sent before the router assumes there are no local members. The Last
|
||||
* Member Query Count is also the number of Group-and-Source-Specific
|
||||
* Queries sent before the router assumes there are no listeners for a
|
||||
* particular source.
|
||||
*
|
||||
* The default value is 2.
|
||||
*
|
||||
* @IFLA_BR_MCAST_STARTUP_QUERY_CNT
|
||||
* The Startup Query Count is the number of Queries sent out on startup,
|
||||
* separated by the Startup Query Interval.
|
||||
*
|
||||
* The default value is 2.
|
||||
*
|
||||
* @IFLA_BR_MCAST_LAST_MEMBER_INTVL
|
||||
* The Last Member Query Interval is the Max Response Time inserted into
|
||||
* Group-Specific Queries sent in response to Leave Group messages, and
|
||||
* is also the amount of time between Group-Specific Query messages.
|
||||
*
|
||||
* The default value is (1 * USER_HZ).
|
||||
*
|
||||
* @IFLA_BR_MCAST_MEMBERSHIP_INTVL
|
||||
* The interval after which the bridge will leave a group, if no membership
|
||||
* reports for this group are received.
|
||||
*
|
||||
* The default value is (260 * USER_HZ).
|
||||
*
|
||||
* @IFLA_BR_MCAST_QUERIER_INTVL
|
||||
* The interval between queries sent by other routers. if no queries are
|
||||
* seen after this delay has passed, the bridge will start to send its own
|
||||
* queries (as if *IFLA_BR_MCAST_QUERIER_INTVL* was enabled).
|
||||
*
|
||||
* The default value is (255 * USER_HZ).
|
||||
*
|
||||
* @IFLA_BR_MCAST_QUERY_INTVL
|
||||
* The Query Interval is the interval between General Queries sent by
|
||||
* the Querier.
|
||||
*
|
||||
* The default value is (125 * USER_HZ). The minimum value is (1 * USER_HZ).
|
||||
*
|
||||
* @IFLA_BR_MCAST_QUERY_RESPONSE_INTVL
|
||||
* The Max Response Time used to calculate the Max Resp Code inserted
|
||||
* into the periodic General Queries.
|
||||
*
|
||||
* The default value is (10 * USER_HZ).
|
||||
*
|
||||
* @IFLA_BR_MCAST_STARTUP_QUERY_INTVL
|
||||
* The interval between queries in the startup phase.
|
||||
*
|
||||
* The default value is (125 * USER_HZ) / 4. The minimum value is (1 * USER_HZ).
|
||||
*
|
||||
* @IFLA_BR_NF_CALL_IPTABLES
|
||||
* Enable (*NF_CALL_IPTABLES* > 0) or disable (*NF_CALL_IPTABLES* == 0)
|
||||
* iptables hooks on the bridge.
|
||||
*
|
||||
* The default value is 0 (disabled).
|
||||
*
|
||||
* @IFLA_BR_NF_CALL_IP6TABLES
|
||||
* Enable (*NF_CALL_IP6TABLES* > 0) or disable (*NF_CALL_IP6TABLES* == 0)
|
||||
* ip6tables hooks on the bridge.
|
||||
*
|
||||
* The default value is 0 (disabled).
|
||||
*
|
||||
* @IFLA_BR_NF_CALL_ARPTABLES
|
||||
* Enable (*NF_CALL_ARPTABLES* > 0) or disable (*NF_CALL_ARPTABLES* == 0)
|
||||
* arptables hooks on the bridge.
|
||||
*
|
||||
* The default value is 0 (disabled).
|
||||
*
|
||||
* @IFLA_BR_VLAN_DEFAULT_PVID
|
||||
* VLAN ID applied to untagged and priority-tagged incoming packets.
|
||||
*
|
||||
* The default value is 1. Setting to the special value 0 makes all ports of
|
||||
* this bridge not have a PVID by default, which means that they will
|
||||
* not accept VLAN-untagged traffic.
|
||||
*
|
||||
* @IFLA_BR_PAD
|
||||
* Bridge attribute padding type for netlink message.
|
||||
*
|
||||
* @IFLA_BR_VLAN_STATS_ENABLED
|
||||
* Enable (*IFLA_BR_VLAN_STATS_ENABLED* == 1) or disable
|
||||
* (*IFLA_BR_VLAN_STATS_ENABLED* == 0) per-VLAN stats accounting.
|
||||
*
|
||||
* The default value is 0 (disabled).
|
||||
*
|
||||
* @IFLA_BR_MCAST_STATS_ENABLED
|
||||
* Enable (*IFLA_BR_MCAST_STATS_ENABLED* > 0) or disable
|
||||
* (*IFLA_BR_MCAST_STATS_ENABLED* == 0) multicast (IGMP/MLD) stats
|
||||
* accounting.
|
||||
*
|
||||
* The default value is 0 (disabled).
|
||||
*
|
||||
* @IFLA_BR_MCAST_IGMP_VERSION
|
||||
* Set the IGMP version.
|
||||
*
|
||||
* The valid values are 2 and 3. The default value is 2.
|
||||
*
|
||||
* @IFLA_BR_MCAST_MLD_VERSION
|
||||
* Set the MLD version.
|
||||
*
|
||||
* The valid values are 1 and 2. The default value is 1.
|
||||
*
|
||||
* @IFLA_BR_VLAN_STATS_PER_PORT
|
||||
* Enable (*IFLA_BR_VLAN_STATS_PER_PORT* == 1) or disable
|
||||
* (*IFLA_BR_VLAN_STATS_PER_PORT* == 0) per-VLAN per-port stats accounting.
|
||||
* Can be changed only when there are no port VLANs configured.
|
||||
*
|
||||
* The default value is 0 (disabled).
|
||||
*
|
||||
* @IFLA_BR_MULTI_BOOLOPT
|
||||
* The multi_boolopt is used to control new boolean options to avoid adding
|
||||
* new netlink attributes. You can look at ``enum br_boolopt_id`` for those
|
||||
* options.
|
||||
*
|
||||
* @IFLA_BR_MCAST_QUERIER_STATE
|
||||
* Bridge mcast querier states, read only.
|
||||
*
|
||||
* @IFLA_BR_FDB_N_LEARNED
|
||||
* The number of dynamically learned FDB entries for the current bridge,
|
||||
* read only.
|
||||
*
|
||||
* @IFLA_BR_FDB_MAX_LEARNED
|
||||
* Set the number of max dynamically learned FDB entries for the current
|
||||
* bridge.
|
||||
*/
|
||||
enum {
|
||||
IFLA_BR_UNSPEC,
|
||||
IFLA_BR_FORWARD_DELAY,
|
||||
@ -508,6 +788,8 @@ enum {
|
||||
IFLA_BR_VLAN_STATS_PER_PORT,
|
||||
IFLA_BR_MULTI_BOOLOPT,
|
||||
IFLA_BR_MCAST_QUERIER_STATE,
|
||||
IFLA_BR_FDB_N_LEARNED,
|
||||
IFLA_BR_FDB_MAX_LEARNED,
|
||||
__IFLA_BR_MAX,
|
||||
};
|
||||
|
||||
@ -518,11 +800,252 @@ struct ifla_bridge_id {
|
||||
__u8 addr[6]; /* ETH_ALEN */
|
||||
};
|
||||
|
||||
/**
|
||||
* DOC: Bridge mode enum definition
|
||||
*
|
||||
* @BRIDGE_MODE_HAIRPIN
|
||||
* Controls whether traffic may be sent back out of the port on which it
|
||||
* was received. This option is also called reflective relay mode, and is
|
||||
* used to support basic VEPA (Virtual Ethernet Port Aggregator)
|
||||
* capabilities. By default, this flag is turned off and the bridge will
|
||||
* not forward traffic back out of the receiving port.
|
||||
*/
|
||||
enum {
|
||||
BRIDGE_MODE_UNSPEC,
|
||||
BRIDGE_MODE_HAIRPIN,
|
||||
};
|
||||
|
||||
/**
|
||||
* DOC: Bridge port enum definition
|
||||
*
|
||||
* @IFLA_BRPORT_STATE
|
||||
* The operation state of the port. Here are the valid values.
|
||||
*
|
||||
* * 0 - port is in STP *DISABLED* state. Make this port completely
|
||||
* inactive for STP. This is also called BPDU filter and could be used
|
||||
* to disable STP on an untrusted port, like a leaf virtual device.
|
||||
* The traffic forwarding is also stopped on this port.
|
||||
* * 1 - port is in STP *LISTENING* state. Only valid if STP is enabled
|
||||
* on the bridge. In this state the port listens for STP BPDUs and
|
||||
* drops all other traffic frames.
|
||||
* * 2 - port is in STP *LEARNING* state. Only valid if STP is enabled on
|
||||
* the bridge. In this state the port will accept traffic only for the
|
||||
* purpose of updating MAC address tables.
|
||||
* * 3 - port is in STP *FORWARDING* state. Port is fully active.
|
||||
* * 4 - port is in STP *BLOCKING* state. Only valid if STP is enabled on
|
||||
* the bridge. This state is used during the STP election process.
|
||||
* In this state, port will only process STP BPDUs.
|
||||
*
|
||||
* @IFLA_BRPORT_PRIORITY
|
||||
* The STP port priority. The valid values are between 0 and 255.
|
||||
*
|
||||
* @IFLA_BRPORT_COST
|
||||
* The STP path cost of the port. The valid values are between 1 and 65535.
|
||||
*
|
||||
* @IFLA_BRPORT_MODE
|
||||
* Set the bridge port mode. See *BRIDGE_MODE_HAIRPIN* for more details.
|
||||
*
|
||||
* @IFLA_BRPORT_GUARD
|
||||
* Controls whether STP BPDUs will be processed by the bridge port. By
|
||||
* default, the flag is turned off to allow BPDU processing. Turning this
|
||||
* flag on will disable the bridge port if a STP BPDU packet is received.
|
||||
*
|
||||
* If the bridge has Spanning Tree enabled, hostile devices on the network
|
||||
* may send BPDU on a port and cause network failure. Setting *guard on*
|
||||
* will detect and stop this by disabling the port. The port will be
|
||||
* restarted if the link is brought down, or removed and reattached.
|
||||
*
|
||||
* @IFLA_BRPORT_PROTECT
|
||||
* Controls whether a given port is allowed to become a root port or not.
|
||||
* Only used when STP is enabled on the bridge. By default the flag is off.
|
||||
*
|
||||
* This feature is also called root port guard. If BPDU is received from a
|
||||
* leaf (edge) port, it should not be elected as root port. This could
|
||||
* be used if using STP on a bridge and the downstream bridges are not fully
|
||||
* trusted; this prevents a hostile guest from rerouting traffic.
|
||||
*
|
||||
* @IFLA_BRPORT_FAST_LEAVE
|
||||
* This flag allows the bridge to immediately stop multicast traffic
|
||||
* forwarding on a port that receives an IGMP Leave message. It is only used
|
||||
* when IGMP snooping is enabled on the bridge. By default the flag is off.
|
||||
*
|
||||
* @IFLA_BRPORT_LEARNING
|
||||
* Controls whether a given port will learn *source* MAC addresses from
|
||||
* received traffic or not. Also controls whether dynamic FDB entries
|
||||
* (which can also be added by software) will be refreshed by incoming
|
||||
* traffic. By default this flag is on.
|
||||
*
|
||||
* @IFLA_BRPORT_UNICAST_FLOOD
|
||||
* Controls whether unicast traffic for which there is no FDB entry will
|
||||
* be flooded towards this port. By default this flag is on.
|
||||
*
|
||||
* @IFLA_BRPORT_PROXYARP
|
||||
* Enable proxy ARP on this port.
|
||||
*
|
||||
* @IFLA_BRPORT_LEARNING_SYNC
|
||||
* Controls whether a given port will sync MAC addresses learned on device
|
||||
* port to bridge FDB.
|
||||
*
|
||||
* @IFLA_BRPORT_PROXYARP_WIFI
|
||||
* Enable proxy ARP on this port which meets extended requirements by
|
||||
* IEEE 802.11 and Hotspot 2.0 specifications.
|
||||
*
|
||||
* @IFLA_BRPORT_ROOT_ID
|
||||
*
|
||||
* @IFLA_BRPORT_BRIDGE_ID
|
||||
*
|
||||
* @IFLA_BRPORT_DESIGNATED_PORT
|
||||
*
|
||||
* @IFLA_BRPORT_DESIGNATED_COST
|
||||
*
|
||||
* @IFLA_BRPORT_ID
|
||||
*
|
||||
* @IFLA_BRPORT_NO
|
||||
*
|
||||
* @IFLA_BRPORT_TOPOLOGY_CHANGE_ACK
|
||||
*
|
||||
* @IFLA_BRPORT_CONFIG_PENDING
|
||||
*
|
||||
* @IFLA_BRPORT_MESSAGE_AGE_TIMER
|
||||
*
|
||||
* @IFLA_BRPORT_FORWARD_DELAY_TIMER
|
||||
*
|
||||
* @IFLA_BRPORT_HOLD_TIMER
|
||||
*
|
||||
* @IFLA_BRPORT_FLUSH
|
||||
* Flush bridge ports' fdb dynamic entries.
|
||||
*
|
||||
* @IFLA_BRPORT_MULTICAST_ROUTER
|
||||
* Configure the port's multicast router presence. A port with
|
||||
* a multicast router will receive all multicast traffic.
|
||||
* The valid values are:
|
||||
*
|
||||
* * 0 disable multicast routers on this port
|
||||
* * 1 let the system detect the presence of routers (default)
|
||||
* * 2 permanently enable multicast traffic forwarding on this port
|
||||
* * 3 enable multicast routers temporarily on this port, not depending
|
||||
* on incoming queries.
|
||||
*
|
||||
* @IFLA_BRPORT_PAD
|
||||
*
|
||||
* @IFLA_BRPORT_MCAST_FLOOD
|
||||
* Controls whether a given port will flood multicast traffic for which
|
||||
* there is no MDB entry. By default this flag is on.
|
||||
*
|
||||
* @IFLA_BRPORT_MCAST_TO_UCAST
|
||||
* Controls whether a given port will replicate packets using unicast
|
||||
* instead of multicast. By default this flag is off.
|
||||
*
|
||||
* This is done by copying the packet per host and changing the multicast
|
||||
* destination MAC to a unicast one accordingly.
|
||||
*
|
||||
* *mcast_to_unicast* works on top of the multicast snooping feature of the
|
||||
* bridge. Which means unicast copies are only delivered to hosts which
|
||||
* are interested in unicast and signaled this via IGMP/MLD reports previously.
|
||||
*
|
||||
* This feature is intended for interface types which have a more reliable
|
||||
* and/or efficient way to deliver unicast packets than broadcast ones
|
||||
* (e.g. WiFi).
|
||||
*
|
||||
* However, it should only be enabled on interfaces where no IGMPv2/MLDv1
|
||||
* report suppression takes place. IGMP/MLD report suppression issue is
|
||||
* usually overcome by the network daemon (supplicant) enabling AP isolation
|
||||
* and by that separating all STAs.
|
||||
*
|
||||
* Delivery of STA-to-STA IP multicast is made possible again by enabling
|
||||
* and utilizing the bridge hairpin mode, which considers the incoming port
|
||||
* as a potential outgoing port, too (see *BRIDGE_MODE_HAIRPIN* option).
|
||||
* Hairpin mode is performed after multicast snooping, therefore leading
|
||||
* to only deliver reports to STAs running a multicast router.
|
||||
*
|
||||
* @IFLA_BRPORT_VLAN_TUNNEL
|
||||
* Controls whether vlan to tunnel mapping is enabled on the port.
|
||||
* By default this flag is off.
|
||||
*
|
||||
* @IFLA_BRPORT_BCAST_FLOOD
|
||||
* Controls flooding of broadcast traffic on the given port. By default
|
||||
* this flag is on.
|
||||
*
|
||||
* @IFLA_BRPORT_GROUP_FWD_MASK
|
||||
* Set the group forward mask. This is a bitmask that is applied to
|
||||
* decide whether to forward incoming frames destined to link-local
|
||||
* addresses. The addresses of the form are 01:80:C2:00:00:0X (defaults
|
||||
* to 0, which means the bridge does not forward any link-local frames
|
||||
* coming on this port).
|
||||
*
|
||||
* @IFLA_BRPORT_NEIGH_SUPPRESS
|
||||
* Controls whether neighbor discovery (arp and nd) proxy and suppression
|
||||
* is enabled on the port. By default this flag is off.
|
||||
*
|
||||
* @IFLA_BRPORT_ISOLATED
|
||||
* Controls whether a given port will be isolated, which means it will be
|
||||
* able to communicate with non-isolated ports only. By default this
|
||||
* flag is off.
|
||||
*
|
||||
* @IFLA_BRPORT_BACKUP_PORT
|
||||
* Set a backup port. If the port loses carrier all traffic will be
|
||||
* redirected to the configured backup port. Set the value to 0 to disable
|
||||
* it.
|
||||
*
|
||||
* @IFLA_BRPORT_MRP_RING_OPEN
|
||||
*
|
||||
* @IFLA_BRPORT_MRP_IN_OPEN
|
||||
*
|
||||
* @IFLA_BRPORT_MCAST_EHT_HOSTS_LIMIT
|
||||
* The number of per-port EHT hosts limit. The default value is 512.
|
||||
* Setting to 0 is not allowed.
|
||||
*
|
||||
* @IFLA_BRPORT_MCAST_EHT_HOSTS_CNT
|
||||
* The current number of tracked hosts, read only.
|
||||
*
|
||||
* @IFLA_BRPORT_LOCKED
|
||||
* Controls whether a port will be locked, meaning that hosts behind the
|
||||
* port will not be able to communicate through the port unless an FDB
|
||||
* entry with the unit's MAC address is in the FDB. The common use case is
|
||||
* that hosts are allowed access through authentication with the IEEE 802.1X
|
||||
* protocol or based on whitelists. By default this flag is off.
|
||||
*
|
||||
* Please note that secure 802.1X deployments should always use the
|
||||
* *BR_BOOLOPT_NO_LL_LEARN* flag, to not permit the bridge to populate its
|
||||
* FDB based on link-local (EAPOL) traffic received on the port.
|
||||
*
|
||||
* @IFLA_BRPORT_MAB
|
||||
* Controls whether a port will use MAC Authentication Bypass (MAB), a
|
||||
* technique through which select MAC addresses may be allowed on a locked
|
||||
* port, without using 802.1X authentication. Packets with an unknown source
|
||||
* MAC address generates a "locked" FDB entry on the incoming bridge port.
|
||||
* The common use case is for user space to react to these bridge FDB
|
||||
* notifications and optionally replace the locked FDB entry with a normal
|
||||
* one, allowing traffic to pass for whitelisted MAC addresses.
|
||||
*
|
||||
* Setting this flag also requires *IFLA_BRPORT_LOCKED* and
|
||||
* *IFLA_BRPORT_LEARNING*. *IFLA_BRPORT_LOCKED* ensures that unauthorized
|
||||
* data packets are dropped, and *IFLA_BRPORT_LEARNING* allows the dynamic
|
||||
* FDB entries installed by user space (as replacements for the locked FDB
|
||||
* entries) to be refreshed and/or aged out.
|
||||
*
|
||||
* @IFLA_BRPORT_MCAST_N_GROUPS
|
||||
*
|
||||
* @IFLA_BRPORT_MCAST_MAX_GROUPS
|
||||
* Sets the maximum number of MDB entries that can be registered for a
|
||||
* given port. Attempts to register more MDB entries at the port than this
|
||||
* limit allows will be rejected, whether they are done through netlink
|
||||
* (e.g. the bridge tool), or IGMP or MLD membership reports. Setting a
|
||||
* limit of 0 disables the limit. The default value is 0.
|
||||
*
|
||||
* @IFLA_BRPORT_NEIGH_VLAN_SUPPRESS
|
||||
* Controls whether neighbor discovery (arp and nd) proxy and suppression is
|
||||
* enabled for a given port. By default this flag is off.
|
||||
*
|
||||
* Note that this option only takes effect when *IFLA_BRPORT_NEIGH_SUPPRESS*
|
||||
* is enabled for a given port.
|
||||
*
|
||||
* @IFLA_BRPORT_BACKUP_NHID
|
||||
* The FDB nexthop object ID to attach to packets being redirected to a
|
||||
* backup port that has VLAN tunnel mapping enabled (via the
|
||||
* *IFLA_BRPORT_VLAN_TUNNEL* option). Setting a value of 0 (default) has
|
||||
* the effect of not attaching any ID.
|
||||
*/
|
||||
enum {
|
||||
IFLA_BRPORT_UNSPEC,
|
||||
IFLA_BRPORT_STATE, /* Spanning tree state */
|
||||
@ -567,6 +1090,8 @@ enum {
|
||||
IFLA_BRPORT_MAB,
|
||||
IFLA_BRPORT_MCAST_N_GROUPS,
|
||||
IFLA_BRPORT_MCAST_MAX_GROUPS,
|
||||
IFLA_BRPORT_NEIGH_VLAN_SUPPRESS,
|
||||
IFLA_BRPORT_BACKUP_NHID,
|
||||
__IFLA_BRPORT_MAX
|
||||
};
|
||||
#define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
|
||||
@ -633,6 +1158,7 @@ enum {
|
||||
IFLA_MACVLAN_MACADDR_COUNT,
|
||||
IFLA_MACVLAN_BC_QUEUE_LEN,
|
||||
IFLA_MACVLAN_BC_QUEUE_LEN_USED,
|
||||
IFLA_MACVLAN_BC_CUTOFF,
|
||||
__IFLA_MACVLAN_MAX,
|
||||
};
|
||||
|
||||
@ -751,6 +1277,30 @@ struct tunnel_msg {
|
||||
__u32 ifindex;
|
||||
};
|
||||
|
||||
/* netkit section */
|
||||
enum netkit_action {
|
||||
NETKIT_NEXT = -1,
|
||||
NETKIT_PASS = 0,
|
||||
NETKIT_DROP = 2,
|
||||
NETKIT_REDIRECT = 7,
|
||||
};
|
||||
|
||||
enum netkit_mode {
|
||||
NETKIT_L2,
|
||||
NETKIT_L3,
|
||||
};
|
||||
|
||||
enum {
|
||||
IFLA_NETKIT_UNSPEC,
|
||||
IFLA_NETKIT_PEER_INFO,
|
||||
IFLA_NETKIT_PRIMARY,
|
||||
IFLA_NETKIT_POLICY,
|
||||
IFLA_NETKIT_PEER_POLICY,
|
||||
IFLA_NETKIT_MODE,
|
||||
__IFLA_NETKIT_MAX,
|
||||
};
|
||||
#define IFLA_NETKIT_MAX (__IFLA_NETKIT_MAX - 1)
|
||||
|
||||
/* VXLAN section */
|
||||
|
||||
/* include statistics in the dump */
|
||||
@ -824,6 +1374,8 @@ enum {
|
||||
IFLA_VXLAN_TTL_INHERIT,
|
||||
IFLA_VXLAN_DF,
|
||||
IFLA_VXLAN_VNIFILTER, /* only applicable with COLLECT_METADATA mode */
|
||||
IFLA_VXLAN_LOCALBYPASS,
|
||||
IFLA_VXLAN_LABEL_POLICY, /* IPv6 flow label policy; ifla_vxlan_label_policy */
|
||||
__IFLA_VXLAN_MAX
|
||||
};
|
||||
#define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1)
|
||||
@ -841,6 +1393,13 @@ enum ifla_vxlan_df {
|
||||
VXLAN_DF_MAX = __VXLAN_DF_END - 1,
|
||||
};
|
||||
|
||||
enum ifla_vxlan_label_policy {
|
||||
VXLAN_LABEL_FIXED = 0,
|
||||
VXLAN_LABEL_INHERIT = 1,
|
||||
__VXLAN_LABEL_END,
|
||||
VXLAN_LABEL_MAX = __VXLAN_LABEL_END - 1,
|
||||
};
|
||||
|
||||
/* GENEVE section */
|
||||
enum {
|
||||
IFLA_GENEVE_UNSPEC,
|
||||
@ -905,6 +1464,8 @@ enum {
|
||||
IFLA_GTP_ROLE,
|
||||
IFLA_GTP_CREATE_SOCKETS,
|
||||
IFLA_GTP_RESTART_COUNT,
|
||||
IFLA_GTP_LOCAL,
|
||||
IFLA_GTP_LOCAL6,
|
||||
__IFLA_GTP_MAX,
|
||||
};
|
||||
#define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1)
|
||||
@ -944,6 +1505,7 @@ enum {
|
||||
IFLA_BOND_AD_LACP_ACTIVE,
|
||||
IFLA_BOND_MISSED_MAX,
|
||||
IFLA_BOND_NS_IP6_TARGET,
|
||||
IFLA_BOND_COUPLED_CONTROL,
|
||||
__IFLA_BOND_MAX,
|
||||
};
|
||||
|
||||
@ -1209,6 +1771,7 @@ enum {
|
||||
IFLA_HSR_PROTOCOL, /* Indicate different protocol than
|
||||
* HSR. For example PRP.
|
||||
*/
|
||||
IFLA_HSR_INTERLINK, /* HSR interlink network device */
|
||||
__IFLA_HSR_MAX,
|
||||
};
|
||||
|
||||
@ -1386,7 +1949,9 @@ enum {
|
||||
|
||||
enum {
|
||||
IFLA_DSA_UNSPEC,
|
||||
IFLA_DSA_MASTER,
|
||||
IFLA_DSA_CONDUIT,
|
||||
/* Deprecated, use IFLA_DSA_CONDUIT instead */
|
||||
IFLA_DSA_MASTER = IFLA_DSA_CONDUIT,
|
||||
__IFLA_DSA_MAX,
|
||||
};
|
||||
|
||||
|
||||
@ -59,6 +59,7 @@ struct sockaddr_ll {
|
||||
#define PACKET_ROLLOVER_STATS 21
|
||||
#define PACKET_FANOUT_DATA 22
|
||||
#define PACKET_IGNORE_OUTGOING 23
|
||||
#define PACKET_VNET_HDR_SZ 24
|
||||
|
||||
#define PACKET_FANOUT_HASH 0
|
||||
#define PACKET_FANOUT_LB 1
|
||||
|
||||
156
lib/libc/include/any-linux-any/linux/if_team.h
vendored
156
lib/libc/include/any-linux-any/linux/if_team.h
vendored
@ -1,23 +1,69 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
|
||||
/*
|
||||
* include/linux/if_team.h - Network team device driver header
|
||||
* Copyright (c) 2011 Jiri Pirko <jpirko@redhat.com>
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-3-Clause) */
|
||||
/* Do not edit directly, auto-generated from: */
|
||||
/* Documentation/netlink/specs/team.yaml */
|
||||
/* YNL-GEN uapi header */
|
||||
|
||||
#ifndef _LINUX_IF_TEAM_H_
|
||||
#define _LINUX_IF_TEAM_H_
|
||||
#ifndef _LINUX_IF_TEAM_H
|
||||
#define _LINUX_IF_TEAM_H
|
||||
|
||||
#define TEAM_GENL_NAME "team"
|
||||
#define TEAM_GENL_VERSION 1
|
||||
|
||||
#define TEAM_STRING_MAX_LEN 32
|
||||
#define TEAM_GENL_CHANGE_EVENT_MC_GRP_NAME "change_event"
|
||||
|
||||
/**********************************
|
||||
* NETLINK_GENERIC netlink family.
|
||||
**********************************/
|
||||
enum {
|
||||
TEAM_ATTR_UNSPEC,
|
||||
TEAM_ATTR_TEAM_IFINDEX,
|
||||
TEAM_ATTR_LIST_OPTION,
|
||||
TEAM_ATTR_LIST_PORT,
|
||||
|
||||
__TEAM_ATTR_MAX,
|
||||
TEAM_ATTR_MAX = (__TEAM_ATTR_MAX - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
TEAM_ATTR_ITEM_OPTION_UNSPEC,
|
||||
TEAM_ATTR_ITEM_OPTION,
|
||||
|
||||
__TEAM_ATTR_ITEM_OPTION_MAX,
|
||||
TEAM_ATTR_ITEM_OPTION_MAX = (__TEAM_ATTR_ITEM_OPTION_MAX - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
TEAM_ATTR_OPTION_UNSPEC,
|
||||
TEAM_ATTR_OPTION_NAME,
|
||||
TEAM_ATTR_OPTION_CHANGED,
|
||||
TEAM_ATTR_OPTION_TYPE,
|
||||
TEAM_ATTR_OPTION_DATA,
|
||||
TEAM_ATTR_OPTION_REMOVED,
|
||||
TEAM_ATTR_OPTION_PORT_IFINDEX,
|
||||
TEAM_ATTR_OPTION_ARRAY_INDEX,
|
||||
|
||||
__TEAM_ATTR_OPTION_MAX,
|
||||
TEAM_ATTR_OPTION_MAX = (__TEAM_ATTR_OPTION_MAX - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
TEAM_ATTR_ITEM_PORT_UNSPEC,
|
||||
TEAM_ATTR_ITEM_PORT,
|
||||
|
||||
__TEAM_ATTR_ITEM_PORT_MAX,
|
||||
TEAM_ATTR_ITEM_PORT_MAX = (__TEAM_ATTR_ITEM_PORT_MAX - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
TEAM_ATTR_PORT_UNSPEC,
|
||||
TEAM_ATTR_PORT_IFINDEX,
|
||||
TEAM_ATTR_PORT_CHANGED,
|
||||
TEAM_ATTR_PORT_LINKUP,
|
||||
TEAM_ATTR_PORT_SPEED,
|
||||
TEAM_ATTR_PORT_DUPLEX,
|
||||
TEAM_ATTR_PORT_REMOVED,
|
||||
|
||||
__TEAM_ATTR_PORT_MAX,
|
||||
TEAM_ATTR_PORT_MAX = (__TEAM_ATTR_PORT_MAX - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
TEAM_CMD_NOOP,
|
||||
@ -26,83 +72,7 @@ enum {
|
||||
TEAM_CMD_PORT_LIST_GET,
|
||||
|
||||
__TEAM_CMD_MAX,
|
||||
TEAM_CMD_MAX = (__TEAM_CMD_MAX - 1),
|
||||
TEAM_CMD_MAX = (__TEAM_CMD_MAX - 1)
|
||||
};
|
||||
|
||||
enum {
|
||||
TEAM_ATTR_UNSPEC,
|
||||
TEAM_ATTR_TEAM_IFINDEX, /* u32 */
|
||||
TEAM_ATTR_LIST_OPTION, /* nest */
|
||||
TEAM_ATTR_LIST_PORT, /* nest */
|
||||
|
||||
__TEAM_ATTR_MAX,
|
||||
TEAM_ATTR_MAX = __TEAM_ATTR_MAX - 1,
|
||||
};
|
||||
|
||||
/* Nested layout of get/set msg:
|
||||
*
|
||||
* [TEAM_ATTR_LIST_OPTION]
|
||||
* [TEAM_ATTR_ITEM_OPTION]
|
||||
* [TEAM_ATTR_OPTION_*], ...
|
||||
* [TEAM_ATTR_ITEM_OPTION]
|
||||
* [TEAM_ATTR_OPTION_*], ...
|
||||
* ...
|
||||
* [TEAM_ATTR_LIST_PORT]
|
||||
* [TEAM_ATTR_ITEM_PORT]
|
||||
* [TEAM_ATTR_PORT_*], ...
|
||||
* [TEAM_ATTR_ITEM_PORT]
|
||||
* [TEAM_ATTR_PORT_*], ...
|
||||
* ...
|
||||
*/
|
||||
|
||||
enum {
|
||||
TEAM_ATTR_ITEM_OPTION_UNSPEC,
|
||||
TEAM_ATTR_ITEM_OPTION, /* nest */
|
||||
|
||||
__TEAM_ATTR_ITEM_OPTION_MAX,
|
||||
TEAM_ATTR_ITEM_OPTION_MAX = __TEAM_ATTR_ITEM_OPTION_MAX - 1,
|
||||
};
|
||||
|
||||
enum {
|
||||
TEAM_ATTR_OPTION_UNSPEC,
|
||||
TEAM_ATTR_OPTION_NAME, /* string */
|
||||
TEAM_ATTR_OPTION_CHANGED, /* flag */
|
||||
TEAM_ATTR_OPTION_TYPE, /* u8 */
|
||||
TEAM_ATTR_OPTION_DATA, /* dynamic */
|
||||
TEAM_ATTR_OPTION_REMOVED, /* flag */
|
||||
TEAM_ATTR_OPTION_PORT_IFINDEX, /* u32 */ /* for per-port options */
|
||||
TEAM_ATTR_OPTION_ARRAY_INDEX, /* u32 */ /* for array options */
|
||||
|
||||
__TEAM_ATTR_OPTION_MAX,
|
||||
TEAM_ATTR_OPTION_MAX = __TEAM_ATTR_OPTION_MAX - 1,
|
||||
};
|
||||
|
||||
enum {
|
||||
TEAM_ATTR_ITEM_PORT_UNSPEC,
|
||||
TEAM_ATTR_ITEM_PORT, /* nest */
|
||||
|
||||
__TEAM_ATTR_ITEM_PORT_MAX,
|
||||
TEAM_ATTR_ITEM_PORT_MAX = __TEAM_ATTR_ITEM_PORT_MAX - 1,
|
||||
};
|
||||
|
||||
enum {
|
||||
TEAM_ATTR_PORT_UNSPEC,
|
||||
TEAM_ATTR_PORT_IFINDEX, /* u32 */
|
||||
TEAM_ATTR_PORT_CHANGED, /* flag */
|
||||
TEAM_ATTR_PORT_LINKUP, /* flag */
|
||||
TEAM_ATTR_PORT_SPEED, /* u32 */
|
||||
TEAM_ATTR_PORT_DUPLEX, /* u8 */
|
||||
TEAM_ATTR_PORT_REMOVED, /* flag */
|
||||
|
||||
__TEAM_ATTR_PORT_MAX,
|
||||
TEAM_ATTR_PORT_MAX = __TEAM_ATTR_PORT_MAX - 1,
|
||||
};
|
||||
|
||||
/*
|
||||
* NETLINK_GENERIC related info
|
||||
*/
|
||||
#define TEAM_GENL_NAME "team"
|
||||
#define TEAM_GENL_VERSION 0x1
|
||||
#define TEAM_GENL_CHANGE_EVENT_MC_GRP_NAME "change_event"
|
||||
|
||||
#endif /* _LINUX_IF_TEAM_H_ */
|
||||
#endif /* _LINUX_IF_TEAM_H */
|
||||
34
lib/libc/include/any-linux-any/linux/if_tunnel.h
vendored
34
lib/libc/include/any-linux-any/linux/if_tunnel.h
vendored
@ -161,6 +161,13 @@ enum {
|
||||
|
||||
#define IFLA_VTI_MAX (__IFLA_VTI_MAX - 1)
|
||||
|
||||
/* Historically, tunnel flags have been defined as __be16 and now there are
|
||||
* no free bits left. It is strongly advised to switch the already existing
|
||||
* userspace code to the new *_BIT definitions from down below, as __be16
|
||||
* can't be simply cast to a wider type on LE systems. All new flags and
|
||||
* code must use *_BIT only.
|
||||
*/
|
||||
|
||||
#define TUNNEL_CSUM __cpu_to_be16(0x01)
|
||||
#define TUNNEL_ROUTING __cpu_to_be16(0x02)
|
||||
#define TUNNEL_KEY __cpu_to_be16(0x04)
|
||||
@ -182,4 +189,31 @@ enum {
|
||||
(TUNNEL_GENEVE_OPT | TUNNEL_VXLAN_OPT | TUNNEL_ERSPAN_OPT | \
|
||||
TUNNEL_GTP_OPT)
|
||||
|
||||
enum {
|
||||
IP_TUNNEL_CSUM_BIT = 0U,
|
||||
IP_TUNNEL_ROUTING_BIT,
|
||||
IP_TUNNEL_KEY_BIT,
|
||||
IP_TUNNEL_SEQ_BIT,
|
||||
IP_TUNNEL_STRICT_BIT,
|
||||
IP_TUNNEL_REC_BIT,
|
||||
IP_TUNNEL_VERSION_BIT,
|
||||
IP_TUNNEL_NO_KEY_BIT,
|
||||
IP_TUNNEL_DONT_FRAGMENT_BIT,
|
||||
IP_TUNNEL_OAM_BIT,
|
||||
IP_TUNNEL_CRIT_OPT_BIT,
|
||||
IP_TUNNEL_GENEVE_OPT_BIT, /* OPTIONS_PRESENT */
|
||||
IP_TUNNEL_VXLAN_OPT_BIT, /* OPTIONS_PRESENT */
|
||||
IP_TUNNEL_NOCACHE_BIT,
|
||||
IP_TUNNEL_ERSPAN_OPT_BIT, /* OPTIONS_PRESENT */
|
||||
IP_TUNNEL_GTP_OPT_BIT, /* OPTIONS_PRESENT */
|
||||
|
||||
IP_TUNNEL_VTI_BIT,
|
||||
IP_TUNNEL_SIT_ISATAP_BIT = IP_TUNNEL_VTI_BIT,
|
||||
|
||||
/* Flags starting from here are not available via the old UAPI */
|
||||
IP_TUNNEL_PFCP_OPT_BIT, /* OPTIONS_PRESENT */
|
||||
|
||||
__IP_TUNNEL_FLAG_NUM,
|
||||
};
|
||||
|
||||
#endif /* _IF_TUNNEL_H_ */
|
||||
58
lib/libc/include/any-linux-any/linux/if_xdp.h
vendored
58
lib/libc/include/any-linux-any/linux/if_xdp.h
vendored
@ -25,10 +25,22 @@
|
||||
* application.
|
||||
*/
|
||||
#define XDP_USE_NEED_WAKEUP (1 << 3)
|
||||
/* By setting this option, userspace application indicates that it can
|
||||
* handle multiple descriptors per packet thus enabling AF_XDP to split
|
||||
* multi-buffer XDP frames into multiple Rx descriptors. Without this set
|
||||
* such frames will be dropped.
|
||||
*/
|
||||
#define XDP_USE_SG (1 << 4)
|
||||
|
||||
/* Flags for xsk_umem_config flags */
|
||||
#define XDP_UMEM_UNALIGNED_CHUNK_FLAG (1 << 0)
|
||||
|
||||
/* Force checksum calculation in software. Can be used for testing or
|
||||
* working around potential HW issues. This option causes performance
|
||||
* degradation and only works in XDP_COPY mode.
|
||||
*/
|
||||
#define XDP_UMEM_TX_SW_CSUM (1 << 1)
|
||||
|
||||
struct sockaddr_xdp {
|
||||
__u16 sxdp_family;
|
||||
__u16 sxdp_flags;
|
||||
@ -70,6 +82,7 @@ struct xdp_umem_reg {
|
||||
__u32 chunk_size;
|
||||
__u32 headroom;
|
||||
__u32 flags;
|
||||
__u32 tx_metadata_len;
|
||||
};
|
||||
|
||||
struct xdp_statistics {
|
||||
@ -99,6 +112,41 @@ struct xdp_options {
|
||||
#define XSK_UNALIGNED_BUF_ADDR_MASK \
|
||||
((1ULL << XSK_UNALIGNED_BUF_OFFSET_SHIFT) - 1)
|
||||
|
||||
/* Request transmit timestamp. Upon completion, put it into tx_timestamp
|
||||
* field of struct xsk_tx_metadata.
|
||||
*/
|
||||
#define XDP_TXMD_FLAGS_TIMESTAMP (1 << 0)
|
||||
|
||||
/* Request transmit checksum offload. Checksum start position and offset
|
||||
* are communicated via csum_start and csum_offset fields of struct
|
||||
* xsk_tx_metadata.
|
||||
*/
|
||||
#define XDP_TXMD_FLAGS_CHECKSUM (1 << 1)
|
||||
|
||||
/* AF_XDP offloads request. 'request' union member is consumed by the driver
|
||||
* when the packet is being transmitted. 'completion' union member is
|
||||
* filled by the driver when the transmit completion arrives.
|
||||
*/
|
||||
struct xsk_tx_metadata {
|
||||
__u64 flags;
|
||||
|
||||
union {
|
||||
struct {
|
||||
/* XDP_TXMD_FLAGS_CHECKSUM */
|
||||
|
||||
/* Offset from desc->addr where checksumming should start. */
|
||||
__u16 csum_start;
|
||||
/* Offset from csum_start where checksum should be stored. */
|
||||
__u16 csum_offset;
|
||||
} request;
|
||||
|
||||
struct {
|
||||
/* XDP_TXMD_FLAGS_TIMESTAMP */
|
||||
__u64 tx_timestamp;
|
||||
} completion;
|
||||
};
|
||||
};
|
||||
|
||||
/* Rx/Tx descriptor */
|
||||
struct xdp_desc {
|
||||
__u64 addr;
|
||||
@ -108,4 +156,14 @@ struct xdp_desc {
|
||||
|
||||
/* UMEM descriptor is __u64 */
|
||||
|
||||
/* Flag indicating that the packet continues with the buffer pointed out by the
|
||||
* next frame in the ring. The end of the packet is signalled by setting this
|
||||
* bit to zero. For single buffer packets, every descriptor has 'options' set
|
||||
* to 0 and this maintains backward compatibility.
|
||||
*/
|
||||
#define XDP_PKT_CONTD (1 << 0)
|
||||
|
||||
/* TX packet carries valid metadata. */
|
||||
#define XDP_TX_METADATA (1 << 1)
|
||||
|
||||
#endif /* _LINUX_IF_XDP_H */
|
||||
@ -47,6 +47,10 @@ enum iio_chan_type {
|
||||
IIO_POSITIONRELATIVE,
|
||||
IIO_PHASE,
|
||||
IIO_MASSCONCENTRATION,
|
||||
IIO_DELTA_ANGL,
|
||||
IIO_DELTA_VELOCITY,
|
||||
IIO_COLORTEMP,
|
||||
IIO_CHROMATICITY,
|
||||
};
|
||||
|
||||
enum iio_modifier {
|
||||
@ -101,6 +105,8 @@ enum iio_modifier {
|
||||
IIO_MOD_PITCH,
|
||||
IIO_MOD_YAW,
|
||||
IIO_MOD_ROLL,
|
||||
IIO_MOD_LIGHT_UVA,
|
||||
IIO_MOD_LIGHT_UVB,
|
||||
};
|
||||
|
||||
enum iio_event_type {
|
||||
|
||||
2
lib/libc/include/any-linux-any/linux/in6.h
vendored
2
lib/libc/include/any-linux-any/linux/in6.h
vendored
@ -145,7 +145,7 @@ struct in6_flowlabel_req {
|
||||
#define IPV6_TLV_PADN 1
|
||||
#define IPV6_TLV_ROUTERALERT 5
|
||||
#define IPV6_TLV_CALIPSO 7 /* RFC 5570 */
|
||||
#define IPV6_TLV_IOAM 49 /* TEMPORARY IANA allocation for IOAM */
|
||||
#define IPV6_TLV_IOAM 49 /* RFC 9486 */
|
||||
#define IPV6_TLV_JUMBO 194
|
||||
#define IPV6_TLV_HAO 201 /* home address option */
|
||||
|
||||
|
||||
@ -30,8 +30,8 @@ struct inotify_event {
|
||||
#define IN_ACCESS 0x00000001 /* File was accessed */
|
||||
#define IN_MODIFY 0x00000002 /* File was modified */
|
||||
#define IN_ATTRIB 0x00000004 /* Metadata changed */
|
||||
#define IN_CLOSE_WRITE 0x00000008 /* Writtable file was closed */
|
||||
#define IN_CLOSE_NOWRITE 0x00000010 /* Unwrittable file closed */
|
||||
#define IN_CLOSE_WRITE 0x00000008 /* Writable file was closed */
|
||||
#define IN_CLOSE_NOWRITE 0x00000010 /* Unwritable file closed */
|
||||
#define IN_OPEN 0x00000020 /* File was opened */
|
||||
#define IN_MOVED_FROM 0x00000040 /* File was moved from X */
|
||||
#define IN_MOVED_TO 0x00000080 /* File was moved to Y */
|
||||
|
||||
@ -602,6 +602,7 @@
|
||||
|
||||
#define KEY_ALS_TOGGLE 0x230 /* Ambient light sensor */
|
||||
#define KEY_ROTATE_LOCK_TOGGLE 0x231 /* Display rotation lock */
|
||||
#define KEY_REFRESH_RATE_TOGGLE 0x232 /* Display refresh rate toggle */
|
||||
|
||||
#define KEY_BUTTONCONFIG 0x240 /* AL Button Configuration */
|
||||
#define KEY_TASKMANAGER 0x241 /* AL Task/Project Manager */
|
||||
@ -617,6 +618,8 @@
|
||||
#define KEY_CAMERA_ACCESS_ENABLE 0x24b /* Enables programmatic access to camera devices. (HUTRR72) */
|
||||
#define KEY_CAMERA_ACCESS_DISABLE 0x24c /* Disables programmatic access to camera devices. (HUTRR72) */
|
||||
#define KEY_CAMERA_ACCESS_TOGGLE 0x24d /* Toggles the current state of the camera access control. (HUTRR72) */
|
||||
#define KEY_ACCESSIBILITY 0x24e /* Toggles the system bound accessibility UI/command (HUTRR116) */
|
||||
#define KEY_DO_NOT_DISTURB 0x24f /* Toggles the system-wide "Do Not Disturb" control (HUTRR94)*/
|
||||
|
||||
#define KEY_BRIGHTNESS_MIN 0x250 /* Set Brightness to Minimum */
|
||||
#define KEY_BRIGHTNESS_MAX 0x251 /* Set Brightness to Maximum */
|
||||
|
||||
154
lib/libc/include/any-linux-any/linux/io_uring.h
vendored
154
lib/libc/include/any-linux-any/linux/io_uring.h
vendored
@ -43,6 +43,10 @@ struct io_uring_sqe {
|
||||
union {
|
||||
__u64 addr; /* pointer to buffer or iovecs */
|
||||
__u64 splice_off_in;
|
||||
struct {
|
||||
__u32 level;
|
||||
__u32 optname;
|
||||
};
|
||||
};
|
||||
__u32 len; /* buffer size or number of iovecs */
|
||||
union {
|
||||
@ -65,6 +69,10 @@ struct io_uring_sqe {
|
||||
__u32 xattr_flags;
|
||||
__u32 msg_ring_flags;
|
||||
__u32 uring_cmd_flags;
|
||||
__u32 waitid_flags;
|
||||
__u32 futex_flags;
|
||||
__u32 install_fd_flags;
|
||||
__u32 nop_flags;
|
||||
};
|
||||
__u64 user_data; /* data to be passed back at completion time */
|
||||
/* pack this to avoid bogus arm OABI complaints */
|
||||
@ -79,6 +87,7 @@ struct io_uring_sqe {
|
||||
union {
|
||||
__s32 splice_fd_in;
|
||||
__u32 file_index;
|
||||
__u32 optlen;
|
||||
struct {
|
||||
__u16 addr_len;
|
||||
__u16 __pad3[1];
|
||||
@ -89,6 +98,7 @@ struct io_uring_sqe {
|
||||
__u64 addr3;
|
||||
__u64 __pad2[1];
|
||||
};
|
||||
__u64 optval;
|
||||
/*
|
||||
* If the ring is initialized with IORING_SETUP_SQE128, then
|
||||
* this field is used for 80 bytes of arbitrary command data
|
||||
@ -106,7 +116,7 @@ struct io_uring_sqe {
|
||||
*/
|
||||
#define IORING_FILE_INDEX_ALLOC (~0U)
|
||||
|
||||
enum {
|
||||
enum io_uring_sqe_flags_bit {
|
||||
IOSQE_FIXED_FILE_BIT,
|
||||
IOSQE_IO_DRAIN_BIT,
|
||||
IOSQE_IO_LINK_BIT,
|
||||
@ -173,6 +183,23 @@ enum {
|
||||
*/
|
||||
#define IORING_SETUP_DEFER_TASKRUN (1U << 13)
|
||||
|
||||
/*
|
||||
* Application provides the memory for the rings
|
||||
*/
|
||||
#define IORING_SETUP_NO_MMAP (1U << 14)
|
||||
|
||||
/*
|
||||
* Register the ring fd in itself for use with
|
||||
* IORING_REGISTER_USE_REGISTERED_RING; return a registered fd index rather
|
||||
* than an fd.
|
||||
*/
|
||||
#define IORING_SETUP_REGISTERED_FD_ONLY (1U << 15)
|
||||
|
||||
/*
|
||||
* Removes indirection through the SQ index array.
|
||||
*/
|
||||
#define IORING_SETUP_NO_SQARRAY (1U << 16)
|
||||
|
||||
enum io_uring_op {
|
||||
IORING_OP_NOP,
|
||||
IORING_OP_READV,
|
||||
@ -223,17 +250,25 @@ enum io_uring_op {
|
||||
IORING_OP_URING_CMD,
|
||||
IORING_OP_SEND_ZC,
|
||||
IORING_OP_SENDMSG_ZC,
|
||||
IORING_OP_READ_MULTISHOT,
|
||||
IORING_OP_WAITID,
|
||||
IORING_OP_FUTEX_WAIT,
|
||||
IORING_OP_FUTEX_WAKE,
|
||||
IORING_OP_FUTEX_WAITV,
|
||||
IORING_OP_FIXED_FD_INSTALL,
|
||||
IORING_OP_FTRUNCATE,
|
||||
|
||||
/* this goes last, obviously */
|
||||
IORING_OP_LAST,
|
||||
};
|
||||
|
||||
/*
|
||||
* sqe->uring_cmd_flags
|
||||
* sqe->uring_cmd_flags top 8bits aren't available for userspace
|
||||
* IORING_URING_CMD_FIXED use registered buffer; pass this flag
|
||||
* along with setting sqe->buf_index.
|
||||
*/
|
||||
#define IORING_URING_CMD_FIXED (1U << 0)
|
||||
#define IORING_URING_CMD_MASK IORING_URING_CMD_FIXED
|
||||
|
||||
|
||||
/*
|
||||
@ -250,6 +285,7 @@ enum io_uring_op {
|
||||
#define IORING_TIMEOUT_REALTIME (1U << 3)
|
||||
#define IORING_LINK_TIMEOUT_UPDATE (1U << 4)
|
||||
#define IORING_TIMEOUT_ETIME_SUCCESS (1U << 5)
|
||||
#define IORING_TIMEOUT_MULTISHOT (1U << 6)
|
||||
#define IORING_TIMEOUT_CLOCK_MASK (IORING_TIMEOUT_BOOTTIME | IORING_TIMEOUT_REALTIME)
|
||||
#define IORING_TIMEOUT_UPDATE_MASK (IORING_TIMEOUT_UPDATE | IORING_LINK_TIMEOUT_UPDATE)
|
||||
/*
|
||||
@ -284,11 +320,15 @@ enum io_uring_op {
|
||||
* request 'user_data'
|
||||
* IORING_ASYNC_CANCEL_ANY Match any request
|
||||
* IORING_ASYNC_CANCEL_FD_FIXED 'fd' passed in is a fixed descriptor
|
||||
* IORING_ASYNC_CANCEL_USERDATA Match on user_data, default for no other key
|
||||
* IORING_ASYNC_CANCEL_OP Match request based on opcode
|
||||
*/
|
||||
#define IORING_ASYNC_CANCEL_ALL (1U << 0)
|
||||
#define IORING_ASYNC_CANCEL_FD (1U << 1)
|
||||
#define IORING_ASYNC_CANCEL_ANY (1U << 2)
|
||||
#define IORING_ASYNC_CANCEL_FD_FIXED (1U << 3)
|
||||
#define IORING_ASYNC_CANCEL_USERDATA (1U << 4)
|
||||
#define IORING_ASYNC_CANCEL_OP (1U << 5)
|
||||
|
||||
/*
|
||||
* send/sendmsg and recv/recvmsg flags (sqe->ioprio)
|
||||
@ -312,11 +352,20 @@ enum io_uring_op {
|
||||
* 0 is reported if zerocopy was actually possible.
|
||||
* IORING_NOTIF_USAGE_ZC_COPIED if data was copied
|
||||
* (at least partially).
|
||||
*
|
||||
* IORING_RECVSEND_BUNDLE Used with IOSQE_BUFFER_SELECT. If set, send or
|
||||
* recv will grab as many buffers from the buffer
|
||||
* group ID given and send them all. The completion
|
||||
* result will be the number of buffers send, with
|
||||
* the starting buffer ID in cqe->flags as per
|
||||
* usual for provided buffer usage. The buffers
|
||||
* will be contigious from the starting buffer ID.
|
||||
*/
|
||||
#define IORING_RECVSEND_POLL_FIRST (1U << 0)
|
||||
#define IORING_RECV_MULTISHOT (1U << 1)
|
||||
#define IORING_RECVSEND_FIXED_BUF (1U << 2)
|
||||
#define IORING_SEND_ZC_REPORT_USAGE (1U << 3)
|
||||
#define IORING_RECVSEND_BUNDLE (1U << 4)
|
||||
|
||||
/*
|
||||
* cqe.res for IORING_CQE_F_NOTIF if
|
||||
@ -331,11 +380,13 @@ enum io_uring_op {
|
||||
* accept flags stored in sqe->ioprio
|
||||
*/
|
||||
#define IORING_ACCEPT_MULTISHOT (1U << 0)
|
||||
#define IORING_ACCEPT_DONTWAIT (1U << 1)
|
||||
#define IORING_ACCEPT_POLL_FIRST (1U << 2)
|
||||
|
||||
/*
|
||||
* IORING_OP_MSG_RING command types, stored in sqe->addr
|
||||
*/
|
||||
enum {
|
||||
enum io_uring_msg_ring_flags {
|
||||
IORING_MSG_DATA, /* pass sqe->len as 'res' and off as user_data */
|
||||
IORING_MSG_SEND_FD, /* send a registered fd to another ring */
|
||||
};
|
||||
@ -350,6 +401,20 @@ enum {
|
||||
/* Pass through the flags from sqe->file_index to cqe->flags */
|
||||
#define IORING_MSG_RING_FLAGS_PASS (1U << 1)
|
||||
|
||||
/*
|
||||
* IORING_OP_FIXED_FD_INSTALL flags (sqe->install_fd_flags)
|
||||
*
|
||||
* IORING_FIXED_FD_NO_CLOEXEC Don't mark the fd as O_CLOEXEC
|
||||
*/
|
||||
#define IORING_FIXED_FD_NO_CLOEXEC (1U << 0)
|
||||
|
||||
/*
|
||||
* IORING_OP_NOP flags (sqe->nop_flags)
|
||||
*
|
||||
* IORING_NOP_INJECT_RESULT Inject result from sqe->result
|
||||
*/
|
||||
#define IORING_NOP_INJECT_RESULT (1U << 0)
|
||||
|
||||
/*
|
||||
* IO completion data structure (Completion Queue Entry)
|
||||
*/
|
||||
@ -379,9 +444,7 @@ struct io_uring_cqe {
|
||||
#define IORING_CQE_F_SOCK_NONEMPTY (1U << 2)
|
||||
#define IORING_CQE_F_NOTIF (1U << 3)
|
||||
|
||||
enum {
|
||||
IORING_CQE_BUFFER_SHIFT = 16,
|
||||
};
|
||||
#define IORING_CQE_BUFFER_SHIFT 16
|
||||
|
||||
/*
|
||||
* Magic offsets for the application to mmap the data it needs
|
||||
@ -389,6 +452,9 @@ enum {
|
||||
#define IORING_OFF_SQ_RING 0ULL
|
||||
#define IORING_OFF_CQ_RING 0x8000000ULL
|
||||
#define IORING_OFF_SQES 0x10000000ULL
|
||||
#define IORING_OFF_PBUF_RING 0x80000000ULL
|
||||
#define IORING_OFF_PBUF_SHIFT 16
|
||||
#define IORING_OFF_MMAP_MASK 0xf8000000ULL
|
||||
|
||||
/*
|
||||
* Filled with the offset for mmap(2)
|
||||
@ -402,7 +468,7 @@ struct io_sqring_offsets {
|
||||
__u32 dropped;
|
||||
__u32 array;
|
||||
__u32 resv1;
|
||||
__u64 resv2;
|
||||
__u64 user_addr;
|
||||
};
|
||||
|
||||
/*
|
||||
@ -421,7 +487,7 @@ struct io_cqring_offsets {
|
||||
__u32 cqes;
|
||||
__u32 flags;
|
||||
__u32 resv1;
|
||||
__u64 resv2;
|
||||
__u64 user_addr;
|
||||
};
|
||||
|
||||
/*
|
||||
@ -473,11 +539,12 @@ struct io_uring_params {
|
||||
#define IORING_FEAT_CQE_SKIP (1U << 11)
|
||||
#define IORING_FEAT_LINKED_FILE (1U << 12)
|
||||
#define IORING_FEAT_REG_REG_RING (1U << 13)
|
||||
#define IORING_FEAT_RECVSEND_BUNDLE (1U << 14)
|
||||
|
||||
/*
|
||||
* io_uring_register(2) opcodes and arguments
|
||||
*/
|
||||
enum {
|
||||
enum io_uring_register_op {
|
||||
IORING_REGISTER_BUFFERS = 0,
|
||||
IORING_UNREGISTER_BUFFERS = 1,
|
||||
IORING_REGISTER_FILES = 2,
|
||||
@ -519,6 +586,13 @@ enum {
|
||||
/* register a range of fixed file slots for automatic slot allocation */
|
||||
IORING_REGISTER_FILE_ALLOC_RANGE = 25,
|
||||
|
||||
/* return status information for a buffer group */
|
||||
IORING_REGISTER_PBUF_STATUS = 26,
|
||||
|
||||
/* set/clear busy poll settings */
|
||||
IORING_REGISTER_NAPI = 27,
|
||||
IORING_UNREGISTER_NAPI = 28,
|
||||
|
||||
/* this goes last */
|
||||
IORING_REGISTER_LAST,
|
||||
|
||||
@ -527,7 +601,7 @@ enum {
|
||||
};
|
||||
|
||||
/* io-wq worker categories */
|
||||
enum {
|
||||
enum io_wq_type {
|
||||
IO_WQ_BOUND,
|
||||
IO_WQ_UNBOUND,
|
||||
};
|
||||
@ -568,19 +642,6 @@ struct io_uring_rsrc_update2 {
|
||||
__u32 resv2;
|
||||
};
|
||||
|
||||
struct io_uring_notification_slot {
|
||||
__u64 tag;
|
||||
__u64 resv[3];
|
||||
};
|
||||
|
||||
struct io_uring_notification_register {
|
||||
__u32 nr_slots;
|
||||
__u32 resv;
|
||||
__u64 resv2;
|
||||
__u64 data;
|
||||
__u64 resv3;
|
||||
};
|
||||
|
||||
/* Skip updating fd indexes set to this value in the fd table */
|
||||
#define IORING_REGISTER_FILES_SKIP (-2)
|
||||
|
||||
@ -635,19 +696,48 @@ struct io_uring_buf_ring {
|
||||
};
|
||||
};
|
||||
|
||||
/*
|
||||
* Flags for IORING_REGISTER_PBUF_RING.
|
||||
*
|
||||
* IOU_PBUF_RING_MMAP: If set, kernel will allocate the memory for the ring.
|
||||
* The application must not set a ring_addr in struct
|
||||
* io_uring_buf_reg, instead it must subsequently call
|
||||
* mmap(2) with the offset set as:
|
||||
* IORING_OFF_PBUF_RING | (bgid << IORING_OFF_PBUF_SHIFT)
|
||||
* to get a virtual mapping for the ring.
|
||||
*/
|
||||
enum io_uring_register_pbuf_ring_flags {
|
||||
IOU_PBUF_RING_MMAP = 1,
|
||||
};
|
||||
|
||||
/* argument for IORING_(UN)REGISTER_PBUF_RING */
|
||||
struct io_uring_buf_reg {
|
||||
__u64 ring_addr;
|
||||
__u32 ring_entries;
|
||||
__u16 bgid;
|
||||
__u16 pad;
|
||||
__u16 flags;
|
||||
__u64 resv[3];
|
||||
};
|
||||
|
||||
/* argument for IORING_REGISTER_PBUF_STATUS */
|
||||
struct io_uring_buf_status {
|
||||
__u32 buf_group; /* input */
|
||||
__u32 head; /* output */
|
||||
__u32 resv[8];
|
||||
};
|
||||
|
||||
/* argument for IORING_(UN)REGISTER_NAPI */
|
||||
struct io_uring_napi {
|
||||
__u32 busy_poll_to;
|
||||
__u8 prefer_busy_poll;
|
||||
__u8 pad[3];
|
||||
__u64 resv;
|
||||
};
|
||||
|
||||
/*
|
||||
* io_uring_restriction->opcode values
|
||||
*/
|
||||
enum {
|
||||
enum io_uring_register_restriction_op {
|
||||
/* Allow an io_uring_register(2) opcode */
|
||||
IORING_RESTRICTION_REGISTER_OP = 0,
|
||||
|
||||
@ -678,7 +768,9 @@ struct io_uring_sync_cancel_reg {
|
||||
__s32 fd;
|
||||
__u32 flags;
|
||||
struct __kernel_timespec timeout;
|
||||
__u64 pad[4];
|
||||
__u8 opcode;
|
||||
__u8 pad[7];
|
||||
__u64 pad2[3];
|
||||
};
|
||||
|
||||
/*
|
||||
@ -698,6 +790,16 @@ struct io_uring_recvmsg_out {
|
||||
__u32 flags;
|
||||
};
|
||||
|
||||
/*
|
||||
* Argument for IORING_OP_URING_CMD when file is a socket
|
||||
*/
|
||||
enum io_uring_socket_op {
|
||||
SOCKET_URING_OP_SIOCINQ = 0,
|
||||
SOCKET_URING_OP_SIOCOUTQ,
|
||||
SOCKET_URING_OP_GETSOCKOPT,
|
||||
SOCKET_URING_OP_SETSOCKOPT,
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -49,4 +49,24 @@ enum {
|
||||
|
||||
#define IOAM6_CMD_MAX (__IOAM6_CMD_MAX - 1)
|
||||
|
||||
#define IOAM6_GENL_EV_GRP_NAME "ioam6_events"
|
||||
|
||||
enum ioam6_event_type {
|
||||
IOAM6_EVENT_UNSPEC,
|
||||
IOAM6_EVENT_TRACE,
|
||||
};
|
||||
|
||||
enum ioam6_event_attr {
|
||||
IOAM6_EVENT_ATTR_UNSPEC,
|
||||
|
||||
IOAM6_EVENT_ATTR_TRACE_NAMESPACE, /* u16 */
|
||||
IOAM6_EVENT_ATTR_TRACE_NODELEN, /* u8 */
|
||||
IOAM6_EVENT_ATTR_TRACE_TYPE, /* u32 */
|
||||
IOAM6_EVENT_ATTR_TRACE_DATA, /* Binary */
|
||||
|
||||
__IOAM6_EVENT_ATTR_MAX
|
||||
};
|
||||
|
||||
#define IOAM6_EVENT_ATTR_MAX (__IOAM6_EVENT_ATTR_MAX - 1)
|
||||
|
||||
#endif /* _LINUX_IOAM6_GENL_H */
|
||||
161
lib/libc/include/any-linux-any/linux/iommu.h
vendored
161
lib/libc/include/any-linux-any/linux/iommu.h
vendored
@ -1,161 +0,0 @@
|
||||
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
||||
/*
|
||||
* IOMMU user API definitions
|
||||
*/
|
||||
|
||||
#ifndef _IOMMU_H
|
||||
#define _IOMMU_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define IOMMU_FAULT_PERM_READ (1 << 0) /* read */
|
||||
#define IOMMU_FAULT_PERM_WRITE (1 << 1) /* write */
|
||||
#define IOMMU_FAULT_PERM_EXEC (1 << 2) /* exec */
|
||||
#define IOMMU_FAULT_PERM_PRIV (1 << 3) /* privileged */
|
||||
|
||||
/* Generic fault types, can be expanded IRQ remapping fault */
|
||||
enum iommu_fault_type {
|
||||
IOMMU_FAULT_DMA_UNRECOV = 1, /* unrecoverable fault */
|
||||
IOMMU_FAULT_PAGE_REQ, /* page request fault */
|
||||
};
|
||||
|
||||
enum iommu_fault_reason {
|
||||
IOMMU_FAULT_REASON_UNKNOWN = 0,
|
||||
|
||||
/* Could not access the PASID table (fetch caused external abort) */
|
||||
IOMMU_FAULT_REASON_PASID_FETCH,
|
||||
|
||||
/* PASID entry is invalid or has configuration errors */
|
||||
IOMMU_FAULT_REASON_BAD_PASID_ENTRY,
|
||||
|
||||
/*
|
||||
* PASID is out of range (e.g. exceeds the maximum PASID
|
||||
* supported by the IOMMU) or disabled.
|
||||
*/
|
||||
IOMMU_FAULT_REASON_PASID_INVALID,
|
||||
|
||||
/*
|
||||
* An external abort occurred fetching (or updating) a translation
|
||||
* table descriptor
|
||||
*/
|
||||
IOMMU_FAULT_REASON_WALK_EABT,
|
||||
|
||||
/*
|
||||
* Could not access the page table entry (Bad address),
|
||||
* actual translation fault
|
||||
*/
|
||||
IOMMU_FAULT_REASON_PTE_FETCH,
|
||||
|
||||
/* Protection flag check failed */
|
||||
IOMMU_FAULT_REASON_PERMISSION,
|
||||
|
||||
/* access flag check failed */
|
||||
IOMMU_FAULT_REASON_ACCESS,
|
||||
|
||||
/* Output address of a translation stage caused Address Size fault */
|
||||
IOMMU_FAULT_REASON_OOR_ADDRESS,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct iommu_fault_unrecoverable - Unrecoverable fault data
|
||||
* @reason: reason of the fault, from &enum iommu_fault_reason
|
||||
* @flags: parameters of this fault (IOMMU_FAULT_UNRECOV_* values)
|
||||
* @pasid: Process Address Space ID
|
||||
* @perm: requested permission access using by the incoming transaction
|
||||
* (IOMMU_FAULT_PERM_* values)
|
||||
* @addr: offending page address
|
||||
* @fetch_addr: address that caused a fetch abort, if any
|
||||
*/
|
||||
struct iommu_fault_unrecoverable {
|
||||
__u32 reason;
|
||||
#define IOMMU_FAULT_UNRECOV_PASID_VALID (1 << 0)
|
||||
#define IOMMU_FAULT_UNRECOV_ADDR_VALID (1 << 1)
|
||||
#define IOMMU_FAULT_UNRECOV_FETCH_ADDR_VALID (1 << 2)
|
||||
__u32 flags;
|
||||
__u32 pasid;
|
||||
__u32 perm;
|
||||
__u64 addr;
|
||||
__u64 fetch_addr;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct iommu_fault_page_request - Page Request data
|
||||
* @flags: encodes whether the corresponding fields are valid and whether this
|
||||
* is the last page in group (IOMMU_FAULT_PAGE_REQUEST_* values).
|
||||
* When IOMMU_FAULT_PAGE_RESPONSE_NEEDS_PASID is set, the page response
|
||||
* must have the same PASID value as the page request. When it is clear,
|
||||
* the page response should not have a PASID.
|
||||
* @pasid: Process Address Space ID
|
||||
* @grpid: Page Request Group Index
|
||||
* @perm: requested page permissions (IOMMU_FAULT_PERM_* values)
|
||||
* @addr: page address
|
||||
* @private_data: device-specific private information
|
||||
*/
|
||||
struct iommu_fault_page_request {
|
||||
#define IOMMU_FAULT_PAGE_REQUEST_PASID_VALID (1 << 0)
|
||||
#define IOMMU_FAULT_PAGE_REQUEST_LAST_PAGE (1 << 1)
|
||||
#define IOMMU_FAULT_PAGE_REQUEST_PRIV_DATA (1 << 2)
|
||||
#define IOMMU_FAULT_PAGE_RESPONSE_NEEDS_PASID (1 << 3)
|
||||
__u32 flags;
|
||||
__u32 pasid;
|
||||
__u32 grpid;
|
||||
__u32 perm;
|
||||
__u64 addr;
|
||||
__u64 private_data[2];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct iommu_fault - Generic fault data
|
||||
* @type: fault type from &enum iommu_fault_type
|
||||
* @padding: reserved for future use (should be zero)
|
||||
* @event: fault event, when @type is %IOMMU_FAULT_DMA_UNRECOV
|
||||
* @prm: Page Request message, when @type is %IOMMU_FAULT_PAGE_REQ
|
||||
* @padding2: sets the fault size to allow for future extensions
|
||||
*/
|
||||
struct iommu_fault {
|
||||
__u32 type;
|
||||
__u32 padding;
|
||||
union {
|
||||
struct iommu_fault_unrecoverable event;
|
||||
struct iommu_fault_page_request prm;
|
||||
__u8 padding2[56];
|
||||
};
|
||||
};
|
||||
|
||||
/**
|
||||
* enum iommu_page_response_code - Return status of fault handlers
|
||||
* @IOMMU_PAGE_RESP_SUCCESS: Fault has been handled and the page tables
|
||||
* populated, retry the access. This is "Success" in PCI PRI.
|
||||
* @IOMMU_PAGE_RESP_FAILURE: General error. Drop all subsequent faults from
|
||||
* this device if possible. This is "Response Failure" in PCI PRI.
|
||||
* @IOMMU_PAGE_RESP_INVALID: Could not handle this fault, don't retry the
|
||||
* access. This is "Invalid Request" in PCI PRI.
|
||||
*/
|
||||
enum iommu_page_response_code {
|
||||
IOMMU_PAGE_RESP_SUCCESS = 0,
|
||||
IOMMU_PAGE_RESP_INVALID,
|
||||
IOMMU_PAGE_RESP_FAILURE,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct iommu_page_response - Generic page response information
|
||||
* @argsz: User filled size of this data
|
||||
* @version: API version of this structure
|
||||
* @flags: encodes whether the corresponding fields are valid
|
||||
* (IOMMU_FAULT_PAGE_RESPONSE_* values)
|
||||
* @pasid: Process Address Space ID
|
||||
* @grpid: Page Request Group Index
|
||||
* @code: response code from &enum iommu_page_response_code
|
||||
*/
|
||||
struct iommu_page_response {
|
||||
__u32 argsz;
|
||||
#define IOMMU_PAGE_RESP_VERSION_1 1
|
||||
__u32 version;
|
||||
#define IOMMU_PAGE_RESP_PASID_VALID (1 << 0)
|
||||
__u32 flags;
|
||||
__u32 pasid;
|
||||
__u32 grpid;
|
||||
__u32 code;
|
||||
};
|
||||
|
||||
#endif /* _IOMMU_H */
|
||||
348
lib/libc/include/any-linux-any/linux/iommufd.h
vendored
348
lib/libc/include/any-linux-any/linux/iommufd.h
vendored
@ -45,6 +45,11 @@ enum {
|
||||
IOMMUFD_CMD_IOAS_UNMAP,
|
||||
IOMMUFD_CMD_OPTION,
|
||||
IOMMUFD_CMD_VFIO_IOAS,
|
||||
IOMMUFD_CMD_HWPT_ALLOC,
|
||||
IOMMUFD_CMD_GET_HW_INFO,
|
||||
IOMMUFD_CMD_HWPT_SET_DIRTY_TRACKING,
|
||||
IOMMUFD_CMD_HWPT_GET_DIRTY_BITMAP,
|
||||
IOMMUFD_CMD_HWPT_INVALIDATE,
|
||||
};
|
||||
|
||||
/**
|
||||
@ -344,4 +349,347 @@ struct iommu_vfio_ioas {
|
||||
__u16 __reserved;
|
||||
};
|
||||
#define IOMMU_VFIO_IOAS _IO(IOMMUFD_TYPE, IOMMUFD_CMD_VFIO_IOAS)
|
||||
|
||||
/**
|
||||
* enum iommufd_hwpt_alloc_flags - Flags for HWPT allocation
|
||||
* @IOMMU_HWPT_ALLOC_NEST_PARENT: If set, allocate a HWPT that can serve as
|
||||
* the parent HWPT in a nesting configuration.
|
||||
* @IOMMU_HWPT_ALLOC_DIRTY_TRACKING: Dirty tracking support for device IOMMU is
|
||||
* enforced on device attachment
|
||||
*/
|
||||
enum iommufd_hwpt_alloc_flags {
|
||||
IOMMU_HWPT_ALLOC_NEST_PARENT = 1 << 0,
|
||||
IOMMU_HWPT_ALLOC_DIRTY_TRACKING = 1 << 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum iommu_hwpt_vtd_s1_flags - Intel VT-d stage-1 page table
|
||||
* entry attributes
|
||||
* @IOMMU_VTD_S1_SRE: Supervisor request
|
||||
* @IOMMU_VTD_S1_EAFE: Extended access enable
|
||||
* @IOMMU_VTD_S1_WPE: Write protect enable
|
||||
*/
|
||||
enum iommu_hwpt_vtd_s1_flags {
|
||||
IOMMU_VTD_S1_SRE = 1 << 0,
|
||||
IOMMU_VTD_S1_EAFE = 1 << 1,
|
||||
IOMMU_VTD_S1_WPE = 1 << 2,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct iommu_hwpt_vtd_s1 - Intel VT-d stage-1 page table
|
||||
* info (IOMMU_HWPT_DATA_VTD_S1)
|
||||
* @flags: Combination of enum iommu_hwpt_vtd_s1_flags
|
||||
* @pgtbl_addr: The base address of the stage-1 page table.
|
||||
* @addr_width: The address width of the stage-1 page table
|
||||
* @__reserved: Must be 0
|
||||
*/
|
||||
struct iommu_hwpt_vtd_s1 {
|
||||
__aligned_u64 flags;
|
||||
__aligned_u64 pgtbl_addr;
|
||||
__u32 addr_width;
|
||||
__u32 __reserved;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum iommu_hwpt_data_type - IOMMU HWPT Data Type
|
||||
* @IOMMU_HWPT_DATA_NONE: no data
|
||||
* @IOMMU_HWPT_DATA_VTD_S1: Intel VT-d stage-1 page table
|
||||
*/
|
||||
enum iommu_hwpt_data_type {
|
||||
IOMMU_HWPT_DATA_NONE,
|
||||
IOMMU_HWPT_DATA_VTD_S1,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct iommu_hwpt_alloc - ioctl(IOMMU_HWPT_ALLOC)
|
||||
* @size: sizeof(struct iommu_hwpt_alloc)
|
||||
* @flags: Combination of enum iommufd_hwpt_alloc_flags
|
||||
* @dev_id: The device to allocate this HWPT for
|
||||
* @pt_id: The IOAS or HWPT to connect this HWPT to
|
||||
* @out_hwpt_id: The ID of the new HWPT
|
||||
* @__reserved: Must be 0
|
||||
* @data_type: One of enum iommu_hwpt_data_type
|
||||
* @data_len: Length of the type specific data
|
||||
* @data_uptr: User pointer to the type specific data
|
||||
*
|
||||
* Explicitly allocate a hardware page table object. This is the same object
|
||||
* type that is returned by iommufd_device_attach() and represents the
|
||||
* underlying iommu driver's iommu_domain kernel object.
|
||||
*
|
||||
* A kernel-managed HWPT will be created with the mappings from the given
|
||||
* IOAS via the @pt_id. The @data_type for this allocation must be set to
|
||||
* IOMMU_HWPT_DATA_NONE. The HWPT can be allocated as a parent HWPT for a
|
||||
* nesting configuration by passing IOMMU_HWPT_ALLOC_NEST_PARENT via @flags.
|
||||
*
|
||||
* A user-managed nested HWPT will be created from a given parent HWPT via
|
||||
* @pt_id, in which the parent HWPT must be allocated previously via the
|
||||
* same ioctl from a given IOAS (@pt_id). In this case, the @data_type
|
||||
* must be set to a pre-defined type corresponding to an I/O page table
|
||||
* type supported by the underlying IOMMU hardware.
|
||||
*
|
||||
* If the @data_type is set to IOMMU_HWPT_DATA_NONE, @data_len and
|
||||
* @data_uptr should be zero. Otherwise, both @data_len and @data_uptr
|
||||
* must be given.
|
||||
*/
|
||||
struct iommu_hwpt_alloc {
|
||||
__u32 size;
|
||||
__u32 flags;
|
||||
__u32 dev_id;
|
||||
__u32 pt_id;
|
||||
__u32 out_hwpt_id;
|
||||
__u32 __reserved;
|
||||
__u32 data_type;
|
||||
__u32 data_len;
|
||||
__aligned_u64 data_uptr;
|
||||
};
|
||||
#define IOMMU_HWPT_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_HWPT_ALLOC)
|
||||
|
||||
/**
|
||||
* enum iommu_hw_info_vtd_flags - Flags for VT-d hw_info
|
||||
* @IOMMU_HW_INFO_VTD_ERRATA_772415_SPR17: If set, disallow read-only mappings
|
||||
* on a nested_parent domain.
|
||||
* https://www.intel.com/content/www/us/en/content-details/772415/content-details.html
|
||||
*/
|
||||
enum iommu_hw_info_vtd_flags {
|
||||
IOMMU_HW_INFO_VTD_ERRATA_772415_SPR17 = 1 << 0,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct iommu_hw_info_vtd - Intel VT-d hardware information
|
||||
*
|
||||
* @flags: Combination of enum iommu_hw_info_vtd_flags
|
||||
* @__reserved: Must be 0
|
||||
*
|
||||
* @cap_reg: Value of Intel VT-d capability register defined in VT-d spec
|
||||
* section 11.4.2 Capability Register.
|
||||
* @ecap_reg: Value of Intel VT-d capability register defined in VT-d spec
|
||||
* section 11.4.3 Extended Capability Register.
|
||||
*
|
||||
* User needs to understand the Intel VT-d specification to decode the
|
||||
* register value.
|
||||
*/
|
||||
struct iommu_hw_info_vtd {
|
||||
__u32 flags;
|
||||
__u32 __reserved;
|
||||
__aligned_u64 cap_reg;
|
||||
__aligned_u64 ecap_reg;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum iommu_hw_info_type - IOMMU Hardware Info Types
|
||||
* @IOMMU_HW_INFO_TYPE_NONE: Used by the drivers that do not report hardware
|
||||
* info
|
||||
* @IOMMU_HW_INFO_TYPE_INTEL_VTD: Intel VT-d iommu info type
|
||||
*/
|
||||
enum iommu_hw_info_type {
|
||||
IOMMU_HW_INFO_TYPE_NONE,
|
||||
IOMMU_HW_INFO_TYPE_INTEL_VTD,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum iommufd_hw_capabilities
|
||||
* @IOMMU_HW_CAP_DIRTY_TRACKING: IOMMU hardware support for dirty tracking
|
||||
* If available, it means the following APIs
|
||||
* are supported:
|
||||
*
|
||||
* IOMMU_HWPT_GET_DIRTY_BITMAP
|
||||
* IOMMU_HWPT_SET_DIRTY_TRACKING
|
||||
*
|
||||
*/
|
||||
enum iommufd_hw_capabilities {
|
||||
IOMMU_HW_CAP_DIRTY_TRACKING = 1 << 0,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct iommu_hw_info - ioctl(IOMMU_GET_HW_INFO)
|
||||
* @size: sizeof(struct iommu_hw_info)
|
||||
* @flags: Must be 0
|
||||
* @dev_id: The device bound to the iommufd
|
||||
* @data_len: Input the length of a user buffer in bytes. Output the length of
|
||||
* data that kernel supports
|
||||
* @data_uptr: User pointer to a user-space buffer used by the kernel to fill
|
||||
* the iommu type specific hardware information data
|
||||
* @out_data_type: Output the iommu hardware info type as defined in the enum
|
||||
* iommu_hw_info_type.
|
||||
* @out_capabilities: Output the generic iommu capability info type as defined
|
||||
* in the enum iommu_hw_capabilities.
|
||||
* @__reserved: Must be 0
|
||||
*
|
||||
* Query an iommu type specific hardware information data from an iommu behind
|
||||
* a given device that has been bound to iommufd. This hardware info data will
|
||||
* be used to sync capabilities between the virtual iommu and the physical
|
||||
* iommu, e.g. a nested translation setup needs to check the hardware info, so
|
||||
* a guest stage-1 page table can be compatible with the physical iommu.
|
||||
*
|
||||
* To capture an iommu type specific hardware information data, @data_uptr and
|
||||
* its length @data_len must be provided. Trailing bytes will be zeroed if the
|
||||
* user buffer is larger than the data that kernel has. Otherwise, kernel only
|
||||
* fills the buffer using the given length in @data_len. If the ioctl succeeds,
|
||||
* @data_len will be updated to the length that kernel actually supports,
|
||||
* @out_data_type will be filled to decode the data filled in the buffer
|
||||
* pointed by @data_uptr. Input @data_len == zero is allowed.
|
||||
*/
|
||||
struct iommu_hw_info {
|
||||
__u32 size;
|
||||
__u32 flags;
|
||||
__u32 dev_id;
|
||||
__u32 data_len;
|
||||
__aligned_u64 data_uptr;
|
||||
__u32 out_data_type;
|
||||
__u32 __reserved;
|
||||
__aligned_u64 out_capabilities;
|
||||
};
|
||||
#define IOMMU_GET_HW_INFO _IO(IOMMUFD_TYPE, IOMMUFD_CMD_GET_HW_INFO)
|
||||
|
||||
/*
|
||||
* enum iommufd_hwpt_set_dirty_tracking_flags - Flags for steering dirty
|
||||
* tracking
|
||||
* @IOMMU_HWPT_DIRTY_TRACKING_ENABLE: Enable dirty tracking
|
||||
*/
|
||||
enum iommufd_hwpt_set_dirty_tracking_flags {
|
||||
IOMMU_HWPT_DIRTY_TRACKING_ENABLE = 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct iommu_hwpt_set_dirty_tracking - ioctl(IOMMU_HWPT_SET_DIRTY_TRACKING)
|
||||
* @size: sizeof(struct iommu_hwpt_set_dirty_tracking)
|
||||
* @flags: Combination of enum iommufd_hwpt_set_dirty_tracking_flags
|
||||
* @hwpt_id: HW pagetable ID that represents the IOMMU domain
|
||||
* @__reserved: Must be 0
|
||||
*
|
||||
* Toggle dirty tracking on an HW pagetable.
|
||||
*/
|
||||
struct iommu_hwpt_set_dirty_tracking {
|
||||
__u32 size;
|
||||
__u32 flags;
|
||||
__u32 hwpt_id;
|
||||
__u32 __reserved;
|
||||
};
|
||||
#define IOMMU_HWPT_SET_DIRTY_TRACKING _IO(IOMMUFD_TYPE, \
|
||||
IOMMUFD_CMD_HWPT_SET_DIRTY_TRACKING)
|
||||
|
||||
/**
|
||||
* enum iommufd_hwpt_get_dirty_bitmap_flags - Flags for getting dirty bits
|
||||
* @IOMMU_HWPT_GET_DIRTY_BITMAP_NO_CLEAR: Just read the PTEs without clearing
|
||||
* any dirty bits metadata. This flag
|
||||
* can be passed in the expectation
|
||||
* where the next operation is an unmap
|
||||
* of the same IOVA range.
|
||||
*
|
||||
*/
|
||||
enum iommufd_hwpt_get_dirty_bitmap_flags {
|
||||
IOMMU_HWPT_GET_DIRTY_BITMAP_NO_CLEAR = 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct iommu_hwpt_get_dirty_bitmap - ioctl(IOMMU_HWPT_GET_DIRTY_BITMAP)
|
||||
* @size: sizeof(struct iommu_hwpt_get_dirty_bitmap)
|
||||
* @hwpt_id: HW pagetable ID that represents the IOMMU domain
|
||||
* @flags: Combination of enum iommufd_hwpt_get_dirty_bitmap_flags
|
||||
* @__reserved: Must be 0
|
||||
* @iova: base IOVA of the bitmap first bit
|
||||
* @length: IOVA range size
|
||||
* @page_size: page size granularity of each bit in the bitmap
|
||||
* @data: bitmap where to set the dirty bits. The bitmap bits each
|
||||
* represent a page_size which you deviate from an arbitrary iova.
|
||||
*
|
||||
* Checking a given IOVA is dirty:
|
||||
*
|
||||
* data[(iova / page_size) / 64] & (1ULL << ((iova / page_size) % 64))
|
||||
*
|
||||
* Walk the IOMMU pagetables for a given IOVA range to return a bitmap
|
||||
* with the dirty IOVAs. In doing so it will also by default clear any
|
||||
* dirty bit metadata set in the IOPTE.
|
||||
*/
|
||||
struct iommu_hwpt_get_dirty_bitmap {
|
||||
__u32 size;
|
||||
__u32 hwpt_id;
|
||||
__u32 flags;
|
||||
__u32 __reserved;
|
||||
__aligned_u64 iova;
|
||||
__aligned_u64 length;
|
||||
__aligned_u64 page_size;
|
||||
__aligned_u64 data;
|
||||
};
|
||||
#define IOMMU_HWPT_GET_DIRTY_BITMAP _IO(IOMMUFD_TYPE, \
|
||||
IOMMUFD_CMD_HWPT_GET_DIRTY_BITMAP)
|
||||
|
||||
/**
|
||||
* enum iommu_hwpt_invalidate_data_type - IOMMU HWPT Cache Invalidation
|
||||
* Data Type
|
||||
* @IOMMU_HWPT_INVALIDATE_DATA_VTD_S1: Invalidation data for VTD_S1
|
||||
*/
|
||||
enum iommu_hwpt_invalidate_data_type {
|
||||
IOMMU_HWPT_INVALIDATE_DATA_VTD_S1,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum iommu_hwpt_vtd_s1_invalidate_flags - Flags for Intel VT-d
|
||||
* stage-1 cache invalidation
|
||||
* @IOMMU_VTD_INV_FLAGS_LEAF: Indicates whether the invalidation applies
|
||||
* to all-levels page structure cache or just
|
||||
* the leaf PTE cache.
|
||||
*/
|
||||
enum iommu_hwpt_vtd_s1_invalidate_flags {
|
||||
IOMMU_VTD_INV_FLAGS_LEAF = 1 << 0,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct iommu_hwpt_vtd_s1_invalidate - Intel VT-d cache invalidation
|
||||
* (IOMMU_HWPT_INVALIDATE_DATA_VTD_S1)
|
||||
* @addr: The start address of the range to be invalidated. It needs to
|
||||
* be 4KB aligned.
|
||||
* @npages: Number of contiguous 4K pages to be invalidated.
|
||||
* @flags: Combination of enum iommu_hwpt_vtd_s1_invalidate_flags
|
||||
* @__reserved: Must be 0
|
||||
*
|
||||
* The Intel VT-d specific invalidation data for user-managed stage-1 cache
|
||||
* invalidation in nested translation. Userspace uses this structure to
|
||||
* tell the impacted cache scope after modifying the stage-1 page table.
|
||||
*
|
||||
* Invalidating all the caches related to the page table by setting @addr
|
||||
* to be 0 and @npages to be U64_MAX.
|
||||
*
|
||||
* The device TLB will be invalidated automatically if ATS is enabled.
|
||||
*/
|
||||
struct iommu_hwpt_vtd_s1_invalidate {
|
||||
__aligned_u64 addr;
|
||||
__aligned_u64 npages;
|
||||
__u32 flags;
|
||||
__u32 __reserved;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct iommu_hwpt_invalidate - ioctl(IOMMU_HWPT_INVALIDATE)
|
||||
* @size: sizeof(struct iommu_hwpt_invalidate)
|
||||
* @hwpt_id: ID of a nested HWPT for cache invalidation
|
||||
* @data_uptr: User pointer to an array of driver-specific cache invalidation
|
||||
* data.
|
||||
* @data_type: One of enum iommu_hwpt_invalidate_data_type, defining the data
|
||||
* type of all the entries in the invalidation request array. It
|
||||
* should be a type supported by the hwpt pointed by @hwpt_id.
|
||||
* @entry_len: Length (in bytes) of a request entry in the request array
|
||||
* @entry_num: Input the number of cache invalidation requests in the array.
|
||||
* Output the number of requests successfully handled by kernel.
|
||||
* @__reserved: Must be 0.
|
||||
*
|
||||
* Invalidate the iommu cache for user-managed page table. Modifications on a
|
||||
* user-managed page table should be followed by this operation to sync cache.
|
||||
* Each ioctl can support one or more cache invalidation requests in the array
|
||||
* that has a total size of @entry_len * @entry_num.
|
||||
*
|
||||
* An empty invalidation request array by setting @entry_num==0 is allowed, and
|
||||
* @entry_len and @data_uptr would be ignored in this case. This can be used to
|
||||
* check if the given @data_type is supported or not by kernel.
|
||||
*/
|
||||
struct iommu_hwpt_invalidate {
|
||||
__u32 size;
|
||||
__u32 hwpt_id;
|
||||
__aligned_u64 data_uptr;
|
||||
__u32 data_type;
|
||||
__u32 entry_len;
|
||||
__u32 entry_num;
|
||||
__u32 __reserved;
|
||||
};
|
||||
#define IOMMU_HWPT_INVALIDATE _IO(IOMMUFD_TYPE, IOMMUFD_CMD_HWPT_INVALIDATE)
|
||||
#endif
|
||||
99
lib/libc/include/any-linux-any/linux/ioprio.h
vendored
99
lib/libc/include/any-linux-any/linux/ioprio.h
vendored
@ -2,22 +2,23 @@
|
||||
#ifndef _LINUX_IOPRIO_H
|
||||
#define _LINUX_IOPRIO_H
|
||||
|
||||
#include <linux/stddef.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
/*
|
||||
* Gives us 8 prio classes with 13-bits of data for each class
|
||||
*/
|
||||
#define IOPRIO_CLASS_SHIFT 13
|
||||
#define IOPRIO_CLASS_MASK 0x07
|
||||
#define IOPRIO_NR_CLASSES 8
|
||||
#define IOPRIO_CLASS_MASK (IOPRIO_NR_CLASSES - 1)
|
||||
#define IOPRIO_PRIO_MASK ((1UL << IOPRIO_CLASS_SHIFT) - 1)
|
||||
|
||||
#define IOPRIO_PRIO_CLASS(ioprio) \
|
||||
(((ioprio) >> IOPRIO_CLASS_SHIFT) & IOPRIO_CLASS_MASK)
|
||||
#define IOPRIO_PRIO_DATA(ioprio) ((ioprio) & IOPRIO_PRIO_MASK)
|
||||
#define IOPRIO_PRIO_VALUE(class, data) \
|
||||
((((class) & IOPRIO_CLASS_MASK) << IOPRIO_CLASS_SHIFT) | \
|
||||
((data) & IOPRIO_PRIO_MASK))
|
||||
|
||||
/*
|
||||
* These are the io priority groups as implemented by the BFQ and mq-deadline
|
||||
* These are the io priority classes as implemented by the BFQ and mq-deadline
|
||||
* schedulers. RT is the realtime class, it always gets premium service. For
|
||||
* ATA disks supporting NCQ IO priority, RT class IOs will be processed using
|
||||
* high priority NCQ commands. BE is the best-effort scheduling class, the
|
||||
@ -25,18 +26,30 @@
|
||||
* served when no one else is using the disk.
|
||||
*/
|
||||
enum {
|
||||
IOPRIO_CLASS_NONE,
|
||||
IOPRIO_CLASS_RT,
|
||||
IOPRIO_CLASS_BE,
|
||||
IOPRIO_CLASS_IDLE,
|
||||
IOPRIO_CLASS_NONE = 0,
|
||||
IOPRIO_CLASS_RT = 1,
|
||||
IOPRIO_CLASS_BE = 2,
|
||||
IOPRIO_CLASS_IDLE = 3,
|
||||
|
||||
/* Special class to indicate an invalid ioprio value */
|
||||
IOPRIO_CLASS_INVALID = 7,
|
||||
};
|
||||
|
||||
/*
|
||||
* The RT and BE priority classes both support up to 8 priority levels.
|
||||
* The RT and BE priority classes both support up to 8 priority levels that
|
||||
* can be specified using the lower 3-bits of the priority data.
|
||||
*/
|
||||
#define IOPRIO_NR_LEVELS 8
|
||||
#define IOPRIO_LEVEL_NR_BITS 3
|
||||
#define IOPRIO_NR_LEVELS (1 << IOPRIO_LEVEL_NR_BITS)
|
||||
#define IOPRIO_LEVEL_MASK (IOPRIO_NR_LEVELS - 1)
|
||||
#define IOPRIO_PRIO_LEVEL(ioprio) ((ioprio) & IOPRIO_LEVEL_MASK)
|
||||
|
||||
#define IOPRIO_BE_NR IOPRIO_NR_LEVELS
|
||||
|
||||
/*
|
||||
* Possible values for the "which" argument of the ioprio_get() and
|
||||
* ioprio_set() system calls (see "man ioprio_set").
|
||||
*/
|
||||
enum {
|
||||
IOPRIO_WHO_PROCESS = 1,
|
||||
IOPRIO_WHO_PGRP,
|
||||
@ -44,9 +57,71 @@ enum {
|
||||
};
|
||||
|
||||
/*
|
||||
* Fallback BE priority level.
|
||||
* Fallback BE class priority level.
|
||||
*/
|
||||
#define IOPRIO_NORM 4
|
||||
#define IOPRIO_BE_NORM IOPRIO_NORM
|
||||
|
||||
/*
|
||||
* The 10 bits between the priority class and the priority level are used to
|
||||
* optionally define I/O hints for any combination of I/O priority class and
|
||||
* level. Depending on the kernel configuration, I/O scheduler being used and
|
||||
* the target I/O device being used, hints can influence how I/Os are processed
|
||||
* without affecting the I/O scheduling ordering defined by the I/O priority
|
||||
* class and level.
|
||||
*/
|
||||
#define IOPRIO_HINT_SHIFT IOPRIO_LEVEL_NR_BITS
|
||||
#define IOPRIO_HINT_NR_BITS 10
|
||||
#define IOPRIO_NR_HINTS (1 << IOPRIO_HINT_NR_BITS)
|
||||
#define IOPRIO_HINT_MASK (IOPRIO_NR_HINTS - 1)
|
||||
#define IOPRIO_PRIO_HINT(ioprio) \
|
||||
(((ioprio) >> IOPRIO_HINT_SHIFT) & IOPRIO_HINT_MASK)
|
||||
|
||||
/*
|
||||
* I/O hints.
|
||||
*/
|
||||
enum {
|
||||
/* No hint */
|
||||
IOPRIO_HINT_NONE = 0,
|
||||
|
||||
/*
|
||||
* Device command duration limits: indicate to the device a desired
|
||||
* duration limit for the commands that will be used to process an I/O.
|
||||
* These will currently only be effective for SCSI and ATA devices that
|
||||
* support the command duration limits feature. If this feature is
|
||||
* enabled, then the commands issued to the device to process an I/O with
|
||||
* one of these hints set will have the duration limit index (dld field)
|
||||
* set to the value of the hint.
|
||||
*/
|
||||
IOPRIO_HINT_DEV_DURATION_LIMIT_1 = 1,
|
||||
IOPRIO_HINT_DEV_DURATION_LIMIT_2 = 2,
|
||||
IOPRIO_HINT_DEV_DURATION_LIMIT_3 = 3,
|
||||
IOPRIO_HINT_DEV_DURATION_LIMIT_4 = 4,
|
||||
IOPRIO_HINT_DEV_DURATION_LIMIT_5 = 5,
|
||||
IOPRIO_HINT_DEV_DURATION_LIMIT_6 = 6,
|
||||
IOPRIO_HINT_DEV_DURATION_LIMIT_7 = 7,
|
||||
};
|
||||
|
||||
#define IOPRIO_BAD_VALUE(val, max) ((val) < 0 || (val) >= (max))
|
||||
|
||||
/*
|
||||
* Return an I/O priority value based on a class, a level and a hint.
|
||||
*/
|
||||
static __always_inline __u16 ioprio_value(int prioclass, int priolevel,
|
||||
int priohint)
|
||||
{
|
||||
if (IOPRIO_BAD_VALUE(prioclass, IOPRIO_NR_CLASSES) ||
|
||||
IOPRIO_BAD_VALUE(priolevel, IOPRIO_NR_LEVELS) ||
|
||||
IOPRIO_BAD_VALUE(priohint, IOPRIO_NR_HINTS))
|
||||
return IOPRIO_CLASS_INVALID << IOPRIO_CLASS_SHIFT;
|
||||
|
||||
return (prioclass << IOPRIO_CLASS_SHIFT) |
|
||||
(priohint << IOPRIO_HINT_SHIFT) | priolevel;
|
||||
}
|
||||
|
||||
#define IOPRIO_PRIO_VALUE(prioclass, priolevel) \
|
||||
ioprio_value(prioclass, priolevel, IOPRIO_HINT_NONE)
|
||||
#define IOPRIO_PRIO_VALUE_HINT(prioclass, priolevel, priohint) \
|
||||
ioprio_value(prioclass, priolevel, priohint)
|
||||
|
||||
#endif /* _LINUX_IOPRIO_H */
|
||||
3
lib/libc/include/any-linux-any/linux/ipv6.h
vendored
3
lib/libc/include/any-linux-any/linux/ipv6.h
vendored
@ -81,7 +81,7 @@ struct ipv6_opt_hdr {
|
||||
struct rt0_hdr {
|
||||
struct ipv6_rt_hdr rt_hdr;
|
||||
__u32 reserved;
|
||||
struct in6_addr addr[0];
|
||||
struct in6_addr addr[];
|
||||
|
||||
#define rt0_type rt_hdr.type
|
||||
};
|
||||
@ -198,6 +198,7 @@ enum {
|
||||
DEVCONF_IOAM6_ID_WIDE,
|
||||
DEVCONF_NDISC_EVICT_NOCARRIER,
|
||||
DEVCONF_ACCEPT_UNTRACKED_NA,
|
||||
DEVCONF_ACCEPT_RA_MIN_LFT,
|
||||
DEVCONF_MAX
|
||||
};
|
||||
|
||||
|
||||
303
lib/libc/include/any-linux-any/linux/isst_if.h
vendored
303
lib/libc/include/any-linux-any/linux/isst_if.h
vendored
@ -163,10 +163,313 @@ struct isst_if_msr_cmds {
|
||||
struct isst_if_msr_cmd msr_cmd[1];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct isst_core_power - Structure to get/set core_power feature
|
||||
* @get_set: 0: Get, 1: Set
|
||||
* @socket_id: Socket/package id
|
||||
* @power_domain: Power Domain id
|
||||
* @enable: Feature enable status
|
||||
* @priority_type: Priority type for the feature (ordered/proportional)
|
||||
*
|
||||
* Structure to get/set core_power feature state using IOCTL
|
||||
* ISST_IF_CORE_POWER_STATE.
|
||||
*/
|
||||
struct isst_core_power {
|
||||
__u8 get_set;
|
||||
__u8 socket_id;
|
||||
__u8 power_domain_id;
|
||||
__u8 enable;
|
||||
__u8 supported;
|
||||
__u8 priority_type;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct isst_clos_param - Structure to get/set clos praram
|
||||
* @get_set: 0: Get, 1: Set
|
||||
* @socket_id: Socket/package id
|
||||
* @power_domain: Power Domain id
|
||||
* clos: Clos ID for the parameters
|
||||
* min_freq_mhz: Minimum frequency in MHz
|
||||
* max_freq_mhz: Maximum frequency in MHz
|
||||
* prop_prio: Proportional priority from 0-15
|
||||
*
|
||||
* Structure to get/set per clos property using IOCTL
|
||||
* ISST_IF_CLOS_PARAM.
|
||||
*/
|
||||
struct isst_clos_param {
|
||||
__u8 get_set;
|
||||
__u8 socket_id;
|
||||
__u8 power_domain_id;
|
||||
__u8 clos;
|
||||
__u16 min_freq_mhz;
|
||||
__u16 max_freq_mhz;
|
||||
__u8 prop_prio;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct isst_if_clos_assoc - Structure to assign clos to a CPU
|
||||
* @socket_id: Socket/package id
|
||||
* @power_domain: Power Domain id
|
||||
* @logical_cpu: CPU number
|
||||
* @clos: Clos ID to assign to the logical CPU
|
||||
*
|
||||
* Structure to get/set core_power feature.
|
||||
*/
|
||||
struct isst_if_clos_assoc {
|
||||
__u8 socket_id;
|
||||
__u8 power_domain_id;
|
||||
__u16 logical_cpu;
|
||||
__u16 clos;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct isst_if_clos_assoc_cmds - Structure to assign clos to CPUs
|
||||
* @cmd_count: Number of cmds (cpus) in this request
|
||||
* @get_set: Request is for get or set
|
||||
* @punit_cpu_map: Set to 1 if the CPU number is punit numbering not
|
||||
* Linux CPU number
|
||||
*
|
||||
* Structure used to get/set associate CPUs to clos using IOCTL
|
||||
* ISST_IF_CLOS_ASSOC.
|
||||
*/
|
||||
struct isst_if_clos_assoc_cmds {
|
||||
__u16 cmd_count;
|
||||
__u16 get_set;
|
||||
__u16 punit_cpu_map;
|
||||
struct isst_if_clos_assoc assoc_info[1];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct isst_tpmi_instance_count - Get number of TPMI instances per socket
|
||||
* @socket_id: Socket/package id
|
||||
* @count: Number of instances
|
||||
* @valid_mask: Mask of instances as there can be holes
|
||||
*
|
||||
* Structure used to get TPMI instances information using
|
||||
* IOCTL ISST_IF_COUNT_TPMI_INSTANCES.
|
||||
*/
|
||||
struct isst_tpmi_instance_count {
|
||||
__u8 socket_id;
|
||||
__u8 count;
|
||||
__u16 valid_mask;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct isst_perf_level_info - Structure to get information on SST-PP levels
|
||||
* @socket_id: Socket/package id
|
||||
* @power_domain: Power Domain id
|
||||
* @logical_cpu: CPU number
|
||||
* @clos: Clos ID to assign to the logical CPU
|
||||
* @max_level: Maximum performance level supported by the platform
|
||||
* @feature_rev: The feature revision for SST-PP supported by the platform
|
||||
* @level_mask: Mask of supported performance levels
|
||||
* @current_level: Current performance level
|
||||
* @feature_state: SST-BF and SST-TF (enabled/disabled) status at current level
|
||||
* @locked: SST-PP performance level change is locked/unlocked
|
||||
* @enabled: SST-PP feature is enabled or not
|
||||
* @sst-tf_support: SST-TF support status at this level
|
||||
* @sst-bf_support: SST-BF support status at this level
|
||||
*
|
||||
* Structure to get SST-PP details using IOCTL ISST_IF_PERF_LEVELS.
|
||||
*/
|
||||
struct isst_perf_level_info {
|
||||
__u8 socket_id;
|
||||
__u8 power_domain_id;
|
||||
__u8 max_level;
|
||||
__u8 feature_rev;
|
||||
__u8 level_mask;
|
||||
__u8 current_level;
|
||||
__u8 feature_state;
|
||||
__u8 locked;
|
||||
__u8 enabled;
|
||||
__u8 sst_tf_support;
|
||||
__u8 sst_bf_support;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct isst_perf_level_control - Structure to set SST-PP level
|
||||
* @socket_id: Socket/package id
|
||||
* @power_domain: Power Domain id
|
||||
* @level: level to set
|
||||
*
|
||||
* Structure used change SST-PP level using IOCTL ISST_IF_PERF_SET_LEVEL.
|
||||
*/
|
||||
struct isst_perf_level_control {
|
||||
__u8 socket_id;
|
||||
__u8 power_domain_id;
|
||||
__u8 level;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct isst_perf_feature_control - Structure to activate SST-BF/SST-TF
|
||||
* @socket_id: Socket/package id
|
||||
* @power_domain: Power Domain id
|
||||
* @feature: bit 0 = SST-BF state, bit 1 = SST-TF state
|
||||
*
|
||||
* Structure used to enable SST-BF/SST-TF using IOCTL ISST_IF_PERF_SET_FEATURE.
|
||||
*/
|
||||
struct isst_perf_feature_control {
|
||||
__u8 socket_id;
|
||||
__u8 power_domain_id;
|
||||
__u8 feature;
|
||||
};
|
||||
|
||||
#define TRL_MAX_BUCKETS 8
|
||||
#define TRL_MAX_LEVELS 6
|
||||
|
||||
/**
|
||||
* struct isst_perf_level_data_info - Structure to get SST-PP level details
|
||||
* @socket_id: Socket/package id
|
||||
* @power_domain: Power Domain id
|
||||
* @level: SST-PP level for which caller wants to get information
|
||||
* @tdp_ratio: TDP Ratio
|
||||
* @base_freq_mhz: Base frequency in MHz
|
||||
* @base_freq_avx2_mhz: AVX2 Base frequency in MHz
|
||||
* @base_freq_avx512_mhz: AVX512 base frequency in MHz
|
||||
* @base_freq_amx_mhz: AMX base frequency in MHz
|
||||
* @thermal_design_power_w: Thermal design (TDP) power
|
||||
* @tjunction_max_c: Max junction temperature
|
||||
* @max_memory_freq_mhz: Max memory frequency in MHz
|
||||
* @cooling_type: Type of cooling is used
|
||||
* @p0_freq_mhz: core maximum frequency
|
||||
* @p1_freq_mhz: Core TDP frequency
|
||||
* @pn_freq_mhz: Core maximum efficiency frequency
|
||||
* @pm_freq_mhz: Core minimum frequency
|
||||
* @p0_fabric_freq_mhz: Fabric (Uncore) maximum frequency
|
||||
* @p1_fabric_freq_mhz: Fabric (Uncore) TDP frequency
|
||||
* @pn_fabric_freq_mhz: Fabric (Uncore) minimum efficiency frequency
|
||||
* @pm_fabric_freq_mhz: Fabric (Uncore) minimum frequency
|
||||
* @max_buckets: Maximum trl buckets
|
||||
* @max_trl_levels: Maximum trl levels
|
||||
* @bucket_core_counts[TRL_MAX_BUCKETS]: Number of cores per bucket
|
||||
* @trl_freq_mhz[TRL_MAX_LEVELS][TRL_MAX_BUCKETS]: maximum frequency
|
||||
* for a bucket and trl level
|
||||
*
|
||||
* Structure used to get information on frequencies and TDP for a SST-PP
|
||||
* level using ISST_IF_GET_PERF_LEVEL_INFO.
|
||||
*/
|
||||
struct isst_perf_level_data_info {
|
||||
__u8 socket_id;
|
||||
__u8 power_domain_id;
|
||||
__u16 level;
|
||||
__u16 tdp_ratio;
|
||||
__u16 base_freq_mhz;
|
||||
__u16 base_freq_avx2_mhz;
|
||||
__u16 base_freq_avx512_mhz;
|
||||
__u16 base_freq_amx_mhz;
|
||||
__u16 thermal_design_power_w;
|
||||
__u16 tjunction_max_c;
|
||||
__u16 max_memory_freq_mhz;
|
||||
__u16 cooling_type;
|
||||
__u16 p0_freq_mhz;
|
||||
__u16 p1_freq_mhz;
|
||||
__u16 pn_freq_mhz;
|
||||
__u16 pm_freq_mhz;
|
||||
__u16 p0_fabric_freq_mhz;
|
||||
__u16 p1_fabric_freq_mhz;
|
||||
__u16 pn_fabric_freq_mhz;
|
||||
__u16 pm_fabric_freq_mhz;
|
||||
__u16 max_buckets;
|
||||
__u16 max_trl_levels;
|
||||
__u16 bucket_core_counts[TRL_MAX_BUCKETS];
|
||||
__u16 trl_freq_mhz[TRL_MAX_LEVELS][TRL_MAX_BUCKETS];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct isst_perf_level_cpu_mask - Structure to get SST-PP level CPU mask
|
||||
* @socket_id: Socket/package id
|
||||
* @power_domain: Power Domain id
|
||||
* @level: SST-PP level for which caller wants to get information
|
||||
* @punit_cpu_map: Set to 1 if the CPU number is punit numbering not
|
||||
* Linux CPU number. If 0 CPU buffer is copied to user space
|
||||
* supplied cpu_buffer of size cpu_buffer_size. Punit
|
||||
* cpu mask is copied to "mask" field.
|
||||
* @mask: cpu mask for this PP level (punit CPU numbering)
|
||||
* @cpu_buffer_size: size of cpu_buffer also used to return the copied CPU
|
||||
* buffer size.
|
||||
* @cpu_buffer: Buffer to copy CPU mask when punit_cpu_map is 0
|
||||
*
|
||||
* Structure used to get cpumask for a SST-PP level using
|
||||
* IOCTL ISST_IF_GET_PERF_LEVEL_CPU_MASK. Also used to get CPU mask for
|
||||
* IOCTL ISST_IF_GET_BASE_FREQ_CPU_MASK for SST-BF.
|
||||
*/
|
||||
struct isst_perf_level_cpu_mask {
|
||||
__u8 socket_id;
|
||||
__u8 power_domain_id;
|
||||
__u8 level;
|
||||
__u8 punit_cpu_map;
|
||||
__u64 mask;
|
||||
__u16 cpu_buffer_size;
|
||||
__s8 cpu_buffer[1];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct isst_base_freq_info - Structure to get SST-BF frequencies
|
||||
* @socket_id: Socket/package id
|
||||
* @power_domain: Power Domain id
|
||||
* @level: SST-PP level for which caller wants to get information
|
||||
* @high_base_freq_mhz: High priority CPU base frequency
|
||||
* @low_base_freq_mhz: Low priority CPU base frequency
|
||||
* @tjunction_max_c: Max junction temperature
|
||||
* @thermal_design_power_w: Thermal design power in watts
|
||||
*
|
||||
* Structure used to get SST-BF information using
|
||||
* IOCTL ISST_IF_GET_BASE_FREQ_INFO.
|
||||
*/
|
||||
struct isst_base_freq_info {
|
||||
__u8 socket_id;
|
||||
__u8 power_domain_id;
|
||||
__u16 level;
|
||||
__u16 high_base_freq_mhz;
|
||||
__u16 low_base_freq_mhz;
|
||||
__u16 tjunction_max_c;
|
||||
__u16 thermal_design_power_w;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct isst_turbo_freq_info - Structure to get SST-TF frequencies
|
||||
* @socket_id: Socket/package id
|
||||
* @power_domain: Power Domain id
|
||||
* @level: SST-PP level for which caller wants to get information
|
||||
* @max_clip_freqs: Maximum number of low priority core clipping frequencies
|
||||
* @lp_clip_freq_mhz: Clip frequencies per trl level
|
||||
* @bucket_core_counts: Maximum number of cores for a bucket
|
||||
* @trl_freq_mhz: Frequencies per trl level for each bucket
|
||||
*
|
||||
* Structure used to get SST-TF information using
|
||||
* IOCTL ISST_IF_GET_TURBO_FREQ_INFO.
|
||||
*/
|
||||
struct isst_turbo_freq_info {
|
||||
__u8 socket_id;
|
||||
__u8 power_domain_id;
|
||||
__u16 level;
|
||||
__u16 max_clip_freqs;
|
||||
__u16 max_buckets;
|
||||
__u16 max_trl_levels;
|
||||
__u16 lp_clip_freq_mhz[TRL_MAX_LEVELS];
|
||||
__u16 bucket_core_counts[TRL_MAX_BUCKETS];
|
||||
__u16 trl_freq_mhz[TRL_MAX_LEVELS][TRL_MAX_BUCKETS];
|
||||
};
|
||||
|
||||
#define ISST_IF_MAGIC 0xFE
|
||||
#define ISST_IF_GET_PLATFORM_INFO _IOR(ISST_IF_MAGIC, 0, struct isst_if_platform_info *)
|
||||
#define ISST_IF_GET_PHY_ID _IOWR(ISST_IF_MAGIC, 1, struct isst_if_cpu_map *)
|
||||
#define ISST_IF_IO_CMD _IOW(ISST_IF_MAGIC, 2, struct isst_if_io_regs *)
|
||||
#define ISST_IF_MBOX_COMMAND _IOWR(ISST_IF_MAGIC, 3, struct isst_if_mbox_cmds *)
|
||||
#define ISST_IF_MSR_COMMAND _IOWR(ISST_IF_MAGIC, 4, struct isst_if_msr_cmds *)
|
||||
|
||||
#define ISST_IF_COUNT_TPMI_INSTANCES _IOR(ISST_IF_MAGIC, 5, struct isst_tpmi_instance_count *)
|
||||
#define ISST_IF_CORE_POWER_STATE _IOWR(ISST_IF_MAGIC, 6, struct isst_core_power *)
|
||||
#define ISST_IF_CLOS_PARAM _IOWR(ISST_IF_MAGIC, 7, struct isst_clos_param *)
|
||||
#define ISST_IF_CLOS_ASSOC _IOWR(ISST_IF_MAGIC, 8, struct isst_if_clos_assoc_cmds *)
|
||||
|
||||
#define ISST_IF_PERF_LEVELS _IOWR(ISST_IF_MAGIC, 9, struct isst_perf_level_info *)
|
||||
#define ISST_IF_PERF_SET_LEVEL _IOW(ISST_IF_MAGIC, 10, struct isst_perf_level_control *)
|
||||
#define ISST_IF_PERF_SET_FEATURE _IOW(ISST_IF_MAGIC, 11, struct isst_perf_feature_control *)
|
||||
#define ISST_IF_GET_PERF_LEVEL_INFO _IOR(ISST_IF_MAGIC, 12, struct isst_perf_level_data_info *)
|
||||
#define ISST_IF_GET_PERF_LEVEL_CPU_MASK _IOR(ISST_IF_MAGIC, 13, struct isst_perf_level_cpu_mask *)
|
||||
#define ISST_IF_GET_BASE_FREQ_INFO _IOR(ISST_IF_MAGIC, 14, struct isst_base_freq_info *)
|
||||
#define ISST_IF_GET_BASE_FREQ_CPU_MASK _IOR(ISST_IF_MAGIC, 15, struct isst_perf_level_cpu_mask *)
|
||||
#define ISST_IF_GET_TURBO_FREQ_INFO _IOR(ISST_IF_MAGIC, 16, struct isst_turbo_freq_info *)
|
||||
|
||||
#endif
|
||||
3
lib/libc/include/any-linux-any/linux/kexec.h
vendored
3
lib/libc/include/any-linux-any/linux/kexec.h
vendored
@ -12,6 +12,8 @@
|
||||
/* kexec flags for different usage scenarios */
|
||||
#define KEXEC_ON_CRASH 0x00000001
|
||||
#define KEXEC_PRESERVE_CONTEXT 0x00000002
|
||||
#define KEXEC_UPDATE_ELFCOREHDR 0x00000004
|
||||
#define KEXEC_CRASH_HOTPLUG_SUPPORT 0x00000008
|
||||
#define KEXEC_ARCH_MASK 0xffff0000
|
||||
|
||||
/*
|
||||
@ -24,6 +26,7 @@
|
||||
#define KEXEC_FILE_UNLOAD 0x00000001
|
||||
#define KEXEC_FILE_ON_CRASH 0x00000002
|
||||
#define KEXEC_FILE_NO_INITRAMFS 0x00000004
|
||||
#define KEXEC_FILE_DEBUG 0x00000008
|
||||
|
||||
/* These values match the ELF architecture values.
|
||||
* Unless there is a good reason that should continue to be the case.
|
||||
|
||||
707
lib/libc/include/any-linux-any/linux/kfd_ioctl.h
vendored
707
lib/libc/include/any-linux-any/linux/kfd_ioctl.h
vendored
@ -37,9 +37,13 @@
|
||||
* - 1.9 - Add available memory ioctl
|
||||
* - 1.10 - Add SMI profiler event log
|
||||
* - 1.11 - Add unified memory for ctx save/restore area
|
||||
* - 1.12 - Add DMA buf export ioctl
|
||||
* - 1.13 - Add debugger API
|
||||
* - 1.14 - Update kfd_event_data
|
||||
* - 1.15 - Enable managing mappings in compute VMs with GEM_VA ioctl
|
||||
*/
|
||||
#define KFD_IOCTL_MAJOR_VERSION 1
|
||||
#define KFD_IOCTL_MINOR_VERSION 11
|
||||
#define KFD_IOCTL_MINOR_VERSION 15
|
||||
|
||||
struct kfd_ioctl_get_version_args {
|
||||
__u32 major_version; /* from KFD */
|
||||
@ -109,6 +113,32 @@ struct kfd_ioctl_get_available_memory_args {
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
struct kfd_dbg_device_info_entry {
|
||||
__u64 exception_status;
|
||||
__u64 lds_base;
|
||||
__u64 lds_limit;
|
||||
__u64 scratch_base;
|
||||
__u64 scratch_limit;
|
||||
__u64 gpuvm_base;
|
||||
__u64 gpuvm_limit;
|
||||
__u32 gpu_id;
|
||||
__u32 location_id;
|
||||
__u32 vendor_id;
|
||||
__u32 device_id;
|
||||
__u32 revision_id;
|
||||
__u32 subsystem_vendor_id;
|
||||
__u32 subsystem_device_id;
|
||||
__u32 fw_version;
|
||||
__u32 gfx_target_version;
|
||||
__u32 simd_count;
|
||||
__u32 max_waves_per_simd;
|
||||
__u32 array_count;
|
||||
__u32 simd_arrays_per_engine;
|
||||
__u32 num_xcc;
|
||||
__u32 capability;
|
||||
__u32 debug_prop;
|
||||
};
|
||||
|
||||
/* For kfd_ioctl_set_memory_policy_args.default_policy and alternate_policy */
|
||||
#define KFD_IOC_CACHE_POLICY_COHERENT 0
|
||||
#define KFD_IOC_CACHE_POLICY_NONCOHERENT 1
|
||||
@ -292,12 +322,20 @@ struct kfd_hsa_hw_exception_data {
|
||||
__u32 gpu_id;
|
||||
};
|
||||
|
||||
/* hsa signal event data */
|
||||
struct kfd_hsa_signal_event_data {
|
||||
__u64 last_event_age; /* to and from KFD */
|
||||
};
|
||||
|
||||
/* Event data */
|
||||
struct kfd_event_data {
|
||||
union {
|
||||
/* From KFD */
|
||||
struct kfd_hsa_memory_exception_data memory_exception_data;
|
||||
struct kfd_hsa_hw_exception_data hw_exception_data;
|
||||
}; /* From KFD */
|
||||
/* To and From KFD */
|
||||
struct kfd_hsa_signal_event_data signal_event_data;
|
||||
};
|
||||
__u64 kfd_event_data_ext; /* pointer to an extension structure
|
||||
for future exception types */
|
||||
__u32 event_id; /* to KFD */
|
||||
@ -368,6 +406,7 @@ struct kfd_ioctl_acquire_vm_args {
|
||||
#define KFD_IOC_ALLOC_MEM_FLAGS_AQL_QUEUE_MEM (1 << 27)
|
||||
#define KFD_IOC_ALLOC_MEM_FLAGS_COHERENT (1 << 26)
|
||||
#define KFD_IOC_ALLOC_MEM_FLAGS_UNCACHED (1 << 25)
|
||||
#define KFD_IOC_ALLOC_MEM_FLAGS_EXT_COHERENT (1 << 24)
|
||||
|
||||
/* Allocate memory for later SVM (shared virtual memory) mapping.
|
||||
*
|
||||
@ -463,6 +502,12 @@ struct kfd_ioctl_import_dmabuf_args {
|
||||
__u32 dmabuf_fd; /* to KFD */
|
||||
};
|
||||
|
||||
struct kfd_ioctl_export_dmabuf_args {
|
||||
__u64 handle; /* to KFD */
|
||||
__u32 flags; /* to KFD */
|
||||
__u32 dmabuf_fd; /* from KFD */
|
||||
};
|
||||
|
||||
/*
|
||||
* KFD SMI(System Management Interface) events
|
||||
*/
|
||||
@ -616,6 +661,8 @@ enum kfd_mmio_remap {
|
||||
#define KFD_IOCTL_SVM_FLAG_GPU_READ_MOSTLY 0x00000020
|
||||
/* Keep GPU memory mapping always valid as if XNACK is disable */
|
||||
#define KFD_IOCTL_SVM_FLAG_GPU_ALWAYS_MAPPED 0x00000040
|
||||
/* Fine grained coherency between all devices using device-scope atomics */
|
||||
#define KFD_IOCTL_SVM_FLAG_EXT_COHERENT 0x00000080
|
||||
|
||||
/**
|
||||
* kfd_ioctl_svm_op - SVM ioctl operations
|
||||
@ -766,6 +813,651 @@ struct kfd_ioctl_set_xnack_mode_args {
|
||||
__s32 xnack_enabled;
|
||||
};
|
||||
|
||||
/* Wave launch override modes */
|
||||
enum kfd_dbg_trap_override_mode {
|
||||
KFD_DBG_TRAP_OVERRIDE_OR = 0,
|
||||
KFD_DBG_TRAP_OVERRIDE_REPLACE = 1
|
||||
};
|
||||
|
||||
/* Wave launch overrides */
|
||||
enum kfd_dbg_trap_mask {
|
||||
KFD_DBG_TRAP_MASK_FP_INVALID = 1,
|
||||
KFD_DBG_TRAP_MASK_FP_INPUT_DENORMAL = 2,
|
||||
KFD_DBG_TRAP_MASK_FP_DIVIDE_BY_ZERO = 4,
|
||||
KFD_DBG_TRAP_MASK_FP_OVERFLOW = 8,
|
||||
KFD_DBG_TRAP_MASK_FP_UNDERFLOW = 16,
|
||||
KFD_DBG_TRAP_MASK_FP_INEXACT = 32,
|
||||
KFD_DBG_TRAP_MASK_INT_DIVIDE_BY_ZERO = 64,
|
||||
KFD_DBG_TRAP_MASK_DBG_ADDRESS_WATCH = 128,
|
||||
KFD_DBG_TRAP_MASK_DBG_MEMORY_VIOLATION = 256,
|
||||
KFD_DBG_TRAP_MASK_TRAP_ON_WAVE_START = (1 << 30),
|
||||
KFD_DBG_TRAP_MASK_TRAP_ON_WAVE_END = (1 << 31)
|
||||
};
|
||||
|
||||
/* Wave launch modes */
|
||||
enum kfd_dbg_trap_wave_launch_mode {
|
||||
KFD_DBG_TRAP_WAVE_LAUNCH_MODE_NORMAL = 0,
|
||||
KFD_DBG_TRAP_WAVE_LAUNCH_MODE_HALT = 1,
|
||||
KFD_DBG_TRAP_WAVE_LAUNCH_MODE_DEBUG = 3
|
||||
};
|
||||
|
||||
/* Address watch modes */
|
||||
enum kfd_dbg_trap_address_watch_mode {
|
||||
KFD_DBG_TRAP_ADDRESS_WATCH_MODE_READ = 0,
|
||||
KFD_DBG_TRAP_ADDRESS_WATCH_MODE_NONREAD = 1,
|
||||
KFD_DBG_TRAP_ADDRESS_WATCH_MODE_ATOMIC = 2,
|
||||
KFD_DBG_TRAP_ADDRESS_WATCH_MODE_ALL = 3
|
||||
};
|
||||
|
||||
/* Additional wave settings */
|
||||
enum kfd_dbg_trap_flags {
|
||||
KFD_DBG_TRAP_FLAG_SINGLE_MEM_OP = 1,
|
||||
};
|
||||
|
||||
/* Trap exceptions */
|
||||
enum kfd_dbg_trap_exception_code {
|
||||
EC_NONE = 0,
|
||||
/* per queue */
|
||||
EC_QUEUE_WAVE_ABORT = 1,
|
||||
EC_QUEUE_WAVE_TRAP = 2,
|
||||
EC_QUEUE_WAVE_MATH_ERROR = 3,
|
||||
EC_QUEUE_WAVE_ILLEGAL_INSTRUCTION = 4,
|
||||
EC_QUEUE_WAVE_MEMORY_VIOLATION = 5,
|
||||
EC_QUEUE_WAVE_APERTURE_VIOLATION = 6,
|
||||
EC_QUEUE_PACKET_DISPATCH_DIM_INVALID = 16,
|
||||
EC_QUEUE_PACKET_DISPATCH_GROUP_SEGMENT_SIZE_INVALID = 17,
|
||||
EC_QUEUE_PACKET_DISPATCH_CODE_INVALID = 18,
|
||||
EC_QUEUE_PACKET_RESERVED = 19,
|
||||
EC_QUEUE_PACKET_UNSUPPORTED = 20,
|
||||
EC_QUEUE_PACKET_DISPATCH_WORK_GROUP_SIZE_INVALID = 21,
|
||||
EC_QUEUE_PACKET_DISPATCH_REGISTER_INVALID = 22,
|
||||
EC_QUEUE_PACKET_VENDOR_UNSUPPORTED = 23,
|
||||
EC_QUEUE_PREEMPTION_ERROR = 30,
|
||||
EC_QUEUE_NEW = 31,
|
||||
/* per device */
|
||||
EC_DEVICE_QUEUE_DELETE = 32,
|
||||
EC_DEVICE_MEMORY_VIOLATION = 33,
|
||||
EC_DEVICE_RAS_ERROR = 34,
|
||||
EC_DEVICE_FATAL_HALT = 35,
|
||||
EC_DEVICE_NEW = 36,
|
||||
/* per process */
|
||||
EC_PROCESS_RUNTIME = 48,
|
||||
EC_PROCESS_DEVICE_REMOVE = 49,
|
||||
EC_MAX
|
||||
};
|
||||
|
||||
/* Mask generated by ecode in kfd_dbg_trap_exception_code */
|
||||
#define KFD_EC_MASK(ecode) (1ULL << (ecode - 1))
|
||||
|
||||
/* Masks for exception code type checks below */
|
||||
#define KFD_EC_MASK_QUEUE (KFD_EC_MASK(EC_QUEUE_WAVE_ABORT) | \
|
||||
KFD_EC_MASK(EC_QUEUE_WAVE_TRAP) | \
|
||||
KFD_EC_MASK(EC_QUEUE_WAVE_MATH_ERROR) | \
|
||||
KFD_EC_MASK(EC_QUEUE_WAVE_ILLEGAL_INSTRUCTION) | \
|
||||
KFD_EC_MASK(EC_QUEUE_WAVE_MEMORY_VIOLATION) | \
|
||||
KFD_EC_MASK(EC_QUEUE_WAVE_APERTURE_VIOLATION) | \
|
||||
KFD_EC_MASK(EC_QUEUE_PACKET_DISPATCH_DIM_INVALID) | \
|
||||
KFD_EC_MASK(EC_QUEUE_PACKET_DISPATCH_GROUP_SEGMENT_SIZE_INVALID) | \
|
||||
KFD_EC_MASK(EC_QUEUE_PACKET_DISPATCH_CODE_INVALID) | \
|
||||
KFD_EC_MASK(EC_QUEUE_PACKET_RESERVED) | \
|
||||
KFD_EC_MASK(EC_QUEUE_PACKET_UNSUPPORTED) | \
|
||||
KFD_EC_MASK(EC_QUEUE_PACKET_DISPATCH_WORK_GROUP_SIZE_INVALID) | \
|
||||
KFD_EC_MASK(EC_QUEUE_PACKET_DISPATCH_REGISTER_INVALID) | \
|
||||
KFD_EC_MASK(EC_QUEUE_PACKET_VENDOR_UNSUPPORTED) | \
|
||||
KFD_EC_MASK(EC_QUEUE_PREEMPTION_ERROR) | \
|
||||
KFD_EC_MASK(EC_QUEUE_NEW))
|
||||
#define KFD_EC_MASK_DEVICE (KFD_EC_MASK(EC_DEVICE_QUEUE_DELETE) | \
|
||||
KFD_EC_MASK(EC_DEVICE_RAS_ERROR) | \
|
||||
KFD_EC_MASK(EC_DEVICE_FATAL_HALT) | \
|
||||
KFD_EC_MASK(EC_DEVICE_MEMORY_VIOLATION) | \
|
||||
KFD_EC_MASK(EC_DEVICE_NEW))
|
||||
#define KFD_EC_MASK_PROCESS (KFD_EC_MASK(EC_PROCESS_RUNTIME) | \
|
||||
KFD_EC_MASK(EC_PROCESS_DEVICE_REMOVE))
|
||||
#define KFD_EC_MASK_PACKET (KFD_EC_MASK(EC_QUEUE_PACKET_DISPATCH_DIM_INVALID) | \
|
||||
KFD_EC_MASK(EC_QUEUE_PACKET_DISPATCH_GROUP_SEGMENT_SIZE_INVALID) | \
|
||||
KFD_EC_MASK(EC_QUEUE_PACKET_DISPATCH_CODE_INVALID) | \
|
||||
KFD_EC_MASK(EC_QUEUE_PACKET_RESERVED) | \
|
||||
KFD_EC_MASK(EC_QUEUE_PACKET_UNSUPPORTED) | \
|
||||
KFD_EC_MASK(EC_QUEUE_PACKET_DISPATCH_WORK_GROUP_SIZE_INVALID) | \
|
||||
KFD_EC_MASK(EC_QUEUE_PACKET_DISPATCH_REGISTER_INVALID) | \
|
||||
KFD_EC_MASK(EC_QUEUE_PACKET_VENDOR_UNSUPPORTED))
|
||||
|
||||
/* Checks for exception code types for KFD search */
|
||||
#define KFD_DBG_EC_IS_VALID(ecode) (ecode > EC_NONE && ecode < EC_MAX)
|
||||
#define KFD_DBG_EC_TYPE_IS_QUEUE(ecode) \
|
||||
(KFD_DBG_EC_IS_VALID(ecode) && !!(KFD_EC_MASK(ecode) & KFD_EC_MASK_QUEUE))
|
||||
#define KFD_DBG_EC_TYPE_IS_DEVICE(ecode) \
|
||||
(KFD_DBG_EC_IS_VALID(ecode) && !!(KFD_EC_MASK(ecode) & KFD_EC_MASK_DEVICE))
|
||||
#define KFD_DBG_EC_TYPE_IS_PROCESS(ecode) \
|
||||
(KFD_DBG_EC_IS_VALID(ecode) && !!(KFD_EC_MASK(ecode) & KFD_EC_MASK_PROCESS))
|
||||
#define KFD_DBG_EC_TYPE_IS_PACKET(ecode) \
|
||||
(KFD_DBG_EC_IS_VALID(ecode) && !!(KFD_EC_MASK(ecode) & KFD_EC_MASK_PACKET))
|
||||
|
||||
|
||||
/* Runtime enable states */
|
||||
enum kfd_dbg_runtime_state {
|
||||
DEBUG_RUNTIME_STATE_DISABLED = 0,
|
||||
DEBUG_RUNTIME_STATE_ENABLED = 1,
|
||||
DEBUG_RUNTIME_STATE_ENABLED_BUSY = 2,
|
||||
DEBUG_RUNTIME_STATE_ENABLED_ERROR = 3
|
||||
};
|
||||
|
||||
/* Runtime enable status */
|
||||
struct kfd_runtime_info {
|
||||
__u64 r_debug;
|
||||
__u32 runtime_state;
|
||||
__u32 ttmp_setup;
|
||||
};
|
||||
|
||||
/* Enable modes for runtime enable */
|
||||
#define KFD_RUNTIME_ENABLE_MODE_ENABLE_MASK 1
|
||||
#define KFD_RUNTIME_ENABLE_MODE_TTMP_SAVE_MASK 2
|
||||
|
||||
/**
|
||||
* kfd_ioctl_runtime_enable_args - Arguments for runtime enable
|
||||
*
|
||||
* Coordinates debug exception signalling and debug device enablement with runtime.
|
||||
*
|
||||
* @r_debug - pointer to user struct for sharing information between ROCr and the debuggger
|
||||
* @mode_mask - mask to set mode
|
||||
* KFD_RUNTIME_ENABLE_MODE_ENABLE_MASK - enable runtime for debugging, otherwise disable
|
||||
* KFD_RUNTIME_ENABLE_MODE_TTMP_SAVE_MASK - enable trap temporary setup (ignore on disable)
|
||||
* @capabilities_mask - mask to notify runtime on what KFD supports
|
||||
*
|
||||
* Return - 0 on SUCCESS.
|
||||
* - EBUSY if runtime enable call already pending.
|
||||
* - EEXIST if user queues already active prior to call.
|
||||
* If process is debug enabled, runtime enable will enable debug devices and
|
||||
* wait for debugger process to send runtime exception EC_PROCESS_RUNTIME
|
||||
* to unblock - see kfd_ioctl_dbg_trap_args.
|
||||
*
|
||||
*/
|
||||
struct kfd_ioctl_runtime_enable_args {
|
||||
__u64 r_debug;
|
||||
__u32 mode_mask;
|
||||
__u32 capabilities_mask;
|
||||
};
|
||||
|
||||
/* Queue information */
|
||||
struct kfd_queue_snapshot_entry {
|
||||
__u64 exception_status;
|
||||
__u64 ring_base_address;
|
||||
__u64 write_pointer_address;
|
||||
__u64 read_pointer_address;
|
||||
__u64 ctx_save_restore_address;
|
||||
__u32 queue_id;
|
||||
__u32 gpu_id;
|
||||
__u32 ring_size;
|
||||
__u32 queue_type;
|
||||
__u32 ctx_save_restore_area_size;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
/* Queue status return for suspend/resume */
|
||||
#define KFD_DBG_QUEUE_ERROR_BIT 30
|
||||
#define KFD_DBG_QUEUE_INVALID_BIT 31
|
||||
#define KFD_DBG_QUEUE_ERROR_MASK (1 << KFD_DBG_QUEUE_ERROR_BIT)
|
||||
#define KFD_DBG_QUEUE_INVALID_MASK (1 << KFD_DBG_QUEUE_INVALID_BIT)
|
||||
|
||||
/* Context save area header information */
|
||||
struct kfd_context_save_area_header {
|
||||
struct {
|
||||
__u32 control_stack_offset;
|
||||
__u32 control_stack_size;
|
||||
__u32 wave_state_offset;
|
||||
__u32 wave_state_size;
|
||||
} wave_state;
|
||||
__u32 debug_offset;
|
||||
__u32 debug_size;
|
||||
__u64 err_payload_addr;
|
||||
__u32 err_event_id;
|
||||
__u32 reserved1;
|
||||
};
|
||||
|
||||
/*
|
||||
* Debug operations
|
||||
*
|
||||
* For specifics on usage and return values, see documentation per operation
|
||||
* below. Otherwise, generic error returns apply:
|
||||
* - ESRCH if the process to debug does not exist.
|
||||
*
|
||||
* - EINVAL (with KFD_IOC_DBG_TRAP_ENABLE exempt) if operation
|
||||
* KFD_IOC_DBG_TRAP_ENABLE has not succeeded prior.
|
||||
* Also returns this error if GPU hardware scheduling is not supported.
|
||||
*
|
||||
* - EPERM (with KFD_IOC_DBG_TRAP_DISABLE exempt) if target process is not
|
||||
* PTRACE_ATTACHED. KFD_IOC_DBG_TRAP_DISABLE is exempt to allow
|
||||
* clean up of debug mode as long as process is debug enabled.
|
||||
*
|
||||
* - EACCES if any DBG_HW_OP (debug hardware operation) is requested when
|
||||
* AMDKFD_IOC_RUNTIME_ENABLE has not succeeded prior.
|
||||
*
|
||||
* - ENODEV if any GPU does not support debugging on a DBG_HW_OP call.
|
||||
*
|
||||
* - Other errors may be returned when a DBG_HW_OP occurs while the GPU
|
||||
* is in a fatal state.
|
||||
*
|
||||
*/
|
||||
enum kfd_dbg_trap_operations {
|
||||
KFD_IOC_DBG_TRAP_ENABLE = 0,
|
||||
KFD_IOC_DBG_TRAP_DISABLE = 1,
|
||||
KFD_IOC_DBG_TRAP_SEND_RUNTIME_EVENT = 2,
|
||||
KFD_IOC_DBG_TRAP_SET_EXCEPTIONS_ENABLED = 3,
|
||||
KFD_IOC_DBG_TRAP_SET_WAVE_LAUNCH_OVERRIDE = 4, /* DBG_HW_OP */
|
||||
KFD_IOC_DBG_TRAP_SET_WAVE_LAUNCH_MODE = 5, /* DBG_HW_OP */
|
||||
KFD_IOC_DBG_TRAP_SUSPEND_QUEUES = 6, /* DBG_HW_OP */
|
||||
KFD_IOC_DBG_TRAP_RESUME_QUEUES = 7, /* DBG_HW_OP */
|
||||
KFD_IOC_DBG_TRAP_SET_NODE_ADDRESS_WATCH = 8, /* DBG_HW_OP */
|
||||
KFD_IOC_DBG_TRAP_CLEAR_NODE_ADDRESS_WATCH = 9, /* DBG_HW_OP */
|
||||
KFD_IOC_DBG_TRAP_SET_FLAGS = 10,
|
||||
KFD_IOC_DBG_TRAP_QUERY_DEBUG_EVENT = 11,
|
||||
KFD_IOC_DBG_TRAP_QUERY_EXCEPTION_INFO = 12,
|
||||
KFD_IOC_DBG_TRAP_GET_QUEUE_SNAPSHOT = 13,
|
||||
KFD_IOC_DBG_TRAP_GET_DEVICE_SNAPSHOT = 14
|
||||
};
|
||||
|
||||
/**
|
||||
* kfd_ioctl_dbg_trap_enable_args
|
||||
*
|
||||
* Arguments for KFD_IOC_DBG_TRAP_ENABLE.
|
||||
*
|
||||
* Enables debug session for target process. Call @op KFD_IOC_DBG_TRAP_DISABLE in
|
||||
* kfd_ioctl_dbg_trap_args to disable debug session.
|
||||
*
|
||||
* @exception_mask (IN) - exceptions to raise to the debugger
|
||||
* @rinfo_ptr (IN) - pointer to runtime info buffer (see kfd_runtime_info)
|
||||
* @rinfo_size (IN/OUT) - size of runtime info buffer in bytes
|
||||
* @dbg_fd (IN) - fd the KFD will nofify the debugger with of raised
|
||||
* exceptions set in exception_mask.
|
||||
*
|
||||
* Generic errors apply (see kfd_dbg_trap_operations).
|
||||
* Return - 0 on SUCCESS.
|
||||
* Copies KFD saved kfd_runtime_info to @rinfo_ptr on enable.
|
||||
* Size of kfd_runtime saved by the KFD returned to @rinfo_size.
|
||||
* - EBADF if KFD cannot get a reference to dbg_fd.
|
||||
* - EFAULT if KFD cannot copy runtime info to rinfo_ptr.
|
||||
* - EINVAL if target process is already debug enabled.
|
||||
*
|
||||
*/
|
||||
struct kfd_ioctl_dbg_trap_enable_args {
|
||||
__u64 exception_mask;
|
||||
__u64 rinfo_ptr;
|
||||
__u32 rinfo_size;
|
||||
__u32 dbg_fd;
|
||||
};
|
||||
|
||||
/**
|
||||
* kfd_ioctl_dbg_trap_send_runtime_event_args
|
||||
*
|
||||
*
|
||||
* Arguments for KFD_IOC_DBG_TRAP_SEND_RUNTIME_EVENT.
|
||||
* Raises exceptions to runtime.
|
||||
*
|
||||
* @exception_mask (IN) - exceptions to raise to runtime
|
||||
* @gpu_id (IN) - target device id
|
||||
* @queue_id (IN) - target queue id
|
||||
*
|
||||
* Generic errors apply (see kfd_dbg_trap_operations).
|
||||
* Return - 0 on SUCCESS.
|
||||
* - ENODEV if gpu_id not found.
|
||||
* If exception_mask contains EC_PROCESS_RUNTIME, unblocks pending
|
||||
* AMDKFD_IOC_RUNTIME_ENABLE call - see kfd_ioctl_runtime_enable_args.
|
||||
* All other exceptions are raised to runtime through err_payload_addr.
|
||||
* See kfd_context_save_area_header.
|
||||
*/
|
||||
struct kfd_ioctl_dbg_trap_send_runtime_event_args {
|
||||
__u64 exception_mask;
|
||||
__u32 gpu_id;
|
||||
__u32 queue_id;
|
||||
};
|
||||
|
||||
/**
|
||||
* kfd_ioctl_dbg_trap_set_exceptions_enabled_args
|
||||
*
|
||||
* Arguments for KFD_IOC_SET_EXCEPTIONS_ENABLED
|
||||
* Set new exceptions to be raised to the debugger.
|
||||
*
|
||||
* @exception_mask (IN) - new exceptions to raise the debugger
|
||||
*
|
||||
* Generic errors apply (see kfd_dbg_trap_operations).
|
||||
* Return - 0 on SUCCESS.
|
||||
*/
|
||||
struct kfd_ioctl_dbg_trap_set_exceptions_enabled_args {
|
||||
__u64 exception_mask;
|
||||
};
|
||||
|
||||
/**
|
||||
* kfd_ioctl_dbg_trap_set_wave_launch_override_args
|
||||
*
|
||||
* Arguments for KFD_IOC_DBG_TRAP_SET_WAVE_LAUNCH_OVERRIDE
|
||||
* Enable HW exceptions to raise trap.
|
||||
*
|
||||
* @override_mode (IN) - see kfd_dbg_trap_override_mode
|
||||
* @enable_mask (IN/OUT) - reference kfd_dbg_trap_mask.
|
||||
* IN is the override modes requested to be enabled.
|
||||
* OUT is referenced in Return below.
|
||||
* @support_request_mask (IN/OUT) - reference kfd_dbg_trap_mask.
|
||||
* IN is the override modes requested for support check.
|
||||
* OUT is referenced in Return below.
|
||||
*
|
||||
* Generic errors apply (see kfd_dbg_trap_operations).
|
||||
* Return - 0 on SUCCESS.
|
||||
* Previous enablement is returned in @enable_mask.
|
||||
* Actual override support is returned in @support_request_mask.
|
||||
* - EINVAL if override mode is not supported.
|
||||
* - EACCES if trap support requested is not actually supported.
|
||||
* i.e. enable_mask (IN) is not a subset of support_request_mask (OUT).
|
||||
* Otherwise it is considered a generic error (see kfd_dbg_trap_operations).
|
||||
*/
|
||||
struct kfd_ioctl_dbg_trap_set_wave_launch_override_args {
|
||||
__u32 override_mode;
|
||||
__u32 enable_mask;
|
||||
__u32 support_request_mask;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* kfd_ioctl_dbg_trap_set_wave_launch_mode_args
|
||||
*
|
||||
* Arguments for KFD_IOC_DBG_TRAP_SET_WAVE_LAUNCH_MODE
|
||||
* Set wave launch mode.
|
||||
*
|
||||
* @mode (IN) - see kfd_dbg_trap_wave_launch_mode
|
||||
*
|
||||
* Generic errors apply (see kfd_dbg_trap_operations).
|
||||
* Return - 0 on SUCCESS.
|
||||
*/
|
||||
struct kfd_ioctl_dbg_trap_set_wave_launch_mode_args {
|
||||
__u32 launch_mode;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* kfd_ioctl_dbg_trap_suspend_queues_ags
|
||||
*
|
||||
* Arguments for KFD_IOC_DBG_TRAP_SUSPEND_QUEUES
|
||||
* Suspend queues.
|
||||
*
|
||||
* @exception_mask (IN) - raised exceptions to clear
|
||||
* @queue_array_ptr (IN) - pointer to array of queue ids (u32 per queue id)
|
||||
* to suspend
|
||||
* @num_queues (IN) - number of queues to suspend in @queue_array_ptr
|
||||
* @grace_period (IN) - wave time allowance before preemption
|
||||
* per 1K GPU clock cycle unit
|
||||
*
|
||||
* Generic errors apply (see kfd_dbg_trap_operations).
|
||||
* Destruction of a suspended queue is blocked until the queue is
|
||||
* resumed. This allows the debugger to access queue information and
|
||||
* the its context save area without running into a race condition on
|
||||
* queue destruction.
|
||||
* Automatically copies per queue context save area header information
|
||||
* into the save area base
|
||||
* (see kfd_queue_snapshot_entry and kfd_context_save_area_header).
|
||||
*
|
||||
* Return - Number of queues suspended on SUCCESS.
|
||||
* . KFD_DBG_QUEUE_ERROR_MASK and KFD_DBG_QUEUE_INVALID_MASK masked
|
||||
* for each queue id in @queue_array_ptr array reports unsuccessful
|
||||
* suspend reason.
|
||||
* KFD_DBG_QUEUE_ERROR_MASK = HW failure.
|
||||
* KFD_DBG_QUEUE_INVALID_MASK = queue does not exist, is new or
|
||||
* is being destroyed.
|
||||
*/
|
||||
struct kfd_ioctl_dbg_trap_suspend_queues_args {
|
||||
__u64 exception_mask;
|
||||
__u64 queue_array_ptr;
|
||||
__u32 num_queues;
|
||||
__u32 grace_period;
|
||||
};
|
||||
|
||||
/**
|
||||
* kfd_ioctl_dbg_trap_resume_queues_args
|
||||
*
|
||||
* Arguments for KFD_IOC_DBG_TRAP_RESUME_QUEUES
|
||||
* Resume queues.
|
||||
*
|
||||
* @queue_array_ptr (IN) - pointer to array of queue ids (u32 per queue id)
|
||||
* to resume
|
||||
* @num_queues (IN) - number of queues to resume in @queue_array_ptr
|
||||
*
|
||||
* Generic errors apply (see kfd_dbg_trap_operations).
|
||||
* Return - Number of queues resumed on SUCCESS.
|
||||
* KFD_DBG_QUEUE_ERROR_MASK and KFD_DBG_QUEUE_INVALID_MASK mask
|
||||
* for each queue id in @queue_array_ptr array reports unsuccessful
|
||||
* resume reason.
|
||||
* KFD_DBG_QUEUE_ERROR_MASK = HW failure.
|
||||
* KFD_DBG_QUEUE_INVALID_MASK = queue does not exist.
|
||||
*/
|
||||
struct kfd_ioctl_dbg_trap_resume_queues_args {
|
||||
__u64 queue_array_ptr;
|
||||
__u32 num_queues;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* kfd_ioctl_dbg_trap_set_node_address_watch_args
|
||||
*
|
||||
* Arguments for KFD_IOC_DBG_TRAP_SET_NODE_ADDRESS_WATCH
|
||||
* Sets address watch for device.
|
||||
*
|
||||
* @address (IN) - watch address to set
|
||||
* @mode (IN) - see kfd_dbg_trap_address_watch_mode
|
||||
* @mask (IN) - watch address mask
|
||||
* @gpu_id (IN) - target gpu to set watch point
|
||||
* @id (OUT) - watch id allocated
|
||||
*
|
||||
* Generic errors apply (see kfd_dbg_trap_operations).
|
||||
* Return - 0 on SUCCESS.
|
||||
* Allocated watch ID returned to @id.
|
||||
* - ENODEV if gpu_id not found.
|
||||
* - ENOMEM if watch IDs can be allocated
|
||||
*/
|
||||
struct kfd_ioctl_dbg_trap_set_node_address_watch_args {
|
||||
__u64 address;
|
||||
__u32 mode;
|
||||
__u32 mask;
|
||||
__u32 gpu_id;
|
||||
__u32 id;
|
||||
};
|
||||
|
||||
/**
|
||||
* kfd_ioctl_dbg_trap_clear_node_address_watch_args
|
||||
*
|
||||
* Arguments for KFD_IOC_DBG_TRAP_CLEAR_NODE_ADDRESS_WATCH
|
||||
* Clear address watch for device.
|
||||
*
|
||||
* @gpu_id (IN) - target device to clear watch point
|
||||
* @id (IN) - allocated watch id to clear
|
||||
*
|
||||
* Generic errors apply (see kfd_dbg_trap_operations).
|
||||
* Return - 0 on SUCCESS.
|
||||
* - ENODEV if gpu_id not found.
|
||||
* - EINVAL if watch ID has not been allocated.
|
||||
*/
|
||||
struct kfd_ioctl_dbg_trap_clear_node_address_watch_args {
|
||||
__u32 gpu_id;
|
||||
__u32 id;
|
||||
};
|
||||
|
||||
/**
|
||||
* kfd_ioctl_dbg_trap_set_flags_args
|
||||
*
|
||||
* Arguments for KFD_IOC_DBG_TRAP_SET_FLAGS
|
||||
* Sets flags for wave behaviour.
|
||||
*
|
||||
* @flags (IN/OUT) - IN = flags to enable, OUT = flags previously enabled
|
||||
*
|
||||
* Generic errors apply (see kfd_dbg_trap_operations).
|
||||
* Return - 0 on SUCCESS.
|
||||
* - EACCESS if any debug device does not allow flag options.
|
||||
*/
|
||||
struct kfd_ioctl_dbg_trap_set_flags_args {
|
||||
__u32 flags;
|
||||
__u32 pad;
|
||||
};
|
||||
|
||||
/**
|
||||
* kfd_ioctl_dbg_trap_query_debug_event_args
|
||||
*
|
||||
* Arguments for KFD_IOC_DBG_TRAP_QUERY_DEBUG_EVENT
|
||||
*
|
||||
* Find one or more raised exceptions. This function can return multiple
|
||||
* exceptions from a single queue or a single device with one call. To find
|
||||
* all raised exceptions, this function must be called repeatedly until it
|
||||
* returns -EAGAIN. Returned exceptions can optionally be cleared by
|
||||
* setting the corresponding bit in the @exception_mask input parameter.
|
||||
* However, clearing an exception prevents retrieving further information
|
||||
* about it with KFD_IOC_DBG_TRAP_QUERY_EXCEPTION_INFO.
|
||||
*
|
||||
* @exception_mask (IN/OUT) - exception to clear (IN) and raised (OUT)
|
||||
* @gpu_id (OUT) - gpu id of exceptions raised
|
||||
* @queue_id (OUT) - queue id of exceptions raised
|
||||
*
|
||||
* Generic errors apply (see kfd_dbg_trap_operations).
|
||||
* Return - 0 on raised exception found
|
||||
* Raised exceptions found are returned in @exception mask
|
||||
* with reported source id returned in @gpu_id or @queue_id.
|
||||
* - EAGAIN if no raised exception has been found
|
||||
*/
|
||||
struct kfd_ioctl_dbg_trap_query_debug_event_args {
|
||||
__u64 exception_mask;
|
||||
__u32 gpu_id;
|
||||
__u32 queue_id;
|
||||
};
|
||||
|
||||
/**
|
||||
* kfd_ioctl_dbg_trap_query_exception_info_args
|
||||
*
|
||||
* Arguments KFD_IOC_DBG_TRAP_QUERY_EXCEPTION_INFO
|
||||
* Get additional info on raised exception.
|
||||
*
|
||||
* @info_ptr (IN) - pointer to exception info buffer to copy to
|
||||
* @info_size (IN/OUT) - exception info buffer size (bytes)
|
||||
* @source_id (IN) - target gpu or queue id
|
||||
* @exception_code (IN) - target exception
|
||||
* @clear_exception (IN) - clear raised @exception_code exception
|
||||
* (0 = false, 1 = true)
|
||||
*
|
||||
* Generic errors apply (see kfd_dbg_trap_operations).
|
||||
* Return - 0 on SUCCESS.
|
||||
* If @exception_code is EC_DEVICE_MEMORY_VIOLATION, copy @info_size(OUT)
|
||||
* bytes of memory exception data to @info_ptr.
|
||||
* If @exception_code is EC_PROCESS_RUNTIME, copy saved
|
||||
* kfd_runtime_info to @info_ptr.
|
||||
* Actual required @info_ptr size (bytes) is returned in @info_size.
|
||||
*/
|
||||
struct kfd_ioctl_dbg_trap_query_exception_info_args {
|
||||
__u64 info_ptr;
|
||||
__u32 info_size;
|
||||
__u32 source_id;
|
||||
__u32 exception_code;
|
||||
__u32 clear_exception;
|
||||
};
|
||||
|
||||
/**
|
||||
* kfd_ioctl_dbg_trap_get_queue_snapshot_args
|
||||
*
|
||||
* Arguments KFD_IOC_DBG_TRAP_GET_QUEUE_SNAPSHOT
|
||||
* Get queue information.
|
||||
*
|
||||
* @exception_mask (IN) - exceptions raised to clear
|
||||
* @snapshot_buf_ptr (IN) - queue snapshot entry buffer (see kfd_queue_snapshot_entry)
|
||||
* @num_queues (IN/OUT) - number of queue snapshot entries
|
||||
* The debugger specifies the size of the array allocated in @num_queues.
|
||||
* KFD returns the number of queues that actually existed. If this is
|
||||
* larger than the size specified by the debugger, KFD will not overflow
|
||||
* the array allocated by the debugger.
|
||||
*
|
||||
* @entry_size (IN/OUT) - size per entry in bytes
|
||||
* The debugger specifies sizeof(struct kfd_queue_snapshot_entry) in
|
||||
* @entry_size. KFD returns the number of bytes actually populated per
|
||||
* entry. The debugger should use the KFD_IOCTL_MINOR_VERSION to determine,
|
||||
* which fields in struct kfd_queue_snapshot_entry are valid. This allows
|
||||
* growing the ABI in a backwards compatible manner.
|
||||
* Note that entry_size(IN) should still be used to stride the snapshot buffer in the
|
||||
* event that it's larger than actual kfd_queue_snapshot_entry.
|
||||
*
|
||||
* Generic errors apply (see kfd_dbg_trap_operations).
|
||||
* Return - 0 on SUCCESS.
|
||||
* Copies @num_queues(IN) queue snapshot entries of size @entry_size(IN)
|
||||
* into @snapshot_buf_ptr if @num_queues(IN) > 0.
|
||||
* Otherwise return @num_queues(OUT) queue snapshot entries that exist.
|
||||
*/
|
||||
struct kfd_ioctl_dbg_trap_queue_snapshot_args {
|
||||
__u64 exception_mask;
|
||||
__u64 snapshot_buf_ptr;
|
||||
__u32 num_queues;
|
||||
__u32 entry_size;
|
||||
};
|
||||
|
||||
/**
|
||||
* kfd_ioctl_dbg_trap_get_device_snapshot_args
|
||||
*
|
||||
* Arguments for KFD_IOC_DBG_TRAP_GET_DEVICE_SNAPSHOT
|
||||
* Get device information.
|
||||
*
|
||||
* @exception_mask (IN) - exceptions raised to clear
|
||||
* @snapshot_buf_ptr (IN) - pointer to snapshot buffer (see kfd_dbg_device_info_entry)
|
||||
* @num_devices (IN/OUT) - number of debug devices to snapshot
|
||||
* The debugger specifies the size of the array allocated in @num_devices.
|
||||
* KFD returns the number of devices that actually existed. If this is
|
||||
* larger than the size specified by the debugger, KFD will not overflow
|
||||
* the array allocated by the debugger.
|
||||
*
|
||||
* @entry_size (IN/OUT) - size per entry in bytes
|
||||
* The debugger specifies sizeof(struct kfd_dbg_device_info_entry) in
|
||||
* @entry_size. KFD returns the number of bytes actually populated. The
|
||||
* debugger should use KFD_IOCTL_MINOR_VERSION to determine, which fields
|
||||
* in struct kfd_dbg_device_info_entry are valid. This allows growing the
|
||||
* ABI in a backwards compatible manner.
|
||||
* Note that entry_size(IN) should still be used to stride the snapshot buffer in the
|
||||
* event that it's larger than actual kfd_dbg_device_info_entry.
|
||||
*
|
||||
* Generic errors apply (see kfd_dbg_trap_operations).
|
||||
* Return - 0 on SUCCESS.
|
||||
* Copies @num_devices(IN) device snapshot entries of size @entry_size(IN)
|
||||
* into @snapshot_buf_ptr if @num_devices(IN) > 0.
|
||||
* Otherwise return @num_devices(OUT) queue snapshot entries that exist.
|
||||
*/
|
||||
struct kfd_ioctl_dbg_trap_device_snapshot_args {
|
||||
__u64 exception_mask;
|
||||
__u64 snapshot_buf_ptr;
|
||||
__u32 num_devices;
|
||||
__u32 entry_size;
|
||||
};
|
||||
|
||||
/**
|
||||
* kfd_ioctl_dbg_trap_args
|
||||
*
|
||||
* Arguments to debug target process.
|
||||
*
|
||||
* @pid - target process to debug
|
||||
* @op - debug operation (see kfd_dbg_trap_operations)
|
||||
*
|
||||
* @op determines which union struct args to use.
|
||||
* Refer to kern docs for each kfd_ioctl_dbg_trap_*_args struct.
|
||||
*/
|
||||
struct kfd_ioctl_dbg_trap_args {
|
||||
__u32 pid;
|
||||
__u32 op;
|
||||
|
||||
union {
|
||||
struct kfd_ioctl_dbg_trap_enable_args enable;
|
||||
struct kfd_ioctl_dbg_trap_send_runtime_event_args send_runtime_event;
|
||||
struct kfd_ioctl_dbg_trap_set_exceptions_enabled_args set_exceptions_enabled;
|
||||
struct kfd_ioctl_dbg_trap_set_wave_launch_override_args launch_override;
|
||||
struct kfd_ioctl_dbg_trap_set_wave_launch_mode_args launch_mode;
|
||||
struct kfd_ioctl_dbg_trap_suspend_queues_args suspend_queues;
|
||||
struct kfd_ioctl_dbg_trap_resume_queues_args resume_queues;
|
||||
struct kfd_ioctl_dbg_trap_set_node_address_watch_args set_node_address_watch;
|
||||
struct kfd_ioctl_dbg_trap_clear_node_address_watch_args clear_node_address_watch;
|
||||
struct kfd_ioctl_dbg_trap_set_flags_args set_flags;
|
||||
struct kfd_ioctl_dbg_trap_query_debug_event_args query_debug_event;
|
||||
struct kfd_ioctl_dbg_trap_query_exception_info_args query_exception_info;
|
||||
struct kfd_ioctl_dbg_trap_queue_snapshot_args queue_snapshot;
|
||||
struct kfd_ioctl_dbg_trap_device_snapshot_args device_snapshot;
|
||||
};
|
||||
};
|
||||
|
||||
#define AMDKFD_IOCTL_BASE 'K'
|
||||
#define AMDKFD_IO(nr) _IO(AMDKFD_IOCTL_BASE, nr)
|
||||
#define AMDKFD_IOR(nr, type) _IOR(AMDKFD_IOCTL_BASE, nr, type)
|
||||
@ -877,7 +1569,16 @@ struct kfd_ioctl_set_xnack_mode_args {
|
||||
#define AMDKFD_IOC_AVAILABLE_MEMORY \
|
||||
AMDKFD_IOWR(0x23, struct kfd_ioctl_get_available_memory_args)
|
||||
|
||||
#define AMDKFD_IOC_EXPORT_DMABUF \
|
||||
AMDKFD_IOWR(0x24, struct kfd_ioctl_export_dmabuf_args)
|
||||
|
||||
#define AMDKFD_IOC_RUNTIME_ENABLE \
|
||||
AMDKFD_IOWR(0x25, struct kfd_ioctl_runtime_enable_args)
|
||||
|
||||
#define AMDKFD_IOC_DBG_TRAP \
|
||||
AMDKFD_IOWR(0x26, struct kfd_ioctl_dbg_trap_args)
|
||||
|
||||
#define AMDKFD_COMMAND_START 0x01
|
||||
#define AMDKFD_COMMAND_END 0x24
|
||||
#define AMDKFD_COMMAND_END 0x27
|
||||
|
||||
#endif
|
||||
15
lib/libc/include/any-linux-any/linux/kfd_sysfs.h
vendored
15
lib/libc/include/any-linux-any/linux/kfd_sysfs.h
vendored
@ -43,6 +43,11 @@
|
||||
#define HSA_CAP_DOORBELL_TYPE_2_0 0x2
|
||||
#define HSA_CAP_AQL_QUEUE_DOUBLE_MAP 0x00004000
|
||||
|
||||
#define HSA_CAP_TRAP_DEBUG_SUPPORT 0x00008000
|
||||
#define HSA_CAP_TRAP_DEBUG_WAVE_LAUNCH_TRAP_OVERRIDE_SUPPORTED 0x00010000
|
||||
#define HSA_CAP_TRAP_DEBUG_WAVE_LAUNCH_MODE_SUPPORTED 0x00020000
|
||||
#define HSA_CAP_TRAP_DEBUG_PRECISE_MEMORY_OPERATIONS_SUPPORTED 0x00040000
|
||||
|
||||
/* Old buggy user mode depends on this being 0 */
|
||||
#define HSA_CAP_RESERVED_WAS_SRAM_EDCSUPPORTED 0x00080000
|
||||
|
||||
@ -53,8 +58,18 @@
|
||||
#define HSA_CAP_SRAM_EDCSUPPORTED 0x04000000
|
||||
#define HSA_CAP_SVMAPI_SUPPORTED 0x08000000
|
||||
#define HSA_CAP_FLAGS_COHERENTHOSTACCESS 0x10000000
|
||||
#define HSA_CAP_TRAP_DEBUG_FIRMWARE_SUPPORTED 0x20000000
|
||||
#define HSA_CAP_RESERVED 0xe00f8000
|
||||
|
||||
/* debug_prop bits in node properties */
|
||||
#define HSA_DBG_WATCH_ADDR_MASK_LO_BIT_MASK 0x0000000f
|
||||
#define HSA_DBG_WATCH_ADDR_MASK_LO_BIT_SHIFT 0
|
||||
#define HSA_DBG_WATCH_ADDR_MASK_HI_BIT_MASK 0x000003f0
|
||||
#define HSA_DBG_WATCH_ADDR_MASK_HI_BIT_SHIFT 4
|
||||
#define HSA_DBG_DISPATCH_INFO_ALWAYS_VALID 0x00000400
|
||||
#define HSA_DBG_WATCHPOINTS_EXCLUSIVE 0x00000800
|
||||
#define HSA_DBG_RESERVED 0xfffffffffffff000ull
|
||||
|
||||
/* Heap types in memory properties */
|
||||
#define HSA_MEM_HEAP_TYPE_SYSTEM 0
|
||||
#define HSA_MEM_HEAP_TYPE_FB_PUBLIC 1
|
||||
|
||||
861
lib/libc/include/any-linux-any/linux/kvm.h
vendored
861
lib/libc/include/any-linux-any/linux/kvm.h
vendored
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user