diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2024-04-23 23:22:57 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2024-04-23 23:22:57 +0000 |
commit | a1fb2f1b6a6505083df57088ce4df1baad5d154f (patch) | |
tree | e74e052bd0fba87d6c306e2ee6727ae059685eee | |
parent | bb9f6732c0cdffedbdc86a3834d92d320cc05721 (diff) | |
parent | 3e689e8ebdc12020db8d9368db6ee21be9cb7917 (diff) | |
download | bionic-a1fb2f1b6a6505083df57088ce4df1baad5d154f.tar.gz |
Merge "Snap for 11754915 from 5063d26249658b6de91d6b93b16e79fc0fae4e10 to sdk-release" into sdk-release
97 files changed, 1496 insertions, 390 deletions
diff --git a/libc/bionic/fortify.cpp b/libc/bionic/fortify.cpp index 7dee5e305..80f7c20ac 100644 --- a/libc/bionic/fortify.cpp +++ b/libc/bionic/fortify.cpp @@ -99,8 +99,8 @@ char* __fgets_chk(char* dst, int supplied_size, FILE* stream, size_t dst_len_fro } size_t __fread_chk(void* buf, size_t size, size_t count, FILE* stream, size_t buf_size) { - size_t total; - if (__predict_false(__size_mul_overflow(size, count, &total))) { + unsigned long total; + if (__predict_false(__builtin_umull_overflow(size, count, &total))) { // overflow: trigger the error path in fread return fread(buf, size, count, stream); } @@ -109,8 +109,8 @@ size_t __fread_chk(void* buf, size_t size, size_t count, FILE* stream, size_t bu } size_t __fwrite_chk(const void* buf, size_t size, size_t count, FILE* stream, size_t buf_size) { - size_t total; - if (__predict_false(__size_mul_overflow(size, count, &total))) { + unsigned long total; + if (__predict_false(__builtin_umull_overflow(size, count, &total))) { // overflow: trigger the error path in fwrite return fwrite(buf, size, count, stream); } diff --git a/libc/bionic/system_property_set.cpp b/libc/bionic/system_property_set.cpp index 6e49bced6..73cf15190 100644 --- a/libc/bionic/system_property_set.cpp +++ b/libc/bionic/system_property_set.cpp @@ -257,6 +257,21 @@ static void detect_protocol_version() { } } +static const char* __prop_error_to_string(int error) { + switch (error) { + case PROP_ERROR_READ_CMD: return "PROP_ERROR_READ_CMD"; + case PROP_ERROR_READ_DATA: return "PROP_ERROR_READ_DATA"; + case PROP_ERROR_READ_ONLY_PROPERTY: return "PROP_ERROR_READ_ONLY_PROPERTY"; + case PROP_ERROR_INVALID_NAME: return "PROP_ERROR_INVALID_NAME"; + case PROP_ERROR_INVALID_VALUE: return "PROP_ERROR_INVALID_VALUE"; + case PROP_ERROR_PERMISSION_DENIED: return "PROP_ERROR_PERMISSION_DENIED"; + case PROP_ERROR_INVALID_CMD: return "PROP_ERROR_INVALID_CMD"; + case PROP_ERROR_HANDLE_CONTROL_MESSAGE: return "PROP_ERROR_HANDLE_CONTROL_MESSAGE"; + case PROP_ERROR_SET_FAILED: return "PROP_ERROR_SET_FAILED"; + } + return "<unknown>"; +} + __BIONIC_WEAK_FOR_NATIVE_BRIDGE int __system_property_set(const char* key, const char* value) { if (key == nullptr) return -1; @@ -310,8 +325,8 @@ int __system_property_set(const char* key, const char* value) { if (result != PROP_SUCCESS) { async_safe_format_log(ANDROID_LOG_WARN, "libc", - "Unable to set property \"%s\" to \"%s\": error code: 0x%x", key, value, - result); + "Unable to set property \"%s\" to \"%s\": %s (0x%x)", key, value, + __prop_error_to_string(result), result); return -1; } diff --git a/libc/include/android/versioning.h b/libc/include/android/versioning.h index c5adc02cf..cd61f3393 100644 --- a/libc/include/android/versioning.h +++ b/libc/include/android/versioning.h @@ -20,15 +20,15 @@ // we should only annotate headers when we are running versioner. #if defined(__BIONIC_VERSIONER) -#define __INTRODUCED_IN(api_level) __attribute__((annotate("introduced_in=" #api_level))) -#define __INTRODUCED_IN_NO_GUARD_FOR_NDK(api_level) __attribute__((annotate("introduced_in=" #api_level))) __VERSIONER_NO_GUARD -#define __DEPRECATED_IN(api_level) __attribute__((annotate("deprecated_in=" #api_level))) -#define __REMOVED_IN(api_level) __attribute__((annotate("obsoleted_in=" #api_level))) -#define __INTRODUCED_IN_32(api_level) __attribute__((annotate("introduced_in_32=" #api_level))) -#define __INTRODUCED_IN_64(api_level) __attribute__((annotate("introduced_in_64=" #api_level))) +#define __INTRODUCED_IN(api_level) __attribute__((__annotate__("introduced_in=" #api_level))) +#define __INTRODUCED_IN_NO_GUARD_FOR_NDK(api_level) __attribute__((__annotate__("introduced_in=" #api_level))) __VERSIONER_NO_GUARD +#define __DEPRECATED_IN(api_level) __attribute__((__annotate__("deprecated_in=" #api_level))) +#define __REMOVED_IN(api_level) __attribute__((__annotate__("obsoleted_in=" #api_level))) +#define __INTRODUCED_IN_32(api_level) __attribute__((__annotate__("introduced_in_32=" #api_level))) +#define __INTRODUCED_IN_64(api_level) __attribute__((__annotate__("introduced_in_64=" #api_level))) -#define __VERSIONER_NO_GUARD __attribute__((annotate("versioner_no_guard"))) -#define __VERSIONER_FORTIFY_INLINE __attribute__((annotate("versioner_fortify_inline"))) +#define __VERSIONER_NO_GUARD __attribute__((__annotate__("versioner_no_guard"))) +#define __VERSIONER_FORTIFY_INLINE __attribute__((__annotate__("versioner_fortify_inline"))) #else diff --git a/libc/include/bits/glibc-syscalls.h b/libc/include/bits/glibc-syscalls.h index 83fb25716..eceb33416 100644 --- a/libc/include/bits/glibc-syscalls.h +++ b/libc/include/bits/glibc-syscalls.h @@ -552,6 +552,9 @@ #if defined(__NR_listen) #define SYS_listen __NR_listen #endif +#if defined(__NR_listmount) + #define SYS_listmount __NR_listmount +#endif #if defined(__NR_listxattr) #define SYS_listxattr __NR_listxattr #endif @@ -576,6 +579,15 @@ #if defined(__NR_lsetxattr) #define SYS_lsetxattr __NR_lsetxattr #endif +#if defined(__NR_lsm_get_self_attr) + #define SYS_lsm_get_self_attr __NR_lsm_get_self_attr +#endif +#if defined(__NR_lsm_list_modules) + #define SYS_lsm_list_modules __NR_lsm_list_modules +#endif +#if defined(__NR_lsm_set_self_attr) + #define SYS_lsm_set_self_attr __NR_lsm_set_self_attr +#endif #if defined(__NR_lstat) #define SYS_lstat __NR_lstat #endif @@ -1218,6 +1230,9 @@ #if defined(__NR_statfs64) #define SYS_statfs64 __NR_statfs64 #endif +#if defined(__NR_statmount) + #define SYS_statmount __NR_statmount +#endif #if defined(__NR_statx) #define SYS_statx __NR_statx #endif diff --git a/libc/include/bits/stdatomic.h b/libc/include/bits/stdatomic.h index bd94b2d85..8df86e2ad 100644 --- a/libc/include/bits/stdatomic.h +++ b/libc/include/bits/stdatomic.h @@ -138,11 +138,11 @@ typedef enum { * 7.17.4 Fences. */ -static inline void atomic_thread_fence(memory_order __order __attribute__((unused))) { +static inline void atomic_thread_fence(memory_order __order __attribute__((__unused__))) { __c11_atomic_thread_fence(__order); } -static inline void atomic_signal_fence(memory_order __order __attribute__((unused))) { +static inline void atomic_signal_fence(memory_order __order __attribute__((__unused__))) { __c11_atomic_signal_fence(__order); } diff --git a/libc/include/bits/struct_file.h b/libc/include/bits/struct_file.h index abbd32028..8cb8d282b 100644 --- a/libc/include/bits/struct_file.h +++ b/libc/include/bits/struct_file.h @@ -39,6 +39,6 @@ struct __sFILE { #else char __private[84]; #endif -} __attribute__((aligned(sizeof(void*)))); +} __attribute__((__aligned__(sizeof(void*)))); __END_DECLS diff --git a/libc/include/limits.h b/libc/include/limits.h index 80fc45d2a..e1f566c83 100644 --- a/libc/include/limits.h +++ b/libc/include/limits.h @@ -148,9 +148,15 @@ /* >= _POSIX_THREAD_DESTRUCTOR_ITERATIONS */ #define PTHREAD_DESTRUCTOR_ITERATIONS 4 -/* >= _POSIX_THREAD_KEYS_MAX */ + +/** + * The number of calls to pthread_key_create() without intervening calls to + * pthread_key_delete() that are guaranteed to succeed. See pthread_key_create() + * for more details and ways to avoid hitting this limit. + */ #define PTHREAD_KEYS_MAX 128 -/* bionic has no specific limit */ + +/** bionic has no specific limit on the number of threads. */ #undef PTHREAD_THREADS_MAX #endif /* !_LIMITS_H_ */ diff --git a/libc/include/pthread.h b/libc/include/pthread.h index 871c62ce8..ef41e2d71 100644 --- a/libc/include/pthread.h +++ b/libc/include/pthread.h @@ -174,7 +174,29 @@ pid_t pthread_gettid_np(pthread_t __pthread); int pthread_join(pthread_t __pthread, void* _Nullable * _Nullable __return_value_ptr); +/** + * [pthread_key_create(3)](https://man7.org/linux/man-pages/man3/pthread_key_create.3p.html) + * creates a key for thread-specific data. + * + * There is a limit of `PTHREAD_KEYS_MAX` keys per process, but most callers + * should just use the C or C++ `thread_local` storage specifier anyway. When + * targeting new enough OS versions, the compiler will automatically use + * ELF TLS; when targeting old OS versions the emutls implementation will + * multiplex pthread keys behind the scenes, using one per library rather than + * one per thread-local variable. If you are implementing the runtime for a + * different language, you should consider similar implementation choices and + * avoid a direct one-to-one mapping from thread locals to pthread keys. + * + * Returns 0 on success and returns an error number on failure. + */ int pthread_key_create(pthread_key_t* _Nonnull __key_ptr, void (* _Nullable __key_destructor)(void* _Nullable)); + +/** + * [pthread_key_delete(3)](https://man7.org/linux/man-pages/man3/pthread_key_delete.3p.html) + * deletes a key for thread-specific data. + * + * Returns 0 on success and returns an error number on failure. + */ int pthread_key_delete(pthread_key_t __key); int pthread_mutexattr_destroy(pthread_mutexattr_t* _Nonnull __attr); diff --git a/libc/include/signal.h b/libc/include/signal.h index cf83db8e9..9d47bcc79 100644 --- a/libc/include/signal.h +++ b/libc/include/signal.h @@ -86,17 +86,17 @@ int sigwait(const sigset_t* _Nonnull __set, int* _Nonnull __signal); int sigwait64(const sigset64_t* _Nonnull __set, int* _Nonnull __signal) __INTRODUCED_IN(28); int sighold(int __signal) - __attribute__((deprecated("use sigprocmask() or pthread_sigmask() instead"))) + __attribute__((__deprecated__("use sigprocmask() or pthread_sigmask() instead"))) __INTRODUCED_IN(26); int sigignore(int __signal) - __attribute__((deprecated("use sigaction() instead"))) __INTRODUCED_IN(26); + __attribute__((__deprecated__("use sigaction() instead"))) __INTRODUCED_IN(26); int sigpause(int __signal) - __attribute__((deprecated("use sigsuspend() instead"))) __INTRODUCED_IN(26); + __attribute__((__deprecated__("use sigsuspend() instead"))) __INTRODUCED_IN(26); int sigrelse(int __signal) - __attribute__((deprecated("use sigprocmask() or pthread_sigmask() instead"))) + __attribute__((__deprecated__("use sigprocmask() or pthread_sigmask() instead"))) __INTRODUCED_IN(26); sighandler_t _Nonnull sigset(int __signal, sighandler_t _Nullable __handler) - __attribute__((deprecated("use sigaction() instead"))) __INTRODUCED_IN(26); + __attribute__((__deprecated__("use sigaction() instead"))) __INTRODUCED_IN(26); int raise(int __signal); int kill(pid_t __pid, int __signal); diff --git a/libc/include/stdio.h b/libc/include/stdio.h index 312b356ae..32264d6d9 100644 --- a/libc/include/stdio.h +++ b/libc/include/stdio.h @@ -141,7 +141,7 @@ int vdprintf(int __fd, const char* _Nonnull __fmt, va_list __args) __printflike( #if (defined(__STDC_VERSION__) && __STDC_VERSION__ < 201112L) || \ (defined(__cplusplus) && __cplusplus <= 201103L) -char* _Nullable gets(char* _Nonnull __buf) __attribute__((deprecated("gets is unsafe, use fgets instead"))); +char* _Nullable gets(char* _Nonnull __buf) __attribute__((__deprecated__("gets is unsafe, use fgets instead"))); #endif int sprintf(char* __BIONIC_COMPLICATED_NULLNESS __s, const char* _Nonnull __fmt, ...) __printflike(2, 3) __warnattr_strict("sprintf is often misused; please use snprintf"); diff --git a/libc/include/stdlib.h b/libc/include/stdlib.h index 2830a493d..506ab43ba 100644 --- a/libc/include/stdlib.h +++ b/libc/include/stdlib.h @@ -57,7 +57,7 @@ int unsetenv(const char* _Nonnull __name); int clearenv(void); char* _Nullable mkdtemp(char* _Nonnull __template); -char* _Nullable mktemp(char* _Nonnull __template) __attribute__((deprecated("mktemp is unsafe, use mkstemp or tmpfile instead"))); +char* _Nullable mktemp(char* _Nonnull __template) __attribute__((__deprecated__("mktemp is unsafe, use mkstemp or tmpfile instead"))); int mkostemp64(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23); int mkostemp(char* _Nonnull __template, int __flags) __INTRODUCED_IN(23); diff --git a/libc/include/sys/cdefs.h b/libc/include/sys/cdefs.h index a19ce2619..3218d1554 100644 --- a/libc/include/sys/cdefs.h +++ b/libc/include/sys/cdefs.h @@ -139,12 +139,12 @@ #define __wur __attribute__((__warn_unused_result__)) -#define __errorattr(msg) __attribute__((unavailable(msg))) -#define __warnattr(msg) __attribute__((deprecated(msg))) -#define __warnattr_real(msg) __attribute__((deprecated(msg))) -#define __enable_if(cond, msg) __attribute__((enable_if(cond, msg))) -#define __clang_error_if(cond, msg) __attribute__((diagnose_if(cond, msg, "error"))) -#define __clang_warning_if(cond, msg) __attribute__((diagnose_if(cond, msg, "warning"))) +#define __errorattr(msg) __attribute__((__unavailable__(msg))) +#define __warnattr(msg) __attribute__((__deprecated__(msg))) +#define __warnattr_real(msg) __attribute__((__deprecated__(msg))) +#define __enable_if(cond, msg) __attribute__((__enable_if__(cond, msg))) +#define __clang_error_if(cond, msg) __attribute__((__diagnose_if__(cond, msg, "error"))) +#define __clang_warning_if(cond, msg) __attribute__((__diagnose_if__(cond, msg, "warning"))) #if defined(ANDROID_STRICT) /* @@ -248,7 +248,7 @@ #if defined(__BIONIC_FORTIFY) # define __bos0(s) __bosn((s), 0) -# define __pass_object_size_n(n) __attribute__((pass_object_size(n))) +# define __pass_object_size_n(n) __attribute__((__pass_object_size__(n))) /* * FORTIFY'ed functions all have either enable_if or pass_object_size, which * makes taking their address impossible. Saying (&read)(foo, bar, baz); will @@ -260,7 +260,7 @@ * them available externally. FORTIFY'ed functions try to be as close to possible as 'invisible'; * having stack protectors detracts from that (b/182948263). */ -# define __BIONIC_FORTIFY_INLINE static inline __attribute__((no_stack_protector)) \ +# define __BIONIC_FORTIFY_INLINE static inline __attribute__((__no_stack_protector__)) \ __always_inline __VERSIONER_FORTIFY_INLINE /* * We should use __BIONIC_FORTIFY_VARIADIC instead of __BIONIC_FORTIFY_INLINE @@ -270,7 +270,7 @@ */ # define __BIONIC_FORTIFY_VARIADIC static inline /* Error functions don't have bodies, so they can just be static. */ -# define __BIONIC_ERROR_FUNCTION_VISIBILITY static __attribute__((unused)) +# define __BIONIC_ERROR_FUNCTION_VISIBILITY static __attribute__((__unused__)) #else /* Further increase sharing for some inline functions */ # define __pass_object_size_n(n) @@ -300,47 +300,32 @@ # define __BIONIC_INCLUDE_FORTIFY_HEADERS 1 #endif -#define __overloadable __attribute__((overloadable)) +#define __overloadable __attribute__((__overloadable__)) -#define __diagnose_as_builtin(...) __attribute__((diagnose_as_builtin(__VA_ARGS__))) +#define __diagnose_as_builtin(...) __attribute__((__diagnose_as_builtin__(__VA_ARGS__))) /* Used to tag non-static symbols that are private and never exposed by the shared library. */ -#define __LIBC_HIDDEN__ __attribute__((visibility("hidden"))) +#define __LIBC_HIDDEN__ __attribute__((__visibility__("hidden"))) /* * Used to tag symbols that should be hidden for 64-bit, * but visible to preserve binary compatibility for LP32. */ #ifdef __LP64__ -#define __LIBC32_LEGACY_PUBLIC__ __attribute__((visibility("hidden"))) +#define __LIBC32_LEGACY_PUBLIC__ __attribute__((__visibility__("hidden"))) #else -#define __LIBC32_LEGACY_PUBLIC__ __attribute__((visibility("default"))) +#define __LIBC32_LEGACY_PUBLIC__ __attribute__((__visibility__("default"))) #endif /* Used to rename functions so that the compiler emits a call to 'x' rather than the function this was applied to. */ #define __RENAME(x) __asm__(#x) -#if __has_builtin(__builtin_umul_overflow) || __GNUC__ >= 5 -#if defined(__LP64__) -#define __size_mul_overflow(a, b, result) __builtin_umull_overflow(a, b, result) -#else -#define __size_mul_overflow(a, b, result) __builtin_umul_overflow(a, b, result) -#endif -#else -extern inline __always_inline __attribute__((gnu_inline)) -int __size_mul_overflow(__SIZE_TYPE__ a, __SIZE_TYPE__ b, __SIZE_TYPE__ *result) { - *result = a * b; - static const __SIZE_TYPE__ mul_no_overflow = 1UL << (sizeof(__SIZE_TYPE__) * 4); - return (a >= mul_no_overflow || b >= mul_no_overflow) && a > 0 && (__SIZE_TYPE__)-1 / a < b; -} -#endif - /* * Used when we need to check for overflow when multiplying x and y. This - * should only be used where __size_mul_overflow can not work, because it makes - * assumptions that __size_mul_overflow doesn't (x and y are positive, ...), + * should only be used where __builtin_umull_overflow can not work, because it makes + * assumptions that __builtin_umull_overflow doesn't (x and y are positive, ...), * *and* doesn't make use of compiler intrinsics, so it's probably slower than - * __size_mul_overflow. + * __builtin_umull_overflow. */ #define __unsafe_check_mul_overflow(x, y) ((__SIZE_TYPE__)-1 / (x) < (y)) diff --git a/libc/include/unistd.h b/libc/include/unistd.h index c69db615c..273221432 100644 --- a/libc/include/unistd.h +++ b/libc/include/unistd.h @@ -350,8 +350,11 @@ long syscall(long __number, ...); int daemon(int __no_chdir, int __no_close); #if defined(__arm__) +/** + * New code should use __builtin___clear_cache() instead, which works on + * all architectures. + */ int cacheflush(long __addr, long __nbytes, long __cache); - /* __attribute__((deprecated("use __builtin___clear_cache instead"))); */ #endif pid_t tcgetpgrp(int __fd); diff --git a/libc/kernel/tools/defaults.py b/libc/kernel/tools/defaults.py index 1d7b4276a..06afb25d6 100644 --- a/libc/kernel/tools/defaults.py +++ b/libc/kernel/tools/defaults.py @@ -32,8 +32,10 @@ kernel_known_macros = { # addition to removing the structure, add a #include to the file. kernel_structs_to_remove = { # Remove these structures since they are still the same as - # timeval, itimerval. - "__kernel_old_timeval": None, + # timeval, itimerval. Also, add an include of linux/time.h + # since __kernel_old_timeval is being changed to timeval, and + # is only present in linux/time.h. + "__kernel_old_timeval": "linux/time.h", "__kernel_old_itimerval": None, # Replace all of the below structures with #include <bits/STRUCT.h> "__kernel_sockaddr_storage": "bits/sockaddr_storage.h", diff --git a/libc/kernel/uapi/asm-arm/asm/unistd-eabi.h b/libc/kernel/uapi/asm-arm/asm/unistd-eabi.h index 482b9cb8e..103213165 100644 --- a/libc/kernel/uapi/asm-arm/asm/unistd-eabi.h +++ b/libc/kernel/uapi/asm-arm/asm/unistd-eabi.h @@ -415,4 +415,9 @@ #define __NR_futex_wake (__NR_SYSCALL_BASE + 454) #define __NR_futex_wait (__NR_SYSCALL_BASE + 455) #define __NR_futex_requeue (__NR_SYSCALL_BASE + 456) +#define __NR_statmount (__NR_SYSCALL_BASE + 457) +#define __NR_listmount (__NR_SYSCALL_BASE + 458) +#define __NR_lsm_get_self_attr (__NR_SYSCALL_BASE + 459) +#define __NR_lsm_set_self_attr (__NR_SYSCALL_BASE + 460) +#define __NR_lsm_list_modules (__NR_SYSCALL_BASE + 461) #endif diff --git a/libc/kernel/uapi/asm-arm/asm/unistd-oabi.h b/libc/kernel/uapi/asm-arm/asm/unistd-oabi.h index 5126831c3..1f576046d 100644 --- a/libc/kernel/uapi/asm-arm/asm/unistd-oabi.h +++ b/libc/kernel/uapi/asm-arm/asm/unistd-oabi.h @@ -427,4 +427,9 @@ #define __NR_futex_wake (__NR_SYSCALL_BASE + 454) #define __NR_futex_wait (__NR_SYSCALL_BASE + 455) #define __NR_futex_requeue (__NR_SYSCALL_BASE + 456) +#define __NR_statmount (__NR_SYSCALL_BASE + 457) +#define __NR_listmount (__NR_SYSCALL_BASE + 458) +#define __NR_lsm_get_self_attr (__NR_SYSCALL_BASE + 459) +#define __NR_lsm_set_self_attr (__NR_SYSCALL_BASE + 460) +#define __NR_lsm_list_modules (__NR_SYSCALL_BASE + 461) #endif diff --git a/libc/kernel/uapi/asm-generic/unistd.h b/libc/kernel/uapi/asm-generic/unistd.h index 717a098af..c88275184 100644 --- a/libc/kernel/uapi/asm-generic/unistd.h +++ b/libc/kernel/uapi/asm-generic/unistd.h @@ -407,8 +407,13 @@ #define __NR_futex_wake 454 #define __NR_futex_wait 455 #define __NR_futex_requeue 456 +#define __NR_statmount 457 +#define __NR_listmount 458 +#define __NR_lsm_get_self_attr 459 +#define __NR_lsm_set_self_attr 460 +#define __NR_lsm_list_modules 461 #undef __NR_syscalls -#define __NR_syscalls 457 +#define __NR_syscalls 462 #if __BITS_PER_LONG == 64 && !defined(__SYSCALL_COMPAT) #define __NR_fcntl __NR3264_fcntl #define __NR_statfs __NR3264_statfs diff --git a/libc/kernel/uapi/asm-riscv/asm/hwprobe.h b/libc/kernel/uapi/asm-riscv/asm/hwprobe.h index a18b020d7..6f8d8f585 100644 --- a/libc/kernel/uapi/asm-riscv/asm/hwprobe.h +++ b/libc/kernel/uapi/asm-riscv/asm/hwprobe.h @@ -24,6 +24,35 @@ struct riscv_hwprobe { #define RISCV_HWPROBE_EXT_ZBB (1 << 4) #define RISCV_HWPROBE_EXT_ZBS (1 << 5) #define RISCV_HWPROBE_EXT_ZICBOZ (1 << 6) +#define RISCV_HWPROBE_EXT_ZBC (1 << 7) +#define RISCV_HWPROBE_EXT_ZBKB (1 << 8) +#define RISCV_HWPROBE_EXT_ZBKC (1 << 9) +#define RISCV_HWPROBE_EXT_ZBKX (1 << 10) +#define RISCV_HWPROBE_EXT_ZKND (1 << 11) +#define RISCV_HWPROBE_EXT_ZKNE (1 << 12) +#define RISCV_HWPROBE_EXT_ZKNH (1 << 13) +#define RISCV_HWPROBE_EXT_ZKSED (1 << 14) +#define RISCV_HWPROBE_EXT_ZKSH (1 << 15) +#define RISCV_HWPROBE_EXT_ZKT (1 << 16) +#define RISCV_HWPROBE_EXT_ZVBB (1 << 17) +#define RISCV_HWPROBE_EXT_ZVBC (1 << 18) +#define RISCV_HWPROBE_EXT_ZVKB (1 << 19) +#define RISCV_HWPROBE_EXT_ZVKG (1 << 20) +#define RISCV_HWPROBE_EXT_ZVKNED (1 << 21) +#define RISCV_HWPROBE_EXT_ZVKNHA (1 << 22) +#define RISCV_HWPROBE_EXT_ZVKNHB (1 << 23) +#define RISCV_HWPROBE_EXT_ZVKSED (1 << 24) +#define RISCV_HWPROBE_EXT_ZVKSH (1 << 25) +#define RISCV_HWPROBE_EXT_ZVKT (1 << 26) +#define RISCV_HWPROBE_EXT_ZFH (1 << 27) +#define RISCV_HWPROBE_EXT_ZFHMIN (1 << 28) +#define RISCV_HWPROBE_EXT_ZIHINTNTL (1 << 29) +#define RISCV_HWPROBE_EXT_ZVFH (1 << 30) +#define RISCV_HWPROBE_EXT_ZVFHMIN (1 << 31) +#define RISCV_HWPROBE_EXT_ZFA (1ULL << 32) +#define RISCV_HWPROBE_EXT_ZTSO (1ULL << 33) +#define RISCV_HWPROBE_EXT_ZACAS (1ULL << 34) +#define RISCV_HWPROBE_EXT_ZICOND (1ULL << 35) #define RISCV_HWPROBE_KEY_CPUPERF_0 5 #define RISCV_HWPROBE_MISALIGNED_UNKNOWN (0 << 0) #define RISCV_HWPROBE_MISALIGNED_EMULATED (1 << 0) @@ -32,4 +61,5 @@ struct riscv_hwprobe { #define RISCV_HWPROBE_MISALIGNED_UNSUPPORTED (4 << 0) #define RISCV_HWPROBE_MISALIGNED_MASK (7 << 0) #define RISCV_HWPROBE_KEY_ZICBOZ_BLOCK_SIZE 6 +#define RISCV_HWPROBE_WHICH_CPUS (1 << 0) #endif diff --git a/libc/kernel/uapi/asm-riscv/asm/kvm.h b/libc/kernel/uapi/asm-riscv/asm/kvm.h index 470d58143..054e1a121 100644 --- a/libc/kernel/uapi/asm-riscv/asm/kvm.h +++ b/libc/kernel/uapi/asm-riscv/asm/kvm.h @@ -99,6 +99,33 @@ enum KVM_RISCV_ISA_EXT_ID { KVM_RISCV_ISA_EXT_ZIHPM, KVM_RISCV_ISA_EXT_SMSTATEEN, KVM_RISCV_ISA_EXT_ZICOND, + KVM_RISCV_ISA_EXT_ZBC, + KVM_RISCV_ISA_EXT_ZBKB, + KVM_RISCV_ISA_EXT_ZBKC, + KVM_RISCV_ISA_EXT_ZBKX, + KVM_RISCV_ISA_EXT_ZKND, + KVM_RISCV_ISA_EXT_ZKNE, + KVM_RISCV_ISA_EXT_ZKNH, + KVM_RISCV_ISA_EXT_ZKR, + KVM_RISCV_ISA_EXT_ZKSED, + KVM_RISCV_ISA_EXT_ZKSH, + KVM_RISCV_ISA_EXT_ZKT, + KVM_RISCV_ISA_EXT_ZVBB, + KVM_RISCV_ISA_EXT_ZVBC, + KVM_RISCV_ISA_EXT_ZVKB, + KVM_RISCV_ISA_EXT_ZVKG, + KVM_RISCV_ISA_EXT_ZVKNED, + KVM_RISCV_ISA_EXT_ZVKNHA, + KVM_RISCV_ISA_EXT_ZVKNHB, + KVM_RISCV_ISA_EXT_ZVKSED, + KVM_RISCV_ISA_EXT_ZVKSH, + KVM_RISCV_ISA_EXT_ZVKT, + KVM_RISCV_ISA_EXT_ZFH, + KVM_RISCV_ISA_EXT_ZFHMIN, + KVM_RISCV_ISA_EXT_ZIHINTNTL, + KVM_RISCV_ISA_EXT_ZVFH, + KVM_RISCV_ISA_EXT_ZVFHMIN, + KVM_RISCV_ISA_EXT_ZFA, KVM_RISCV_ISA_EXT_MAX, }; enum KVM_RISCV_SBI_EXT_ID { @@ -112,8 +139,13 @@ enum KVM_RISCV_SBI_EXT_ID { KVM_RISCV_SBI_EXT_EXPERIMENTAL, KVM_RISCV_SBI_EXT_VENDOR, KVM_RISCV_SBI_EXT_DBCN, + KVM_RISCV_SBI_EXT_STA, KVM_RISCV_SBI_EXT_MAX, }; +struct kvm_riscv_sbi_sta { + unsigned long shmem_lo; + unsigned long shmem_hi; +}; #define KVM_RISCV_TIMER_STATE_OFF 0 #define KVM_RISCV_TIMER_STATE_ON 1 #define KVM_REG_SIZE(id) (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT)) @@ -155,6 +187,9 @@ enum KVM_RISCV_SBI_EXT_ID { #define KVM_REG_RISCV_VECTOR (0x09 << KVM_REG_RISCV_TYPE_SHIFT) #define KVM_REG_RISCV_VECTOR_CSR_REG(name) (offsetof(struct __riscv_v_ext_state, name) / sizeof(unsigned long)) #define KVM_REG_RISCV_VECTOR_REG(n) ((n) + sizeof(struct __riscv_v_ext_state) / sizeof(unsigned long)) +#define KVM_REG_RISCV_SBI_STATE (0x0a << KVM_REG_RISCV_TYPE_SHIFT) +#define KVM_REG_RISCV_SBI_STA (0x0 << KVM_REG_RISCV_SUBTYPE_SHIFT) +#define KVM_REG_RISCV_SBI_STA_REG(name) (offsetof(struct kvm_riscv_sbi_sta, name) / sizeof(unsigned long)) #define KVM_DEV_RISCV_APLIC_ALIGN 0x1000 #define KVM_DEV_RISCV_APLIC_SIZE 0x4000 #define KVM_DEV_RISCV_APLIC_MAX_HARTS 0x4000 diff --git a/libc/kernel/uapi/asm-x86/asm/kvm.h b/libc/kernel/uapi/asm-x86/asm/kvm.h index 334fb25b2..1dd057a5b 100644 --- a/libc/kernel/uapi/asm-x86/asm/kvm.h +++ b/libc/kernel/uapi/asm-x86/asm/kvm.h @@ -409,4 +409,6 @@ struct kvm_pmu_event_filter { #define KVM_VCPU_TSC_CTRL 0 #define KVM_VCPU_TSC_OFFSET 0 #define KVM_EXIT_HYPERCALL_LONG_MODE BIT(0) +#define KVM_X86_DEFAULT_VM 0 +#define KVM_X86_SW_PROTECTED_VM 1 #endif diff --git a/libc/kernel/uapi/asm-x86/asm/signal.h b/libc/kernel/uapi/asm-x86/asm/signal.h index 96ac8fbed..6cffef3c4 100644 --- a/libc/kernel/uapi/asm-x86/asm/signal.h +++ b/libc/kernel/uapi/asm-x86/asm/signal.h @@ -8,7 +8,6 @@ #define _UAPI_ASM_X86_SIGNAL_H #ifndef __ASSEMBLY__ #include <linux/types.h> -#include <linux/time.h> #include <linux/compiler.h> struct siginfo; #define _KERNEL_NSIG 32 diff --git a/libc/kernel/uapi/asm-x86/asm/unistd_32.h b/libc/kernel/uapi/asm-x86/asm/unistd_32.h index e82b988bd..72076fdb3 100644 --- a/libc/kernel/uapi/asm-x86/asm/unistd_32.h +++ b/libc/kernel/uapi/asm-x86/asm/unistd_32.h @@ -452,4 +452,9 @@ #define __NR_futex_wake 454 #define __NR_futex_wait 455 #define __NR_futex_requeue 456 +#define __NR_statmount 457 +#define __NR_listmount 458 +#define __NR_lsm_get_self_attr 459 +#define __NR_lsm_set_self_attr 460 +#define __NR_lsm_list_modules 461 #endif diff --git a/libc/kernel/uapi/asm-x86/asm/unistd_64.h b/libc/kernel/uapi/asm-x86/asm/unistd_64.h index 10d6e96f0..8c4f76e03 100644 --- a/libc/kernel/uapi/asm-x86/asm/unistd_64.h +++ b/libc/kernel/uapi/asm-x86/asm/unistd_64.h @@ -374,4 +374,9 @@ #define __NR_futex_wake 454 #define __NR_futex_wait 455 #define __NR_futex_requeue 456 +#define __NR_statmount 457 +#define __NR_listmount 458 +#define __NR_lsm_get_self_attr 459 +#define __NR_lsm_set_self_attr 460 +#define __NR_lsm_list_modules 461 #endif diff --git a/libc/kernel/uapi/asm-x86/asm/unistd_x32.h b/libc/kernel/uapi/asm-x86/asm/unistd_x32.h index 7fbbe119d..984cfcadf 100644 --- a/libc/kernel/uapi/asm-x86/asm/unistd_x32.h +++ b/libc/kernel/uapi/asm-x86/asm/unistd_x32.h @@ -326,6 +326,11 @@ #define __NR_futex_wake (__X32_SYSCALL_BIT + 454) #define __NR_futex_wait (__X32_SYSCALL_BIT + 455) #define __NR_futex_requeue (__X32_SYSCALL_BIT + 456) +#define __NR_statmount (__X32_SYSCALL_BIT + 457) +#define __NR_listmount (__X32_SYSCALL_BIT + 458) +#define __NR_lsm_get_self_attr (__X32_SYSCALL_BIT + 459) +#define __NR_lsm_set_self_attr (__X32_SYSCALL_BIT + 460) +#define __NR_lsm_list_modules (__X32_SYSCALL_BIT + 461) #define __NR_rt_sigaction (__X32_SYSCALL_BIT + 512) #define __NR_rt_sigreturn (__X32_SYSCALL_BIT + 513) #define __NR_ioctl (__X32_SYSCALL_BIT + 514) diff --git a/libc/kernel/uapi/drm/drm.h b/libc/kernel/uapi/drm/drm.h index 0fe5c2684..c8fab3c5d 100644 --- a/libc/kernel/uapi/drm/drm.h +++ b/libc/kernel/uapi/drm/drm.h @@ -353,6 +353,7 @@ struct drm_gem_open { #define DRM_CAP_CRTC_IN_VBLANK_EVENT 0x12 #define DRM_CAP_SYNCOBJ 0x13 #define DRM_CAP_SYNCOBJ_TIMELINE 0x14 +#define DRM_CAP_ATOMIC_ASYNC_PAGE_FLIP 0x15 struct drm_get_cap { __u64 capability; __u64 value; @@ -362,6 +363,7 @@ struct drm_get_cap { #define DRM_CLIENT_CAP_ATOMIC 3 #define DRM_CLIENT_CAP_ASPECT_RATIO 4 #define DRM_CLIENT_CAP_WRITEBACK_CONNECTORS 5 +#define DRM_CLIENT_CAP_CURSOR_PLANE_HOTSPOT 6 struct drm_set_client_cap { __u64 capability; __u64 value; @@ -401,6 +403,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) +#define DRM_SYNCOBJ_WAIT_FLAGS_WAIT_DEADLINE (1 << 3) struct drm_syncobj_wait { __u64 handles; __s64 timeout_nsec; @@ -408,6 +411,7 @@ struct drm_syncobj_wait { __u32 flags; __u32 first_signaled; __u32 pad; + __u64 deadline_nsec; }; struct drm_syncobj_timeline_wait { __u64 handles; @@ -417,6 +421,7 @@ struct drm_syncobj_timeline_wait { __u32 flags; __u32 first_signaled; __u32 pad; + __u64 deadline_nsec; }; struct drm_syncobj_eventfd { __u32 handle; @@ -570,6 +575,7 @@ extern "C" { #define DRM_IOCTL_SYNCOBJ_TIMELINE_SIGNAL DRM_IOWR(0xCD, struct drm_syncobj_timeline_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) +#define DRM_IOCTL_MODE_CLOSEFB DRM_IOWR(0xD0, struct drm_mode_closefb) #define DRM_COMMAND_BASE 0x40 #define DRM_COMMAND_END 0xA0 struct drm_event { diff --git a/libc/kernel/uapi/drm/drm_mode.h b/libc/kernel/uapi/drm/drm_mode.h index f7b65b2b8..9e6296c98 100644 --- a/libc/kernel/uapi/drm/drm_mode.h +++ b/libc/kernel/uapi/drm/drm_mode.h @@ -357,6 +357,9 @@ struct drm_mode_crtc_lut { struct drm_color_ctm { __u64 matrix[9]; }; +struct drm_color_ctm_3x4 { + __u64 matrix[12]; +}; struct drm_color_lut { __u16 red; __u16 green; @@ -483,6 +486,10 @@ struct drm_mode_rect { __s32 x2; __s32 y2; }; +struct drm_mode_closefb { + __u32 fb_id; + __u32 pad; +}; #ifdef __cplusplus } #endif diff --git a/libc/kernel/uapi/drm/habanalabs_accel.h b/libc/kernel/uapi/drm/habanalabs_accel.h index 158e937ed..47afb82b9 100644 --- a/libc/kernel/uapi/drm/habanalabs_accel.h +++ b/libc/kernel/uapi/drm/habanalabs_accel.h @@ -656,6 +656,7 @@ enum hl_server_type { #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 #define HL_ENGINES_DATA_MAX_SIZE SZ_1M @@ -849,6 +850,7 @@ struct hl_info_dev_memalloc_page_sizes { #define SEC_SIGNATURE_BUF_SZ 255 #define SEC_PUB_DATA_BUF_SZ 510 #define SEC_CERTIFICATE_BUF_SZ 2046 +#define SEC_DEV_INFO_BUF_SZ 5120 struct hl_info_sec_attest { __u32 nonce; __u16 pcr_quote_len; @@ -864,6 +866,18 @@ struct hl_info_sec_attest { __u8 certificate[SEC_CERTIFICATE_BUF_SZ]; __u8 pad0[2]; }; +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 { __s64 timestamp; __u64 addr; diff --git a/libc/kernel/uapi/drm/ivpu_accel.h b/libc/kernel/uapi/drm/ivpu_accel.h index ca2014f38..fcbf6f7fb 100644 --- a/libc/kernel/uapi/drm/ivpu_accel.h +++ b/libc/kernel/uapi/drm/ivpu_accel.h @@ -43,6 +43,11 @@ extern "C" { #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 #define DRM_IVPU_CAP_METRIC_STREAMER 1 #define DRM_IVPU_CAP_DMA_MEMORY_RANGE 2 struct drm_ivpu_param { @@ -80,8 +85,10 @@ struct drm_ivpu_submit { __u32 engine; __u32 flags; __u32 commands_offset; + __u32 priority; }; #define DRM_IVPU_JOB_STATUS_SUCCESS 0 +#define DRM_IVPU_JOB_STATUS_ABORTED 256 struct drm_ivpu_bo_wait { __u32 handle; __u32 flags; diff --git a/libc/kernel/uapi/drm/msm_drm.h b/libc/kernel/uapi/drm/msm_drm.h index d180f7082..4d837440b 100644 --- a/libc/kernel/uapi/drm/msm_drm.h +++ b/libc/kernel/uapi/drm/msm_drm.h @@ -36,6 +36,7 @@ struct drm_msm_timespec { #define MSM_PARAM_CMDLINE 0x0d #define MSM_PARAM_VA_START 0x0e #define MSM_PARAM_VA_SIZE 0x0f +#define MSM_PARAM_HIGHEST_BANK_BIT 0x10 #define MSM_PARAM_NR_RINGS MSM_PARAM_PRIORITIES struct drm_msm_param { __u32 pipe; @@ -63,6 +64,8 @@ struct drm_msm_gem_new { #define MSM_INFO_GET_NAME 0x03 #define MSM_INFO_SET_IOVA 0x04 #define MSM_INFO_GET_FLAGS 0x05 +#define MSM_INFO_SET_METADATA 0x06 +#define MSM_INFO_GET_METADATA 0x07 struct drm_msm_gem_info { __u32 handle; __u32 info; diff --git a/libc/kernel/uapi/drm/nouveau_drm.h b/libc/kernel/uapi/drm/nouveau_drm.h index 221ff2132..f7d870e73 100644 --- a/libc/kernel/uapi/drm/nouveau_drm.h +++ b/libc/kernel/uapi/drm/nouveau_drm.h @@ -23,6 +23,8 @@ extern "C" { #define NOUVEAU_GETPARAM_HAS_BO_USAGE 15 #define NOUVEAU_GETPARAM_HAS_PAGEFLIP 16 #define NOUVEAU_GETPARAM_EXEC_PUSH_MAX 17 +#define NOUVEAU_GETPARAM_VRAM_BAR_SIZE 18 +#define NOUVEAU_GETPARAM_VRAM_USED 19 struct drm_nouveau_getparam { __u64 param; __u64 value; diff --git a/libc/kernel/uapi/drm/pvr_drm.h b/libc/kernel/uapi/drm/pvr_drm.h new file mode 100644 index 000000000..c68c719f7 --- /dev/null +++ b/libc/kernel/uapi/drm/pvr_drm.h @@ -0,0 +1,271 @@ +/* + * This file is auto-generated. Modifications will be lost. + * + * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ + * for more information. + */ +#ifndef PVR_DRM_UAPI_H +#define PVR_DRM_UAPI_H +#include "drm.h" +#include <linux/const.h> +#include <linux/types.h> +#ifdef __cplusplus +extern "C" { +#endif +struct drm_pvr_obj_array { + __u32 stride; + __u32 count; + __u64 array; +}; +#define DRM_PVR_OBJ_ARRAY(cnt,ptr) {.stride = sizeof((ptr)[0]),.count = (cnt),.array = (__u64) (uintptr_t) (ptr) } +#define PVR_IOCTL(_ioctl,_mode,_data) _mode(DRM_COMMAND_BASE + (_ioctl), struct drm_pvr_ioctl_ ##_data ##_args) +#define DRM_IOCTL_PVR_DEV_QUERY PVR_IOCTL(0x00, DRM_IOWR, dev_query) +#define DRM_IOCTL_PVR_CREATE_BO PVR_IOCTL(0x01, DRM_IOWR, create_bo) +#define DRM_IOCTL_PVR_GET_BO_MMAP_OFFSET PVR_IOCTL(0x02, DRM_IOWR, get_bo_mmap_offset) +#define DRM_IOCTL_PVR_CREATE_VM_CONTEXT PVR_IOCTL(0x03, DRM_IOWR, create_vm_context) +#define DRM_IOCTL_PVR_DESTROY_VM_CONTEXT PVR_IOCTL(0x04, DRM_IOW, destroy_vm_context) +#define DRM_IOCTL_PVR_VM_MAP PVR_IOCTL(0x05, DRM_IOW, vm_map) +#define DRM_IOCTL_PVR_VM_UNMAP PVR_IOCTL(0x06, DRM_IOW, vm_unmap) +#define DRM_IOCTL_PVR_CREATE_CONTEXT PVR_IOCTL(0x07, DRM_IOWR, create_context) +#define DRM_IOCTL_PVR_DESTROY_CONTEXT PVR_IOCTL(0x08, DRM_IOW, destroy_context) +#define DRM_IOCTL_PVR_CREATE_FREE_LIST PVR_IOCTL(0x09, DRM_IOWR, create_free_list) +#define DRM_IOCTL_PVR_DESTROY_FREE_LIST PVR_IOCTL(0x0a, DRM_IOW, destroy_free_list) +#define DRM_IOCTL_PVR_CREATE_HWRT_DATASET PVR_IOCTL(0x0b, DRM_IOWR, create_hwrt_dataset) +#define DRM_IOCTL_PVR_DESTROY_HWRT_DATASET PVR_IOCTL(0x0c, DRM_IOW, destroy_hwrt_dataset) +#define DRM_IOCTL_PVR_SUBMIT_JOBS PVR_IOCTL(0x0d, DRM_IOW, submit_jobs) +struct drm_pvr_dev_query_gpu_info { + __u64 gpu_id; + __u32 num_phantoms; + __u32 _padding_c; +}; +struct drm_pvr_dev_query_runtime_info { + __u64 free_list_min_pages; + __u64 free_list_max_pages; + __u32 common_store_alloc_region_size; + __u32 common_store_partition_space_size; + __u32 max_coeffs; + __u32 cdm_max_local_mem_size_regs; +}; +struct drm_pvr_dev_query_quirks { + __u64 quirks; + __u16 count; + __u16 musthave_count; + __u32 _padding_c; +}; +struct drm_pvr_dev_query_enhancements { + __u64 enhancements; + __u16 count; + __u16 _padding_a; + __u32 _padding_c; +}; +enum drm_pvr_heap_id { + DRM_PVR_HEAP_GENERAL = 0, + DRM_PVR_HEAP_PDS_CODE_DATA, + DRM_PVR_HEAP_USC_CODE, + DRM_PVR_HEAP_RGNHDR, + DRM_PVR_HEAP_VIS_TEST, + DRM_PVR_HEAP_TRANSFER_FRAG, + DRM_PVR_HEAP_COUNT +}; +struct drm_pvr_heap { + __u64 base; + __u64 size; + __u32 flags; + __u32 page_size_log2; +}; +struct drm_pvr_dev_query_heap_info { + struct drm_pvr_obj_array heaps; +}; +enum drm_pvr_static_data_area_usage { + DRM_PVR_STATIC_DATA_AREA_EOT = 0, + DRM_PVR_STATIC_DATA_AREA_FENCE, + DRM_PVR_STATIC_DATA_AREA_VDM_SYNC, + DRM_PVR_STATIC_DATA_AREA_YUV_CSC, +}; +struct drm_pvr_static_data_area { + __u16 area_usage; + __u16 location_heap_id; + __u32 size; + __u64 offset; +}; +struct drm_pvr_dev_query_static_data_areas { + struct drm_pvr_obj_array static_data_areas; +}; +enum drm_pvr_dev_query { + DRM_PVR_DEV_QUERY_GPU_INFO_GET = 0, + DRM_PVR_DEV_QUERY_RUNTIME_INFO_GET, + DRM_PVR_DEV_QUERY_QUIRKS_GET, + DRM_PVR_DEV_QUERY_ENHANCEMENTS_GET, + DRM_PVR_DEV_QUERY_HEAP_INFO_GET, + DRM_PVR_DEV_QUERY_STATIC_DATA_AREAS_GET, +}; +struct drm_pvr_ioctl_dev_query_args { + __u32 type; + __u32 size; + __u64 pointer; +}; +#define DRM_PVR_BO_BYPASS_DEVICE_CACHE _BITULL(0) +#define DRM_PVR_BO_PM_FW_PROTECT _BITULL(1) +#define DRM_PVR_BO_ALLOW_CPU_USERSPACE_ACCESS _BITULL(2) +#define DRM_PVR_BO_FLAGS_MASK (DRM_PVR_BO_BYPASS_DEVICE_CACHE | DRM_PVR_BO_PM_FW_PROTECT | DRM_PVR_BO_ALLOW_CPU_USERSPACE_ACCESS) +struct drm_pvr_ioctl_create_bo_args { + __u64 size; + __u32 handle; + __u32 _padding_c; + __u64 flags; +}; +struct drm_pvr_ioctl_get_bo_mmap_offset_args { + __u32 handle; + __u32 _padding_4; + __u64 offset; +}; +struct drm_pvr_ioctl_create_vm_context_args { + __u32 handle; + __u32 _padding_4; +}; +struct drm_pvr_ioctl_destroy_vm_context_args { + __u32 handle; + __u32 _padding_4; +}; +struct drm_pvr_ioctl_vm_map_args { + __u32 vm_context_handle; + __u32 flags; + __u64 device_addr; + __u32 handle; + __u32 _padding_14; + __u64 offset; + __u64 size; +}; +struct drm_pvr_ioctl_vm_unmap_args { + __u32 vm_context_handle; + __u32 _padding_4; + __u64 device_addr; + __u64 size; +}; +enum drm_pvr_ctx_priority { + DRM_PVR_CTX_PRIORITY_LOW = - 512, + DRM_PVR_CTX_PRIORITY_NORMAL = 0, + DRM_PVR_CTX_PRIORITY_HIGH = 512, +}; +enum drm_pvr_ctx_type { + DRM_PVR_CTX_TYPE_RENDER = 0, + DRM_PVR_CTX_TYPE_COMPUTE, + DRM_PVR_CTX_TYPE_TRANSFER_FRAG, +}; +struct drm_pvr_ioctl_create_context_args { + __u32 type; + __u32 flags; + __s32 priority; + __u32 handle; + __u64 static_context_state; + __u32 static_context_state_len; + __u32 vm_context_handle; + __u64 callstack_addr; +}; +struct drm_pvr_ioctl_destroy_context_args { + __u32 handle; + __u32 _padding_4; +}; +struct drm_pvr_ioctl_create_free_list_args { + __u64 free_list_gpu_addr; + __u32 initial_num_pages; + __u32 max_num_pages; + __u32 grow_num_pages; + __u32 grow_threshold; + __u32 vm_context_handle; + __u32 handle; +}; +struct drm_pvr_ioctl_destroy_free_list_args { + __u32 handle; + __u32 _padding_4; +}; +struct drm_pvr_create_hwrt_geom_data_args { + __u64 tpc_dev_addr; + __u32 tpc_size; + __u32 tpc_stride; + __u64 vheap_table_dev_addr; + __u64 rtc_dev_addr; +}; +struct drm_pvr_create_hwrt_rt_data_args { + __u64 pm_mlist_dev_addr; + __u64 macrotile_array_dev_addr; + __u64 region_header_dev_addr; +}; +#define PVR_DRM_HWRT_FREE_LIST_LOCAL 0 +#define PVR_DRM_HWRT_FREE_LIST_GLOBAL 1U +struct drm_pvr_ioctl_create_hwrt_dataset_args { + struct drm_pvr_create_hwrt_geom_data_args geom_data_args; + struct drm_pvr_create_hwrt_rt_data_args rt_data_args[2]; + __u32 free_list_handles[2]; + __u32 width; + __u32 height; + __u32 samples; + __u32 layers; + __u32 isp_merge_lower_x; + __u32 isp_merge_lower_y; + __u32 isp_merge_scale_x; + __u32 isp_merge_scale_y; + __u32 isp_merge_upper_x; + __u32 isp_merge_upper_y; + __u32 region_header_size; + __u32 handle; +}; +struct drm_pvr_ioctl_destroy_hwrt_dataset_args { + __u32 handle; + __u32 _padding_4; +}; +#define DRM_PVR_SYNC_OP_FLAG_HANDLE_TYPE_MASK 0xf +#define DRM_PVR_SYNC_OP_FLAG_HANDLE_TYPE_SYNCOBJ 0 +#define DRM_PVR_SYNC_OP_FLAG_HANDLE_TYPE_TIMELINE_SYNCOBJ 1 +#define DRM_PVR_SYNC_OP_FLAG_SIGNAL _BITULL(31) +#define DRM_PVR_SYNC_OP_FLAG_WAIT 0 +#define DRM_PVR_SYNC_OP_FLAGS_MASK (DRM_PVR_SYNC_OP_FLAG_HANDLE_TYPE_MASK | DRM_PVR_SYNC_OP_FLAG_SIGNAL) +struct drm_pvr_sync_op { + __u32 handle; + __u32 flags; + __u64 value; +}; +#define DRM_PVR_SUBMIT_JOB_GEOM_CMD_FIRST _BITULL(0) +#define DRM_PVR_SUBMIT_JOB_GEOM_CMD_LAST _BITULL(1) +#define DRM_PVR_SUBMIT_JOB_GEOM_CMD_SINGLE_CORE _BITULL(2) +#define DRM_PVR_SUBMIT_JOB_GEOM_CMD_FLAGS_MASK (DRM_PVR_SUBMIT_JOB_GEOM_CMD_FIRST | DRM_PVR_SUBMIT_JOB_GEOM_CMD_LAST | DRM_PVR_SUBMIT_JOB_GEOM_CMD_SINGLE_CORE) +#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_SINGLE_CORE _BITULL(0) +#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_DEPTHBUFFER _BITULL(1) +#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_STENCILBUFFER _BITULL(2) +#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_PREVENT_CDM_OVERLAP _BITULL(3) +#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_SCRATCHBUFFER _BITULL(4) +#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_GET_VIS_RESULTS _BITULL(5) +#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_PARTIAL_RENDER _BITULL(6) +#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_DISABLE_PIXELMERGE _BITULL(7) +#define DRM_PVR_SUBMIT_JOB_FRAG_CMD_FLAGS_MASK (DRM_PVR_SUBMIT_JOB_FRAG_CMD_SINGLE_CORE | DRM_PVR_SUBMIT_JOB_FRAG_CMD_DEPTHBUFFER | DRM_PVR_SUBMIT_JOB_FRAG_CMD_STENCILBUFFER | DRM_PVR_SUBMIT_JOB_FRAG_CMD_PREVENT_CDM_OVERLAP | DRM_PVR_SUBMIT_JOB_FRAG_CMD_SCRATCHBUFFER | DRM_PVR_SUBMIT_JOB_FRAG_CMD_GET_VIS_RESULTS | DRM_PVR_SUBMIT_JOB_FRAG_CMD_PARTIAL_RENDER | DRM_PVR_SUBMIT_JOB_FRAG_CMD_DISABLE_PIXELMERGE) +#define DRM_PVR_SUBMIT_JOB_COMPUTE_CMD_PREVENT_ALL_OVERLAP _BITULL(0) +#define DRM_PVR_SUBMIT_JOB_COMPUTE_CMD_SINGLE_CORE _BITULL(1) +#define DRM_PVR_SUBMIT_JOB_COMPUTE_CMD_FLAGS_MASK (DRM_PVR_SUBMIT_JOB_COMPUTE_CMD_PREVENT_ALL_OVERLAP | DRM_PVR_SUBMIT_JOB_COMPUTE_CMD_SINGLE_CORE) +#define DRM_PVR_SUBMIT_JOB_TRANSFER_CMD_SINGLE_CORE _BITULL(0) +#define DRM_PVR_SUBMIT_JOB_TRANSFER_CMD_FLAGS_MASK DRM_PVR_SUBMIT_JOB_TRANSFER_CMD_SINGLE_CORE +enum drm_pvr_job_type { + DRM_PVR_JOB_TYPE_GEOMETRY = 0, + DRM_PVR_JOB_TYPE_FRAGMENT, + DRM_PVR_JOB_TYPE_COMPUTE, + DRM_PVR_JOB_TYPE_TRANSFER_FRAG, +}; +struct drm_pvr_hwrt_data_ref { + __u32 set_handle; + __u32 data_index; +}; +struct drm_pvr_job { + __u32 type; + __u32 context_handle; + __u32 flags; + __u32 cmd_stream_len; + __u64 cmd_stream; + struct drm_pvr_obj_array sync_ops; + struct drm_pvr_hwrt_data_ref hwrt; +}; +struct drm_pvr_ioctl_submit_jobs_args { + struct drm_pvr_obj_array jobs; +}; +#ifdef __cplusplus +} +#endif +#endif diff --git a/libc/kernel/uapi/drm/v3d_drm.h b/libc/kernel/uapi/drm/v3d_drm.h index 594856f6f..4000fd3e6 100644 --- a/libc/kernel/uapi/drm/v3d_drm.h +++ b/libc/kernel/uapi/drm/v3d_drm.h @@ -21,6 +21,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) #define DRM_IOCTL_V3D_CREATE_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_CREATE_BO, struct drm_v3d_create_bo) @@ -32,12 +33,19 @@ extern "C" { #define DRM_IOCTL_V3D_PERFMON_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_PERFMON_CREATE, struct drm_v3d_perfmon_create) #define DRM_IOCTL_V3D_PERFMON_DESTROY DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_PERFMON_DESTROY, 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 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; }; struct drm_v3d_sem { @@ -52,6 +60,7 @@ enum v3d_queue { V3D_TFU, V3D_CSD, V3D_CACHE_CLEAN, + V3D_CPU, }; struct drm_v3d_multi_sync { struct drm_v3d_extension base; @@ -109,6 +118,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 { __u32 param; @@ -133,6 +143,10 @@ struct drm_v3d_submit_tfu { __u32 out_sync; __u32 flags; __u64 extensions; + struct { + __u32 ioc; + __u32 pad; + } v71; }; struct drm_v3d_submit_csd { __u32 cfg[7]; @@ -146,6 +160,66 @@ struct drm_v3d_submit_csd { __u32 flags; __u32 pad; }; +struct drm_v3d_indirect_csd { + struct drm_v3d_extension base; + struct drm_v3d_submit_csd submit; + __u32 indirect; + __u32 offset; + __u32 wg_size; + __u32 wg_uniform_offsets[3]; +}; +struct drm_v3d_timestamp_query { + struct drm_v3d_extension base; + __u64 offsets; + __u64 syncs; + __u32 count; + __u32 pad; +}; +struct drm_v3d_reset_timestamp_query { + struct drm_v3d_extension base; + __u64 syncs; + __u32 offset; + __u32 count; +}; +struct drm_v3d_copy_timestamp_query { + struct drm_v3d_extension base; + __u8 do_64bit; + __u8 do_partial; + __u8 availability_bit; + __u8 pad; + __u32 offset; + __u32 stride; + __u32 count; + __u64 offsets; + __u64 syncs; +}; +struct drm_v3d_reset_performance_query { + struct drm_v3d_extension base; + __u64 syncs; + __u32 count; + __u32 nperfmons; + __u64 kperfmon_ids; +}; +struct drm_v3d_copy_performance_query { + struct drm_v3d_extension base; + __u8 do_64bit; + __u8 do_partial; + __u8 availability_bit; + __u8 pad; + __u32 offset; + __u32 stride; + __u32 nperfmons; + __u32 ncounters; + __u32 count; + __u64 syncs; + __u64 kperfmon_ids; +}; +struct drm_v3d_submit_cpu { + __u64 bo_handles; + __u32 bo_handle_count; + __u32 flags; + __u64 extensions; +}; enum { V3D_PERFCNT_FEP_VALID_PRIMTS_NO_PIXELS, V3D_PERFCNT_FEP_VALID_PRIMS, diff --git a/libc/kernel/uapi/drm/virtgpu_drm.h b/libc/kernel/uapi/drm/virtgpu_drm.h index 6babe2d90..d79c7d90a 100644 --- a/libc/kernel/uapi/drm/virtgpu_drm.h +++ b/libc/kernel/uapi/drm/virtgpu_drm.h @@ -58,6 +58,7 @@ struct drm_virtgpu_execbuffer { #define VIRTGPU_PARAM_CROSS_DEVICE 5 #define VIRTGPU_PARAM_CONTEXT_INIT 6 #define VIRTGPU_PARAM_SUPPORTED_CAPSET_IDs 7 +#define VIRTGPU_PARAM_EXPLICIT_DEBUG_NAME 8 struct drm_virtgpu_getparam { __u64 param; __u64 value; @@ -140,6 +141,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; diff --git a/libc/kernel/uapi/drm/xe_drm.h b/libc/kernel/uapi/drm/xe_drm.h new file mode 100644 index 000000000..1e9f128e9 --- /dev/null +++ b/libc/kernel/uapi/drm/xe_drm.h @@ -0,0 +1,296 @@ +/* + * This file is auto-generated. Modifications will be lost. + * + * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ + * for more information. + */ +#ifndef _UAPI_XE_DRM_H_ +#define _UAPI_XE_DRM_H_ +#include "drm.h" +#ifdef __cplusplus +extern "C" { +#endif +#define DRM_XE_DEVICE_QUERY 0x00 +#define DRM_XE_GEM_CREATE 0x01 +#define DRM_XE_GEM_MMAP_OFFSET 0x02 +#define DRM_XE_VM_CREATE 0x03 +#define DRM_XE_VM_DESTROY 0x04 +#define DRM_XE_VM_BIND 0x05 +#define DRM_XE_EXEC_QUEUE_CREATE 0x06 +#define DRM_XE_EXEC_QUEUE_DESTROY 0x07 +#define DRM_XE_EXEC_QUEUE_GET_PROPERTY 0x08 +#define DRM_XE_EXEC 0x09 +#define DRM_XE_WAIT_USER_FENCE 0x0a +#define DRM_IOCTL_XE_DEVICE_QUERY DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_DEVICE_QUERY, struct drm_xe_device_query) +#define DRM_IOCTL_XE_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_GEM_CREATE, struct drm_xe_gem_create) +#define DRM_IOCTL_XE_GEM_MMAP_OFFSET DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_GEM_MMAP_OFFSET, struct drm_xe_gem_mmap_offset) +#define DRM_IOCTL_XE_VM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_VM_CREATE, struct drm_xe_vm_create) +#define DRM_IOCTL_XE_VM_DESTROY DRM_IOW(DRM_COMMAND_BASE + DRM_XE_VM_DESTROY, struct drm_xe_vm_destroy) +#define DRM_IOCTL_XE_VM_BIND DRM_IOW(DRM_COMMAND_BASE + DRM_XE_VM_BIND, struct drm_xe_vm_bind) +#define DRM_IOCTL_XE_EXEC_QUEUE_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_EXEC_QUEUE_CREATE, struct drm_xe_exec_queue_create) +#define DRM_IOCTL_XE_EXEC_QUEUE_DESTROY DRM_IOW(DRM_COMMAND_BASE + DRM_XE_EXEC_QUEUE_DESTROY, struct drm_xe_exec_queue_destroy) +#define DRM_IOCTL_XE_EXEC_QUEUE_GET_PROPERTY DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_EXEC_QUEUE_GET_PROPERTY, struct drm_xe_exec_queue_get_property) +#define DRM_IOCTL_XE_EXEC DRM_IOW(DRM_COMMAND_BASE + DRM_XE_EXEC, struct drm_xe_exec) +#define DRM_IOCTL_XE_WAIT_USER_FENCE DRM_IOWR(DRM_COMMAND_BASE + DRM_XE_WAIT_USER_FENCE, struct drm_xe_wait_user_fence) +struct drm_xe_user_extension { + __u64 next_extension; + __u32 name; + __u32 pad; +}; +struct drm_xe_ext_set_property { + struct drm_xe_user_extension base; + __u32 property; + __u32 pad; + __u64 value; + __u64 reserved[2]; +}; +struct drm_xe_engine_class_instance { +#define DRM_XE_ENGINE_CLASS_RENDER 0 +#define DRM_XE_ENGINE_CLASS_COPY 1 +#define DRM_XE_ENGINE_CLASS_VIDEO_DECODE 2 +#define DRM_XE_ENGINE_CLASS_VIDEO_ENHANCE 3 +#define DRM_XE_ENGINE_CLASS_COMPUTE 4 +#define DRM_XE_ENGINE_CLASS_VM_BIND 5 + __u16 engine_class; + __u16 engine_instance; + __u16 gt_id; + __u16 pad; +}; +struct drm_xe_engine { + struct drm_xe_engine_class_instance instance; + __u64 reserved[3]; +}; +struct drm_xe_query_engines { + __u32 num_engines; + __u32 pad; + struct drm_xe_engine engines[]; +}; +enum drm_xe_memory_class { + DRM_XE_MEM_REGION_CLASS_SYSMEM = 0, + DRM_XE_MEM_REGION_CLASS_VRAM +}; +struct drm_xe_mem_region { + __u16 mem_class; + __u16 instance; + __u32 min_page_size; + __u64 total_size; + __u64 used; + __u64 cpu_visible_size; + __u64 cpu_visible_used; + __u64 reserved[6]; +}; +struct drm_xe_query_mem_regions { + __u32 num_mem_regions; + __u32 pad; + struct drm_xe_mem_region mem_regions[]; +}; +struct drm_xe_query_config { + __u32 num_params; + __u32 pad; +#define DRM_XE_QUERY_CONFIG_REV_AND_DEVICE_ID 0 +#define DRM_XE_QUERY_CONFIG_FLAGS 1 +#define DRM_XE_QUERY_CONFIG_FLAG_HAS_VRAM (1 << 0) +#define DRM_XE_QUERY_CONFIG_MIN_ALIGNMENT 2 +#define DRM_XE_QUERY_CONFIG_VA_BITS 3 +#define DRM_XE_QUERY_CONFIG_MAX_EXEC_QUEUE_PRIORITY 4 + __u64 info[]; +}; +struct drm_xe_gt { +#define DRM_XE_QUERY_GT_TYPE_MAIN 0 +#define DRM_XE_QUERY_GT_TYPE_MEDIA 1 + __u16 type; + __u16 tile_id; + __u16 gt_id; + __u16 pad[3]; + __u32 reference_clock; + __u64 near_mem_regions; + __u64 far_mem_regions; + __u64 reserved[8]; +}; +struct drm_xe_query_gt_list { + __u32 num_gt; + __u32 pad; + struct drm_xe_gt gt_list[]; +}; +struct drm_xe_query_topology_mask { + __u16 gt_id; +#define DRM_XE_TOPO_DSS_GEOMETRY (1 << 0) +#define DRM_XE_TOPO_DSS_COMPUTE (1 << 1) +#define DRM_XE_TOPO_EU_PER_DSS (1 << 2) + __u16 type; + __u32 num_bytes; + __u8 mask[]; +}; +struct drm_xe_query_engine_cycles { + struct drm_xe_engine_class_instance eci; + __s32 clockid; + __u32 width; + __u64 engine_cycles; + __u64 cpu_timestamp; + __u64 cpu_delta; +}; +struct drm_xe_device_query { + __u64 extensions; +#define DRM_XE_DEVICE_QUERY_ENGINES 0 +#define DRM_XE_DEVICE_QUERY_MEM_REGIONS 1 +#define DRM_XE_DEVICE_QUERY_CONFIG 2 +#define DRM_XE_DEVICE_QUERY_GT_LIST 3 +#define DRM_XE_DEVICE_QUERY_HWCONFIG 4 +#define DRM_XE_DEVICE_QUERY_GT_TOPOLOGY 5 +#define DRM_XE_DEVICE_QUERY_ENGINE_CYCLES 6 + __u32 query; + __u32 size; + __u64 data; + __u64 reserved[2]; +}; +struct drm_xe_gem_create { + __u64 extensions; + __u64 size; + __u32 placement; +#define DRM_XE_GEM_CREATE_FLAG_DEFER_BACKING (1 << 0) +#define DRM_XE_GEM_CREATE_FLAG_SCANOUT (1 << 1) +#define DRM_XE_GEM_CREATE_FLAG_NEEDS_VISIBLE_VRAM (1 << 2) + __u32 flags; + __u32 vm_id; + __u32 handle; +#define DRM_XE_GEM_CPU_CACHING_WB 1 +#define DRM_XE_GEM_CPU_CACHING_WC 2 + __u16 cpu_caching; + __u16 pad[3]; + __u64 reserved[2]; +}; +struct drm_xe_gem_mmap_offset { + __u64 extensions; + __u32 handle; + __u32 flags; + __u64 offset; + __u64 reserved[2]; +}; +struct drm_xe_vm_create { + __u64 extensions; +#define DRM_XE_VM_CREATE_FLAG_SCRATCH_PAGE (1 << 0) +#define DRM_XE_VM_CREATE_FLAG_LR_MODE (1 << 1) +#define DRM_XE_VM_CREATE_FLAG_FAULT_MODE (1 << 2) + __u32 flags; + __u32 vm_id; + __u64 reserved[2]; +}; +struct drm_xe_vm_destroy { + __u32 vm_id; + __u32 pad; + __u64 reserved[2]; +}; +struct drm_xe_vm_bind_op { + __u64 extensions; + __u32 obj; + __u16 pat_index; + __u16 pad; + union { + __u64 obj_offset; + __u64 userptr; + }; + __u64 range; + __u64 addr; +#define DRM_XE_VM_BIND_OP_MAP 0x0 +#define DRM_XE_VM_BIND_OP_UNMAP 0x1 +#define DRM_XE_VM_BIND_OP_MAP_USERPTR 0x2 +#define DRM_XE_VM_BIND_OP_UNMAP_ALL 0x3 +#define DRM_XE_VM_BIND_OP_PREFETCH 0x4 + __u32 op; +#define DRM_XE_VM_BIND_FLAG_NULL (1 << 2) +#define DRM_XE_VM_BIND_FLAG_DUMPABLE (1 << 3) + __u32 flags; + __u32 prefetch_mem_region_instance; + __u32 pad2; + __u64 reserved[3]; +}; +struct drm_xe_vm_bind { + __u64 extensions; + __u32 vm_id; + __u32 exec_queue_id; + __u32 pad; + __u32 num_binds; + union { + struct drm_xe_vm_bind_op bind; + __u64 vector_of_binds; + }; + __u32 pad2; + __u32 num_syncs; + __u64 syncs; + __u64 reserved[2]; +}; +struct drm_xe_exec_queue_create { +#define DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY 0 +#define DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY 0 +#define DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE 1 + __u64 extensions; + __u16 width; + __u16 num_placements; + __u32 vm_id; + __u32 flags; + __u32 exec_queue_id; + __u64 instances; + __u64 reserved[2]; +}; +struct drm_xe_exec_queue_destroy { + __u32 exec_queue_id; + __u32 pad; + __u64 reserved[2]; +}; +struct drm_xe_exec_queue_get_property { + __u64 extensions; + __u32 exec_queue_id; +#define DRM_XE_EXEC_QUEUE_GET_PROPERTY_BAN 0 + __u32 property; + __u64 value; + __u64 reserved[2]; +}; +struct drm_xe_sync { + __u64 extensions; +#define DRM_XE_SYNC_TYPE_SYNCOBJ 0x0 +#define DRM_XE_SYNC_TYPE_TIMELINE_SYNCOBJ 0x1 +#define DRM_XE_SYNC_TYPE_USER_FENCE 0x2 + __u32 type; +#define DRM_XE_SYNC_FLAG_SIGNAL (1 << 0) + __u32 flags; + union { + __u32 handle; + __u64 addr; + }; + __u64 timeline_value; + __u64 reserved[2]; +}; +struct drm_xe_exec { + __u64 extensions; + __u32 exec_queue_id; + __u32 num_syncs; + __u64 syncs; + __u64 address; + __u16 num_batch_buffer; + __u16 pad[3]; + __u64 reserved[2]; +}; +struct drm_xe_wait_user_fence { + __u64 extensions; + __u64 addr; +#define DRM_XE_UFENCE_WAIT_OP_EQ 0x0 +#define DRM_XE_UFENCE_WAIT_OP_NEQ 0x1 +#define DRM_XE_UFENCE_WAIT_OP_GT 0x2 +#define DRM_XE_UFENCE_WAIT_OP_GTE 0x3 +#define DRM_XE_UFENCE_WAIT_OP_LT 0x4 +#define DRM_XE_UFENCE_WAIT_OP_LTE 0x5 + __u16 op; +#define DRM_XE_UFENCE_WAIT_FLAG_ABSTIME (1 << 0) + __u16 flags; + __u32 pad; + __u64 value; + __u64 mask; + __s64 timeout; + __u32 exec_queue_id; + __u32 pad2; + __u64 reserved[2]; +}; +#ifdef __cplusplus +} +#endif +#endif diff --git a/libc/kernel/uapi/linux/android/binder.h b/libc/kernel/uapi/linux/android/binder.h index 1abb3a307..6e64ebc30 100644 --- a/libc/kernel/uapi/linux/android/binder.h +++ b/libc/kernel/uapi/linux/android/binder.h @@ -120,20 +120,22 @@ struct binder_extended_error { __u32 command; __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), +}; enum transaction_flags { TF_ONE_WAY = 0x01, TF_ROOT_OBJECT = 0x04, diff --git a/libc/kernel/uapi/linux/batadv_packet.h b/libc/kernel/uapi/linux/batadv_packet.h index eb72d6392..83e5e71b0 100644 --- a/libc/kernel/uapi/linux/batadv_packet.h +++ b/libc/kernel/uapi/linux/batadv_packet.h @@ -51,6 +51,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, }; #define BATADV_TT_DATA_TYPE_MASK 0x0F enum batadv_tt_data_flags { @@ -76,6 +77,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) struct batadv_bla_claim_dst { @@ -208,6 +210,13 @@ struct batadv_bcast_packet { __be32 seqno; __u8 orig[ETH_ALEN]; }; +struct batadv_mcast_packet { + __u8 packet_type; + __u8 version; + __u8 ttl; + __u8 reserved; + __be16 tvlv_len; +}; struct batadv_coded_packet { __u8 packet_type; __u8 version; @@ -267,5 +276,8 @@ struct batadv_tvlv_mcast_data { __u8 flags; __u8 reserved[3]; }; +struct batadv_tvlv_mcast_tracker { + __be16 num_dests; +}; #pragma pack() #endif diff --git a/libc/kernel/uapi/linux/bpf.h b/libc/kernel/uapi/linux/bpf.h index 25e8ad7a9..8f82b7128 100644 --- a/libc/kernel/uapi/linux/bpf.h +++ b/libc/kernel/uapi/linux/bpf.h @@ -271,8 +271,9 @@ enum bpf_link_type { BPF_LINK_TYPE_TCX = 11, BPF_LINK_TYPE_UPROBE_MULTI = 12, BPF_LINK_TYPE_NETKIT = 13, - 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, @@ -296,6 +297,7 @@ enum bpf_perf_event_type { #define BPF_F_SLEEPABLE (1U << 4) #define BPF_F_XDP_HAS_FRAGS (1U << 5) #define BPF_F_XDP_DEV_BOUND_ONLY (1U << 6) +#define BPF_F_TEST_REG_INVARIANTS (1U << 7) enum { BPF_F_KPROBE_MULTI_RETURN = (1U << 0) }; @@ -1063,6 +1065,16 @@ struct bpf_link_info { __u64 missed; } kprobe_multi; struct { + __aligned_u64 path; + __aligned_u64 offsets; + __aligned_u64 ref_ctr_offsets; + __aligned_u64 cookies; + __u32 path_size; + __u32 count; + __u32 flags; + __u32 pid; + } uprobe_multi; + struct { __u32 type; __u32 : 32; union { @@ -1198,6 +1210,7 @@ enum { BPF_TCP_LISTEN, BPF_TCP_CLOSING, BPF_TCP_NEW_SYN_RECV, + BPF_TCP_BOUND_INACTIVE, BPF_TCP_MAX_STATES }; enum { @@ -1358,34 +1371,25 @@ struct bpf_spin_lock { __u32 val; }; struct bpf_timer { - __u64 : 64; - __u64 : 64; + __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 : 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 : 64; + __u64 __opaque[4]; } __attribute__((aligned(8))); struct bpf_refcount { - __u32 : 32; + __u32 __opaque[1]; } __attribute__((aligned(4))); struct bpf_sysctl { __u32 write; diff --git a/libc/kernel/uapi/linux/bpfilter.h b/libc/kernel/uapi/linux/bpfilter.h deleted file mode 100644 index a0833a3eb..000000000 --- a/libc/kernel/uapi/linux/bpfilter.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * This file is auto-generated. Modifications will be lost. - * - * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ - * for more information. - */ -#ifndef _UAPI_LINUX_BPFILTER_H -#define _UAPI_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 diff --git a/libc/kernel/uapi/linux/btrfs.h b/libc/kernel/uapi/linux/btrfs.h index 27564f83b..5d449f830 100644 --- a/libc/kernel/uapi/linux/btrfs.h +++ b/libc/kernel/uapi/linux/btrfs.h @@ -310,6 +310,7 @@ 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 { __u64 start; __u64 len; diff --git a/libc/kernel/uapi/linux/cxl_mem.h b/libc/kernel/uapi/linux/cxl_mem.h index a0088266f..942e817f4 100644 --- a/libc/kernel/uapi/linux/cxl_mem.h +++ b/libc/kernel/uapi/linux/cxl_mem.h @@ -9,7 +9,7 @@ #include <linux/types.h> #define CXL_MEM_QUERY_COMMANDS _IOR(0xCE, 1, struct cxl_mem_query_commands) #define CXL_MEM_SEND_COMMAND _IOWR(0xCE, 2, struct cxl_send_command) -#define CXL_CMDS ___C(INVALID, "Invalid Command"), ___C(IDENTIFY, "Identify Command"), ___C(RAW, "Raw device command"), ___C(GET_SUPPORTED_LOGS, "Get Supported Logs"), ___C(GET_FW_INFO, "Get FW Info"), ___C(GET_PARTITION_INFO, "Get Partition Information"), ___C(GET_LSA, "Get Label Storage Area"), ___C(GET_HEALTH_INFO, "Get Health Info"), ___C(GET_LOG, "Get Log"), ___C(SET_PARTITION_INFO, "Set Partition Information"), ___C(SET_LSA, "Set Label Storage Area"), ___C(GET_ALERT_CONFIG, "Get Alert Configuration"), ___C(SET_ALERT_CONFIG, "Set Alert Configuration"), ___C(GET_SHUTDOWN_STATE, "Get Shutdown State"), ___C(SET_SHUTDOWN_STATE, "Set Shutdown State"), ___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"), ___DEPRECATED(SCAN_MEDIA, "Scan Media"), ___DEPRECATED(GET_SCAN_MEDIA, "Get Scan Media Results"), ___C(MAX, "invalid / last command") +#define CXL_CMDS ___C(INVALID, "Invalid Command"), ___C(IDENTIFY, "Identify Command"), ___C(RAW, "Raw device command"), ___C(GET_SUPPORTED_LOGS, "Get Supported Logs"), ___C(GET_FW_INFO, "Get FW Info"), ___C(GET_PARTITION_INFO, "Get Partition Information"), ___C(GET_LSA, "Get Label Storage Area"), ___C(GET_HEALTH_INFO, "Get Health Info"), ___C(GET_LOG, "Get Log"), ___C(SET_PARTITION_INFO, "Set Partition Information"), ___C(SET_LSA, "Set Label Storage Area"), ___C(GET_ALERT_CONFIG, "Get Alert Configuration"), ___C(SET_ALERT_CONFIG, "Set Alert Configuration"), ___C(GET_SHUTDOWN_STATE, "Get Shutdown State"), ___C(SET_SHUTDOWN_STATE, "Set Shutdown State"), ___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"), ___DEPRECATED(SCAN_MEDIA, "Scan Media"), ___DEPRECATED(GET_SCAN_MEDIA, "Get Scan Media Results"), ___C(GET_TIMESTAMP, "Get Timestamp"), ___C(MAX, "invalid / last command") #define ___C(a,b) CXL_MEM_COMMAND_ID_ ##a #define ___DEPRECATED(a,b) CXL_MEM_DEPRECATED_ID_ ##a enum { diff --git a/libc/kernel/uapi/linux/devlink.h b/libc/kernel/uapi/linux/devlink.h index bc44a70fe..968d6be44 100644 --- a/libc/kernel/uapi/linux/devlink.h +++ b/libc/kernel/uapi/linux/devlink.h @@ -97,6 +97,7 @@ enum devlink_command { DEVLINK_CMD_LINECARD_DEL, DEVLINK_CMD_SELFTESTS_GET, DEVLINK_CMD_SELFTESTS_RUN, + DEVLINK_CMD_NOTIFY_FILTER_SET, __DEVLINK_CMD_MAX, DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1 }; diff --git a/libc/kernel/uapi/linux/dpll.h b/libc/kernel/uapi/linux/dpll.h index 9b5f37ddc..cbefd15b9 100644 --- a/libc/kernel/uapi/linux/dpll.h +++ b/libc/kernel/uapi/linux/dpll.h @@ -98,6 +98,7 @@ enum dpll_a_pin { 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) }; diff --git a/libc/kernel/uapi/linux/ethtool.h b/libc/kernel/uapi/linux/ethtool.h index 0d166afeb..e3466cfa1 100644 --- a/libc/kernel/uapi/linux/ethtool.h +++ b/libc/kernel/uapi/linux/ethtool.h @@ -433,7 +433,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[]; }; @@ -857,6 +858,8 @@ enum ethtool_link_mode_bit_indices { #define WAKE_MAGICSECURE (1 << 6) #define WAKE_FILTER (1 << 7) #define WOL_MODE_COUNT 8 +#define RXH_XFRM_SYM_XOR (1 << 0) +#define RXH_XFRM_NO_CHANGE 0xff #define TCP_V4_FLOW 0x01 #define UDP_V4_FLOW 0x02 #define SCTP_V4_FLOW 0x03 diff --git a/libc/kernel/uapi/linux/ethtool_netlink.h b/libc/kernel/uapi/linux/ethtool_netlink.h index c5012d241..e4fc40e65 100644 --- a/libc/kernel/uapi/linux/ethtool_netlink.h +++ b/libc/kernel/uapi/linux/ethtool_netlink.h @@ -638,6 +638,7 @@ enum { ETHTOOL_A_RSS_HFUNC, ETHTOOL_A_RSS_INDIR, ETHTOOL_A_RSS_HKEY, + ETHTOOL_A_RSS_INPUT_XFRM, __ETHTOOL_A_RSS_CNT, ETHTOOL_A_RSS_MAX = (__ETHTOOL_A_RSS_CNT - 1), }; diff --git a/libc/kernel/uapi/linux/fs.h b/libc/kernel/uapi/linux/fs.h index 9288653d7..f1a8eacb0 100644 --- a/libc/kernel/uapi/linux/fs.h +++ b/libc/kernel/uapi/linux/fs.h @@ -192,6 +192,7 @@ typedef int __bitwise __kernel_rwf_t; #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 { __u64 start; __u64 end; diff --git a/libc/kernel/uapi/linux/if_bridge.h b/libc/kernel/uapi/linux/if_bridge.h index a7388767d..97c0fb69d 100644 --- a/libc/kernel/uapi/linux/if_bridge.h +++ b/libc/kernel/uapi/linux/if_bridge.h @@ -587,6 +587,7 @@ enum { 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) diff --git a/libc/kernel/uapi/linux/if_link.h b/libc/kernel/uapi/linux/if_link.h index 54b751e8b..19bbfa10b 100644 --- a/libc/kernel/uapi/linux/if_link.h +++ b/libc/kernel/uapi/linux/if_link.h @@ -536,6 +536,7 @@ enum { IFLA_VXLAN_DF, IFLA_VXLAN_VNIFILTER, IFLA_VXLAN_LOCALBYPASS, + IFLA_VXLAN_LABEL_POLICY, __IFLA_VXLAN_MAX }; #define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1) @@ -550,6 +551,12 @@ enum ifla_vxlan_df { __VXLAN_DF_END, 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, +}; enum { IFLA_GENEVE_UNSPEC, IFLA_GENEVE_ID, diff --git a/libc/kernel/uapi/linux/if_xdp.h b/libc/kernel/uapi/linux/if_xdp.h index 02a014ac6..b7eec87cb 100644 --- a/libc/kernel/uapi/linux/if_xdp.h +++ b/libc/kernel/uapi/linux/if_xdp.h @@ -13,6 +13,7 @@ #define XDP_USE_NEED_WAKEUP (1 << 3) #define XDP_USE_SG (1 << 4) #define XDP_UMEM_UNALIGNED_CHUNK_FLAG (1 << 0) +#define XDP_UMEM_TX_SW_CSUM (1 << 1) struct sockaddr_xdp { __u16 sxdp_family; __u16 sxdp_flags; @@ -47,6 +48,7 @@ struct xdp_umem_reg { __u32 chunk_size; __u32 headroom; __u32 flags; + __u32 tx_metadata_len; }; struct xdp_statistics { __u64 rx_dropped; @@ -66,10 +68,25 @@ struct xdp_options { #define XDP_UMEM_PGOFF_COMPLETION_RING 0x180000000ULL #define XSK_UNALIGNED_BUF_OFFSET_SHIFT 48 #define XSK_UNALIGNED_BUF_ADDR_MASK ((1ULL << XSK_UNALIGNED_BUF_OFFSET_SHIFT) - 1) +#define XDP_TXMD_FLAGS_TIMESTAMP (1 << 0) +#define XDP_TXMD_FLAGS_CHECKSUM (1 << 1) +struct xsk_tx_metadata { + __u64 flags; + union { + struct { + __u16 csum_start; + __u16 csum_offset; + } request; + struct { + __u64 tx_timestamp; + } completion; + }; +}; struct xdp_desc { __u64 addr; __u32 len; __u32 options; }; #define XDP_PKT_CONTD (1 << 0) +#define XDP_TX_METADATA (1 << 1) #endif diff --git a/libc/kernel/uapi/linux/iio/types.h b/libc/kernel/uapi/linux/iio/types.h index 4e4324aac..f40cb95ba 100644 --- a/libc/kernel/uapi/linux/iio/types.h +++ b/libc/kernel/uapi/linux/iio/types.h @@ -99,6 +99,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 { IIO_EV_TYPE_THRESH, diff --git a/libc/kernel/uapi/linux/io_uring.h b/libc/kernel/uapi/linux/io_uring.h index 57c6405b7..27675d5eb 100644 --- a/libc/kernel/uapi/linux/io_uring.h +++ b/libc/kernel/uapi/linux/io_uring.h @@ -58,6 +58,7 @@ struct io_uring_sqe { __u32 uring_cmd_flags; __u32 waitid_flags; __u32 futex_flags; + __u32 install_fd_flags; }; __u64 user_data; union { @@ -172,6 +173,7 @@ enum io_uring_op { IORING_OP_FUTEX_WAIT, IORING_OP_FUTEX_WAKE, IORING_OP_FUTEX_WAITV, + IORING_OP_FIXED_FD_INSTALL, IORING_OP_LAST, }; #define IORING_URING_CMD_FIXED (1U << 0) @@ -209,6 +211,7 @@ enum { }; #define IORING_MSG_RING_CQE_SKIP (1U << 0) #define IORING_MSG_RING_FLAGS_PASS (1U << 1) +#define IORING_FIXED_FD_NO_CLOEXEC (1U << 0) struct io_uring_cqe { __u64 user_data; __s32 res; @@ -312,6 +315,7 @@ enum { IORING_UNREGISTER_PBUF_RING = 23, IORING_REGISTER_SYNC_CANCEL = 24, IORING_REGISTER_FILE_ALLOC_RANGE = 25, + IORING_REGISTER_PBUF_STATUS = 26, IORING_REGISTER_LAST, IORING_REGISTER_USE_REGISTERED_RING = 1U << 31 }; @@ -397,6 +401,11 @@ struct io_uring_buf_reg { __u16 flags; __u64 resv[3]; }; +struct io_uring_buf_status { + __u32 buf_group; + __u32 head; + __u32 resv[8]; +}; enum { IORING_RESTRICTION_REGISTER_OP = 0, IORING_RESTRICTION_SQE_OP = 1, diff --git a/libc/kernel/uapi/linux/iommufd.h b/libc/kernel/uapi/linux/iommufd.h index d19a471e5..257062881 100644 --- a/libc/kernel/uapi/linux/iommufd.h +++ b/libc/kernel/uapi/linux/iommufd.h @@ -24,6 +24,7 @@ enum { IOMMUFD_CMD_GET_HW_INFO, IOMMUFD_CMD_HWPT_SET_DIRTY_TRACKING, IOMMUFD_CMD_HWPT_GET_DIRTY_BITMAP, + IOMMUFD_CMD_HWPT_INVALIDATE, }; struct iommu_destroy { __u32 size; @@ -200,4 +201,26 @@ struct iommu_hwpt_get_dirty_bitmap { __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_INVALIDATE_DATA_VTD_S1, +}; +enum iommu_hwpt_vtd_s1_invalidate_flags { + IOMMU_VTD_INV_FLAGS_LEAF = 1 << 0, +}; +struct iommu_hwpt_vtd_s1_invalidate { + __aligned_u64 addr; + __aligned_u64 npages; + __u32 flags; + __u32 __reserved; +}; +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 diff --git a/libc/kernel/uapi/linux/kexec.h b/libc/kernel/uapi/linux/kexec.h index 53c86f3e6..c5c862346 100644 --- a/libc/kernel/uapi/linux/kexec.h +++ b/libc/kernel/uapi/linux/kexec.h @@ -14,6 +14,7 @@ #define KEXEC_FILE_UNLOAD 0x00000001 #define KEXEC_FILE_ON_CRASH 0x00000002 #define KEXEC_FILE_NO_INITRAMFS 0x00000004 +#define KEXEC_FILE_DEBUG 0x00000008 #define KEXEC_ARCH_DEFAULT (0 << 16) #define KEXEC_ARCH_386 (3 << 16) #define KEXEC_ARCH_68K (4 << 16) diff --git a/libc/kernel/uapi/linux/kvm.h b/libc/kernel/uapi/linux/kvm.h index 2a89638fc..ea4f7695b 100644 --- a/libc/kernel/uapi/linux/kvm.h +++ b/libc/kernel/uapi/linux/kvm.h @@ -12,59 +12,6 @@ #include <linux/ioctl.h> #include <asm/kvm.h> #define KVM_API_VERSION 12 -#define KVM_TRC_SHIFT 16 -#define KVM_TRC_ENTRYEXIT (1 << KVM_TRC_SHIFT) -#define KVM_TRC_HANDLER (1 << (KVM_TRC_SHIFT + 1)) -#define KVM_TRC_VMENTRY (KVM_TRC_ENTRYEXIT + 0x01) -#define KVM_TRC_VMEXIT (KVM_TRC_ENTRYEXIT + 0x02) -#define KVM_TRC_PAGE_FAULT (KVM_TRC_HANDLER + 0x01) -#define KVM_TRC_HEAD_SIZE 12 -#define KVM_TRC_CYCLE_SIZE 8 -#define KVM_TRC_EXTRA_MAX 7 -#define KVM_TRC_INJ_VIRQ (KVM_TRC_HANDLER + 0x02) -#define KVM_TRC_REDELIVER_EVT (KVM_TRC_HANDLER + 0x03) -#define KVM_TRC_PEND_INTR (KVM_TRC_HANDLER + 0x04) -#define KVM_TRC_IO_READ (KVM_TRC_HANDLER + 0x05) -#define KVM_TRC_IO_WRITE (KVM_TRC_HANDLER + 0x06) -#define KVM_TRC_CR_READ (KVM_TRC_HANDLER + 0x07) -#define KVM_TRC_CR_WRITE (KVM_TRC_HANDLER + 0x08) -#define KVM_TRC_DR_READ (KVM_TRC_HANDLER + 0x09) -#define KVM_TRC_DR_WRITE (KVM_TRC_HANDLER + 0x0A) -#define KVM_TRC_MSR_READ (KVM_TRC_HANDLER + 0x0B) -#define KVM_TRC_MSR_WRITE (KVM_TRC_HANDLER + 0x0C) -#define KVM_TRC_CPUID (KVM_TRC_HANDLER + 0x0D) -#define KVM_TRC_INTR (KVM_TRC_HANDLER + 0x0E) -#define KVM_TRC_NMI (KVM_TRC_HANDLER + 0x0F) -#define KVM_TRC_VMMCALL (KVM_TRC_HANDLER + 0x10) -#define KVM_TRC_HLT (KVM_TRC_HANDLER + 0x11) -#define KVM_TRC_CLTS (KVM_TRC_HANDLER + 0x12) -#define KVM_TRC_LMSW (KVM_TRC_HANDLER + 0x13) -#define KVM_TRC_APIC_ACCESS (KVM_TRC_HANDLER + 0x14) -#define KVM_TRC_TDP_FAULT (KVM_TRC_HANDLER + 0x15) -#define KVM_TRC_GTLB_WRITE (KVM_TRC_HANDLER + 0x16) -#define KVM_TRC_STLB_WRITE (KVM_TRC_HANDLER + 0x17) -#define KVM_TRC_STLB_INVAL (KVM_TRC_HANDLER + 0x18) -#define KVM_TRC_PPC_INSTR (KVM_TRC_HANDLER + 0x19) -struct kvm_user_trace_setup { - __u32 buf_size; - __u32 buf_nr; -}; -#define __KVM_DEPRECATED_MAIN_W_0x06 _IOW(KVMIO, 0x06, struct kvm_user_trace_setup) -#define __KVM_DEPRECATED_MAIN_0x07 _IO(KVMIO, 0x07) -#define __KVM_DEPRECATED_MAIN_0x08 _IO(KVMIO, 0x08) -#define __KVM_DEPRECATED_VM_R_0x70 _IOR(KVMIO, 0x70, struct kvm_assigned_irq) -struct kvm_breakpoint { - __u32 enabled; - __u32 padding; - __u64 address; -}; -struct kvm_debug_guest { - __u32 enabled; - __u32 pad; - struct kvm_breakpoint breakpoints[4]; - __u32 singlestep; -}; -#define __KVM_DEPRECATED_VCPU_W_0x87 _IOW(KVMIO, 0x87, struct kvm_debug_guest) struct kvm_userspace_memory_region { __u32 slot; __u32 flags; @@ -72,8 +19,20 @@ struct kvm_userspace_memory_region { __u64 memory_size; __u64 userspace_addr; }; +struct kvm_userspace_memory_region2 { + __u32 slot; + __u32 flags; + __u64 guest_phys_addr; + __u64 memory_size; + __u64 userspace_addr; + __u64 guest_memfd_offset; + __u32 guest_memfd; + __u32 pad1; + __u64 pad2[14]; +}; #define KVM_MEM_LOG_DIRTY_PAGES (1UL << 0) #define KVM_MEM_READONLY (1UL << 1) +#define KVM_MEM_GUEST_MEMFD (1UL << 2) struct kvm_irq_level { union { __u32 irq; @@ -201,6 +160,7 @@ struct kvm_xen_exit { #define KVM_EXIT_RISCV_CSR 36 #define KVM_EXIT_NOTIFY 37 #define KVM_EXIT_LOONGARCH_IOCSR 38 +#define KVM_EXIT_MEMORY_FAULT 39 #define KVM_INTERNAL_ERROR_EMULATION 1 #define KVM_INTERNAL_ERROR_SIMUL_EX 2 #define KVM_INTERNAL_ERROR_DELIVERY_EV 3 @@ -383,6 +343,12 @@ struct kvm_run { #define KVM_NOTIFY_CONTEXT_INVALID (1 << 0) __u32 flags; } notify; + struct { +#define KVM_MEMORY_EXIT_FLAG_PRIVATE (1ULL << 3) + __u64 flags; + __u64 gpa; + __u64 size; + } memory_fault; char padding[256]; }; #define SYNC_REGS_SIZE_BYTES 2048 @@ -683,9 +649,6 @@ struct kvm_ppc_resize_hpt { #define KVM_CHECK_EXTENSION _IO(KVMIO, 0x03) #define KVM_GET_VCPU_MMAP_SIZE _IO(KVMIO, 0x04) #define KVM_GET_SUPPORTED_CPUID _IOWR(KVMIO, 0x05, struct kvm_cpuid2) -#define KVM_TRACE_ENABLE __KVM_DEPRECATED_MAIN_W_0x06 -#define KVM_TRACE_PAUSE __KVM_DEPRECATED_MAIN_0x07 -#define KVM_TRACE_DISABLE __KVM_DEPRECATED_MAIN_0x08 #define KVM_GET_EMULATED_CPUID _IOWR(KVMIO, 0x09, struct kvm_cpuid2) #define KVM_GET_MSR_FEATURE_INDEX_LIST _IOWR(KVMIO, 0x0a, struct kvm_msr_list) #define KVM_CAP_IRQCHIP 0 @@ -933,6 +896,11 @@ struct kvm_ppc_resize_hpt { #define KVM_CAP_ARM_EAGER_SPLIT_CHUNK_SIZE 228 #define KVM_CAP_ARM_SUPPORTED_BLOCK_SIZES 229 #define KVM_CAP_ARM_SUPPORTED_REG_MASK_RANGES 230 +#define KVM_CAP_USER_MEMORY2 231 +#define KVM_CAP_MEMORY_FAULT_INFO 232 +#define KVM_CAP_MEMORY_ATTRIBUTES 233 +#define KVM_CAP_GUEST_MEMFD 234 +#define KVM_CAP_VM_TYPES 235 #ifdef KVM_CAP_IRQ_ROUTING struct kvm_irq_routing_irqchip { __u32 irqchip; @@ -1008,6 +976,7 @@ struct kvm_x86_mce { #define KVM_XEN_HVM_CONFIG_EVTCHN_2LEVEL (1 << 4) #define KVM_XEN_HVM_CONFIG_EVTCHN_SEND (1 << 5) #define KVM_XEN_HVM_CONFIG_RUNSTATE_UPDATE_FLAG (1 << 6) +#define KVM_XEN_HVM_CONFIG_PVCLOCK_TSC_UNSTABLE (1 << 7) struct kvm_xen_hvm_config { __u32 flags; __u32 msr; @@ -1148,6 +1117,7 @@ struct kvm_vfio_spapr_tce { #define KVM_SET_USER_MEMORY_REGION _IOW(KVMIO, 0x46, struct kvm_userspace_memory_region) #define KVM_SET_TSS_ADDR _IO(KVMIO, 0x47) #define KVM_SET_IDENTITY_MAP_ADDR _IOW(KVMIO, 0x48, __u64) +#define KVM_SET_USER_MEMORY_REGION2 _IOW(KVMIO, 0x49, struct kvm_userspace_memory_region2) struct kvm_s390_ucas_mapping { __u64 user_addr; __u64 vcpu_addr; @@ -1166,15 +1136,8 @@ struct kvm_s390_ucas_mapping { #define KVM_IRQ_LINE_STATUS _IOWR(KVMIO, 0x67, struct kvm_irq_level) #define KVM_REGISTER_COALESCED_MMIO _IOW(KVMIO, 0x67, struct kvm_coalesced_mmio_zone) #define KVM_UNREGISTER_COALESCED_MMIO _IOW(KVMIO, 0x68, struct kvm_coalesced_mmio_zone) -#define KVM_ASSIGN_PCI_DEVICE _IOR(KVMIO, 0x69, struct kvm_assigned_pci_dev) #define KVM_SET_GSI_ROUTING _IOW(KVMIO, 0x6a, struct kvm_irq_routing) -#define KVM_ASSIGN_IRQ __KVM_DEPRECATED_VM_R_0x70 -#define KVM_ASSIGN_DEV_IRQ _IOW(KVMIO, 0x70, struct kvm_assigned_irq) #define KVM_REINJECT_CONTROL _IO(KVMIO, 0x71) -#define KVM_DEASSIGN_PCI_DEVICE _IOW(KVMIO, 0x72, struct kvm_assigned_pci_dev) -#define KVM_ASSIGN_SET_MSIX_NR _IOW(KVMIO, 0x73, struct kvm_assigned_msix_nr) -#define KVM_ASSIGN_SET_MSIX_ENTRY _IOW(KVMIO, 0x74, struct kvm_assigned_msix_entry) -#define KVM_DEASSIGN_DEV_IRQ _IOW(KVMIO, 0x75, struct kvm_assigned_irq) #define KVM_IRQFD _IOW(KVMIO, 0x76, struct kvm_irqfd) #define KVM_CREATE_PIT2 _IOW(KVMIO, 0x77, struct kvm_pit_config) #define KVM_SET_BOOT_CPU_ID _IO(KVMIO, 0x78) @@ -1187,7 +1150,6 @@ struct kvm_s390_ucas_mapping { #define KVM_PPC_GET_PVINFO _IOW(KVMIO, 0xa1, struct kvm_ppc_pvinfo) #define KVM_SET_TSC_KHZ _IO(KVMIO, 0xa2) #define KVM_GET_TSC_KHZ _IO(KVMIO, 0xa3) -#define KVM_ASSIGN_SET_INTX_MASK _IOW(KVMIO, 0xa4, struct kvm_assigned_pci_dev) #define KVM_SIGNAL_MSI _IOW(KVMIO, 0xa5, struct kvm_msi) #define KVM_PPC_GET_SMMU_INFO _IOR(KVMIO, 0xa6, struct kvm_ppc_smmu_info) #define KVM_PPC_ALLOCATE_HTAB _IOWR(KVMIO, 0xa7, __u32) @@ -1218,7 +1180,6 @@ struct kvm_s390_ucas_mapping { #define KVM_SET_SREGS _IOW(KVMIO, 0x84, struct kvm_sregs) #define KVM_TRANSLATE _IOWR(KVMIO, 0x85, struct kvm_translation) #define KVM_INTERRUPT _IOW(KVMIO, 0x86, struct kvm_interrupt) -#define KVM_DEBUG_GUEST __KVM_DEPRECATED_VCPU_W_0x87 #define KVM_GET_MSRS _IOWR(KVMIO, 0x88, struct kvm_msrs) #define KVM_SET_MSRS _IOW(KVMIO, 0x89, struct kvm_msrs) #define KVM_SET_CPUID _IOW(KVMIO, 0x8a, struct kvm_cpuid) @@ -1679,4 +1640,18 @@ struct kvm_s390_zpci_op { #define KVM_S390_ZPCIOP_REG_AEN 0 #define KVM_S390_ZPCIOP_DEREG_AEN 1 #define KVM_S390_ZPCIOP_REGAEN_HOST (1 << 0) +#define KVM_SET_MEMORY_ATTRIBUTES _IOW(KVMIO, 0xd2, struct kvm_memory_attributes) +struct kvm_memory_attributes { + __u64 address; + __u64 size; + __u64 attributes; + __u64 flags; +}; +#define KVM_MEMORY_ATTRIBUTE_PRIVATE (1ULL << 3) +#define KVM_CREATE_GUEST_MEMFD _IOWR(KVMIO, 0xd4, struct kvm_create_guest_memfd) +struct kvm_create_guest_memfd { + __u64 size; + __u64 flags; + __u64 reserved[6]; +}; #endif diff --git a/libc/kernel/uapi/linux/lsm.h b/libc/kernel/uapi/linux/lsm.h new file mode 100644 index 000000000..9d538ee19 --- /dev/null +++ b/libc/kernel/uapi/linux/lsm.h @@ -0,0 +1,39 @@ +/* + * This file is auto-generated. Modifications will be lost. + * + * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ + * for more information. + */ +#ifndef _UAPI_LINUX_LSM_H +#define _UAPI_LINUX_LSM_H +#include <linux/stddef.h> +#include <linux/types.h> +#include <linux/unistd.h> +struct lsm_ctx { + __u64 id; + __u64 flags; + __u64 len; + __u64 ctx_len; + __u8 ctx[] __counted_by(ctx_len); +}; +#define LSM_ID_UNDEF 0 +#define LSM_ID_CAPABILITY 100 +#define LSM_ID_SELINUX 101 +#define LSM_ID_SMACK 102 +#define LSM_ID_TOMOYO 103 +#define LSM_ID_APPARMOR 104 +#define LSM_ID_YAMA 105 +#define LSM_ID_LOADPIN 106 +#define LSM_ID_SAFESETID 107 +#define LSM_ID_LOCKDOWN 108 +#define LSM_ID_BPF 109 +#define LSM_ID_LANDLOCK 110 +#define LSM_ATTR_UNDEF 0 +#define LSM_ATTR_CURRENT 100 +#define LSM_ATTR_EXEC 101 +#define LSM_ATTR_FSCREATE 102 +#define LSM_ATTR_KEYCREATE 103 +#define LSM_ATTR_PREV 104 +#define LSM_ATTR_SOCKCREATE 105 +#define LSM_FLAG_SINGLE 0x0001 +#endif diff --git a/libc/kernel/uapi/linux/mount.h b/libc/kernel/uapi/linux/mount.h index faef8afc4..1166a7a3b 100644 --- a/libc/kernel/uapi/linux/mount.h +++ b/libc/kernel/uapi/linux/mount.h @@ -88,4 +88,41 @@ struct mount_attr { __u64 userns_fd; }; #define MOUNT_ATTR_SIZE_VER0 32 +struct statmount { + __u32 size; + __u32 __spare1; + __u64 mask; + __u32 sb_dev_major; + __u32 sb_dev_minor; + __u64 sb_magic; + __u32 sb_flags; + __u32 fs_type; + __u64 mnt_id; + __u64 mnt_parent_id; + __u32 mnt_id_old; + __u32 mnt_parent_id_old; + __u64 mnt_attr; + __u64 mnt_propagation; + __u64 mnt_peer_group; + __u64 mnt_master; + __u64 propagate_from; + __u32 mnt_root; + __u32 mnt_point; + __u64 __spare2[50]; + char str[]; +}; +struct mnt_id_req { + __u32 size; + __u32 spare; + __u64 mnt_id; + __u64 param; +}; +#define MNT_ID_REQ_SIZE_VER0 24 +#define STATMOUNT_SB_BASIC 0x00000001U +#define STATMOUNT_MNT_BASIC 0x00000002U +#define STATMOUNT_PROPAGATE_FROM 0x00000004U +#define STATMOUNT_MNT_ROOT 0x00000008U +#define STATMOUNT_MNT_POINT 0x00000010U +#define STATMOUNT_FS_TYPE 0x00000020U +#define LSMT_ROOT 0xffffffffffffffff #endif diff --git a/libc/kernel/uapi/linux/mptcp.h b/libc/kernel/uapi/linux/mptcp.h index 6f5d27247..3c9ba5ee4 100644 --- a/libc/kernel/uapi/linux/mptcp.h +++ b/libc/kernel/uapi/linux/mptcp.h @@ -52,6 +52,7 @@ struct mptcp_info { __u64 mptcpi_bytes_sent; __u64 mptcpi_bytes_received; __u64 mptcpi_bytes_acked; + __u8 mptcpi_subflows_total; }; #define MPTCP_RST_EUNSPEC 0 #define MPTCP_RST_EMPTCP 1 diff --git a/libc/kernel/uapi/linux/netdev.h b/libc/kernel/uapi/linux/netdev.h index 3c5cb9446..6d90ae41e 100644 --- a/libc/kernel/uapi/linux/netdev.h +++ b/libc/kernel/uapi/linux/netdev.h @@ -21,7 +21,15 @@ enum netdev_xdp_act { enum netdev_xdp_rx_metadata { NETDEV_XDP_RX_METADATA_TIMESTAMP = 1, NETDEV_XDP_RX_METADATA_HASH = 2, - NETDEV_XDP_RX_METADATA_MASK = 3, + NETDEV_XDP_RX_METADATA_VLAN_TAG = 4, +}; +enum netdev_xsk_flags { + NETDEV_XSK_FLAGS_TX_TIMESTAMP = 1, + NETDEV_XSK_FLAGS_TX_CHECKSUM = 2, +}; +enum netdev_queue_type { + NETDEV_QUEUE_TYPE_RX, + NETDEV_QUEUE_TYPE_TX, }; enum { NETDEV_A_DEV_IFINDEX = 1, @@ -29,16 +37,67 @@ enum { NETDEV_A_DEV_XDP_FEATURES, NETDEV_A_DEV_XDP_ZC_MAX_SEGS, NETDEV_A_DEV_XDP_RX_METADATA_FEATURES, + NETDEV_A_DEV_XSK_FEATURES, __NETDEV_A_DEV_MAX, NETDEV_A_DEV_MAX = (__NETDEV_A_DEV_MAX - 1) }; enum { + NETDEV_A_PAGE_POOL_ID = 1, + NETDEV_A_PAGE_POOL_IFINDEX, + NETDEV_A_PAGE_POOL_NAPI_ID, + NETDEV_A_PAGE_POOL_INFLIGHT, + NETDEV_A_PAGE_POOL_INFLIGHT_MEM, + NETDEV_A_PAGE_POOL_DETACH_TIME, + __NETDEV_A_PAGE_POOL_MAX, + NETDEV_A_PAGE_POOL_MAX = (__NETDEV_A_PAGE_POOL_MAX - 1) +}; +enum { + NETDEV_A_PAGE_POOL_STATS_INFO = 1, + NETDEV_A_PAGE_POOL_STATS_ALLOC_FAST = 8, + NETDEV_A_PAGE_POOL_STATS_ALLOC_SLOW, + NETDEV_A_PAGE_POOL_STATS_ALLOC_SLOW_HIGH_ORDER, + NETDEV_A_PAGE_POOL_STATS_ALLOC_EMPTY, + NETDEV_A_PAGE_POOL_STATS_ALLOC_REFILL, + NETDEV_A_PAGE_POOL_STATS_ALLOC_WAIVE, + NETDEV_A_PAGE_POOL_STATS_RECYCLE_CACHED, + NETDEV_A_PAGE_POOL_STATS_RECYCLE_CACHE_FULL, + NETDEV_A_PAGE_POOL_STATS_RECYCLE_RING, + NETDEV_A_PAGE_POOL_STATS_RECYCLE_RING_FULL, + NETDEV_A_PAGE_POOL_STATS_RECYCLE_RELEASED_REFCNT, + __NETDEV_A_PAGE_POOL_STATS_MAX, + NETDEV_A_PAGE_POOL_STATS_MAX = (__NETDEV_A_PAGE_POOL_STATS_MAX - 1) +}; +enum { + NETDEV_A_NAPI_IFINDEX = 1, + NETDEV_A_NAPI_ID, + NETDEV_A_NAPI_IRQ, + NETDEV_A_NAPI_PID, + __NETDEV_A_NAPI_MAX, + NETDEV_A_NAPI_MAX = (__NETDEV_A_NAPI_MAX - 1) +}; +enum { + NETDEV_A_QUEUE_ID = 1, + NETDEV_A_QUEUE_IFINDEX, + NETDEV_A_QUEUE_TYPE, + NETDEV_A_QUEUE_NAPI_ID, + __NETDEV_A_QUEUE_MAX, + NETDEV_A_QUEUE_MAX = (__NETDEV_A_QUEUE_MAX - 1) +}; +enum { NETDEV_CMD_DEV_GET = 1, NETDEV_CMD_DEV_ADD_NTF, NETDEV_CMD_DEV_DEL_NTF, NETDEV_CMD_DEV_CHANGE_NTF, + NETDEV_CMD_PAGE_POOL_GET, + NETDEV_CMD_PAGE_POOL_ADD_NTF, + NETDEV_CMD_PAGE_POOL_DEL_NTF, + NETDEV_CMD_PAGE_POOL_CHANGE_NTF, + NETDEV_CMD_PAGE_POOL_STATS_GET, + NETDEV_CMD_QUEUE_GET, + NETDEV_CMD_NAPI_GET, __NETDEV_CMD_MAX, NETDEV_CMD_MAX = (__NETDEV_CMD_MAX - 1) }; #define NETDEV_MCGRP_MGMT "mgmt" +#define NETDEV_MCGRP_PAGE_POOL "page-pool" #endif diff --git a/libc/kernel/uapi/linux/netfilter/nf_tables.h b/libc/kernel/uapi/linux/netfilter/nf_tables.h index 1d0af179e..2216fa8bf 100644 --- a/libc/kernel/uapi/linux/netfilter/nf_tables.h +++ b/libc/kernel/uapi/linux/netfilter/nf_tables.h @@ -157,6 +157,7 @@ enum nft_rule_attributes { }; #define NFTA_RULE_MAX (__NFTA_RULE_MAX - 1) enum nft_rule_compat_flags { + NFT_RULE_COMPAT_F_UNUSED = (1 << 0), NFT_RULE_COMPAT_F_INV = (1 << 1), NFT_RULE_COMPAT_F_MASK = NFT_RULE_COMPAT_F_INV, }; diff --git a/libc/kernel/uapi/linux/nl80211.h b/libc/kernel/uapi/linux/nl80211.h index bf87c0ed9..3286d9b39 100644 --- a/libc/kernel/uapi/linux/nl80211.h +++ b/libc/kernel/uapi/linux/nl80211.h @@ -180,6 +180,7 @@ enum nl80211_commands { NL80211_CMD_REMOVE_LINK_STA, NL80211_CMD_SET_HW_TIMESTAMP, NL80211_CMD_LINKS_REMOVED, + NL80211_CMD_SET_TID_TO_LINK_MAPPING, __NL80211_CMD_AFTER_LAST, NL80211_CMD_MAX = __NL80211_CMD_AFTER_LAST - 1 }; @@ -523,6 +524,9 @@ enum nl80211_attrs { NL80211_ATTR_HW_TIMESTAMP_ENABLED, NL80211_ATTR_EMA_RNR_ELEMS, NL80211_ATTR_MLO_LINK_DISABLED, + NL80211_ATTR_BSS_DUMP_INCLUDE_USE_DATA, + NL80211_ATTR_MLO_TTLM_DLINK, + NL80211_ATTR_MLO_TTLM_ULINK, __NL80211_ATTR_AFTER_LAST, NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST, NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1 @@ -868,6 +872,9 @@ enum nl80211_frequency_attr { NL80211_FREQUENCY_ATTR_NO_320MHZ, NL80211_FREQUENCY_ATTR_NO_EHT, NL80211_FREQUENCY_ATTR_PSD, + NL80211_FREQUENCY_ATTR_DFS_CONCURRENT, + NL80211_FREQUENCY_ATTR_NO_UHB_VLP_CLIENT, + NL80211_FREQUENCY_ATTR_NO_UHB_AFC_CLIENT, __NL80211_FREQUENCY_ATTR_AFTER_LAST, NL80211_FREQUENCY_ATTR_MAX = __NL80211_FREQUENCY_ATTR_AFTER_LAST - 1 }; @@ -940,6 +947,9 @@ enum nl80211_reg_rule_flags { NL80211_RRF_NO_320MHZ = 1 << 18, NL80211_RRF_NO_EHT = 1 << 19, NL80211_RRF_PSD = 1 << 20, + NL80211_RRF_DFS_CONCURRENT = 1 << 21, + NL80211_RRF_NO_UHB_VLP_CLIENT = 1 << 22, + NL80211_RRF_NO_UHB_AFC_CLIENT = 1 << 23, }; #define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR #define NL80211_RRF_NO_IBSS NL80211_RRF_NO_IR @@ -1104,6 +1114,14 @@ enum nl80211_bss_scan_width { NL80211_BSS_CHAN_WIDTH_1, NL80211_BSS_CHAN_WIDTH_2, }; +enum nl80211_bss_use_for { + NL80211_BSS_USE_FOR_NORMAL = 1 << 0, + NL80211_BSS_USE_FOR_MLD_LINK = 1 << 1, +}; +enum nl80211_bss_cannot_use_reasons { + NL80211_BSS_CANNOT_USE_NSTR_NONPRIMARY = 1 << 0, + NL80211_BSS_CANNOT_USE_UHB_PWR_MISMATCH = 1 << 1, +}; enum nl80211_bss { __NL80211_BSS_INVALID, NL80211_BSS_BSSID, @@ -1128,6 +1146,8 @@ enum nl80211_bss { NL80211_BSS_FREQUENCY_OFFSET, NL80211_BSS_MLO_LINK_ID, NL80211_BSS_MLD_ADDR, + NL80211_BSS_USE_FOR, + NL80211_BSS_CANNOT_USE_REASONS, __NL80211_BSS_AFTER_LAST, NL80211_BSS_MAX = __NL80211_BSS_AFTER_LAST - 1 }; @@ -1547,6 +1567,7 @@ enum nl80211_ext_feature_index { NL80211_EXT_FEATURE_AUTH_AND_DEAUTH_RANDOM_TA, NL80211_EXT_FEATURE_OWE_OFFLOAD, NL80211_EXT_FEATURE_OWE_OFFLOAD_AP, + NL80211_EXT_FEATURE_DFS_CONCURRENT, NUM_NL80211_EXT_FEATURES, MAX_NL80211_EXT_FEATURES = NUM_NL80211_EXT_FEATURES - 1 }; diff --git a/libc/kernel/uapi/linux/nsm.h b/libc/kernel/uapi/linux/nsm.h new file mode 100644 index 000000000..5c8e27d7c --- /dev/null +++ b/libc/kernel/uapi/linux/nsm.h @@ -0,0 +1,23 @@ +/* + * This file is auto-generated. Modifications will be lost. + * + * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ + * for more information. + */ +#ifndef __UAPI_LINUX_NSM_H +#define __UAPI_LINUX_NSM_H +#include <linux/ioctl.h> +#include <linux/types.h> +#define NSM_MAGIC 0x0A +#define NSM_REQUEST_MAX_SIZE 0x1000 +#define NSM_RESPONSE_MAX_SIZE 0x3000 +struct nsm_iovec { + __u64 addr; + __u64 len; +}; +struct nsm_raw { + struct nsm_iovec request; + struct nsm_iovec response; +}; +#define NSM_IOCTL_RAW _IOWR(NSM_MAGIC, 0x0, struct nsm_raw) +#endif diff --git a/libc/kernel/uapi/linux/pcitest.h b/libc/kernel/uapi/linux/pcitest.h index 2e8e761f1..38e498d64 100644 --- a/libc/kernel/uapi/linux/pcitest.h +++ b/libc/kernel/uapi/linux/pcitest.h @@ -7,7 +7,8 @@ #ifndef __UAPI_LINUX_PCITEST_H #define __UAPI_LINUX_PCITEST_H #define PCITEST_BAR _IO('P', 0x1) -#define PCITEST_LEGACY_IRQ _IO('P', 0x2) +#define PCITEST_INTX_IRQ _IO('P', 0x2) +#define PCITEST_LEGACY_IRQ PCITEST_INTX_IRQ #define PCITEST_MSI _IOW('P', 0x3, int) #define PCITEST_WRITE _IOW('P', 0x4, unsigned long) #define PCITEST_READ _IOW('P', 0x5, unsigned long) diff --git a/libc/kernel/uapi/linux/perf_event.h b/libc/kernel/uapi/linux/perf_event.h index 4b01018a8..16a1a2e3d 100644 --- a/libc/kernel/uapi/linux/perf_event.h +++ b/libc/kernel/uapi/linux/perf_event.h @@ -118,6 +118,7 @@ enum perf_branch_sample_type_shift { PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT = 16, PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT = 17, PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT = 18, + PERF_SAMPLE_BRANCH_COUNTERS_SHIFT = 19, PERF_SAMPLE_BRANCH_MAX_SHIFT }; enum perf_branch_sample_type { @@ -140,6 +141,7 @@ enum perf_branch_sample_type { PERF_SAMPLE_BRANCH_TYPE_SAVE = 1U << PERF_SAMPLE_BRANCH_TYPE_SAVE_SHIFT, PERF_SAMPLE_BRANCH_HW_INDEX = 1U << PERF_SAMPLE_BRANCH_HW_INDEX_SHIFT, PERF_SAMPLE_BRANCH_PRIV_SAVE = 1U << PERF_SAMPLE_BRANCH_PRIV_SAVE_SHIFT, + PERF_SAMPLE_BRANCH_COUNTERS = 1U << PERF_SAMPLE_BRANCH_COUNTERS_SHIFT, PERF_SAMPLE_BRANCH_MAX = 1U << PERF_SAMPLE_BRANCH_MAX_SHIFT, }; enum { @@ -502,6 +504,7 @@ struct perf_branch_entry { __u64 to; __u64 mispred : 1, predicted : 1, in_tx : 1, abort : 1, cycles : 16, type : 4, spec : 2, new_type : 4, priv : 3, reserved : 31; }; +#define PERF_BRANCH_ENTRY_INFO_BITS_MAX 33 union perf_sample_weight { __u64 full; #ifdef __LITTLE_ENDIAN_BITFIELD diff --git a/libc/kernel/uapi/linux/pkt_cls.h b/libc/kernel/uapi/linux/pkt_cls.h index 8ea50d47b..b402fa6b8 100644 --- a/libc/kernel/uapi/linux/pkt_cls.h +++ b/libc/kernel/uapi/linux/pkt_cls.h @@ -205,30 +205,6 @@ struct tc_u32_pcnt { #define TC_U32_EAT 8 #define TC_U32_MAXDEPTH 8 enum { - TCA_RSVP_UNSPEC, - TCA_RSVP_CLASSID, - TCA_RSVP_DST, - TCA_RSVP_SRC, - TCA_RSVP_PINFO, - TCA_RSVP_POLICE, - TCA_RSVP_ACT, - __TCA_RSVP_MAX -}; -#define TCA_RSVP_MAX (__TCA_RSVP_MAX - 1) -struct tc_rsvp_gpi { - __u32 key; - __u32 mask; - int offset; -}; -struct tc_rsvp_pinfo { - struct tc_rsvp_gpi dpi; - struct tc_rsvp_gpi spi; - __u8 protocol; - __u8 tunnelid; - __u8 tunnelhdr; - __u8 pad; -}; -enum { TCA_ROUTE4_UNSPEC, TCA_ROUTE4_CLASSID, TCA_ROUTE4_TO, @@ -250,18 +226,6 @@ enum { }; #define TCA_FW_MAX (__TCA_FW_MAX - 1) enum { - TCA_TCINDEX_UNSPEC, - TCA_TCINDEX_HASH, - TCA_TCINDEX_MASK, - TCA_TCINDEX_SHIFT, - TCA_TCINDEX_FALL_THROUGH, - TCA_TCINDEX_CLASSID, - TCA_TCINDEX_POLICE, - TCA_TCINDEX_ACT, - __TCA_TCINDEX_MAX -}; -#define TCA_TCINDEX_MAX (__TCA_TCINDEX_MAX - 1) -enum { FLOW_KEY_SRC, FLOW_KEY_DST, FLOW_KEY_PROTO, diff --git a/libc/kernel/uapi/linux/pkt_sched.h b/libc/kernel/uapi/linux/pkt_sched.h index 9047c8e50..c3488c26f 100644 --- a/libc/kernel/uapi/linux/pkt_sched.h +++ b/libc/kernel/uapi/linux/pkt_sched.h @@ -327,95 +327,6 @@ enum { __TCA_HFSC_MAX, }; #define TCA_HFSC_MAX (__TCA_HFSC_MAX - 1) -#define TC_CBQ_MAXPRIO 8 -#define TC_CBQ_MAXLEVEL 8 -#define TC_CBQ_DEF_EWMA 5 -struct tc_cbq_lssopt { - unsigned char change; - unsigned char flags; -#define TCF_CBQ_LSS_BOUNDED 1 -#define TCF_CBQ_LSS_ISOLATED 2 - unsigned char ewma_log; - unsigned char level; -#define TCF_CBQ_LSS_FLAGS 1 -#define TCF_CBQ_LSS_EWMA 2 -#define TCF_CBQ_LSS_MAXIDLE 4 -#define TCF_CBQ_LSS_MINIDLE 8 -#define TCF_CBQ_LSS_OFFTIME 0x10 -#define TCF_CBQ_LSS_AVPKT 0x20 - __u32 maxidle; - __u32 minidle; - __u32 offtime; - __u32 avpkt; -}; -struct tc_cbq_wrropt { - unsigned char flags; - unsigned char priority; - unsigned char cpriority; - unsigned char __reserved; - __u32 allot; - __u32 weight; -}; -struct tc_cbq_ovl { - unsigned char strategy; -#define TC_CBQ_OVL_CLASSIC 0 -#define TC_CBQ_OVL_DELAY 1 -#define TC_CBQ_OVL_LOWPRIO 2 -#define TC_CBQ_OVL_DROP 3 -#define TC_CBQ_OVL_RCLASSIC 4 - unsigned char priority2; - __u16 pad; - __u32 penalty; -}; -struct tc_cbq_police { - unsigned char police; - unsigned char __res1; - unsigned short __res2; -}; -struct tc_cbq_fopt { - __u32 split; - __u32 defmap; - __u32 defchange; -}; -struct tc_cbq_xstats { - __u32 borrows; - __u32 overactions; - __s32 avgidle; - __s32 undertime; -}; -enum { - TCA_CBQ_UNSPEC, - TCA_CBQ_LSSOPT, - TCA_CBQ_WRROPT, - TCA_CBQ_FOPT, - TCA_CBQ_OVL_STRATEGY, - TCA_CBQ_RATE, - TCA_CBQ_RTAB, - TCA_CBQ_POLICE, - __TCA_CBQ_MAX, -}; -#define TCA_CBQ_MAX (__TCA_CBQ_MAX - 1) -enum { - TCA_DSMARK_UNSPEC, - TCA_DSMARK_INDICES, - TCA_DSMARK_DEFAULT_INDEX, - TCA_DSMARK_SET_TC_INDEX, - TCA_DSMARK_MASK, - TCA_DSMARK_VALUE, - __TCA_DSMARK_MAX, -}; -#define TCA_DSMARK_MAX (__TCA_DSMARK_MAX - 1) -enum { - TCA_ATM_UNSPEC, - TCA_ATM_FD, - TCA_ATM_PTR, - TCA_ATM_HDR, - TCA_ATM_EXCESS, - TCA_ATM_ADDR, - TCA_ATM_STATE, - __TCA_ATM_MAX, -}; -#define TCA_ATM_MAX (__TCA_ATM_MAX - 1) enum { TCA_NETEM_UNSPEC, TCA_NETEM_CORR, diff --git a/libc/kernel/uapi/linux/raid/md_u.h b/libc/kernel/uapi/linux/raid/md_u.h index f5ae289e5..f291f649a 100644 --- a/libc/kernel/uapi/linux/raid/md_u.h +++ b/libc/kernel/uapi/linux/raid/md_u.h @@ -57,9 +57,6 @@ typedef struct mdu_array_info_s { int layout; int chunk_size; } mdu_array_info_t; -#define LEVEL_MULTIPATH (- 4) -#define LEVEL_LINEAR (- 1) -#define LEVEL_FAULTY (- 5) #define LEVEL_NONE (- 1000000) typedef struct mdu_disk_info_s { int number; diff --git a/libc/kernel/uapi/linux/resource.h b/libc/kernel/uapi/linux/resource.h index e64c79e1a..05e201b2f 100644 --- a/libc/kernel/uapi/linux/resource.h +++ b/libc/kernel/uapi/linux/resource.h @@ -6,7 +6,7 @@ */ #ifndef _UAPI_LINUX_RESOURCE_H #define _UAPI_LINUX_RESOURCE_H -#include <linux/time.h> +#include <linux/time_types.h> #include <linux/types.h> #define RUSAGE_SELF 0 #define RUSAGE_CHILDREN (- 1) diff --git a/libc/kernel/uapi/linux/serial.h b/libc/kernel/uapi/linux/serial.h index adbdd1bb0..ed5ed6640 100644 --- a/libc/kernel/uapi/linux/serial.h +++ b/libc/kernel/uapi/linux/serial.h @@ -6,6 +6,7 @@ */ #ifndef _UAPI_LINUX_SERIAL_H #define _UAPI_LINUX_SERIAL_H +#include <linux/const.h> #include <linux/types.h> #include <linux/tty_flags.h> struct serial_struct { @@ -79,14 +80,15 @@ struct serial_icounter_struct { }; struct serial_rs485 { __u32 flags; -#define SER_RS485_ENABLED (1 << 0) -#define SER_RS485_RTS_ON_SEND (1 << 1) -#define SER_RS485_RTS_AFTER_SEND (1 << 2) -#define SER_RS485_RX_DURING_TX (1 << 4) -#define SER_RS485_TERMINATE_BUS (1 << 5) -#define SER_RS485_ADDRB (1 << 6) -#define SER_RS485_ADDR_RECV (1 << 7) -#define SER_RS485_ADDR_DEST (1 << 8) +#define SER_RS485_ENABLED _BITUL(0) +#define SER_RS485_RTS_ON_SEND _BITUL(1) +#define SER_RS485_RTS_AFTER_SEND _BITUL(2) +#define SER_RS485_RX_DURING_TX _BITUL(4) +#define SER_RS485_TERMINATE_BUS _BITUL(5) +#define SER_RS485_ADDRB _BITUL(6) +#define SER_RS485_ADDR_RECV _BITUL(7) +#define SER_RS485_ADDR_DEST _BITUL(8) +#define SER_RS485_MODE_RS422 _BITUL(9) __u32 delay_rts_before_send; __u32 delay_rts_after_send; union { diff --git a/libc/kernel/uapi/linux/smc.h b/libc/kernel/uapi/linux/smc.h index 4521cebe1..5e75fac0e 100644 --- a/libc/kernel/uapi/linux/smc.h +++ b/libc/kernel/uapi/linux/smc.h @@ -132,6 +132,8 @@ enum { SMC_NLA_LGR_D_CHID, SMC_NLA_LGR_D_PAD, SMC_NLA_LGR_D_V2_COMMON, + SMC_NLA_LGR_D_EXT_GID, + SMC_NLA_LGR_D_PEER_EXT_GID, __SMC_NLA_LGR_D_MAX, SMC_NLA_LGR_D_MAX = __SMC_NLA_LGR_D_MAX - 1 }; diff --git a/libc/kernel/uapi/linux/smc_diag.h b/libc/kernel/uapi/linux/smc_diag.h index be540acb1..b358acf97 100644 --- a/libc/kernel/uapi/linux/smc_diag.h +++ b/libc/kernel/uapi/linux/smc_diag.h @@ -85,5 +85,7 @@ struct smcd_diag_dmbinfo { __aligned_u64 my_gid; __aligned_u64 token; __aligned_u64 peer_token; + __aligned_u64 peer_gid_ext; + __aligned_u64 my_gid_ext; }; #endif diff --git a/libc/kernel/uapi/linux/stat.h b/libc/kernel/uapi/linux/stat.h index 2fb7437c7..9974f3ead 100644 --- a/libc/kernel/uapi/linux/stat.h +++ b/libc/kernel/uapi/linux/stat.h @@ -85,6 +85,7 @@ struct statx { #define STATX_BTIME 0x00000800U #define STATX_MNT_ID 0x00001000U #define STATX_DIOALIGN 0x00002000U +#define STATX_MNT_ID_UNIQUE 0x00004000U #define STATX__RESERVED 0x80000000U #define STATX_ALL 0x00000fffU #define STATX_ATTR_COMPRESSED 0x00000004 diff --git a/libc/kernel/uapi/linux/sync_file.h b/libc/kernel/uapi/linux/sync_file.h index 423d248ce..bde8c162e 100644 --- a/libc/kernel/uapi/linux/sync_file.h +++ b/libc/kernel/uapi/linux/sync_file.h @@ -30,7 +30,12 @@ struct sync_file_info { __u32 pad; __u64 sync_fence_info; }; +struct sync_set_deadline { + __u64 deadline_ns; + __u64 pad; +}; #define SYNC_IOC_MAGIC '>' #define SYNC_IOC_MERGE _IOWR(SYNC_IOC_MAGIC, 3, struct sync_merge_data) #define SYNC_IOC_FILE_INFO _IOWR(SYNC_IOC_MAGIC, 4, struct sync_file_info) +#define SYNC_IOC_SET_DEADLINE _IOW(SYNC_IOC_MAGIC, 5, struct sync_set_deadline) #endif diff --git a/libc/kernel/uapi/linux/tc_act/tc_ipt.h b/libc/kernel/uapi/linux/tc_act/tc_ipt.h deleted file mode 100644 index a2fc93309..000000000 --- a/libc/kernel/uapi/linux/tc_act/tc_ipt.h +++ /dev/null @@ -1,22 +0,0 @@ -/* - * This file is auto-generated. Modifications will be lost. - * - * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ - * for more information. - */ -#ifndef __LINUX_TC_IPT_H -#define __LINUX_TC_IPT_H -#include <linux/pkt_cls.h> -enum { - TCA_IPT_UNSPEC, - TCA_IPT_TABLE, - TCA_IPT_HOOK, - TCA_IPT_INDEX, - TCA_IPT_CNT, - TCA_IPT_TM, - TCA_IPT_TARG, - TCA_IPT_PAD, - __TCA_IPT_MAX -}; -#define TCA_IPT_MAX (__TCA_IPT_MAX - 1) -#endif diff --git a/libc/kernel/uapi/linux/tc_act/tc_mirred.h b/libc/kernel/uapi/linux/tc_act/tc_mirred.h index d87b74a2d..dc51bc73d 100644 --- a/libc/kernel/uapi/linux/tc_act/tc_mirred.h +++ b/libc/kernel/uapi/linux/tc_act/tc_mirred.h @@ -22,6 +22,7 @@ enum { TCA_MIRRED_TM, TCA_MIRRED_PARMS, TCA_MIRRED_PAD, + TCA_MIRRED_BLOCKID, __TCA_MIRRED_MAX }; #define TCA_MIRRED_MAX (__TCA_MIRRED_MAX - 1) diff --git a/libc/kernel/uapi/linux/thp7312.h b/libc/kernel/uapi/linux/thp7312.h new file mode 100644 index 000000000..fbd5571aa --- /dev/null +++ b/libc/kernel/uapi/linux/thp7312.h @@ -0,0 +1,14 @@ +/* + * This file is auto-generated. Modifications will be lost. + * + * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ + * for more information. + */ +#ifndef __UAPI_THP7312_H_ +#define __UAPI_THP7312_H_ +#include <linux/v4l2-controls.h> +#define V4L2_CID_THP7312_LOW_LIGHT_COMPENSATION (V4L2_CID_USER_THP7312_BASE + 0x01) +#define V4L2_CID_THP7312_AUTO_FOCUS_METHOD (V4L2_CID_USER_THP7312_BASE + 0x02) +#define V4L2_CID_THP7312_NOISE_REDUCTION_AUTO (V4L2_CID_USER_THP7312_BASE + 0x03) +#define V4L2_CID_THP7312_NOISE_REDUCTION_ABSOLUTE (V4L2_CID_USER_THP7312_BASE + 0x04) +#endif diff --git a/libc/kernel/uapi/linux/time_types.h b/libc/kernel/uapi/linux/time_types.h index 668f6ae62..bca869889 100644 --- a/libc/kernel/uapi/linux/time_types.h +++ b/libc/kernel/uapi/linux/time_types.h @@ -6,6 +6,7 @@ */ #ifndef _UAPI_LINUX_TIME_TYPES_H #define _UAPI_LINUX_TIME_TYPES_H +#include <linux/time.h> #include <linux/types.h> struct __kernel_timespec { __kernel_time64_t tv_sec; diff --git a/libc/kernel/uapi/linux/usb/f_accessory.h b/libc/kernel/uapi/linux/usb/f_accessory.h deleted file mode 100644 index abd864cab..000000000 --- a/libc/kernel/uapi/linux/usb/f_accessory.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * This file is auto-generated. Modifications will be lost. - * - * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ - * for more information. - */ -#ifndef _UAPI_LINUX_USB_F_ACCESSORY_H -#define _UAPI_LINUX_USB_F_ACCESSORY_H -#define USB_ACCESSORY_VENDOR_ID 0x18D1 -#define USB_ACCESSORY_PRODUCT_ID 0x2D00 -#define USB_ACCESSORY_ADB_PRODUCT_ID 0x2D01 -#define ACCESSORY_STRING_MANUFACTURER 0 -#define ACCESSORY_STRING_MODEL 1 -#define ACCESSORY_STRING_DESCRIPTION 2 -#define ACCESSORY_STRING_VERSION 3 -#define ACCESSORY_STRING_URI 4 -#define ACCESSORY_STRING_SERIAL 5 -#define ACCESSORY_GET_PROTOCOL 51 -#define ACCESSORY_SEND_STRING 52 -#define ACCESSORY_START 53 -#define ACCESSORY_REGISTER_HID 54 -#define ACCESSORY_UNREGISTER_HID 55 -#define ACCESSORY_SET_HID_REPORT_DESC 56 -#define ACCESSORY_SEND_HID_EVENT 57 -#define ACCESSORY_SET_AUDIO_MODE 58 -#define ACCESSORY_GET_STRING_MANUFACTURER _IOW('M', 1, char[256]) -#define ACCESSORY_GET_STRING_MODEL _IOW('M', 2, char[256]) -#define ACCESSORY_GET_STRING_DESCRIPTION _IOW('M', 3, char[256]) -#define ACCESSORY_GET_STRING_VERSION _IOW('M', 4, char[256]) -#define ACCESSORY_GET_STRING_URI _IOW('M', 5, char[256]) -#define ACCESSORY_GET_STRING_SERIAL _IOW('M', 6, char[256]) -#define ACCESSORY_IS_START_REQUESTED _IO('M', 7) -#define ACCESSORY_GET_AUDIO_MODE _IO('M', 8) -#endif diff --git a/libc/kernel/uapi/linux/usb/functionfs.h b/libc/kernel/uapi/linux/usb/functionfs.h index 889360e15..417093eef 100644 --- a/libc/kernel/uapi/linux/usb/functionfs.h +++ b/libc/kernel/uapi/linux/usb/functionfs.h @@ -59,8 +59,9 @@ struct usb_os_desc_header { struct usb_ext_compat_desc { __u8 bFirstInterfaceNumber; __u8 Reserved1; - __u8 CompatibleID[8]; + __struct_group(, IDs,, __u8 CompatibleID[8]; __u8 SubCompatibleID[8]; + ); __u8 Reserved2[6]; }; struct usb_ext_prop_desc { diff --git a/libc/kernel/uapi/linux/userfaultfd.h b/libc/kernel/uapi/linux/userfaultfd.h index 5eeea4e0a..1dc2d791a 100644 --- a/libc/kernel/uapi/linux/userfaultfd.h +++ b/libc/kernel/uapi/linux/userfaultfd.h @@ -11,15 +11,16 @@ #define USERFAULTFD_IOC_NEW _IO(USERFAULTFD_IOC, 0x00) #define UFFD_API ((__u64) 0xAA) #define UFFD_API_REGISTER_MODES (UFFDIO_REGISTER_MODE_MISSING | UFFDIO_REGISTER_MODE_WP | UFFDIO_REGISTER_MODE_MINOR) -#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID | UFFD_FEATURE_MINOR_HUGETLBFS | UFFD_FEATURE_MINOR_SHMEM | UFFD_FEATURE_EXACT_ADDRESS | UFFD_FEATURE_WP_HUGETLBFS_SHMEM | UFFD_FEATURE_WP_UNPOPULATED | UFFD_FEATURE_POISON | UFFD_FEATURE_WP_ASYNC) +#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID | UFFD_FEATURE_MINOR_HUGETLBFS | UFFD_FEATURE_MINOR_SHMEM | UFFD_FEATURE_EXACT_ADDRESS | UFFD_FEATURE_WP_HUGETLBFS_SHMEM | UFFD_FEATURE_WP_UNPOPULATED | UFFD_FEATURE_POISON | UFFD_FEATURE_WP_ASYNC | UFFD_FEATURE_MOVE) #define UFFD_API_IOCTLS ((__u64) 1 << _UFFDIO_REGISTER | (__u64) 1 << _UFFDIO_UNREGISTER | (__u64) 1 << _UFFDIO_API) -#define UFFD_API_RANGE_IOCTLS ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_ZEROPAGE | (__u64) 1 << _UFFDIO_WRITEPROTECT | (__u64) 1 << _UFFDIO_CONTINUE | (__u64) 1 << _UFFDIO_POISON) +#define UFFD_API_RANGE_IOCTLS ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_ZEROPAGE | (__u64) 1 << _UFFDIO_MOVE | (__u64) 1 << _UFFDIO_WRITEPROTECT | (__u64) 1 << _UFFDIO_CONTINUE | (__u64) 1 << _UFFDIO_POISON) #define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_WRITEPROTECT | (__u64) 1 << _UFFDIO_CONTINUE | (__u64) 1 << _UFFDIO_POISON) #define _UFFDIO_REGISTER (0x00) #define _UFFDIO_UNREGISTER (0x01) #define _UFFDIO_WAKE (0x02) #define _UFFDIO_COPY (0x03) #define _UFFDIO_ZEROPAGE (0x04) +#define _UFFDIO_MOVE (0x05) #define _UFFDIO_WRITEPROTECT (0x06) #define _UFFDIO_CONTINUE (0x07) #define _UFFDIO_POISON (0x08) @@ -31,6 +32,7 @@ #define UFFDIO_WAKE _IOR(UFFDIO, _UFFDIO_WAKE, struct uffdio_range) #define UFFDIO_COPY _IOWR(UFFDIO, _UFFDIO_COPY, struct uffdio_copy) #define UFFDIO_ZEROPAGE _IOWR(UFFDIO, _UFFDIO_ZEROPAGE, struct uffdio_zeropage) +#define UFFDIO_MOVE _IOWR(UFFDIO, _UFFDIO_MOVE, struct uffdio_move) #define UFFDIO_WRITEPROTECT _IOWR(UFFDIO, _UFFDIO_WRITEPROTECT, struct uffdio_writeprotect) #define UFFDIO_CONTINUE _IOWR(UFFDIO, _UFFDIO_CONTINUE, struct uffdio_continue) #define UFFDIO_POISON _IOWR(UFFDIO, _UFFDIO_POISON, struct uffdio_poison) @@ -92,6 +94,7 @@ struct uffdio_api { #define UFFD_FEATURE_WP_UNPOPULATED (1 << 13) #define UFFD_FEATURE_POISON (1 << 14) #define UFFD_FEATURE_WP_ASYNC (1 << 15) +#define UFFD_FEATURE_MOVE (1 << 16) __u64 features; __u64 ioctls; }; @@ -141,5 +144,14 @@ struct uffdio_poison { __u64 mode; __s64 updated; }; +struct uffdio_move { + __u64 dst; + __u64 src; + __u64 len; +#define UFFDIO_MOVE_MODE_DONTWAKE ((__u64) 1 << 0) +#define UFFDIO_MOVE_MODE_ALLOW_SRC_HOLES ((__u64) 1 << 1) + __u64 mode; + __s64 move; +}; #define UFFD_USER_MODE_ONLY 1 #endif diff --git a/libc/kernel/uapi/linux/v4l2-controls.h b/libc/kernel/uapi/linux/v4l2-controls.h index 90cb69d0f..23158dcbc 100644 --- a/libc/kernel/uapi/linux/v4l2-controls.h +++ b/libc/kernel/uapi/linux/v4l2-controls.h @@ -111,6 +111,7 @@ enum v4l2_colorfx { #define V4L2_CID_USER_DW100_BASE (V4L2_CID_USER_BASE + 0x1190) #define V4L2_CID_USER_ASPEED_BASE (V4L2_CID_USER_BASE + 0x11a0) #define V4L2_CID_USER_NPCM_BASE (V4L2_CID_USER_BASE + 0x11b0) +#define V4L2_CID_USER_THP7312_BASE (V4L2_CID_USER_BASE + 0x11c0) #define V4L2_CID_CODEC_BASE (V4L2_CTRL_CLASS_CODEC | 0x900) #define V4L2_CID_CODEC_CLASS (V4L2_CTRL_CLASS_CODEC | 1) #define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_CODEC_BASE + 0) diff --git a/libc/kernel/uapi/linux/v4l2-subdev.h b/libc/kernel/uapi/linux/v4l2-subdev.h index d684a5499..9caaa4755 100644 --- a/libc/kernel/uapi/linux/v4l2-subdev.h +++ b/libc/kernel/uapi/linux/v4l2-subdev.h @@ -59,7 +59,8 @@ struct v4l2_subdev_frame_interval { __u32 pad; struct v4l2_fract interval; __u32 stream; - __u32 reserved[8]; + __u32 which; + __u32 reserved[7]; }; struct v4l2_subdev_frame_interval_enum { __u32 index; @@ -104,6 +105,7 @@ struct v4l2_subdev_routing { __u32 reserved[6]; }; #define V4L2_SUBDEV_CLIENT_CAP_STREAMS (1ULL << 0) +#define V4L2_SUBDEV_CLIENT_CAP_INTERVAL_USES_WHICH (1ULL << 1) struct v4l2_subdev_client_capability { __u64 capabilities; }; diff --git a/libc/kernel/uapi/linux/version.h b/libc/kernel/uapi/linux/version.h index 645a2ab62..549c079e7 100644 --- a/libc/kernel/uapi/linux/version.h +++ b/libc/kernel/uapi/linux/version.h @@ -4,8 +4,8 @@ * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ * for more information. */ -#define LINUX_VERSION_CODE 395008 +#define LINUX_VERSION_CODE 395264 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + ((c) > 255 ? 255 : (c))) #define LINUX_VERSION_MAJOR 6 -#define LINUX_VERSION_PATCHLEVEL 7 +#define LINUX_VERSION_PATCHLEVEL 8 #define LINUX_VERSION_SUBLEVEL 0 diff --git a/libc/kernel/uapi/linux/vfio.h b/libc/kernel/uapi/linux/vfio.h index 1107b2185..5910e4099 100644 --- a/libc/kernel/uapi/linux/vfio.h +++ b/libc/kernel/uapi/linux/vfio.h @@ -336,6 +336,7 @@ enum vfio_device_mig_state { VFIO_DEVICE_STATE_RUNNING_P2P = 5, VFIO_DEVICE_STATE_PRE_COPY = 6, VFIO_DEVICE_STATE_PRE_COPY_P2P = 7, + VFIO_DEVICE_STATE_NR, }; struct vfio_precopy_info { __u32 argsz; diff --git a/libc/kernel/uapi/linux/videodev2.h b/libc/kernel/uapi/linux/videodev2.h index bb9888890..ed9148430 100644 --- a/libc/kernel/uapi/linux/videodev2.h +++ b/libc/kernel/uapi/linux/videodev2.h @@ -562,6 +562,7 @@ struct v4l2_requestbuffers { #define V4L2_BUF_CAP_SUPPORTS_ORPHANED_BUFS (1 << 4) #define V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF (1 << 5) #define V4L2_BUF_CAP_SUPPORTS_MMAP_CACHE_HINTS (1 << 6) +#define V4L2_BUF_CAP_SUPPORTS_MAX_NUM_BUFFERS (1 << 7) struct v4l2_plane { __u32 bytesused; __u32 length; @@ -911,7 +912,7 @@ struct v4l2_ext_control { __s64 * p_s64; struct v4l2_area * p_area; struct v4l2_ctrl_h264_sps * p_h264_sps; - struct v4l2_ctrl_h264_pps * p_h264_pps; + struct v4l2_ctrl_h264_pps * p_h264_pps; struct v4l2_ctrl_h264_scaling_matrix * p_h264_scaling_matrix; struct v4l2_ctrl_h264_pred_weights * p_h264_pred_weights; struct v4l2_ctrl_h264_slice_params * p_h264_slice_params; @@ -932,6 +933,8 @@ struct v4l2_ext_control { struct v4l2_ctrl_av1_tile_group_entry * p_av1_tile_group_entry; struct v4l2_ctrl_av1_frame * p_av1_frame; struct v4l2_ctrl_av1_film_grain * p_av1_film_grain; + struct v4l2_ctrl_hdr10_cll_info * p_hdr10_cll_info; + struct v4l2_ctrl_hdr10_mastering_display * p_hdr10_mastering_display; void * ptr; }; } __attribute__((packed)); @@ -1429,7 +1432,8 @@ struct v4l2_create_buffers { struct v4l2_format format; __u32 capabilities; __u32 flags; - __u32 reserved[6]; + __u32 max_num_buffers; + __u32 reserved[5]; }; #define VIDIOC_QUERYCAP _IOR('V', 0, struct v4l2_capability) #define VIDIOC_ENUM_FMT _IOWR('V', 2, struct v4l2_fmtdesc) diff --git a/libc/kernel/uapi/linux/virtio_config.h b/libc/kernel/uapi/linux/virtio_config.h index 520a472bb..021845c10 100644 --- a/libc/kernel/uapi/linux/virtio_config.h +++ b/libc/kernel/uapi/linux/virtio_config.h @@ -14,7 +14,7 @@ #define VIRTIO_CONFIG_S_NEEDS_RESET 0x40 #define VIRTIO_CONFIG_S_FAILED 0x80 #define VIRTIO_TRANSPORT_F_START 28 -#define VIRTIO_TRANSPORT_F_END 41 +#define VIRTIO_TRANSPORT_F_END 42 #ifndef VIRTIO_CONFIG_NO_LEGACY #define VIRTIO_F_NOTIFY_ON_EMPTY 24 #define VIRTIO_F_ANY_LAYOUT 27 @@ -29,4 +29,5 @@ #define VIRTIO_F_NOTIFICATION_DATA 38 #define VIRTIO_F_NOTIF_CONFIG_DATA 39 #define VIRTIO_F_RING_RESET 40 +#define VIRTIO_F_ADMIN_VQ 41 #endif diff --git a/libc/kernel/uapi/linux/virtio_pci.h b/libc/kernel/uapi/linux/virtio_pci.h index f9595bcc5..013548c6e 100644 --- a/libc/kernel/uapi/linux/virtio_pci.h +++ b/libc/kernel/uapi/linux/virtio_pci.h @@ -78,6 +78,8 @@ struct virtio_pci_modern_common_cfg { struct virtio_pci_common_cfg cfg; __le16 queue_notify_data; __le16 queue_reset; + __le16 admin_queue_index; + __le16 admin_queue_num; }; struct virtio_pci_cfg_cap { struct virtio_pci_cap cap; @@ -112,5 +114,48 @@ struct virtio_pci_cfg_cap { #define VIRTIO_PCI_COMMON_Q_USEDHI 52 #define VIRTIO_PCI_COMMON_Q_NDATA 56 #define VIRTIO_PCI_COMMON_Q_RESET 58 +#define VIRTIO_PCI_COMMON_ADM_Q_IDX 60 +#define VIRTIO_PCI_COMMON_ADM_Q_NUM 62 #endif +#define VIRTIO_ADMIN_STATUS_OK 0 +#define VIRTIO_ADMIN_CMD_LIST_QUERY 0x0 +#define VIRTIO_ADMIN_CMD_LIST_USE 0x1 +#define VIRTIO_ADMIN_GROUP_TYPE_SRIOV 0x1 +#define VIRTIO_ADMIN_CMD_LEGACY_COMMON_CFG_WRITE 0x2 +#define VIRTIO_ADMIN_CMD_LEGACY_COMMON_CFG_READ 0x3 +#define VIRTIO_ADMIN_CMD_LEGACY_DEV_CFG_WRITE 0x4 +#define VIRTIO_ADMIN_CMD_LEGACY_DEV_CFG_READ 0x5 +#define VIRTIO_ADMIN_CMD_LEGACY_NOTIFY_INFO 0x6 +struct __attribute__((__packed__)) virtio_admin_cmd_hdr { + __le16 opcode; + __le16 group_type; + __u8 reserved1[12]; + __le64 group_member_id; +}; +struct __attribute__((__packed__)) virtio_admin_cmd_status { + __le16 status; + __le16 status_qualifier; + __u8 reserved2[4]; +}; +struct __attribute__((__packed__)) virtio_admin_cmd_legacy_wr_data { + __u8 offset; + __u8 reserved[7]; + __u8 registers[]; +}; +struct __attribute__((__packed__)) virtio_admin_cmd_legacy_rd_data { + __u8 offset; +}; +#define VIRTIO_ADMIN_CMD_NOTIFY_INFO_FLAGS_END 0 +#define VIRTIO_ADMIN_CMD_NOTIFY_INFO_FLAGS_OWNER_DEV 0x1 +#define VIRTIO_ADMIN_CMD_NOTIFY_INFO_FLAGS_OWNER_MEM 0x2 +#define VIRTIO_ADMIN_CMD_MAX_NOTIFY_INFO 4 +struct __attribute__((__packed__)) virtio_admin_cmd_notify_info_data { + __u8 flags; + __u8 bar; + __u8 padding[6]; + __le64 offset; +}; +struct virtio_admin_cmd_notify_info_result { + struct virtio_admin_cmd_notify_info_data entries[VIRTIO_ADMIN_CMD_MAX_NOTIFY_INFO]; +}; #endif diff --git a/libc/kernel/uapi/linux/virtio_pmem.h b/libc/kernel/uapi/linux/virtio_pmem.h index 182baf7ec..da0f764ba 100644 --- a/libc/kernel/uapi/linux/virtio_pmem.h +++ b/libc/kernel/uapi/linux/virtio_pmem.h @@ -9,6 +9,8 @@ #include <linux/types.h> #include <linux/virtio_ids.h> #include <linux/virtio_config.h> +#define VIRTIO_PMEM_F_SHMEM_REGION 0 +#define VIRTIO_PMEM_SHMEM_REGION_ID 0 struct virtio_pmem_config { __le64 start; __le64 size; diff --git a/libc/kernel/uapi/rdma/bnxt_re-abi.h b/libc/kernel/uapi/rdma/bnxt_re-abi.h index 86e16a054..3dceafd8f 100644 --- a/libc/kernel/uapi/rdma/bnxt_re-abi.h +++ b/libc/kernel/uapi/rdma/bnxt_re-abi.h @@ -17,12 +17,20 @@ enum { BNXT_RE_UCNTX_CMASK_HAVE_MODE = 0x02ULL, BNXT_RE_UCNTX_CMASK_WC_DPI_ENABLED = 0x04ULL, BNXT_RE_UCNTX_CMASK_DBR_PACING_ENABLED = 0x08ULL, + BNXT_RE_UCNTX_CMASK_POW2_DISABLED = 0x10ULL, + BNXT_RE_COMP_MASK_UCNTX_HW_RETX_ENABLED = 0x40, }; enum bnxt_re_wqe_mode { BNXT_QPLIB_WQE_MODE_STATIC = 0x00, BNXT_QPLIB_WQE_MODE_VARIABLE = 0x01, BNXT_QPLIB_WQE_MODE_INVALID = 0x02, }; +enum { + BNXT_RE_COMP_MASK_REQ_UCNTX_POW2_SUPPORT = 0x01, +}; +struct bnxt_re_uctx_req { + __aligned_u64 comp_mask; +}; struct bnxt_re_uctx_resp { __u32 dev_id; __u32 max_qp; @@ -45,11 +53,15 @@ struct bnxt_re_cq_req { __aligned_u64 cq_va; __aligned_u64 cq_handle; }; +enum bnxt_re_cq_mask { + BNXT_RE_CQ_TOGGLE_PAGE_SUPPORT = 0x1, +}; struct bnxt_re_cq_resp { __u32 cqid; __u32 tail; __u32 phase; __u32 rsvd; + __aligned_u64 comp_mask; }; struct bnxt_re_resize_cq_req { __aligned_u64 cq_va; @@ -79,6 +91,7 @@ enum bnxt_re_shpg_offt { enum bnxt_re_objects { BNXT_RE_OBJECT_ALLOC_PAGE = (1U << UVERBS_ID_NS_SHIFT), BNXT_RE_OBJECT_NOTIFY_DRV, + BNXT_RE_OBJECT_GET_TOGGLE_MEM, }; enum bnxt_re_alloc_page_type { BNXT_RE_ALLOC_WC_PAGE = 0, @@ -102,4 +115,23 @@ enum bnxt_re_alloc_page_methods { enum bnxt_re_notify_drv_methods { BNXT_RE_METHOD_NOTIFY_DRV = (1U << UVERBS_ID_NS_SHIFT), }; +enum bnxt_re_get_toggle_mem_type { + BNXT_RE_CQ_TOGGLE_MEM = 0, + BNXT_RE_SRQ_TOGGLE_MEM, +}; +enum bnxt_re_var_toggle_mem_attrs { + BNXT_RE_TOGGLE_MEM_HANDLE = (1U << UVERBS_ID_NS_SHIFT), + BNXT_RE_TOGGLE_MEM_TYPE, + BNXT_RE_TOGGLE_MEM_RES_ID, + BNXT_RE_TOGGLE_MEM_MMAP_PAGE, + BNXT_RE_TOGGLE_MEM_MMAP_OFFSET, + BNXT_RE_TOGGLE_MEM_MMAP_LENGTH, +}; +enum bnxt_re_toggle_mem_attrs { + BNXT_RE_RELEASE_TOGGLE_MEM_HANDLE = (1U << UVERBS_ID_NS_SHIFT), +}; +enum bnxt_re_toggle_mem_methods { + BNXT_RE_METHOD_GET_TOGGLE_MEM = (1U << UVERBS_ID_NS_SHIFT), + BNXT_RE_METHOD_RELEASE_TOGGLE_MEM, +}; #endif diff --git a/libc/kernel/uapi/rdma/efa-abi.h b/libc/kernel/uapi/rdma/efa-abi.h index c327764c4..2b30941a8 100644 --- a/libc/kernel/uapi/rdma/efa-abi.h +++ b/libc/kernel/uapi/rdma/efa-abi.h @@ -7,6 +7,7 @@ #ifndef EFA_ABI_USER_H #define EFA_ABI_USER_H #include <linux/types.h> +#include <rdma/ib_user_ioctl_cmds.h> #define EFA_UVERBS_ABI_VERSION 1 enum { EFA_ALLOC_UCONTEXT_CMD_COMP_TX_BATCH = 1 << 0, @@ -104,4 +105,19 @@ struct efa_ibv_ex_query_device_resp { __u32 max_rdma_size; __u32 device_caps; }; +enum { + EFA_QUERY_MR_VALIDITY_RECV_IC_ID = 1 << 0, + EFA_QUERY_MR_VALIDITY_RDMA_READ_IC_ID = 1 << 1, + EFA_QUERY_MR_VALIDITY_RDMA_RECV_IC_ID = 1 << 2, +}; +enum efa_query_mr_attrs { + EFA_IB_ATTR_QUERY_MR_HANDLE = (1U << UVERBS_ID_NS_SHIFT), + EFA_IB_ATTR_QUERY_MR_RESP_IC_ID_VALIDITY, + EFA_IB_ATTR_QUERY_MR_RESP_RECV_IC_ID, + EFA_IB_ATTR_QUERY_MR_RESP_RDMA_READ_IC_ID, + EFA_IB_ATTR_QUERY_MR_RESP_RDMA_RECV_IC_ID, +}; +enum efa_mr_methods { + EFA_IB_METHOD_MR_QUERY = (1U << UVERBS_ID_NS_SHIFT), +}; #endif diff --git a/libc/kernel/uapi/rdma/hns-abi.h b/libc/kernel/uapi/rdma/hns-abi.h index f9effb335..54a56722c 100644 --- a/libc/kernel/uapi/rdma/hns-abi.h +++ b/libc/kernel/uapi/rdma/hns-abi.h @@ -81,4 +81,8 @@ struct hns_roce_ib_alloc_ucontext { struct hns_roce_ib_alloc_pd_resp { __u32 pdn; }; +struct hns_roce_ib_create_ah_resp { + __u8 dmac[6]; + __u8 reserved[2]; +}; #endif diff --git a/libc/kernel/uapi/rdma/mlx5-abi.h b/libc/kernel/uapi/rdma/mlx5-abi.h index dc6420baf..22cf99e25 100644 --- a/libc/kernel/uapi/rdma/mlx5-abi.h +++ b/libc/kernel/uapi/rdma/mlx5-abi.h @@ -9,6 +9,7 @@ #include <linux/types.h> #include <linux/if_ether.h> #include <rdma/ib_user_ioctl_verbs.h> +#include <rdma/mlx5_user_ioctl_verbs.h> enum { MLX5_QP_FLAG_SIGNATURE = 1 << 0, MLX5_QP_FLAG_SCATTER_CQE = 1 << 1, @@ -186,6 +187,7 @@ struct mlx5_ib_query_device_resp { __u32 tunnel_offloads_caps; struct mlx5_ib_dci_streams_caps dci_streams_caps; __u16 reserved; + struct mlx5_ib_uapi_reg reg_c0; }; enum mlx5_ib_create_cq_flags { MLX5_IB_CREATE_CQ_FLAGS_CQE_128B_PAD = 1 << 0, diff --git a/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h b/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h index 57fc43e22..f087ee81f 100644 --- a/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h +++ b/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h @@ -32,6 +32,7 @@ enum mlx5_ib_uapi_dm_type { MLX5_IB_UAPI_DM_TYPE_STEERING_SW_ICM, MLX5_IB_UAPI_DM_TYPE_HEADER_MODIFY_SW_ICM, MLX5_IB_UAPI_DM_TYPE_HEADER_MODIFY_PATTERN_SW_ICM, + MLX5_IB_UAPI_DM_TYPE_ENCAP_SW_ICM, }; enum mlx5_ib_uapi_devx_create_event_channel_flags { MLX5_IB_UAPI_DEVX_CR_EV_CH_FLAGS_OMIT_DATA = 1 << 0, diff --git a/libc/kernel/uapi/regulator/regulator.h b/libc/kernel/uapi/regulator/regulator.h new file mode 100644 index 000000000..23ce7c6ec --- /dev/null +++ b/libc/kernel/uapi/regulator/regulator.h @@ -0,0 +1,47 @@ +/* + * This file is auto-generated. Modifications will be lost. + * + * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ + * for more information. + */ +#ifndef _UAPI_REGULATOR_H +#define _UAPI_REGULATOR_H +#include <stdint.h> +#define REGULATOR_EVENT_UNDER_VOLTAGE 0x01 +#define REGULATOR_EVENT_OVER_CURRENT 0x02 +#define REGULATOR_EVENT_REGULATION_OUT 0x04 +#define REGULATOR_EVENT_FAIL 0x08 +#define REGULATOR_EVENT_OVER_TEMP 0x10 +#define REGULATOR_EVENT_FORCE_DISABLE 0x20 +#define REGULATOR_EVENT_VOLTAGE_CHANGE 0x40 +#define REGULATOR_EVENT_DISABLE 0x80 +#define REGULATOR_EVENT_PRE_VOLTAGE_CHANGE 0x100 +#define REGULATOR_EVENT_ABORT_VOLTAGE_CHANGE 0x200 +#define REGULATOR_EVENT_PRE_DISABLE 0x400 +#define REGULATOR_EVENT_ABORT_DISABLE 0x800 +#define REGULATOR_EVENT_ENABLE 0x1000 +#define REGULATOR_EVENT_UNDER_VOLTAGE_WARN 0x2000 +#define REGULATOR_EVENT_OVER_CURRENT_WARN 0x4000 +#define REGULATOR_EVENT_OVER_VOLTAGE_WARN 0x8000 +#define REGULATOR_EVENT_OVER_TEMP_WARN 0x10000 +#define REGULATOR_EVENT_WARN_MASK 0x1E000 +struct reg_genl_event { + char reg_name[32]; + uint64_t event; +}; +enum { + REG_GENL_ATTR_UNSPEC, + REG_GENL_ATTR_EVENT, + __REG_GENL_ATTR_MAX, +}; +#define REG_GENL_ATTR_MAX (__REG_GENL_ATTR_MAX - 1) +enum { + REG_GENL_CMD_UNSPEC, + REG_GENL_CMD_EVENT, + __REG_GENL_CMD_MAX, +}; +#define REG_GENL_CMD_MAX (__REG_GENL_CMD_MAX - 1) +#define REG_GENL_FAMILY_NAME "reg_event" +#define REG_GENL_VERSION 0x01 +#define REG_GENL_MCAST_GROUP_NAME "reg_mc_group" +#endif diff --git a/libc/kernel/uapi/scsi/scsi_bsg_mpi3mr.h b/libc/kernel/uapi/scsi/scsi_bsg_mpi3mr.h index f12c36f9a..bac50179a 100644 --- a/libc/kernel/uapi/scsi/scsi_bsg_mpi3mr.h +++ b/libc/kernel/uapi/scsi/scsi_bsg_mpi3mr.h @@ -242,6 +242,8 @@ struct mpi3_nvme_encapsulated_error_reply { #define MPI3MR_NVME_DATA_FORMAT_PRP 0 #define MPI3MR_NVME_DATA_FORMAT_SGL1 1 #define MPI3MR_NVME_DATA_FORMAT_SGL2 2 +#define MPI3MR_NVMESGL_DATA_SEGMENT 0x00 +#define MPI3MR_NVMESGL_LAST_SEGMENT 0x03 struct mpi3_scsi_task_mgmt_request { __le16 host_tag; __u8 ioc_use_only02; diff --git a/libc/kernel/uapi/sound/asound.h b/libc/kernel/uapi/sound/asound.h index 7da2fbbdb..b608ed51f 100644 --- a/libc/kernel/uapi/sound/asound.h +++ b/libc/kernel/uapi/sound/asound.h @@ -92,7 +92,7 @@ struct snd_hwdep_dsp_image { #define SNDRV_HWDEP_IOCTL_INFO _IOR('H', 0x01, struct snd_hwdep_info) #define SNDRV_HWDEP_IOCTL_DSP_STATUS _IOR('H', 0x02, struct snd_hwdep_dsp_status) #define SNDRV_HWDEP_IOCTL_DSP_LOAD _IOW('H', 0x03, struct snd_hwdep_dsp_image) -#define SNDRV_PCM_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 15) +#define SNDRV_PCM_VERSION SNDRV_PROTOCOL_VERSION(2, 0, 17) typedef unsigned long snd_pcm_uframes_t; typedef signed long snd_pcm_sframes_t; enum { @@ -201,7 +201,10 @@ typedef int __bitwise snd_pcm_format_t; #endif typedef int __bitwise snd_pcm_subformat_t; #define SNDRV_PCM_SUBFORMAT_STD (( snd_pcm_subformat_t) 0) -#define SNDRV_PCM_SUBFORMAT_LAST SNDRV_PCM_SUBFORMAT_STD +#define SNDRV_PCM_SUBFORMAT_MSBITS_MAX (( snd_pcm_subformat_t) 1) +#define SNDRV_PCM_SUBFORMAT_MSBITS_20 (( snd_pcm_subformat_t) 2) +#define SNDRV_PCM_SUBFORMAT_MSBITS_24 (( snd_pcm_subformat_t) 3) +#define SNDRV_PCM_SUBFORMAT_LAST SNDRV_PCM_SUBFORMAT_MSBITS_24 #define SNDRV_PCM_INFO_MMAP 0x00000001 #define SNDRV_PCM_INFO_MMAP_VALID 0x00000002 #define SNDRV_PCM_INFO_DOUBLE 0x00000004 diff --git a/libc/kernel/uapi/sound/scarlett2.h b/libc/kernel/uapi/sound/scarlett2.h new file mode 100644 index 000000000..13e6abed1 --- /dev/null +++ b/libc/kernel/uapi/sound/scarlett2.h @@ -0,0 +1,30 @@ +/* + * This file is auto-generated. Modifications will be lost. + * + * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/ + * for more information. + */ +#ifndef __UAPI_SOUND_SCARLETT2_H +#define __UAPI_SOUND_SCARLETT2_H +#include <linux/types.h> +#include <linux/ioctl.h> +#define SCARLETT2_HWDEP_MAJOR 1 +#define SCARLETT2_HWDEP_MINOR 0 +#define SCARLETT2_HWDEP_SUBMINOR 0 +#define SCARLETT2_HWDEP_VERSION ((SCARLETT2_HWDEP_MAJOR << 16) | (SCARLETT2_HWDEP_MINOR << 8) | SCARLETT2_HWDEP_SUBMINOR) +#define SCARLETT2_HWDEP_VERSION_MAJOR(v) (((v) >> 16) & 0xFF) +#define SCARLETT2_HWDEP_VERSION_MINOR(v) (((v) >> 8) & 0xFF) +#define SCARLETT2_HWDEP_VERSION_SUBMINOR(v) ((v) & 0xFF) +#define SCARLETT2_IOCTL_PVERSION _IOR('S', 0x60, int) +#define SCARLETT2_IOCTL_REBOOT _IO('S', 0x61) +#define SCARLETT2_SEGMENT_ID_SETTINGS 0 +#define SCARLETT2_SEGMENT_ID_FIRMWARE 1 +#define SCARLETT2_SEGMENT_ID_COUNT 2 +#define SCARLETT2_IOCTL_SELECT_FLASH_SEGMENT _IOW('S', 0x62, int) +#define SCARLETT2_IOCTL_ERASE_FLASH_SEGMENT _IO('S', 0x63) +struct scarlett2_flash_segment_erase_progress { + unsigned char progress; + unsigned char num_blocks; +}; +#define SCARLETT2_IOCTL_GET_ERASE_PROGRESS _IOR('S', 0x64, struct scarlett2_flash_segment_erase_progress) +#endif diff --git a/libc/kernel/uapi/sound/sof/tokens.h b/libc/kernel/uapi/sound/sof/tokens.h index d57d55bb6..b55a895e4 100644 --- a/libc/kernel/uapi/sound/sof/tokens.h +++ b/libc/kernel/uapi/sound/sof/tokens.h @@ -15,6 +15,7 @@ #define SOF_TPLG_KCTL_BYTES_WO_ID 262 #define SOF_TKN_BUF_SIZE 100 #define SOF_TKN_BUF_CAPS 101 +#define SOF_TKN_BUF_FLAGS 102 #define SOF_TKN_DAI_TYPE 154 #define SOF_TKN_DAI_INDEX 155 #define SOF_TKN_DAI_DIRECTION 156 @@ -125,4 +126,6 @@ #define SOF_TKN_AMD_ACPI2S_RATE 1700 #define SOF_TKN_AMD_ACPI2S_CH 1701 #define SOF_TKN_AMD_ACPI2S_TDM_MODE 1702 +#define SOF_TKN_IMX_MICFIL_RATE 2000 +#define SOF_TKN_IMX_MICFIL_CH 2001 #endif diff --git a/libc/kernel/uapi/xen/gntalloc.h b/libc/kernel/uapi/xen/gntalloc.h index 02e4d4756..4f0e7b89b 100644 --- a/libc/kernel/uapi/xen/gntalloc.h +++ b/libc/kernel/uapi/xen/gntalloc.h @@ -13,7 +13,10 @@ struct ioctl_gntalloc_alloc_gref { __u16 flags; __u32 count; __u64 index; - __u32 gref_ids[1]; + union { + __u32 gref_ids[1]; + __DECLARE_FLEX_ARRAY(__u32, gref_ids_flex); + }; }; #define GNTALLOC_FLAG_WRITABLE 1 #define IOCTL_GNTALLOC_DEALLOC_GREF _IOC(_IOC_NONE, 'G', 6, sizeof(struct ioctl_gntalloc_dealloc_gref)) |