Merge "Update to kernel headers to v5.1.3."
diff --git a/libc/include/bits/glibc-syscalls.h b/libc/include/bits/glibc-syscalls.h
index e831bdc..6940b3e 100644
--- a/libc/include/bits/glibc-syscalls.h
+++ b/libc/include/bits/glibc-syscalls.h
@@ -84,18 +84,33 @@
 #if defined(__NR_clock_adjtime)
   #define SYS_clock_adjtime __NR_clock_adjtime
 #endif
+#if defined(__NR_clock_adjtime64)
+  #define SYS_clock_adjtime64 __NR_clock_adjtime64
+#endif
 #if defined(__NR_clock_getres)
   #define SYS_clock_getres __NR_clock_getres
 #endif
+#if defined(__NR_clock_getres_time64)
+  #define SYS_clock_getres_time64 __NR_clock_getres_time64
+#endif
 #if defined(__NR_clock_gettime)
   #define SYS_clock_gettime __NR_clock_gettime
 #endif
+#if defined(__NR_clock_gettime64)
+  #define SYS_clock_gettime64 __NR_clock_gettime64
+#endif
 #if defined(__NR_clock_nanosleep)
   #define SYS_clock_nanosleep __NR_clock_nanosleep
 #endif
+#if defined(__NR_clock_nanosleep_time64)
+  #define SYS_clock_nanosleep_time64 __NR_clock_nanosleep_time64
+#endif
 #if defined(__NR_clock_settime)
   #define SYS_clock_settime __NR_clock_settime
 #endif
+#if defined(__NR_clock_settime64)
+  #define SYS_clock_settime64 __NR_clock_settime64
+#endif
 #if defined(__NR_clone)
   #define SYS_clone __NR_clone
 #endif
@@ -261,6 +276,9 @@
 #if defined(__NR_futex)
   #define SYS_futex __NR_futex
 #endif
+#if defined(__NR_futex_time64)
+  #define SYS_futex_time64 __NR_futex_time64
+#endif
 #if defined(__NR_futimesat)
   #define SYS_futimesat __NR_futimesat
 #endif
@@ -414,12 +432,24 @@
 #if defined(__NR_io_pgetevents)
   #define SYS_io_pgetevents __NR_io_pgetevents
 #endif
+#if defined(__NR_io_pgetevents_time64)
+  #define SYS_io_pgetevents_time64 __NR_io_pgetevents_time64
+#endif
 #if defined(__NR_io_setup)
   #define SYS_io_setup __NR_io_setup
 #endif
 #if defined(__NR_io_submit)
   #define SYS_io_submit __NR_io_submit
 #endif
+#if defined(__NR_io_uring_enter)
+  #define SYS_io_uring_enter __NR_io_uring_enter
+#endif
+#if defined(__NR_io_uring_register)
+  #define SYS_io_uring_register __NR_io_uring_register
+#endif
+#if defined(__NR_io_uring_setup)
+  #define SYS_io_uring_setup __NR_io_uring_setup
+#endif
 #if defined(__NR_ioctl)
   #define SYS_ioctl __NR_ioctl
 #endif
@@ -573,9 +603,15 @@
 #if defined(__NR_mq_timedreceive)
   #define SYS_mq_timedreceive __NR_mq_timedreceive
 #endif
+#if defined(__NR_mq_timedreceive_time64)
+  #define SYS_mq_timedreceive_time64 __NR_mq_timedreceive_time64
+#endif
 #if defined(__NR_mq_timedsend)
   #define SYS_mq_timedsend __NR_mq_timedsend
 #endif
+#if defined(__NR_mq_timedsend_time64)
+  #define SYS_mq_timedsend_time64 __NR_mq_timedsend_time64
+#endif
 #if defined(__NR_mq_unlink)
   #define SYS_mq_unlink __NR_mq_unlink
 #endif
@@ -663,6 +699,9 @@
 #if defined(__NR_personality)
   #define SYS_personality __NR_personality
 #endif
+#if defined(__NR_pidfd_send_signal)
+  #define SYS_pidfd_send_signal __NR_pidfd_send_signal
+#endif
 #if defined(__NR_pipe)
   #define SYS_pipe __NR_pipe
 #endif
@@ -687,6 +726,9 @@
 #if defined(__NR_ppoll)
   #define SYS_ppoll __NR_ppoll
 #endif
+#if defined(__NR_ppoll_time64)
+  #define SYS_ppoll_time64 __NR_ppoll_time64
+#endif
 #if defined(__NR_prctl)
   #define SYS_prctl __NR_prctl
 #endif
@@ -717,6 +759,9 @@
 #if defined(__NR_pselect6)
   #define SYS_pselect6 __NR_pselect6
 #endif
+#if defined(__NR_pselect6_time64)
+  #define SYS_pselect6_time64 __NR_pselect6_time64
+#endif
 #if defined(__NR_ptrace)
   #define SYS_ptrace __NR_ptrace
 #endif
@@ -768,6 +813,9 @@
 #if defined(__NR_recvmmsg)
   #define SYS_recvmmsg __NR_recvmmsg
 #endif
+#if defined(__NR_recvmmsg_time64)
+  #define SYS_recvmmsg_time64 __NR_recvmmsg_time64
+#endif
 #if defined(__NR_recvmsg)
   #define SYS_recvmsg __NR_recvmsg
 #endif
@@ -819,6 +867,9 @@
 #if defined(__NR_rt_sigtimedwait)
   #define SYS_rt_sigtimedwait __NR_rt_sigtimedwait
 #endif
+#if defined(__NR_rt_sigtimedwait_time64)
+  #define SYS_rt_sigtimedwait_time64 __NR_rt_sigtimedwait_time64
+#endif
 #if defined(__NR_rt_tgsigqueueinfo)
   #define SYS_rt_tgsigqueueinfo __NR_rt_tgsigqueueinfo
 #endif
@@ -843,6 +894,9 @@
 #if defined(__NR_sched_rr_get_interval)
   #define SYS_sched_rr_get_interval __NR_sched_rr_get_interval
 #endif
+#if defined(__NR_sched_rr_get_interval_time64)
+  #define SYS_sched_rr_get_interval_time64 __NR_sched_rr_get_interval_time64
+#endif
 #if defined(__NR_sched_setaffinity)
   #define SYS_sched_setaffinity __NR_sched_setaffinity
 #endif
@@ -879,6 +933,9 @@
 #if defined(__NR_semtimedop)
   #define SYS_semtimedop __NR_semtimedop
 #endif
+#if defined(__NR_semtimedop_time64)
+  #define SYS_semtimedop_time64 __NR_semtimedop_time64
+#endif
 #if defined(__NR_send)
   #define SYS_send __NR_send
 #endif
@@ -1137,18 +1194,30 @@
 #if defined(__NR_timer_gettime)
   #define SYS_timer_gettime __NR_timer_gettime
 #endif
+#if defined(__NR_timer_gettime64)
+  #define SYS_timer_gettime64 __NR_timer_gettime64
+#endif
 #if defined(__NR_timer_settime)
   #define SYS_timer_settime __NR_timer_settime
 #endif
+#if defined(__NR_timer_settime64)
+  #define SYS_timer_settime64 __NR_timer_settime64
+#endif
 #if defined(__NR_timerfd_create)
   #define SYS_timerfd_create __NR_timerfd_create
 #endif
 #if defined(__NR_timerfd_gettime)
   #define SYS_timerfd_gettime __NR_timerfd_gettime
 #endif
+#if defined(__NR_timerfd_gettime64)
+  #define SYS_timerfd_gettime64 __NR_timerfd_gettime64
+#endif
 #if defined(__NR_timerfd_settime)
   #define SYS_timerfd_settime __NR_timerfd_settime
 #endif
+#if defined(__NR_timerfd_settime64)
+  #define SYS_timerfd_settime64 __NR_timerfd_settime64
+#endif
 #if defined(__NR_times)
   #define SYS_times __NR_times
 #endif
@@ -1206,6 +1275,9 @@
 #if defined(__NR_utimensat)
   #define SYS_utimensat __NR_utimensat
 #endif
+#if defined(__NR_utimensat_time64)
+  #define SYS_utimensat_time64 __NR_utimensat_time64
+#endif
 #if defined(__NR_utimes)
   #define SYS_utimes __NR_utimes
 #endif
diff --git a/libc/include/sys/mman.h b/libc/include/sys/mman.h
index 4073fbf..89d6d07 100644
--- a/libc/include/sys/mman.h
+++ b/libc/include/sys/mman.h
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #include <sys/types.h>
-#include <asm/mman.h>
+#include <linux/mman.h>
 
 __BEGIN_DECLS
 
diff --git a/libc/kernel/uapi/asm-arm/asm/unistd-common.h b/libc/kernel/uapi/asm-arm/asm/unistd-common.h
index 824a7d3..e7abfeb 100644
--- a/libc/kernel/uapi/asm-arm/asm/unistd-common.h
+++ b/libc/kernel/uapi/asm-arm/asm/unistd-common.h
@@ -373,4 +373,30 @@
 #define __NR_statx (__NR_SYSCALL_BASE + 397)
 #define __NR_rseq (__NR_SYSCALL_BASE + 398)
 #define __NR_io_pgetevents (__NR_SYSCALL_BASE + 399)
+#define __NR_migrate_pages (__NR_SYSCALL_BASE + 400)
+#define __NR_kexec_file_load (__NR_SYSCALL_BASE + 401)
+#define __NR_clock_gettime64 (__NR_SYSCALL_BASE + 403)
+#define __NR_clock_settime64 (__NR_SYSCALL_BASE + 404)
+#define __NR_clock_adjtime64 (__NR_SYSCALL_BASE + 405)
+#define __NR_clock_getres_time64 (__NR_SYSCALL_BASE + 406)
+#define __NR_clock_nanosleep_time64 (__NR_SYSCALL_BASE + 407)
+#define __NR_timer_gettime64 (__NR_SYSCALL_BASE + 408)
+#define __NR_timer_settime64 (__NR_SYSCALL_BASE + 409)
+#define __NR_timerfd_gettime64 (__NR_SYSCALL_BASE + 410)
+#define __NR_timerfd_settime64 (__NR_SYSCALL_BASE + 411)
+#define __NR_utimensat_time64 (__NR_SYSCALL_BASE + 412)
+#define __NR_pselect6_time64 (__NR_SYSCALL_BASE + 413)
+#define __NR_ppoll_time64 (__NR_SYSCALL_BASE + 414)
+#define __NR_io_pgetevents_time64 (__NR_SYSCALL_BASE + 416)
+#define __NR_recvmmsg_time64 (__NR_SYSCALL_BASE + 417)
+#define __NR_mq_timedsend_time64 (__NR_SYSCALL_BASE + 418)
+#define __NR_mq_timedreceive_time64 (__NR_SYSCALL_BASE + 419)
+#define __NR_semtimedop_time64 (__NR_SYSCALL_BASE + 420)
+#define __NR_rt_sigtimedwait_time64 (__NR_SYSCALL_BASE + 421)
+#define __NR_futex_time64 (__NR_SYSCALL_BASE + 422)
+#define __NR_sched_rr_get_interval_time64 (__NR_SYSCALL_BASE + 423)
+#define __NR_pidfd_send_signal (__NR_SYSCALL_BASE + 424)
+#define __NR_io_uring_setup (__NR_SYSCALL_BASE + 425)
+#define __NR_io_uring_enter (__NR_SYSCALL_BASE + 426)
+#define __NR_io_uring_register (__NR_SYSCALL_BASE + 427)
 #endif
diff --git a/libc/kernel/uapi/asm-arm64/asm/ptrace.h b/libc/kernel/uapi/asm-arm64/asm/ptrace.h
index 15fde29..b8c046b 100644
--- a/libc/kernel/uapi/asm-arm64/asm/ptrace.h
+++ b/libc/kernel/uapi/asm-arm64/asm/ptrace.h
@@ -105,5 +105,14 @@
   __u64 data_mask;
   __u64 insn_mask;
 };
+struct user_pac_address_keys {
+  __uint128_t apiakey;
+  __uint128_t apibkey;
+  __uint128_t apdakey;
+  __uint128_t apdbkey;
+};
+struct user_pac_generic_keys {
+  __uint128_t apgakey;
+};
 #endif
 #endif
diff --git a/libc/kernel/uapi/asm-arm64/asm/unistd.h b/libc/kernel/uapi/asm-arm64/asm/unistd.h
index 0648b02..2f7a859 100644
--- a/libc/kernel/uapi/asm-arm64/asm/unistd.h
+++ b/libc/kernel/uapi/asm-arm64/asm/unistd.h
@@ -18,4 +18,6 @@
  ****************************************************************************/
 #define __ARCH_WANT_RENAMEAT
 #define __ARCH_WANT_NEW_STAT
+#define __ARCH_WANT_SET_GET_RLIMIT
+#define __ARCH_WANT_TIME32_SYSCALLS
 #include <asm-generic/unistd.h>
diff --git a/libc/kernel/uapi/asm-generic/mman-common.h b/libc/kernel/uapi/asm-generic/mman-common.h
index 6f688a1..b986825 100644
--- a/libc/kernel/uapi/asm-generic/mman-common.h
+++ b/libc/kernel/uapi/asm-generic/mman-common.h
@@ -25,9 +25,6 @@
 #define PROT_NONE 0x0
 #define PROT_GROWSDOWN 0x01000000
 #define PROT_GROWSUP 0x02000000
-#define MAP_SHARED 0x01
-#define MAP_PRIVATE 0x02
-#define MAP_SHARED_VALIDATE 0x03
 #define MAP_TYPE 0x0f
 #define MAP_FIXED 0x10
 #define MAP_ANONYMOUS 0x20
diff --git a/libc/kernel/uapi/asm-generic/socket.h b/libc/kernel/uapi/asm-generic/socket.h
index 7c52ccc..bfc9ce2 100644
--- a/libc/kernel/uapi/asm-generic/socket.h
+++ b/libc/kernel/uapi/asm-generic/socket.h
@@ -18,6 +18,7 @@
  ****************************************************************************/
 #ifndef __ASM_GENERIC_SOCKET_H
 #define __ASM_GENERIC_SOCKET_H
+#include <linux/posix_types.h>
 #include <asm/sockios.h>
 #define SOL_SOCKET 1
 #define SO_DEBUG 1
@@ -42,8 +43,8 @@
 #define SO_PEERCRED 17
 #define SO_RCVLOWAT 18
 #define SO_SNDLOWAT 19
-#define SO_RCVTIMEO 20
-#define SO_SNDTIMEO 21
+#define SO_RCVTIMEO_OLD 20
+#define SO_SNDTIMEO_OLD 21
 #endif
 #define SO_SECURITY_AUTHENTICATION 22
 #define SO_SECURITY_ENCRYPTION_TRANSPORT 23
@@ -53,16 +54,10 @@
 #define SO_DETACH_FILTER 27
 #define SO_GET_FILTER SO_ATTACH_FILTER
 #define SO_PEERNAME 28
-#define SO_TIMESTAMP 29
-#define SCM_TIMESTAMP SO_TIMESTAMP
 #define SO_ACCEPTCONN 30
 #define SO_PEERSEC 31
 #define SO_PASSSEC 34
-#define SO_TIMESTAMPNS 35
-#define SCM_TIMESTAMPNS SO_TIMESTAMPNS
 #define SO_MARK 36
-#define SO_TIMESTAMPING 37
-#define SCM_TIMESTAMPING SO_TIMESTAMPING
 #define SO_PROTOCOL 38
 #define SO_DOMAIN 39
 #define SO_RXQ_OVFL 40
@@ -90,4 +85,29 @@
 #define SO_ZEROCOPY 60
 #define SO_TXTIME 61
 #define SCM_TXTIME SO_TXTIME
+#define SO_BINDTOIFINDEX 62
+#define SO_TIMESTAMP_OLD 29
+#define SO_TIMESTAMPNS_OLD 35
+#define SO_TIMESTAMPING_OLD 37
+#define SO_TIMESTAMP_NEW 63
+#define SO_TIMESTAMPNS_NEW 64
+#define SO_TIMESTAMPING_NEW 65
+#define SO_RCVTIMEO_NEW 66
+#define SO_SNDTIMEO_NEW 67
+#if __BITS_PER_LONG == 64 || defined(__x86_64__) && defined(__ILP32__)
+#define SO_TIMESTAMP SO_TIMESTAMP_OLD
+#define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD
+#define SO_TIMESTAMPING SO_TIMESTAMPING_OLD
+#define SO_RCVTIMEO SO_RCVTIMEO_OLD
+#define SO_SNDTIMEO SO_SNDTIMEO_OLD
+#else
+#define SO_TIMESTAMP (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW)
+#define SO_TIMESTAMPNS (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW)
+#define SO_TIMESTAMPING (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW)
+#define SO_RCVTIMEO (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_RCVTIMEO_OLD : SO_RCVTIMEO_NEW)
+#define SO_SNDTIMEO (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_SNDTIMEO_OLD : SO_SNDTIMEO_NEW)
+#endif
+#define SCM_TIMESTAMP SO_TIMESTAMP
+#define SCM_TIMESTAMPNS SO_TIMESTAMPNS
+#define SCM_TIMESTAMPING SO_TIMESTAMPING
 #endif
diff --git a/libc/kernel/uapi/asm-generic/unistd.h b/libc/kernel/uapi/asm-generic/unistd.h
index 4113881..70d9185 100644
--- a/libc/kernel/uapi/asm-generic/unistd.h
+++ b/libc/kernel/uapi/asm-generic/unistd.h
@@ -36,7 +36,9 @@
 #define __NR_io_destroy 1
 #define __NR_io_submit 2
 #define __NR_io_cancel 3
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
 #define __NR_io_getevents 4
+#endif
 #define __NR_setxattr 5
 #define __NR_lsetxattr 6
 #define __NR_fsetxattr 7
@@ -106,8 +108,10 @@
 #define __NR_preadv 69
 #define __NR_pwritev 70
 #define __NR3264_sendfile 71
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
 #define __NR_pselect6 72
 #define __NR_ppoll 73
+#endif
 #define __NR_signalfd4 74
 #define __NR_vmsplice 75
 #define __NR_splice 76
@@ -126,9 +130,13 @@
 #define __NR_sync_file_range 84
 #endif
 #define __NR_timerfd_create 85
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
 #define __NR_timerfd_settime 86
 #define __NR_timerfd_gettime 87
+#endif
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
 #define __NR_utimensat 88
+#endif
 #define __NR_acct 89
 #define __NR_capget 90
 #define __NR_capset 91
@@ -138,24 +146,34 @@
 #define __NR_waitid 95
 #define __NR_set_tid_address 96
 #define __NR_unshare 97
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
 #define __NR_futex 98
+#endif
 #define __NR_set_robust_list 99
 #define __NR_get_robust_list 100
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
 #define __NR_nanosleep 101
+#endif
 #define __NR_getitimer 102
 #define __NR_setitimer 103
 #define __NR_kexec_load 104
 #define __NR_init_module 105
 #define __NR_delete_module 106
 #define __NR_timer_create 107
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
 #define __NR_timer_gettime 108
+#endif
 #define __NR_timer_getoverrun 109
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
 #define __NR_timer_settime 110
+#endif
 #define __NR_timer_delete 111
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
 #define __NR_clock_settime 112
 #define __NR_clock_gettime 113
 #define __NR_clock_getres 114
 #define __NR_clock_nanosleep 115
+#endif
 #define __NR_syslog 116
 #define __NR_ptrace 117
 #define __NR_sched_setparam 118
@@ -167,7 +185,9 @@
 #define __NR_sched_yield 124
 #define __NR_sched_get_priority_max 125
 #define __NR_sched_get_priority_min 126
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
 #define __NR_sched_rr_get_interval 127
+#endif
 #define __NR_restart_syscall 128
 #define __NR_kill 129
 #define __NR_tkill 130
@@ -177,7 +197,9 @@
 #define __NR_rt_sigaction 134
 #define __NR_rt_sigprocmask 135
 #define __NR_rt_sigpending 136
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
 #define __NR_rt_sigtimedwait 137
+#endif
 #define __NR_rt_sigqueueinfo 138
 #define __NR_rt_sigreturn 139
 #define __NR_setpriority 140
@@ -203,15 +225,19 @@
 #define __NR_uname 160
 #define __NR_sethostname 161
 #define __NR_setdomainname 162
+#ifdef __ARCH_WANT_SET_GET_RLIMIT
 #define __NR_getrlimit 163
 #define __NR_setrlimit 164
+#endif
 #define __NR_getrusage 165
 #define __NR_umask 166
 #define __NR_prctl 167
 #define __NR_getcpu 168
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
 #define __NR_gettimeofday 169
 #define __NR_settimeofday 170
 #define __NR_adjtimex 171
+#endif
 #define __NR_getpid 172
 #define __NR_getppid 173
 #define __NR_getuid 174
@@ -222,8 +248,10 @@
 #define __NR_sysinfo 179
 #define __NR_mq_open 180
 #define __NR_mq_unlink 181
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
 #define __NR_mq_timedsend 182
 #define __NR_mq_timedreceive 183
+#endif
 #define __NR_mq_notify 184
 #define __NR_mq_getsetattr 185
 #define __NR_msgget 186
@@ -232,7 +260,9 @@
 #define __NR_msgsnd 189
 #define __NR_semget 190
 #define __NR_semctl 191
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
 #define __NR_semtimedop 192
+#endif
 #define __NR_semop 193
 #define __NR_shmget 194
 #define __NR_shmctl 195
@@ -285,15 +315,21 @@
 #define __NR_rt_tgsigqueueinfo 240
 #define __NR_perf_event_open 241
 #define __NR_accept4 242
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
 #define __NR_recvmmsg 243
+#endif
 #define __NR_arch_specific_syscall 244
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
 #define __NR_wait4 260
+#endif
 #define __NR_prlimit64 261
 #define __NR_fanotify_init 262
 #define __NR_fanotify_mark 263
 #define __NR_name_to_handle_at 264
 #define __NR_open_by_handle_at 265
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
 #define __NR_clock_adjtime 266
+#endif
 #define __NR_syncfs 267
 #define __NR_setns 268
 #define __NR_sendmmsg 269
@@ -319,11 +355,39 @@
 #define __NR_pkey_alloc 289
 #define __NR_pkey_free 290
 #define __NR_statx 291
+#if defined(__ARCH_WANT_TIME32_SYSCALLS) || __BITS_PER_LONG != 32
 #define __NR_io_pgetevents 292
+#endif
 #define __NR_rseq 293
 #define __NR_kexec_file_load 294
+#if __BITS_PER_LONG == 32
+#define __NR_clock_gettime64 403
+#define __NR_clock_settime64 404
+#define __NR_clock_adjtime64 405
+#define __NR_clock_getres_time64 406
+#define __NR_clock_nanosleep_time64 407
+#define __NR_timer_gettime64 408
+#define __NR_timer_settime64 409
+#define __NR_timerfd_gettime64 410
+#define __NR_timerfd_settime64 411
+#define __NR_utimensat_time64 412
+#define __NR_pselect6_time64 413
+#define __NR_ppoll_time64 414
+#define __NR_io_pgetevents_time64 416
+#define __NR_recvmmsg_time64 417
+#define __NR_mq_timedsend_time64 418
+#define __NR_mq_timedreceive_time64 419
+#define __NR_semtimedop_time64 420
+#define __NR_rt_sigtimedwait_time64 421
+#define __NR_futex_time64 422
+#define __NR_sched_rr_get_interval_time64 423
+#endif
+#define __NR_pidfd_send_signal 424
+#define __NR_io_uring_setup 425
+#define __NR_io_uring_enter 426
+#define __NR_io_uring_register 427
 #undef __NR_syscalls
-#define __NR_syscalls 295
+#define __NR_syscalls 428
 #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-mips/asm/mman.h b/libc/kernel/uapi/asm-mips/asm/mman.h
index 7ca4a99..8664a81 100644
--- a/libc/kernel/uapi/asm-mips/asm/mman.h
+++ b/libc/kernel/uapi/asm-mips/asm/mman.h
@@ -25,9 +25,6 @@
 #define PROT_SEM 0x10
 #define PROT_GROWSDOWN 0x01000000
 #define PROT_GROWSUP 0x02000000
-#define MAP_SHARED 0x001
-#define MAP_PRIVATE 0x002
-#define MAP_SHARED_VALIDATE 0x003
 #define MAP_TYPE 0x00f
 #define MAP_FIXED 0x010
 #define MAP_RENAME 0x020
diff --git a/libc/kernel/uapi/asm-mips/asm/posix_types.h b/libc/kernel/uapi/asm-mips/asm/posix_types.h
index 7ae19d2..30c9f32 100644
--- a/libc/kernel/uapi/asm-mips/asm/posix_types.h
+++ b/libc/kernel/uapi/asm-mips/asm/posix_types.h
@@ -21,11 +21,5 @@
 #include <asm/sgidefs.h>
 typedef long __kernel_daddr_t;
 #define __kernel_daddr_t __kernel_daddr_t
-#if _MIPS_SZLONG == 32
-typedef struct {
-  long val[2];
-} __kernel_fsid_t;
-#define __kernel_fsid_t __kernel_fsid_t
-#endif
 #include <asm-generic/posix_types.h>
 #endif
diff --git a/libc/kernel/uapi/asm-mips/asm/socket.h b/libc/kernel/uapi/asm-mips/asm/socket.h
index 960b141..fe15ad1 100644
--- a/libc/kernel/uapi/asm-mips/asm/socket.h
+++ b/libc/kernel/uapi/asm-mips/asm/socket.h
@@ -18,6 +18,7 @@
  ****************************************************************************/
 #ifndef _UAPI_ASM_SOCKET_H
 #define _UAPI_ASM_SOCKET_H
+#include <linux/posix_types.h>
 #include <asm/sockios.h>
 #define SOL_SOCKET 0xffff
 #define SO_DEBUG 0x0001
@@ -35,8 +36,8 @@
 #define SO_RCVBUF 0x1002
 #define SO_SNDLOWAT 0x1003
 #define SO_RCVLOWAT 0x1004
-#define SO_SNDTIMEO 0x1005
-#define SO_RCVTIMEO 0x1006
+#define SO_SNDTIMEO_OLD 0x1005
+#define SO_RCVTIMEO_OLD 0x1006
 #define SO_ACCEPTCONN 0x1009
 #define SO_PROTOCOL 0x1028
 #define SO_DOMAIN 0x1029
@@ -53,17 +54,11 @@
 #define SO_DETACH_FILTER 27
 #define SO_GET_FILTER SO_ATTACH_FILTER
 #define SO_PEERNAME 28
-#define SO_TIMESTAMP 29
-#define SCM_TIMESTAMP SO_TIMESTAMP
 #define SO_PEERSEC 30
 #define SO_SNDBUFFORCE 31
 #define SO_RCVBUFFORCE 33
 #define SO_PASSSEC 34
-#define SO_TIMESTAMPNS 35
-#define SCM_TIMESTAMPNS SO_TIMESTAMPNS
 #define SO_MARK 36
-#define SO_TIMESTAMPING 37
-#define SCM_TIMESTAMPING SO_TIMESTAMPING
 #define SO_RXQ_OVFL 40
 #define SO_WIFI_STATUS 41
 #define SCM_WIFI_STATUS SO_WIFI_STATUS
@@ -89,4 +84,29 @@
 #define SO_ZEROCOPY 60
 #define SO_TXTIME 61
 #define SCM_TXTIME SO_TXTIME
+#define SO_BINDTOIFINDEX 62
+#define SO_TIMESTAMP_OLD 29
+#define SO_TIMESTAMPNS_OLD 35
+#define SO_TIMESTAMPING_OLD 37
+#define SO_TIMESTAMP_NEW 63
+#define SO_TIMESTAMPNS_NEW 64
+#define SO_TIMESTAMPING_NEW 65
+#define SO_RCVTIMEO_NEW 66
+#define SO_SNDTIMEO_NEW 67
+#if __BITS_PER_LONG == 64
+#define SO_TIMESTAMP SO_TIMESTAMP_OLD
+#define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD
+#define SO_TIMESTAMPING SO_TIMESTAMPING_OLD
+#define SO_RCVTIMEO SO_RCVTIMEO_OLD
+#define SO_SNDTIMEO SO_SNDTIMEO_OLD
+#else
+#define SO_TIMESTAMP (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMP_OLD : SO_TIMESTAMP_NEW)
+#define SO_TIMESTAMPNS (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPNS_OLD : SO_TIMESTAMPNS_NEW)
+#define SO_TIMESTAMPING (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_TIMESTAMPING_OLD : SO_TIMESTAMPING_NEW)
+#define SO_RCVTIMEO (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_RCVTIMEO_OLD : SO_RCVTIMEO_NEW)
+#define SO_SNDTIMEO (sizeof(time_t) == sizeof(__kernel_long_t) ? SO_SNDTIMEO_OLD : SO_SNDTIMEO_NEW)
+#endif
+#define SCM_TIMESTAMP SO_TIMESTAMP
+#define SCM_TIMESTAMPNS SO_TIMESTAMPNS
+#define SCM_TIMESTAMPING SO_TIMESTAMPING
 #endif
diff --git a/libc/kernel/uapi/asm-mips/asm/unistd_n32.h b/libc/kernel/uapi/asm-mips/asm/unistd_n32.h
index a72d9d2..8bafcf0 100644
--- a/libc/kernel/uapi/asm-mips/asm/unistd_n32.h
+++ b/libc/kernel/uapi/asm-mips/asm/unistd_n32.h
@@ -350,4 +350,28 @@
 #define __NR_statx (__NR_Linux + 330)
 #define __NR_rseq (__NR_Linux + 331)
 #define __NR_io_pgetevents (__NR_Linux + 332)
+#define __NR_clock_gettime64 (__NR_Linux + 403)
+#define __NR_clock_settime64 (__NR_Linux + 404)
+#define __NR_clock_adjtime64 (__NR_Linux + 405)
+#define __NR_clock_getres_time64 (__NR_Linux + 406)
+#define __NR_clock_nanosleep_time64 (__NR_Linux + 407)
+#define __NR_timer_gettime64 (__NR_Linux + 408)
+#define __NR_timer_settime64 (__NR_Linux + 409)
+#define __NR_timerfd_gettime64 (__NR_Linux + 410)
+#define __NR_timerfd_settime64 (__NR_Linux + 411)
+#define __NR_utimensat_time64 (__NR_Linux + 412)
+#define __NR_pselect6_time64 (__NR_Linux + 413)
+#define __NR_ppoll_time64 (__NR_Linux + 414)
+#define __NR_io_pgetevents_time64 (__NR_Linux + 416)
+#define __NR_recvmmsg_time64 (__NR_Linux + 417)
+#define __NR_mq_timedsend_time64 (__NR_Linux + 418)
+#define __NR_mq_timedreceive_time64 (__NR_Linux + 419)
+#define __NR_semtimedop_time64 (__NR_Linux + 420)
+#define __NR_rt_sigtimedwait_time64 (__NR_Linux + 421)
+#define __NR_futex_time64 (__NR_Linux + 422)
+#define __NR_sched_rr_get_interval_time64 (__NR_Linux + 423)
+#define __NR_pidfd_send_signal (__NR_Linux + 424)
+#define __NR_io_uring_setup (__NR_Linux + 425)
+#define __NR_io_uring_enter (__NR_Linux + 426)
+#define __NR_io_uring_register (__NR_Linux + 427)
 #endif
diff --git a/libc/kernel/uapi/asm-mips/asm/unistd_n64.h b/libc/kernel/uapi/asm-mips/asm/unistd_n64.h
index 5ea908a..2191c21 100644
--- a/libc/kernel/uapi/asm-mips/asm/unistd_n64.h
+++ b/libc/kernel/uapi/asm-mips/asm/unistd_n64.h
@@ -346,4 +346,8 @@
 #define __NR_statx (__NR_Linux + 326)
 #define __NR_rseq (__NR_Linux + 327)
 #define __NR_io_pgetevents (__NR_Linux + 328)
+#define __NR_pidfd_send_signal (__NR_Linux + 424)
+#define __NR_io_uring_setup (__NR_Linux + 425)
+#define __NR_io_uring_enter (__NR_Linux + 426)
+#define __NR_io_uring_register (__NR_Linux + 427)
 #endif
diff --git a/libc/kernel/uapi/asm-mips/asm/unistd_nr_n32.h b/libc/kernel/uapi/asm-mips/asm/unistd_nr_n32.h
index 2b74f63..3ef3a31 100644
--- a/libc/kernel/uapi/asm-mips/asm/unistd_nr_n32.h
+++ b/libc/kernel/uapi/asm-mips/asm/unistd_nr_n32.h
@@ -19,5 +19,5 @@
 #ifndef _UAPI_ASM_MIPS_UNISTD_NR_N32_H
 #define _UAPI_ASM_MIPS_UNISTD_NR_N32_H
 #define __NR_N32_Linux 6000
-#define __NR_N32_Linux_syscalls 333
+#define __NR_N32_Linux_syscalls 428
 #endif
diff --git a/libc/kernel/uapi/asm-mips/asm/unistd_nr_n64.h b/libc/kernel/uapi/asm-mips/asm/unistd_nr_n64.h
index 22300b2..ececf35 100644
--- a/libc/kernel/uapi/asm-mips/asm/unistd_nr_n64.h
+++ b/libc/kernel/uapi/asm-mips/asm/unistd_nr_n64.h
@@ -19,5 +19,5 @@
 #ifndef _UAPI_ASM_MIPS_UNISTD_NR_N64_H
 #define _UAPI_ASM_MIPS_UNISTD_NR_N64_H
 #define __NR_64_Linux 5000
-#define __NR_64_Linux_syscalls 329
+#define __NR_64_Linux_syscalls 428
 #endif
diff --git a/libc/kernel/uapi/asm-mips/asm/unistd_nr_o32.h b/libc/kernel/uapi/asm-mips/asm/unistd_nr_o32.h
index 02cbd21..6fb3539 100644
--- a/libc/kernel/uapi/asm-mips/asm/unistd_nr_o32.h
+++ b/libc/kernel/uapi/asm-mips/asm/unistd_nr_o32.h
@@ -19,5 +19,5 @@
 #ifndef _UAPI_ASM_MIPS_UNISTD_NR_O32_H
 #define _UAPI_ASM_MIPS_UNISTD_NR_O32_H
 #define __NR_O32_Linux 4000
-#define __NR_O32_Linux_syscalls 369
+#define __NR_O32_Linux_syscalls 428
 #endif
diff --git a/libc/kernel/uapi/asm-mips/asm/unistd_o32.h b/libc/kernel/uapi/asm-mips/asm/unistd_o32.h
index bc248dd..8330a88 100644
--- a/libc/kernel/uapi/asm-mips/asm/unistd_o32.h
+++ b/libc/kernel/uapi/asm-mips/asm/unistd_o32.h
@@ -386,4 +386,38 @@
 #define __NR_statx (__NR_Linux + 366)
 #define __NR_rseq (__NR_Linux + 367)
 #define __NR_io_pgetevents (__NR_Linux + 368)
+#define __NR_semget (__NR_Linux + 393)
+#define __NR_semctl (__NR_Linux + 394)
+#define __NR_shmget (__NR_Linux + 395)
+#define __NR_shmctl (__NR_Linux + 396)
+#define __NR_shmat (__NR_Linux + 397)
+#define __NR_shmdt (__NR_Linux + 398)
+#define __NR_msgget (__NR_Linux + 399)
+#define __NR_msgsnd (__NR_Linux + 400)
+#define __NR_msgrcv (__NR_Linux + 401)
+#define __NR_msgctl (__NR_Linux + 402)
+#define __NR_clock_gettime64 (__NR_Linux + 403)
+#define __NR_clock_settime64 (__NR_Linux + 404)
+#define __NR_clock_adjtime64 (__NR_Linux + 405)
+#define __NR_clock_getres_time64 (__NR_Linux + 406)
+#define __NR_clock_nanosleep_time64 (__NR_Linux + 407)
+#define __NR_timer_gettime64 (__NR_Linux + 408)
+#define __NR_timer_settime64 (__NR_Linux + 409)
+#define __NR_timerfd_gettime64 (__NR_Linux + 410)
+#define __NR_timerfd_settime64 (__NR_Linux + 411)
+#define __NR_utimensat_time64 (__NR_Linux + 412)
+#define __NR_pselect6_time64 (__NR_Linux + 413)
+#define __NR_ppoll_time64 (__NR_Linux + 414)
+#define __NR_io_pgetevents_time64 (__NR_Linux + 416)
+#define __NR_recvmmsg_time64 (__NR_Linux + 417)
+#define __NR_mq_timedsend_time64 (__NR_Linux + 418)
+#define __NR_mq_timedreceive_time64 (__NR_Linux + 419)
+#define __NR_semtimedop_time64 (__NR_Linux + 420)
+#define __NR_rt_sigtimedwait_time64 (__NR_Linux + 421)
+#define __NR_futex_time64 (__NR_Linux + 422)
+#define __NR_sched_rr_get_interval_time64 (__NR_Linux + 423)
+#define __NR_pidfd_send_signal (__NR_Linux + 424)
+#define __NR_io_uring_setup (__NR_Linux + 425)
+#define __NR_io_uring_enter (__NR_Linux + 426)
+#define __NR_io_uring_register (__NR_Linux + 427)
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/kvm.h b/libc/kernel/uapi/asm-x86/asm/kvm.h
index 4386f76..10b1294 100644
--- a/libc/kernel/uapi/asm-x86/asm/kvm.h
+++ b/libc/kernel/uapi/asm-x86/asm/kvm.h
@@ -317,6 +317,7 @@
 #define KVM_X86_QUIRK_LINT0_REENABLED (1 << 0)
 #define KVM_X86_QUIRK_CD_NW_CLEARED (1 << 1)
 #define KVM_X86_QUIRK_LAPIC_MMIO_HOLE (1 << 2)
+#define KVM_X86_QUIRK_OUT_7E_INC_RIP (1 << 3)
 #define KVM_STATE_NESTED_GUEST_MODE 0x00000001
 #define KVM_STATE_NESTED_RUN_PENDING 0x00000002
 #define KVM_STATE_NESTED_EVMCS 0x00000004
diff --git a/libc/kernel/uapi/asm-x86/asm/unistd_32.h b/libc/kernel/uapi/asm-x86/asm/unistd_32.h
index 4afa676..bccc6f1 100644
--- a/libc/kernel/uapi/asm-x86/asm/unistd_32.h
+++ b/libc/kernel/uapi/asm-x86/asm/unistd_32.h
@@ -401,4 +401,38 @@
 #define __NR_arch_prctl 384
 #define __NR_io_pgetevents 385
 #define __NR_rseq 386
+#define __NR_semget 393
+#define __NR_semctl 394
+#define __NR_shmget 395
+#define __NR_shmctl 396
+#define __NR_shmat 397
+#define __NR_shmdt 398
+#define __NR_msgget 399
+#define __NR_msgsnd 400
+#define __NR_msgrcv 401
+#define __NR_msgctl 402
+#define __NR_clock_gettime64 403
+#define __NR_clock_settime64 404
+#define __NR_clock_adjtime64 405
+#define __NR_clock_getres_time64 406
+#define __NR_clock_nanosleep_time64 407
+#define __NR_timer_gettime64 408
+#define __NR_timer_settime64 409
+#define __NR_timerfd_gettime64 410
+#define __NR_timerfd_settime64 411
+#define __NR_utimensat_time64 412
+#define __NR_pselect6_time64 413
+#define __NR_ppoll_time64 414
+#define __NR_io_pgetevents_time64 416
+#define __NR_recvmmsg_time64 417
+#define __NR_mq_timedsend_time64 418
+#define __NR_mq_timedreceive_time64 419
+#define __NR_semtimedop_time64 420
+#define __NR_rt_sigtimedwait_time64 421
+#define __NR_futex_time64 422
+#define __NR_sched_rr_get_interval_time64 423
+#define __NR_pidfd_send_signal 424
+#define __NR_io_uring_setup 425
+#define __NR_io_uring_enter 426
+#define __NR_io_uring_register 427
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/unistd_64.h b/libc/kernel/uapi/asm-x86/asm/unistd_64.h
index a118200..ddac7db 100644
--- a/libc/kernel/uapi/asm-x86/asm/unistd_64.h
+++ b/libc/kernel/uapi/asm-x86/asm/unistd_64.h
@@ -353,4 +353,8 @@
 #define __NR_statx 332
 #define __NR_io_pgetevents 333
 #define __NR_rseq 334
+#define __NR_pidfd_send_signal 424
+#define __NR_io_uring_setup 425
+#define __NR_io_uring_enter 426
+#define __NR_io_uring_register 427
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/unistd_x32.h b/libc/kernel/uapi/asm-x86/asm/unistd_x32.h
index b5f3fb1..9c4ba12 100644
--- a/libc/kernel/uapi/asm-x86/asm/unistd_x32.h
+++ b/libc/kernel/uapi/asm-x86/asm/unistd_x32.h
@@ -306,6 +306,10 @@
 #define __NR_statx (__X32_SYSCALL_BIT + 332)
 #define __NR_io_pgetevents (__X32_SYSCALL_BIT + 333)
 #define __NR_rseq (__X32_SYSCALL_BIT + 334)
+#define __NR_pidfd_send_signal (__X32_SYSCALL_BIT + 424)
+#define __NR_io_uring_setup (__X32_SYSCALL_BIT + 425)
+#define __NR_io_uring_enter (__X32_SYSCALL_BIT + 426)
+#define __NR_io_uring_register (__X32_SYSCALL_BIT + 427)
 #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/asm-x86/asm/vmx.h b/libc/kernel/uapi/asm-x86/asm/vmx.h
index 83365f8..0f7ede3 100644
--- a/libc/kernel/uapi/asm-x86/asm/vmx.h
+++ b/libc/kernel/uapi/asm-x86/asm/vmx.h
@@ -78,5 +78,6 @@
 #define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_PENDING_INTERRUPT, "PENDING_INTERRUPT" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_INVD, "INVD" }, { EXIT_REASON_INVLPG, "INVLPG" }, { EXIT_REASON_RDPMC, "RDPMC" }, { EXIT_REASON_RDTSC, "RDTSC" }, { EXIT_REASON_VMCALL, "VMCALL" }, { EXIT_REASON_VMCLEAR, "VMCLEAR" }, { EXIT_REASON_VMLAUNCH, "VMLAUNCH" }, { EXIT_REASON_VMPTRLD, "VMPTRLD" }, { EXIT_REASON_VMPTRST, "VMPTRST" }, { EXIT_REASON_VMREAD, "VMREAD" }, { EXIT_REASON_VMRESUME, "VMRESUME" }, { EXIT_REASON_VMWRITE, "VMWRITE" }, { EXIT_REASON_VMOFF, "VMOFF" }, { EXIT_REASON_VMON, "VMON" }, { EXIT_REASON_CR_ACCESS, "CR_ACCESS" }, { EXIT_REASON_DR_ACCESS, "DR_ACCESS" }, { EXIT_REASON_IO_INSTRUCTION, "IO_INSTRUCTION" }, { EXIT_REASON_MSR_READ, "MSR_READ" }, { EXIT_REASON_MSR_WRITE, "MSR_WRITE" }, { EXIT_REASON_INVALID_STATE, "INVALID_STATE" }, { EXIT_REASON_MSR_LOAD_FAIL, "MSR_LOAD_FAIL" }, { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" }, { EXIT_REASON_MONITOR_TRAP_FLAG, "MONITOR_TRAP_FLAG" }, { EXIT_REASON_MONITOR_INSTRUCTION, "MONITOR_INSTRUCTION" }, { EXIT_REASON_PAUSE_INSTRUCTION, "PAUSE_INSTRUCTION" }, { EXIT_REASON_MCE_DURING_VMENTRY, "MCE_DURING_VMENTRY" }, { EXIT_REASON_TPR_BELOW_THRESHOLD, "TPR_BELOW_THRESHOLD" }, { EXIT_REASON_APIC_ACCESS, "APIC_ACCESS" }, { EXIT_REASON_EOI_INDUCED, "EOI_INDUCED" }, { EXIT_REASON_GDTR_IDTR, "GDTR_IDTR" }, { EXIT_REASON_LDTR_TR, "LDTR_TR" }, { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" }, { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" }, { EXIT_REASON_INVEPT, "INVEPT" }, { EXIT_REASON_RDTSCP, "RDTSCP" }, { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" }, { EXIT_REASON_INVVPID, "INVVPID" }, { EXIT_REASON_WBINVD, "WBINVD" }, { EXIT_REASON_XSETBV, "XSETBV" }, { EXIT_REASON_APIC_WRITE, "APIC_WRITE" }, { EXIT_REASON_RDRAND, "RDRAND" }, { EXIT_REASON_INVPCID, "INVPCID" }, { EXIT_REASON_VMFUNC, "VMFUNC" }, { EXIT_REASON_ENCLS, "ENCLS" }, { EXIT_REASON_RDSEED, "RDSEED" }, { EXIT_REASON_PML_FULL, "PML_FULL" }, { EXIT_REASON_XSAVES, "XSAVES" }, { EXIT_REASON_XRSTORS, "XRSTORS" }
 #define VMX_ABORT_SAVE_GUEST_MSR_FAIL 1
 #define VMX_ABORT_LOAD_HOST_PDPTE_FAIL 2
+#define VMX_ABORT_VMCS_CORRUPTED 3
 #define VMX_ABORT_LOAD_HOST_MSR_FAIL 4
 #endif
diff --git a/libc/kernel/uapi/drm/amdgpu_drm.h b/libc/kernel/uapi/drm/amdgpu_drm.h
index baa2e44..53da9dd 100644
--- a/libc/kernel/uapi/drm/amdgpu_drm.h
+++ b/libc/kernel/uapi/drm/amdgpu_drm.h
@@ -158,11 +158,12 @@
   struct drm_amdgpu_vm_out out;
 };
 #define AMDGPU_SCHED_OP_PROCESS_PRIORITY_OVERRIDE 1
+#define AMDGPU_SCHED_OP_CONTEXT_PRIORITY_OVERRIDE 2
 struct drm_amdgpu_sched_in {
   __u32 op;
   __u32 fd;
   __s32 priority;
-  __u32 flags;
+  __u32 ctx_id;
 };
 union drm_amdgpu_sched {
   struct drm_amdgpu_sched_in in;
@@ -323,6 +324,7 @@
 #define AMDGPU_CHUNK_ID_SYNCOBJ_IN 0x04
 #define AMDGPU_CHUNK_ID_SYNCOBJ_OUT 0x05
 #define AMDGPU_CHUNK_ID_BO_HANDLES 0x06
+#define AMDGPU_CHUNK_ID_SCHEDULED_DEPENDENCIES 0x07
 struct drm_amdgpu_cs_chunk {
   __u32 chunk_id;
   __u32 length_dw;
@@ -346,6 +348,7 @@
 #define AMDGPU_IB_FLAG_PREAMBLE (1 << 1)
 #define AMDGPU_IB_FLAG_PREEMPT (1 << 2)
 #define AMDGPU_IB_FLAG_TC_WB_NOT_INVALIDATE (1 << 3)
+#define AMDGPU_IB_FLAG_RESET_GDS_MAX_WAVE_ID (1 << 4)
 struct drm_amdgpu_cs_chunk_ib {
   __u32 _pad;
   __u32 flags;
diff --git a/libc/kernel/uapi/drm/drm_fourcc.h b/libc/kernel/uapi/drm/drm_fourcc.h
index d95bda0..fd80853 100644
--- a/libc/kernel/uapi/drm/drm_fourcc.h
+++ b/libc/kernel/uapi/drm/drm_fourcc.h
@@ -94,6 +94,9 @@
 #define DRM_FORMAT_NV61 fourcc_code('N', 'V', '6', '1')
 #define DRM_FORMAT_NV24 fourcc_code('N', 'V', '2', '4')
 #define DRM_FORMAT_NV42 fourcc_code('N', 'V', '4', '2')
+#define DRM_FORMAT_P010 fourcc_code('P', '0', '1', '0')
+#define DRM_FORMAT_P012 fourcc_code('P', '0', '1', '2')
+#define DRM_FORMAT_P016 fourcc_code('P', '0', '1', '6')
 #define DRM_FORMAT_YUV410 fourcc_code('Y', 'U', 'V', '9')
 #define DRM_FORMAT_YVU410 fourcc_code('Y', 'V', 'U', '9')
 #define DRM_FORMAT_YUV411 fourcc_code('Y', 'U', '1', '1')
@@ -114,6 +117,7 @@
 #define DRM_FORMAT_MOD_VENDOR_VIVANTE 0x06
 #define DRM_FORMAT_MOD_VENDOR_BROADCOM 0x07
 #define DRM_FORMAT_MOD_VENDOR_ARM 0x08
+#define DRM_FORMAT_MOD_VENDOR_ALLWINNER 0x09
 #define DRM_FORMAT_RESERVED ((1ULL << 56) - 1)
 #define fourcc_mod_code(vendor,val) ((((__u64) DRM_FORMAT_MOD_VENDOR_ ##vendor) << 56) | ((val) & 0x00ffffffffffffffULL))
 #define DRM_FORMAT_MOD_INVALID fourcc_mod_code(NONE, DRM_FORMAT_RESERVED)
@@ -157,12 +161,17 @@
 #define AFBC_FORMAT_MOD_BLOCK_SIZE_MASK 0xf
 #define AFBC_FORMAT_MOD_BLOCK_SIZE_16x16 (1ULL)
 #define AFBC_FORMAT_MOD_BLOCK_SIZE_32x8 (2ULL)
+#define AFBC_FORMAT_MOD_BLOCK_SIZE_64x4 (3ULL)
+#define AFBC_FORMAT_MOD_BLOCK_SIZE_32x8_64x4 (4ULL)
 #define AFBC_FORMAT_MOD_YTR (1ULL << 4)
 #define AFBC_FORMAT_MOD_SPLIT (1ULL << 5)
 #define AFBC_FORMAT_MOD_SPARSE (1ULL << 6)
 #define AFBC_FORMAT_MOD_CBR (1ULL << 7)
 #define AFBC_FORMAT_MOD_TILED (1ULL << 8)
 #define AFBC_FORMAT_MOD_SC (1ULL << 9)
+#define AFBC_FORMAT_MOD_DB (1ULL << 10)
+#define AFBC_FORMAT_MOD_BCH (1ULL << 11)
+#define DRM_FORMAT_MOD_ALLWINNER_TILED fourcc_mod_code(ALLWINNER, 1)
 #ifdef __cplusplus
 }
 #endif
diff --git a/libc/kernel/uapi/drm/i915_drm.h b/libc/kernel/uapi/drm/i915_drm.h
index b3fd9fd..d48a581 100644
--- a/libc/kernel/uapi/drm/i915_drm.h
+++ b/libc/kernel/uapi/drm/i915_drm.h
@@ -703,8 +703,19 @@
 #define I915_CONTEXT_MAX_USER_PRIORITY 1023
 #define I915_CONTEXT_DEFAULT_PRIORITY 0
 #define I915_CONTEXT_MIN_USER_PRIORITY - 1023
+#define I915_CONTEXT_PARAM_SSEU 0x7
   __u64 value;
 };
+struct drm_i915_gem_context_param_sseu {
+  __u16 engine_class;
+  __u16 engine_instance;
+  __u32 flags;
+  __u64 slice_mask;
+  __u64 subslice_mask;
+  __u16 min_eus_per_subslice;
+  __u16 max_eus_per_subslice;
+  __u32 rsvd;
+};
 enum drm_i915_oa_format {
   I915_OA_FORMAT_A13 = 1,
   I915_OA_FORMAT_A29,
diff --git a/libc/kernel/uapi/drm/nouveau_drm.h b/libc/kernel/uapi/drm/nouveau_drm.h
index 54c3b97..186ffcc 100644
--- a/libc/kernel/uapi/drm/nouveau_drm.h
+++ b/libc/kernel/uapi/drm/nouveau_drm.h
@@ -112,11 +112,42 @@
 #define DRM_NOUVEAU_NOTIFIEROBJ_ALLOC 0x05
 #define DRM_NOUVEAU_GPUOBJ_FREE 0x06
 #define DRM_NOUVEAU_NVIF 0x07
+#define DRM_NOUVEAU_SVM_INIT 0x08
+#define DRM_NOUVEAU_SVM_BIND 0x09
 #define DRM_NOUVEAU_GEM_NEW 0x40
 #define DRM_NOUVEAU_GEM_PUSHBUF 0x41
 #define DRM_NOUVEAU_GEM_CPU_PREP 0x42
 #define DRM_NOUVEAU_GEM_CPU_FINI 0x43
 #define DRM_NOUVEAU_GEM_INFO 0x44
+struct drm_nouveau_svm_init {
+  __u64 unmanaged_addr;
+  __u64 unmanaged_size;
+};
+struct drm_nouveau_svm_bind {
+  __u64 header;
+  __u64 va_start;
+  __u64 va_end;
+  __u64 npages;
+  __u64 stride;
+  __u64 result;
+  __u64 reserved0;
+  __u64 reserved1;
+};
+#define NOUVEAU_SVM_BIND_COMMAND_SHIFT 0
+#define NOUVEAU_SVM_BIND_COMMAND_BITS 8
+#define NOUVEAU_SVM_BIND_COMMAND_MASK ((1 << 8) - 1)
+#define NOUVEAU_SVM_BIND_PRIORITY_SHIFT 8
+#define NOUVEAU_SVM_BIND_PRIORITY_BITS 8
+#define NOUVEAU_SVM_BIND_PRIORITY_MASK ((1 << 8) - 1)
+#define NOUVEAU_SVM_BIND_TARGET_SHIFT 16
+#define NOUVEAU_SVM_BIND_TARGET_BITS 32
+#define NOUVEAU_SVM_BIND_TARGET_MASK 0xffffffff
+#define NOUVEAU_SVM_BIND_VALID_BITS 48
+#define NOUVEAU_SVM_BIND_VALID_MASK ((1ULL << NOUVEAU_SVM_BIND_VALID_BITS) - 1)
+#define NOUVEAU_SVM_BIND_COMMAND__MIGRATE 0
+#define NOUVEAU_SVM_BIND_TARGET__GPU_VRAM (1UL << 31)
+#define DRM_IOCTL_NOUVEAU_SVM_INIT DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_SVM_INIT, struct drm_nouveau_svm_init)
+#define DRM_IOCTL_NOUVEAU_SVM_BIND DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_SVM_BIND, struct drm_nouveau_svm_bind)
 #define DRM_IOCTL_NOUVEAU_GEM_NEW DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_NEW, struct drm_nouveau_gem_new)
 #define DRM_IOCTL_NOUVEAU_GEM_PUSHBUF DRM_IOWR(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_PUSHBUF, struct drm_nouveau_gem_pushbuf)
 #define DRM_IOCTL_NOUVEAU_GEM_CPU_PREP DRM_IOW(DRM_COMMAND_BASE + DRM_NOUVEAU_GEM_CPU_PREP, struct drm_nouveau_gem_cpu_prep)
diff --git a/libc/kernel/uapi/linux/auto_fs.h b/libc/kernel/uapi/linux/auto_fs.h
index 9a9dd65..39d1ac8 100644
--- a/libc/kernel/uapi/linux/auto_fs.h
+++ b/libc/kernel/uapi/linux/auto_fs.h
@@ -24,7 +24,7 @@
 #define AUTOFS_PROTO_VERSION 5
 #define AUTOFS_MIN_PROTO_VERSION 3
 #define AUTOFS_MAX_PROTO_VERSION 5
-#define AUTOFS_PROTO_SUBVERSION 4
+#define AUTOFS_PROTO_SUBVERSION 5
 #if defined(__ia64__) || defined(__alpha__)
 typedef unsigned long autofs_wqt_t;
 #else
diff --git a/libc/kernel/uapi/linux/batman_adv.h b/libc/kernel/uapi/linux/batman_adv.h
index efec2bb..9cad20a 100644
--- a/libc/kernel/uapi/linux/batman_adv.h
+++ b/libc/kernel/uapi/linux/batman_adv.h
@@ -19,6 +19,7 @@
 #ifndef _UAPI_LINUX_BATMAN_ADV_H_
 #define _UAPI_LINUX_BATMAN_ADV_H_
 #define BATADV_NL_NAME "batadv"
+#define BATADV_NL_MCAST_GROUP_CONFIG "config"
 #define BATADV_NL_MCAST_GROUP_TPMETER "tpmeter"
 enum batadv_tt_client_flags {
   BATADV_TT_CLIENT_DEL = (1 << 0),
@@ -37,6 +38,11 @@
   BATADV_MCAST_FLAGS_QUERIER_IPV4_SHADOWING = (1 << 3),
   BATADV_MCAST_FLAGS_QUERIER_IPV6_SHADOWING = (1 << 4),
 };
+enum batadv_gw_modes {
+  BATADV_GW_MODE_OFF,
+  BATADV_GW_MODE_CLIENT,
+  BATADV_GW_MODE_SERVER,
+};
 enum batadv_nl_attrs {
   BATADV_ATTR_UNSPEC,
   BATADV_ATTR_VERSION,
@@ -78,17 +84,39 @@
   BATADV_ATTR_DAT_CACHE_VID,
   BATADV_ATTR_MCAST_FLAGS,
   BATADV_ATTR_MCAST_FLAGS_PRIV,
+  BATADV_ATTR_VLANID,
+  BATADV_ATTR_AGGREGATED_OGMS_ENABLED,
+  BATADV_ATTR_AP_ISOLATION_ENABLED,
+  BATADV_ATTR_ISOLATION_MARK,
+  BATADV_ATTR_ISOLATION_MASK,
+  BATADV_ATTR_BONDING_ENABLED,
+  BATADV_ATTR_BRIDGE_LOOP_AVOIDANCE_ENABLED,
+  BATADV_ATTR_DISTRIBUTED_ARP_TABLE_ENABLED,
+  BATADV_ATTR_FRAGMENTATION_ENABLED,
+  BATADV_ATTR_GW_BANDWIDTH_DOWN,
+  BATADV_ATTR_GW_BANDWIDTH_UP,
+  BATADV_ATTR_GW_MODE,
+  BATADV_ATTR_GW_SEL_CLASS,
+  BATADV_ATTR_HOP_PENALTY,
+  BATADV_ATTR_LOG_LEVEL,
+  BATADV_ATTR_MULTICAST_FORCEFLOOD_ENABLED,
+  BATADV_ATTR_NETWORK_CODING_ENABLED,
+  BATADV_ATTR_ORIG_INTERVAL,
+  BATADV_ATTR_ELP_INTERVAL,
+  BATADV_ATTR_THROUGHPUT_OVERRIDE,
   __BATADV_ATTR_AFTER_LAST,
   NUM_BATADV_ATTR = __BATADV_ATTR_AFTER_LAST,
   BATADV_ATTR_MAX = __BATADV_ATTR_AFTER_LAST - 1
 };
 enum batadv_nl_commands {
   BATADV_CMD_UNSPEC,
-  BATADV_CMD_GET_MESH_INFO,
+  BATADV_CMD_GET_MESH,
+  BATADV_CMD_GET_MESH_INFO = BATADV_CMD_GET_MESH,
   BATADV_CMD_TP_METER,
   BATADV_CMD_TP_METER_CANCEL,
   BATADV_CMD_GET_ROUTING_ALGOS,
-  BATADV_CMD_GET_HARDIFS,
+  BATADV_CMD_GET_HARDIF,
+  BATADV_CMD_GET_HARDIFS = BATADV_CMD_GET_HARDIF,
   BATADV_CMD_GET_TRANSTABLE_LOCAL,
   BATADV_CMD_GET_TRANSTABLE_GLOBAL,
   BATADV_CMD_GET_ORIGINATORS,
@@ -98,6 +126,10 @@
   BATADV_CMD_GET_BLA_BACKBONE,
   BATADV_CMD_GET_DAT_CACHE,
   BATADV_CMD_GET_MCAST_FLAGS,
+  BATADV_CMD_SET_MESH,
+  BATADV_CMD_SET_HARDIF,
+  BATADV_CMD_GET_VLAN,
+  BATADV_CMD_SET_VLAN,
   __BATADV_CMD_AFTER_LAST,
   BATADV_CMD_MAX = __BATADV_CMD_AFTER_LAST - 1
 };
diff --git a/libc/kernel/uapi/linux/binfmts.h b/libc/kernel/uapi/linux/binfmts.h
index 729008e..8c4fed0 100644
--- a/libc/kernel/uapi/linux/binfmts.h
+++ b/libc/kernel/uapi/linux/binfmts.h
@@ -22,5 +22,5 @@
 struct pt_regs;
 #define MAX_ARG_STRLEN (PAGE_SIZE * 32)
 #define MAX_ARG_STRINGS 0x7FFFFFFF
-#define BINPRM_BUF_SIZE 128
+#define BINPRM_BUF_SIZE 256
 #endif
diff --git a/libc/kernel/uapi/linux/bpf.h b/libc/kernel/uapi/linux/bpf.h
index 894b9f7..edae893 100644
--- a/libc/kernel/uapi/linux/bpf.h
+++ b/libc/kernel/uapi/linux/bpf.h
@@ -20,6 +20,7 @@
 #define _UAPI__LINUX_BPF_H__
 #include <linux/types.h>
 #include <linux/bpf_common.h>
+#define BPF_JMP32 0x06
 #define BPF_ALU64 0x07
 #define BPF_DW 0x18
 #define BPF_XADD 0xc0
@@ -175,6 +176,7 @@
 #define BPF_ANY 0
 #define BPF_NOEXIST 1
 #define BPF_EXIST 2
+#define BPF_F_LOCK 4
 #define BPF_F_NO_PREALLOC (1U << 0)
 #define BPF_F_NO_COMMON_LRU (1U << 1)
 #define BPF_F_NUMA_NODE (1U << 2)
@@ -310,7 +312,7 @@
     __u64 probe_addr;
   } task_fd_query;
 } __attribute__((aligned(8)));
-#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel),
+#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel), FN(spin_lock), FN(spin_unlock), FN(sk_fullsock), FN(tcp_sock), FN(skb_ecn_set_ce), FN(get_listener_sock),
 #define __BPF_ENUM_FN(x) BPF_FUNC_ ##x
 enum bpf_func_id {
   __BPF_FUNC_MAPPER(__BPF_ENUM_FN) __BPF_FUNC_MAX_ID,
@@ -345,7 +347,8 @@
 };
 enum bpf_lwt_encap_mode {
   BPF_LWT_ENCAP_SEG6,
-  BPF_LWT_ENCAP_SEG6_INLINE
+  BPF_LWT_ENCAP_SEG6_INLINE,
+  BPF_LWT_ENCAP_IP,
 };
 #define __bpf_md_ptr(type,name) union { type name; __u64 : 64; \
 } __attribute__((aligned(8)))
@@ -379,6 +382,8 @@
   __bpf_md_ptr(struct bpf_flow_keys *, flow_keys);
   __u64 tstamp;
   __u32 wire_len;
+  __u32 gso_segs;
+  __bpf_md_ptr(struct bpf_sock *, sk);
 };
 struct bpf_tunnel_key {
   __u32 tunnel_id;
@@ -405,6 +410,7 @@
   BPF_OK = 0,
   BPF_DROP = 2,
   BPF_REDIRECT = 7,
+  BPF_LWT_REROUTE = 128,
 };
 struct bpf_sock {
   __u32 bound_dev_if;
@@ -416,6 +422,34 @@
   __u32 src_ip4;
   __u32 src_ip6[4];
   __u32 src_port;
+  __u32 dst_port;
+  __u32 dst_ip4;
+  __u32 dst_ip6[4];
+  __u32 state;
+};
+struct bpf_tcp_sock {
+  __u32 snd_cwnd;
+  __u32 srtt_us;
+  __u32 rtt_min;
+  __u32 snd_ssthresh;
+  __u32 rcv_nxt;
+  __u32 snd_nxt;
+  __u32 snd_una;
+  __u32 mss_cache;
+  __u32 ecn_flags;
+  __u32 rate_delivered;
+  __u32 rate_interval_us;
+  __u32 packets_out;
+  __u32 retrans_out;
+  __u32 total_retrans;
+  __u32 segs_in;
+  __u32 data_segs_in;
+  __u32 segs_out;
+  __u32 data_segs_out;
+  __u32 lost_out;
+  __u32 sacked_out;
+  __u64 bytes_received;
+  __u64 bytes_acked;
 };
 struct bpf_sock_tuple {
   union {
@@ -507,6 +541,8 @@
   __u32 jited_line_info_rec_size;
   __u32 nr_prog_tags;
   __aligned_u64 prog_tags;
+  __u64 run_time_ns;
+  __u64 run_cnt;
 } __attribute__((aligned(8)));
 struct bpf_map_info {
   __u32 type;
@@ -714,4 +750,7 @@
   __u32 line_off;
   __u32 line_col;
 };
+struct bpf_spin_lock {
+  __u32 val;
+};
 #endif
diff --git a/libc/kernel/uapi/linux/btrfs.h b/libc/kernel/uapi/linux/btrfs.h
index 0dae543..14cd6e8 100644
--- a/libc/kernel/uapi/linux/btrfs.h
+++ b/libc/kernel/uapi/linux/btrfs.h
@@ -458,6 +458,7 @@
 #define BTRFS_IOC_DEFRAG _IOW(BTRFS_IOCTL_MAGIC, 2, struct btrfs_ioctl_vol_args)
 #define BTRFS_IOC_RESIZE _IOW(BTRFS_IOCTL_MAGIC, 3, struct btrfs_ioctl_vol_args)
 #define BTRFS_IOC_SCAN_DEV _IOW(BTRFS_IOCTL_MAGIC, 4, struct btrfs_ioctl_vol_args)
+#define BTRFS_IOC_FORGET_DEV _IOW(BTRFS_IOCTL_MAGIC, 5, struct btrfs_ioctl_vol_args)
 #define BTRFS_IOC_TRANS_START _IO(BTRFS_IOCTL_MAGIC, 6)
 #define BTRFS_IOC_TRANS_END _IO(BTRFS_IOCTL_MAGIC, 7)
 #define BTRFS_IOC_SYNC _IO(BTRFS_IOCTL_MAGIC, 8)
diff --git a/libc/kernel/uapi/linux/devlink.h b/libc/kernel/uapi/linux/devlink.h
index 7c55a0a..972d8cc 100644
--- a/libc/kernel/uapi/linux/devlink.h
+++ b/libc/kernel/uapi/linux/devlink.h
@@ -71,6 +71,18 @@
   DEVLINK_CMD_REGION_NEW,
   DEVLINK_CMD_REGION_DEL,
   DEVLINK_CMD_REGION_READ,
+  DEVLINK_CMD_PORT_PARAM_GET,
+  DEVLINK_CMD_PORT_PARAM_SET,
+  DEVLINK_CMD_PORT_PARAM_NEW,
+  DEVLINK_CMD_PORT_PARAM_DEL,
+  DEVLINK_CMD_INFO_GET,
+  DEVLINK_CMD_HEALTH_REPORTER_GET,
+  DEVLINK_CMD_HEALTH_REPORTER_SET,
+  DEVLINK_CMD_HEALTH_REPORTER_RECOVER,
+  DEVLINK_CMD_HEALTH_REPORTER_DIAGNOSE,
+  DEVLINK_CMD_HEALTH_REPORTER_DUMP_GET,
+  DEVLINK_CMD_HEALTH_REPORTER_DUMP_CLEAR,
+  DEVLINK_CMD_FLASH_UPDATE,
   __DEVLINK_CMD_MAX,
   DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1
 };
@@ -218,6 +230,32 @@
   DEVLINK_ATTR_REGION_CHUNK_DATA,
   DEVLINK_ATTR_REGION_CHUNK_ADDR,
   DEVLINK_ATTR_REGION_CHUNK_LEN,
+  DEVLINK_ATTR_INFO_DRIVER_NAME,
+  DEVLINK_ATTR_INFO_SERIAL_NUMBER,
+  DEVLINK_ATTR_INFO_VERSION_FIXED,
+  DEVLINK_ATTR_INFO_VERSION_RUNNING,
+  DEVLINK_ATTR_INFO_VERSION_STORED,
+  DEVLINK_ATTR_INFO_VERSION_NAME,
+  DEVLINK_ATTR_INFO_VERSION_VALUE,
+  DEVLINK_ATTR_SB_POOL_CELL_SIZE,
+  DEVLINK_ATTR_FMSG,
+  DEVLINK_ATTR_FMSG_OBJ_NEST_START,
+  DEVLINK_ATTR_FMSG_PAIR_NEST_START,
+  DEVLINK_ATTR_FMSG_ARR_NEST_START,
+  DEVLINK_ATTR_FMSG_NEST_END,
+  DEVLINK_ATTR_FMSG_OBJ_NAME,
+  DEVLINK_ATTR_FMSG_OBJ_VALUE_TYPE,
+  DEVLINK_ATTR_FMSG_OBJ_VALUE_DATA,
+  DEVLINK_ATTR_HEALTH_REPORTER,
+  DEVLINK_ATTR_HEALTH_REPORTER_NAME,
+  DEVLINK_ATTR_HEALTH_REPORTER_STATE,
+  DEVLINK_ATTR_HEALTH_REPORTER_ERR_COUNT,
+  DEVLINK_ATTR_HEALTH_REPORTER_RECOVER_COUNT,
+  DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS,
+  DEVLINK_ATTR_HEALTH_REPORTER_GRACEFUL_PERIOD,
+  DEVLINK_ATTR_HEALTH_REPORTER_AUTO_RECOVER,
+  DEVLINK_ATTR_FLASH_UPDATE_FILE_NAME,
+  DEVLINK_ATTR_FLASH_UPDATE_COMPONENT,
   __DEVLINK_ATTR_MAX,
   DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1
 };
diff --git a/libc/kernel/uapi/linux/dm-ioctl.h b/libc/kernel/uapi/linux/dm-ioctl.h
index 05847a7..3aa627d 100644
--- a/libc/kernel/uapi/linux/dm-ioctl.h
+++ b/libc/kernel/uapi/linux/dm-ioctl.h
@@ -102,9 +102,9 @@
 #define DM_TARGET_MSG _IOWR(DM_IOCTL, DM_TARGET_MSG_CMD, struct dm_ioctl)
 #define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)
 #define DM_VERSION_MAJOR 4
-#define DM_VERSION_MINOR 39
+#define DM_VERSION_MINOR 40
 #define DM_VERSION_PATCHLEVEL 0
-#define DM_VERSION_EXTRA "-ioctl(2018-04-03)"
+#define DM_VERSION_EXTRA "-ioctl(2019-01-18)"
 #define DM_READONLY_FLAG (1 << 0)
 #define DM_SUSPEND_FLAG (1 << 1)
 #define DM_PERSISTENT_DEV_FLAG (1 << 3)
diff --git a/libc/kernel/uapi/linux/elf.h b/libc/kernel/uapi/linux/elf.h
index 9845bd3..8f2e668 100644
--- a/libc/kernel/uapi/linux/elf.h
+++ b/libc/kernel/uapi/linux/elf.h
@@ -356,6 +356,8 @@
 #define NT_ARM_SYSTEM_CALL 0x404
 #define NT_ARM_SVE 0x405
 #define NT_ARM_PAC_MASK 0x406
+#define NT_ARM_PACA_KEYS 0x407
+#define NT_ARM_PACG_KEYS 0x408
 #define NT_ARC_V2 0x600
 #define NT_VMCOREDD 0x700
 #define NT_MIPS_DSP 0x800
diff --git a/libc/kernel/uapi/linux/errqueue.h b/libc/kernel/uapi/linux/errqueue.h
index f4a244f..7959d2b 100644
--- a/libc/kernel/uapi/linux/errqueue.h
+++ b/libc/kernel/uapi/linux/errqueue.h
@@ -19,6 +19,7 @@
 #ifndef _UAPI_LINUX_ERRQUEUE_H
 #define _UAPI_LINUX_ERRQUEUE_H
 #include <linux/types.h>
+#include <linux/time_types.h>
 struct sock_extended_err {
   __u32 ee_errno;
   __u8 ee_origin;
@@ -43,6 +44,9 @@
 struct scm_timestamping {
   struct timespec ts[3];
 };
+struct scm_timestamping64 {
+  struct __kernel_timespec ts[3];
+};
 enum {
   SCM_TSTAMP_SND,
   SCM_TSTAMP_SCHED,
diff --git a/libc/kernel/uapi/linux/ethtool.h b/libc/kernel/uapi/linux/ethtool.h
index 25e1a9e..642af99 100644
--- a/libc/kernel/uapi/linux/ethtool.h
+++ b/libc/kernel/uapi/linux/ethtool.h
@@ -586,7 +586,22 @@
   ETHTOOL_LINK_MODE_FEC_NONE_BIT = 49,
   ETHTOOL_LINK_MODE_FEC_RS_BIT = 50,
   ETHTOOL_LINK_MODE_FEC_BASER_BIT = 51,
-  __ETHTOOL_LINK_MODE_LAST = ETHTOOL_LINK_MODE_FEC_BASER_BIT,
+  ETHTOOL_LINK_MODE_50000baseKR_Full_BIT = 52,
+  ETHTOOL_LINK_MODE_50000baseSR_Full_BIT = 53,
+  ETHTOOL_LINK_MODE_50000baseCR_Full_BIT = 54,
+  ETHTOOL_LINK_MODE_50000baseLR_ER_FR_Full_BIT = 55,
+  ETHTOOL_LINK_MODE_50000baseDR_Full_BIT = 56,
+  ETHTOOL_LINK_MODE_100000baseKR2_Full_BIT = 57,
+  ETHTOOL_LINK_MODE_100000baseSR2_Full_BIT = 58,
+  ETHTOOL_LINK_MODE_100000baseCR2_Full_BIT = 59,
+  ETHTOOL_LINK_MODE_100000baseLR2_ER2_FR2_Full_BIT = 60,
+  ETHTOOL_LINK_MODE_100000baseDR2_Full_BIT = 61,
+  ETHTOOL_LINK_MODE_200000baseKR4_Full_BIT = 62,
+  ETHTOOL_LINK_MODE_200000baseSR4_Full_BIT = 63,
+  ETHTOOL_LINK_MODE_200000baseLR4_ER4_FR4_Full_BIT = 64,
+  ETHTOOL_LINK_MODE_200000baseDR4_Full_BIT = 65,
+  ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT = 66,
+  __ETHTOOL_LINK_MODE_MASK_NBITS
 };
 #define __ETHTOOL_LINK_MODE_LEGACY_MASK(base_name) (1UL << (ETHTOOL_LINK_MODE_ ##base_name ##_BIT))
 #define SUPPORTED_10baseT_Half __ETHTOOL_LINK_MODE_LEGACY_MASK(10baseT_Half)
@@ -664,6 +679,7 @@
 #define SPEED_50000 50000
 #define SPEED_56000 56000
 #define SPEED_100000 100000
+#define SPEED_200000 200000
 #define SPEED_UNKNOWN - 1
 #define DUPLEX_HALF 0x00
 #define DUPLEX_FULL 0x01
diff --git a/libc/kernel/uapi/linux/fanotify.h b/libc/kernel/uapi/linux/fanotify.h
index 4c33fde..8b4494f 100644
--- a/libc/kernel/uapi/linux/fanotify.h
+++ b/libc/kernel/uapi/linux/fanotify.h
@@ -21,9 +21,16 @@
 #include <linux/types.h>
 #define FAN_ACCESS 0x00000001
 #define FAN_MODIFY 0x00000002
+#define FAN_ATTRIB 0x00000004
 #define FAN_CLOSE_WRITE 0x00000008
 #define FAN_CLOSE_NOWRITE 0x00000010
 #define FAN_OPEN 0x00000020
+#define FAN_MOVED_FROM 0x00000040
+#define FAN_MOVED_TO 0x00000080
+#define FAN_CREATE 0x00000100
+#define FAN_DELETE 0x00000200
+#define FAN_DELETE_SELF 0x00000400
+#define FAN_MOVE_SELF 0x00000800
 #define FAN_OPEN_EXEC 0x00001000
 #define FAN_Q_OVERFLOW 0x00004000
 #define FAN_OPEN_PERM 0x00010000
@@ -32,6 +39,7 @@
 #define FAN_ONDIR 0x40000000
 #define FAN_EVENT_ON_CHILD 0x08000000
 #define FAN_CLOSE (FAN_CLOSE_WRITE | FAN_CLOSE_NOWRITE)
+#define FAN_MOVE (FAN_MOVED_FROM | FAN_MOVED_TO)
 #define FAN_CLOEXEC 0x00000001
 #define FAN_NONBLOCK 0x00000002
 #define FAN_CLASS_NOTIF 0x00000000
@@ -42,6 +50,7 @@
 #define FAN_UNLIMITED_MARKS 0x00000020
 #define FAN_ENABLE_AUDIT 0x00000040
 #define FAN_REPORT_TID 0x00000100
+#define FAN_REPORT_FID 0x00000200
 #define FAN_ALL_INIT_FLAGS (FAN_CLOEXEC | FAN_NONBLOCK | FAN_ALL_CLASS_BITS | FAN_UNLIMITED_QUEUE | FAN_UNLIMITED_MARKS)
 #define FAN_MARK_ADD 0x00000001
 #define FAN_MARK_REMOVE 0x00000002
@@ -67,6 +76,17 @@
   __s32 fd;
   __s32 pid;
 };
+#define FAN_EVENT_INFO_TYPE_FID 1
+struct fanotify_event_info_header {
+  __u8 info_type;
+  __u8 pad;
+  __u16 len;
+};
+struct fanotify_event_info_fid {
+  struct fanotify_event_info_header hdr;
+  __kernel_fsid_t fsid;
+  unsigned char handle[0];
+};
 struct fanotify_response {
   __s32 fd;
   __u32 response;
diff --git a/libc/kernel/uapi/linux/fcntl.h b/libc/kernel/uapi/linux/fcntl.h
index e98a67b..66f27b6 100644
--- a/libc/kernel/uapi/linux/fcntl.h
+++ b/libc/kernel/uapi/linux/fcntl.h
@@ -32,6 +32,7 @@
 #define F_SEAL_SHRINK 0x0002
 #define F_SEAL_GROW 0x0004
 #define F_SEAL_WRITE 0x0008
+#define F_SEAL_FUTURE_WRITE 0x0010
 #define F_GET_RW_HINT (F_LINUX_SPECIFIC_BASE + 11)
 #define F_SET_RW_HINT (F_LINUX_SPECIFIC_BASE + 12)
 #define F_GET_FILE_RW_HINT (F_LINUX_SPECIFIC_BASE + 13)
diff --git a/libc/kernel/uapi/linux/fuse.h b/libc/kernel/uapi/linux/fuse.h
index 3c3a124..4a76ae3 100644
--- a/libc/kernel/uapi/linux/fuse.h
+++ b/libc/kernel/uapi/linux/fuse.h
@@ -20,7 +20,7 @@
 #define _LINUX_FUSE_H
 #include <stdint.h>
 #define FUSE_KERNEL_VERSION 7
-#define FUSE_KERNEL_MINOR_VERSION 28
+#define FUSE_KERNEL_MINOR_VERSION 29
 #define FUSE_ROOT_ID 1
 struct fuse_attr {
   uint64_t ino;
@@ -97,6 +97,7 @@
 #define FUSE_ABORT_ERROR (1 << 21)
 #define FUSE_MAX_PAGES (1 << 22)
 #define FUSE_CACHE_SYMLINKS (1 << 23)
+#define FUSE_NO_OPENDIR_SUPPORT (1 << 24)
 #define CUSE_UNRESTRICTED_IOCTL (1 << 0)
 #define FUSE_RELEASE_FLUSH (1 << 0)
 #define FUSE_RELEASE_FLOCK_UNLOCK (1 << 1)
diff --git a/libc/kernel/uapi/linux/icmpv6.h b/libc/kernel/uapi/linux/icmpv6.h
index fd03585..ef73a7c 100644
--- a/libc/kernel/uapi/linux/icmpv6.h
+++ b/libc/kernel/uapi/linux/icmpv6.h
@@ -90,6 +90,7 @@
 #define ICMPV6_DHAAD_REPLY 145
 #define ICMPV6_MOBILE_PREFIX_SOL 146
 #define ICMPV6_MOBILE_PREFIX_ADV 147
+#define ICMPV6_MRDISC_ADV 151
 #define ICMPV6_NOROUTE 0
 #define ICMPV6_ADM_PROHIBITED 1
 #define ICMPV6_NOT_NEIGHBOUR 2
diff --git a/libc/kernel/uapi/linux/if_bonding.h b/libc/kernel/uapi/linux/if_bonding.h
index f77f866..a1fa959 100644
--- a/libc/kernel/uapi/linux/if_bonding.h
+++ b/libc/kernel/uapi/linux/if_bonding.h
@@ -69,4 +69,24 @@
   __u16 partner_key;
   __u8 partner_system[ETH_ALEN];
 };
+enum {
+  BOND_XSTATS_UNSPEC,
+  BOND_XSTATS_3AD,
+  __BOND_XSTATS_MAX
+};
+#define BOND_XSTATS_MAX (__BOND_XSTATS_MAX - 1)
+enum {
+  BOND_3AD_STAT_LACPDU_RX,
+  BOND_3AD_STAT_LACPDU_TX,
+  BOND_3AD_STAT_LACPDU_UNKNOWN_RX,
+  BOND_3AD_STAT_LACPDU_ILLEGAL_RX,
+  BOND_3AD_STAT_MARKER_RX,
+  BOND_3AD_STAT_MARKER_TX,
+  BOND_3AD_STAT_MARKER_RESP_RX,
+  BOND_3AD_STAT_MARKER_RESP_TX,
+  BOND_3AD_STAT_MARKER_UNKNOWN_RX,
+  BOND_3AD_STAT_PAD,
+  __BOND_3AD_STAT_MAX
+};
+#define BOND_3AD_STAT_MAX (__BOND_3AD_STAT_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/if_link.h b/libc/kernel/uapi/linux/if_link.h
index 416c48b..8d0080b 100644
--- a/libc/kernel/uapi/linux/if_link.h
+++ b/libc/kernel/uapi/linux/if_link.h
@@ -726,6 +726,7 @@
 enum {
   LINK_XSTATS_TYPE_UNSPEC,
   LINK_XSTATS_TYPE_BRIDGE,
+  LINK_XSTATS_TYPE_BOND,
   __LINK_XSTATS_TYPE_MAX
 };
 #define LINK_XSTATS_TYPE_MAX (__LINK_XSTATS_TYPE_MAX - 1)
diff --git a/libc/kernel/uapi/linux/igmp.h b/libc/kernel/uapi/linux/igmp.h
index f5d1164..885b0f8 100644
--- a/libc/kernel/uapi/linux/igmp.h
+++ b/libc/kernel/uapi/linux/igmp.h
@@ -73,6 +73,7 @@
 #define IGMPV3_HOST_MEMBERSHIP_REPORT 0x22
 #define IGMP_MTRACE_RESP 0x1e
 #define IGMP_MTRACE 0x1f
+#define IGMP_MRDISC_ADV 0x30
 #define IGMP_DELAYING_MEMBER 0x01
 #define IGMP_IDLE_MEMBER 0x02
 #define IGMP_LAZY_MEMBER 0x03
diff --git a/libc/kernel/uapi/linux/iio/types.h b/libc/kernel/uapi/linux/iio/types.h
index 834a2eb..e3f3ec4 100644
--- a/libc/kernel/uapi/linux/iio/types.h
+++ b/libc/kernel/uapi/linux/iio/types.h
@@ -53,6 +53,7 @@
   IIO_GRAVITY,
   IIO_POSITIONRELATIVE,
   IIO_PHASE,
+  IIO_MASSCONCENTRATION,
 };
 enum iio_modifier {
   IIO_NO_MOD,
@@ -93,6 +94,12 @@
   IIO_MOD_VOC,
   IIO_MOD_LIGHT_UV,
   IIO_MOD_LIGHT_DUV,
+  IIO_MOD_PM1,
+  IIO_MOD_PM2P5,
+  IIO_MOD_PM4,
+  IIO_MOD_PM10,
+  IIO_MOD_ETHANOL,
+  IIO_MOD_H2,
 };
 enum iio_event_type {
   IIO_EV_TYPE_THRESH,
diff --git a/libc/kernel/uapi/linux/in.h b/libc/kernel/uapi/linux/in.h
index 9ed00b4..f1dab00 100644
--- a/libc/kernel/uapi/linux/in.h
+++ b/libc/kernel/uapi/linux/in.h
@@ -215,6 +215,7 @@
 #define INADDR_UNSPEC_GROUP 0xe0000000U
 #define INADDR_ALLHOSTS_GROUP 0xe0000001U
 #define INADDR_ALLRTRS_GROUP 0xe0000002U
+#define INADDR_ALLSNOOPERS_GROUP 0xe000006aU
 #define INADDR_MAX_LOCAL_GROUP 0xe00000ffU
 #endif
 #include <asm/byteorder.h>
diff --git a/libc/kernel/uapi/linux/in6.h b/libc/kernel/uapi/linux/in6.h
index 3627f52..2eb64d0 100644
--- a/libc/kernel/uapi/linux/in6.h
+++ b/libc/kernel/uapi/linux/in6.h
@@ -133,6 +133,7 @@
 #define IPV6_JOIN_ANYCAST 27
 #define IPV6_LEAVE_ANYCAST 28
 #define IPV6_MULTICAST_ALL 29
+#define IPV6_ROUTER_ALERT_ISOLATE 30
 #define IPV6_PMTUDISC_DONT 0
 #define IPV6_PMTUDISC_WANT 1
 #define IPV6_PMTUDISC_DO 2
diff --git a/libc/kernel/uapi/linux/input-event-codes.h b/libc/kernel/uapi/linux/input-event-codes.h
index 1ca3cb0..7bbb234 100644
--- a/libc/kernel/uapi/linux/input-event-codes.h
+++ b/libc/kernel/uapi/linux/input-event-codes.h
@@ -389,10 +389,12 @@
 #define KEY_TITLE 0x171
 #define KEY_SUBTITLE 0x172
 #define KEY_ANGLE 0x173
-#define KEY_ZOOM 0x174
+#define KEY_FULL_SCREEN 0x174
+#define KEY_ZOOM KEY_FULL_SCREEN
 #define KEY_MODE 0x175
 #define KEY_KEYBOARD 0x176
-#define KEY_SCREEN 0x177
+#define KEY_ASPECT_RATIO 0x177
+#define KEY_SCREEN KEY_ASPECT_RATIO
 #define KEY_PC 0x178
 #define KEY_TV 0x179
 #define KEY_TV2 0x17a
diff --git a/libc/kernel/uapi/linux/io_uring.h b/libc/kernel/uapi/linux/io_uring.h
new file mode 100644
index 0000000..fe2d0eb
--- /dev/null
+++ b/libc/kernel/uapi/linux/io_uring.h
@@ -0,0 +1,100 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef LINUX_IO_URING_H
+#define LINUX_IO_URING_H
+#include <linux/fs.h>
+#include <linux/types.h>
+struct io_uring_sqe {
+  __u8 opcode;
+  __u8 flags;
+  __u16 ioprio;
+  __s32 fd;
+  __u64 off;
+  __u64 addr;
+  __u32 len;
+  union {
+    __kernel_rwf_t rw_flags;
+    __u32 fsync_flags;
+    __u16 poll_events;
+  };
+  __u64 user_data;
+  union {
+    __u16 buf_index;
+    __u64 __pad2[3];
+  };
+};
+#define IOSQE_FIXED_FILE (1U << 0)
+#define IORING_SETUP_IOPOLL (1U << 0)
+#define IORING_SETUP_SQPOLL (1U << 1)
+#define IORING_SETUP_SQ_AFF (1U << 2)
+#define IORING_OP_NOP 0
+#define IORING_OP_READV 1
+#define IORING_OP_WRITEV 2
+#define IORING_OP_FSYNC 3
+#define IORING_OP_READ_FIXED 4
+#define IORING_OP_WRITE_FIXED 5
+#define IORING_OP_POLL_ADD 6
+#define IORING_OP_POLL_REMOVE 7
+#define IORING_FSYNC_DATASYNC (1U << 0)
+struct io_uring_cqe {
+  __u64 user_data;
+  __s32 res;
+  __u32 flags;
+};
+#define IORING_OFF_SQ_RING 0ULL
+#define IORING_OFF_CQ_RING 0x8000000ULL
+#define IORING_OFF_SQES 0x10000000ULL
+struct io_sqring_offsets {
+  __u32 head;
+  __u32 tail;
+  __u32 ring_mask;
+  __u32 ring_entries;
+  __u32 flags;
+  __u32 dropped;
+  __u32 array;
+  __u32 resv1;
+  __u64 resv2;
+};
+#define IORING_SQ_NEED_WAKEUP (1U << 0)
+struct io_cqring_offsets {
+  __u32 head;
+  __u32 tail;
+  __u32 ring_mask;
+  __u32 ring_entries;
+  __u32 overflow;
+  __u32 cqes;
+  __u64 resv[2];
+};
+#define IORING_ENTER_GETEVENTS (1U << 0)
+#define IORING_ENTER_SQ_WAKEUP (1U << 1)
+struct io_uring_params {
+  __u32 sq_entries;
+  __u32 cq_entries;
+  __u32 flags;
+  __u32 sq_thread_cpu;
+  __u32 sq_thread_idle;
+  __u32 resv[5];
+  struct io_sqring_offsets sq_off;
+  struct io_cqring_offsets cq_off;
+};
+#define IORING_REGISTER_BUFFERS 0
+#define IORING_UNREGISTER_BUFFERS 1
+#define IORING_REGISTER_FILES 2
+#define IORING_UNREGISTER_FILES 3
+#endif
diff --git a/libc/kernel/uapi/linux/kernel-page-flags.h b/libc/kernel/uapi/linux/kernel-page-flags.h
index afa0393..d66cd7f 100644
--- a/libc/kernel/uapi/linux/kernel-page-flags.h
+++ b/libc/kernel/uapi/linux/kernel-page-flags.h
@@ -41,7 +41,7 @@
 #define KPF_NOPAGE 20
 #define KPF_KSM 21
 #define KPF_THP 22
-#define KPF_BALLOON 23
+#define KPF_OFFLINE 23
 #define KPF_ZERO_PAGE 24
 #define KPF_IDLE 25
 #define KPF_PGTABLE 26
diff --git a/libc/kernel/uapi/linux/limits.h b/libc/kernel/uapi/linux/limits.h
index ad0e33e..101b7aa 100644
--- a/libc/kernel/uapi/linux/limits.h
+++ b/libc/kernel/uapi/linux/limits.h
@@ -16,8 +16,8 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef _LINUX_LIMITS_H
-#define _LINUX_LIMITS_H
+#ifndef _UAPI_LINUX_LIMITS_H
+#define _UAPI_LINUX_LIMITS_H
 #define NR_OPEN 1024
 #define NGROUPS_MAX 65536
 #define ARG_MAX 131072
diff --git a/libc/kernel/uapi/linux/lirc.h b/libc/kernel/uapi/linux/lirc.h
index 4a8d0ff..515d8ce 100644
--- a/libc/kernel/uapi/linux/lirc.h
+++ b/libc/kernel/uapi/linux/lirc.h
@@ -127,5 +127,8 @@
   RC_PROTO_XMP = 21,
   RC_PROTO_CEC = 22,
   RC_PROTO_IMON = 23,
+  RC_PROTO_RCMM12 = 24,
+  RC_PROTO_RCMM24 = 25,
+  RC_PROTO_RCMM32 = 26,
 };
 #endif
diff --git a/libc/kernel/uapi/linux/mdio.h b/libc/kernel/uapi/linux/mdio.h
index 2617f2e..14f1e77 100644
--- a/libc/kernel/uapi/linux/mdio.h
+++ b/libc/kernel/uapi/linux/mdio.h
@@ -47,6 +47,7 @@
 #define MDIO_AN_ADVERTISE 16
 #define MDIO_AN_LPA 19
 #define MDIO_PCS_EEE_ABLE 20
+#define MDIO_PMA_NG_EXTABLE 21
 #define MDIO_PCS_EEE_WK_ERR 22
 #define MDIO_PHYXS_LNSTAT 24
 #define MDIO_AN_EEE_ADV 60
@@ -82,6 +83,8 @@
 #define MDIO_PCS_CTRL1_CLKSTOP_EN 0x400
 #define MDIO_CTRL1_SPEED10G (MDIO_CTRL1_SPEEDSELEXT | 0x00)
 #define MDIO_CTRL1_SPEED10P2B (MDIO_CTRL1_SPEEDSELEXT | 0x04)
+#define MDIO_CTRL1_SPEED2_5G (MDIO_CTRL1_SPEEDSELEXT | 0x18)
+#define MDIO_CTRL1_SPEED5G (MDIO_CTRL1_SPEEDSELEXT | 0x1c)
 #define MDIO_STAT1_LPOWERABLE 0x0002
 #define MDIO_STAT1_LSTATUS BMSR_LSTATUS
 #define MDIO_STAT1_FAULT 0x0080
@@ -99,6 +102,7 @@
 #define MDIO_PMA_SPEED_10 0x0040
 #define MDIO_PCS_SPEED_10P2B 0x0002
 #define MDIO_DEVS_PRESENT(devad) (1 << (devad))
+#define MDIO_DEVS_C22PRESENT MDIO_DEVS_PRESENT(0)
 #define MDIO_DEVS_PMAPMD MDIO_DEVS_PRESENT(MDIO_MMD_PMAPMD)
 #define MDIO_DEVS_WIS MDIO_DEVS_PRESENT(MDIO_MMD_WIS)
 #define MDIO_DEVS_PCS MDIO_DEVS_PRESENT(MDIO_MMD_PCS)
@@ -107,6 +111,8 @@
 #define MDIO_DEVS_TC MDIO_DEVS_PRESENT(MDIO_MMD_TC)
 #define MDIO_DEVS_AN MDIO_DEVS_PRESENT(MDIO_MMD_AN)
 #define MDIO_DEVS_C22EXT MDIO_DEVS_PRESENT(MDIO_MMD_C22EXT)
+#define MDIO_DEVS_VEND1 MDIO_DEVS_PRESENT(MDIO_MMD_VEND1)
+#define MDIO_DEVS_VEND2 MDIO_DEVS_PRESENT(MDIO_MMD_VEND2)
 #define MDIO_PMA_CTRL2_TYPE 0x000f
 #define MDIO_PMA_CTRL2_10GBCX4 0x0000
 #define MDIO_PMA_CTRL2_10GBEW 0x0001
@@ -124,6 +130,8 @@
 #define MDIO_PMA_CTRL2_1000BKX 0x000d
 #define MDIO_PMA_CTRL2_100BTX 0x000e
 #define MDIO_PMA_CTRL2_10BT 0x000f
+#define MDIO_PMA_CTRL2_2_5GBT 0x0030
+#define MDIO_PMA_CTRL2_5GBT 0x0031
 #define MDIO_PCS_CTRL2_TYPE 0x0003
 #define MDIO_PCS_CTRL2_10GBR 0x0000
 #define MDIO_PCS_CTRL2_10GBX 0x0001
@@ -169,6 +177,7 @@
 #define MDIO_PMA_EXTABLE_1000BKX 0x0040
 #define MDIO_PMA_EXTABLE_100BTX 0x0080
 #define MDIO_PMA_EXTABLE_10BT 0x0100
+#define MDIO_PMA_EXTABLE_NBT 0x4000
 #define MDIO_PHYXS_LNSTAT_SYNC0 0x0001
 #define MDIO_PHYXS_LNSTAT_SYNC1 0x0002
 #define MDIO_PHYXS_LNSTAT_SYNC2 0x0004
@@ -188,7 +197,11 @@
 #define MDIO_PCS_10GBRT_STAT1_BLKLK 0x0001
 #define MDIO_PCS_10GBRT_STAT2_ERR 0x00ff
 #define MDIO_PCS_10GBRT_STAT2_BER 0x3f00
+#define MDIO_AN_10GBT_CTRL_ADV2_5G 0x0080
+#define MDIO_AN_10GBT_CTRL_ADV5G 0x0100
 #define MDIO_AN_10GBT_CTRL_ADV10G 0x1000
+#define MDIO_AN_10GBT_STAT_LP2_5G 0x0020
+#define MDIO_AN_10GBT_STAT_LP5G 0x0040
 #define MDIO_AN_10GBT_STAT_LPTRR 0x0200
 #define MDIO_AN_10GBT_STAT_LPLTABLE 0x0400
 #define MDIO_AN_10GBT_STAT_LP10G 0x0800
@@ -204,6 +217,8 @@
 #define MDIO_EEE_1000KX 0x0010
 #define MDIO_EEE_10GKX4 0x0020
 #define MDIO_EEE_10GKR 0x0040
+#define MDIO_PMA_NG_EXTABLE_2_5GBT 0x0001
+#define MDIO_PMA_NG_EXTABLE_5GBT 0x0002
 #define MDIO_PMA_LASI_RX_PHYXSLFLT 0x0001
 #define MDIO_PMA_LASI_RX_PCSLFLT 0x0008
 #define MDIO_PMA_LASI_RX_PMALFLT 0x0010
diff --git a/libc/kernel/uapi/linux/mman.h b/libc/kernel/uapi/linux/mman.h
index 0c9c397..e469374 100644
--- a/libc/kernel/uapi/linux/mman.h
+++ b/libc/kernel/uapi/linux/mman.h
@@ -25,6 +25,9 @@
 #define OVERCOMMIT_GUESS 0
 #define OVERCOMMIT_ALWAYS 1
 #define OVERCOMMIT_NEVER 2
+#define MAP_SHARED 0x01
+#define MAP_PRIVATE 0x02
+#define MAP_SHARED_VALIDATE 0x03
 #define MAP_HUGE_SHIFT HUGETLB_FLAG_ENCODE_SHIFT
 #define MAP_HUGE_MASK HUGETLB_FLAG_ENCODE_MASK
 #define MAP_HUGE_64KB HUGETLB_FLAG_ENCODE_64KB
diff --git a/libc/kernel/uapi/linux/mroute.h b/libc/kernel/uapi/linux/mroute.h
index f0cb21b..7e0078f 100644
--- a/libc/kernel/uapi/linux/mroute.h
+++ b/libc/kernel/uapi/linux/mroute.h
@@ -34,10 +34,15 @@
 #define MRT_TABLE (MRT_BASE + 9)
 #define MRT_ADD_MFC_PROXY (MRT_BASE + 10)
 #define MRT_DEL_MFC_PROXY (MRT_BASE + 11)
-#define MRT_MAX (MRT_BASE + 11)
+#define MRT_FLUSH (MRT_BASE + 12)
+#define MRT_MAX (MRT_BASE + 12)
 #define SIOCGETVIFCNT SIOCPROTOPRIVATE
 #define SIOCGETSGCNT (SIOCPROTOPRIVATE + 1)
 #define SIOCGETRPF (SIOCPROTOPRIVATE + 2)
+#define MRT_FLUSH_MFC 1
+#define MRT_FLUSH_MFC_STATIC 2
+#define MRT_FLUSH_VIFS 4
+#define MRT_FLUSH_VIFS_STATIC 8
 #define MAXVIFS 32
 typedef unsigned long vifbitmap_t;
 typedef unsigned short vifi_t;
diff --git a/libc/kernel/uapi/linux/mroute6.h b/libc/kernel/uapi/linux/mroute6.h
index ccb38d9..e6c83e9 100644
--- a/libc/kernel/uapi/linux/mroute6.h
+++ b/libc/kernel/uapi/linux/mroute6.h
@@ -35,10 +35,15 @@
 #define MRT6_TABLE (MRT6_BASE + 9)
 #define MRT6_ADD_MFC_PROXY (MRT6_BASE + 10)
 #define MRT6_DEL_MFC_PROXY (MRT6_BASE + 11)
-#define MRT6_MAX (MRT6_BASE + 11)
+#define MRT6_FLUSH (MRT6_BASE + 12)
+#define MRT6_MAX (MRT6_BASE + 12)
 #define SIOCGETMIFCNT_IN6 SIOCPROTOPRIVATE
 #define SIOCGETSGCNT_IN6 (SIOCPROTOPRIVATE + 1)
 #define SIOCGETRPF (SIOCPROTOPRIVATE + 2)
+#define MRT6_FLUSH_MFC 1
+#define MRT6_FLUSH_MFC_STATIC 2
+#define MRT6_FLUSH_MIFS 4
+#define MRT6_FLUSH_MIFS_STATIC 8
 #define MAXMIFS 32
 typedef unsigned long mifbitmap_t;
 typedef unsigned short mifi_t;
diff --git a/libc/kernel/uapi/linux/ndctl.h b/libc/kernel/uapi/linux/ndctl.h
index 742fbad..e47091f 100644
--- a/libc/kernel/uapi/linux/ndctl.h
+++ b/libc/kernel/uapi/linux/ndctl.h
@@ -157,5 +157,6 @@
 #define NVDIMM_FAMILY_HPE1 1
 #define NVDIMM_FAMILY_HPE2 2
 #define NVDIMM_FAMILY_MSFT 3
+#define NVDIMM_FAMILY_HYPERV 4
 #define ND_IOCTL_CALL _IOWR(ND_IOCTL, ND_CMD_CALL, struct nd_cmd_pkg)
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/nf_tables.h b/libc/kernel/uapi/linux/netfilter/nf_tables.h
index 2bb7c86..1043799 100644
--- a/libc/kernel/uapi/linux/netfilter/nf_tables.h
+++ b/libc/kernel/uapi/linux/netfilter/nf_tables.h
@@ -139,6 +139,7 @@
   NFTA_RULE_USERDATA,
   NFTA_RULE_PAD,
   NFTA_RULE_ID,
+  NFTA_RULE_POSITION_ID,
   __NFTA_RULE_MAX
 };
 #define NFTA_RULE_MAX (__NFTA_RULE_MAX - 1)
@@ -413,6 +414,8 @@
   NFT_META_CGROUP,
   NFT_META_PRANDOM,
   NFT_META_SECPATH,
+  NFT_META_IIFKIND,
+  NFT_META_OIFKIND,
 };
 enum nft_rt_keys {
   NFT_RT_CLASSID,
@@ -922,10 +925,18 @@
   __NFT_TUNNEL_MAX
 };
 #define NFT_TUNNEL_MAX (__NFT_TUNNEL_MAX - 1)
+enum nft_tunnel_mode {
+  NFT_TUNNEL_MODE_NONE,
+  NFT_TUNNEL_MODE_RX,
+  NFT_TUNNEL_MODE_TX,
+  __NFT_TUNNEL_MODE_MAX
+};
+#define NFT_TUNNEL_MODE_MAX (__NFT_TUNNEL_MODE_MAX - 1)
 enum nft_tunnel_attributes {
   NFTA_TUNNEL_UNSPEC,
   NFTA_TUNNEL_KEY,
   NFTA_TUNNEL_DREG,
+  NFTA_TUNNEL_MODE,
   __NFTA_TUNNEL_MAX
 };
 #define NFTA_TUNNEL_MAX (__NFTA_TUNNEL_MAX - 1)
diff --git a/libc/kernel/uapi/linux/nl80211.h b/libc/kernel/uapi/linux/nl80211.h
index 29a7b66..a7f6309 100644
--- a/libc/kernel/uapi/linux/nl80211.h
+++ b/libc/kernel/uapi/linux/nl80211.h
@@ -458,6 +458,7 @@
   NL80211_ATTR_FTM_RESPONDER_STATS,
   NL80211_ATTR_TIMEOUT,
   NL80211_ATTR_PEER_MEASUREMENTS,
+  NL80211_ATTR_AIRTIME_WEIGHT,
   __NL80211_ATTR_AFTER_LAST,
   NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST,
   NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
@@ -628,6 +629,8 @@
   NL80211_STA_INFO_RX_MPDUS,
   NL80211_STA_INFO_FCS_ERROR_COUNT,
   NL80211_STA_INFO_CONNECTED_TO_GATE,
+  NL80211_STA_INFO_TX_DURATION,
+  NL80211_STA_INFO_AIRTIME_WEIGHT,
   __NL80211_STA_INFO_AFTER_LAST,
   NL80211_STA_INFO_MAX = __NL80211_STA_INFO_AFTER_LAST - 1
 };
@@ -675,6 +678,8 @@
   NL80211_MPATH_INFO_FLAGS,
   NL80211_MPATH_INFO_DISCOVERY_TIMEOUT,
   NL80211_MPATH_INFO_DISCOVERY_RETRIES,
+  NL80211_MPATH_INFO_HOP_COUNT,
+  NL80211_MPATH_INFO_PATH_CHANGE,
   __NL80211_MPATH_INFO_AFTER_LAST,
   NL80211_MPATH_INFO_MAX = __NL80211_MPATH_INFO_AFTER_LAST - 1
 };
@@ -1304,6 +1309,8 @@
   NL80211_EXT_FEATURE_SCAN_MIN_PREQ_CONTENT,
   NL80211_EXT_FEATURE_CAN_REPLACE_PTK0,
   NL80211_EXT_FEATURE_ENABLE_FTM_RESPONDER,
+  NL80211_EXT_FEATURE_AIRTIME_FAIRNESS,
+  NL80211_EXT_FEATURE_AP_PMKSA_CACHING,
   NUM_NL80211_EXT_FEATURES,
   MAX_NL80211_EXT_FEATURES = NUM_NL80211_EXT_FEATURES - 1
 };
@@ -1375,6 +1382,7 @@
 #define NL80211_CRIT_PROTO_MAX_DURATION 5000
 enum nl80211_rxmgmt_flags {
   NL80211_RXMGMT_FLAG_ANSWERED = 1 << 0,
+  NL80211_RXMGMT_FLAG_EXTERNAL_AUTH = 1 << 1,
 };
 #define NL80211_VENDOR_ID_IS_LINUX 0x80000000
 struct nl80211_vendor_cmd_info {
diff --git a/libc/kernel/uapi/linux/pci_regs.h b/libc/kernel/uapi/linux/pci_regs.h
index 8122fbb..d75d200 100644
--- a/libc/kernel/uapi/linux/pci_regs.h
+++ b/libc/kernel/uapi/linux/pci_regs.h
@@ -739,6 +739,7 @@
 #define PCI_ATS_CAP 0x04
 #define PCI_ATS_CAP_QDEP(x) ((x) & 0x1f)
 #define PCI_ATS_MAX_QDEP 32
+#define PCI_ATS_CAP_PAGE_ALIGNED 0x0020
 #define PCI_ATS_CTRL 0x06
 #define PCI_ATS_CTRL_ENABLE 0x8000
 #define PCI_ATS_CTRL_STU(x) ((x) & 0x1f)
@@ -751,6 +752,7 @@
 #define PCI_PRI_STATUS_RF 0x001
 #define PCI_PRI_STATUS_UPRGI 0x002
 #define PCI_PRI_STATUS_STOPPED 0x100
+#define PCI_PRI_STATUS_PASID 0x8000
 #define PCI_PRI_MAX_REQ 0x08
 #define PCI_PRI_ALLOC_REQ 0x0c
 #define PCI_EXT_CAP_PRI_SIZEOF 16
diff --git a/libc/kernel/uapi/linux/perf_event.h b/libc/kernel/uapi/linux/perf_event.h
index bf51785..9048588 100644
--- a/libc/kernel/uapi/linux/perf_event.h
+++ b/libc/kernel/uapi/linux/perf_event.h
@@ -198,7 +198,7 @@
   };
   __u64 sample_type;
   __u64 read_format;
-  __u64 disabled : 1, inherit : 1, pinned : 1, exclusive : 1, exclude_user : 1, exclude_kernel : 1, exclude_hv : 1, exclude_idle : 1, mmap : 1, comm : 1, freq : 1, inherit_stat : 1, enable_on_exec : 1, task : 1, watermark : 1, precise_ip : 2, mmap_data : 1, sample_id_all : 1, exclude_host : 1, exclude_guest : 1, exclude_callchain_kernel : 1, exclude_callchain_user : 1, mmap2 : 1, comm_exec : 1, use_clockid : 1, context_switch : 1, write_backward : 1, namespaces : 1, __reserved_1 : 35;
+  __u64 disabled : 1, inherit : 1, pinned : 1, exclusive : 1, exclude_user : 1, exclude_kernel : 1, exclude_hv : 1, exclude_idle : 1, mmap : 1, comm : 1, freq : 1, inherit_stat : 1, enable_on_exec : 1, task : 1, watermark : 1, precise_ip : 2, mmap_data : 1, sample_id_all : 1, exclude_host : 1, exclude_guest : 1, exclude_callchain_kernel : 1, exclude_callchain_user : 1, mmap2 : 1, comm_exec : 1, use_clockid : 1, context_switch : 1, write_backward : 1, namespaces : 1, ksymbol : 1, bpf_event : 1, __reserved_1 : 33;
   union {
     __u32 wakeup_events;
     __u32 wakeup_watermark;
@@ -230,7 +230,6 @@
   __u32 prog_cnt;
   __u32 ids[0];
 };
-#define perf_flags(attr) (* (& (attr)->read_format + 1))
 #define PERF_EVENT_IOC_ENABLE _IO('$', 0)
 #define PERF_EVENT_IOC_DISABLE _IO('$', 1)
 #define PERF_EVENT_IOC_REFRESH _IO('$', 2)
@@ -327,8 +326,22 @@
   PERF_RECORD_SWITCH = 14,
   PERF_RECORD_SWITCH_CPU_WIDE = 15,
   PERF_RECORD_NAMESPACES = 16,
+  PERF_RECORD_KSYMBOL = 17,
+  PERF_RECORD_BPF_EVENT = 18,
   PERF_RECORD_MAX,
 };
+enum perf_record_ksymbol_type {
+  PERF_RECORD_KSYMBOL_TYPE_UNKNOWN = 0,
+  PERF_RECORD_KSYMBOL_TYPE_BPF = 1,
+  PERF_RECORD_KSYMBOL_TYPE_MAX
+};
+#define PERF_RECORD_KSYMBOL_FLAGS_UNREGISTER (1 << 0)
+enum perf_bpf_event_type {
+  PERF_BPF_EVENT_UNKNOWN = 0,
+  PERF_BPF_EVENT_PROG_LOAD = 1,
+  PERF_BPF_EVENT_PROG_UNLOAD = 2,
+  PERF_BPF_EVENT_MAX,
+};
 #define PERF_MAX_STACK_DEPTH 127
 #define PERF_MAX_CONTEXTS_PER_STACK 8
 enum perf_callchain_context {
diff --git a/libc/kernel/uapi/linux/pkt_cls.h b/libc/kernel/uapi/linux/pkt_cls.h
index 2018f0b..6db3a6d 100644
--- a/libc/kernel/uapi/linux/pkt_cls.h
+++ b/libc/kernel/uapi/linux/pkt_cls.h
@@ -59,9 +59,41 @@
 #define TC_ACT_JUMP __TC_ACT_EXT(1)
 #define TC_ACT_GOTO_CHAIN __TC_ACT_EXT(2)
 #define TC_ACT_EXT_OPCODE_MAX TC_ACT_GOTO_CHAIN
-enum {
+#define TCA_ACT_GACT 5
+#define TCA_ACT_IPT 6
+#define TCA_ACT_PEDIT 7
+#define TCA_ACT_MIRRED 8
+#define TCA_ACT_NAT 9
+#define TCA_ACT_XT 10
+#define TCA_ACT_SKBEDIT 11
+#define TCA_ACT_VLAN 12
+#define TCA_ACT_BPF 13
+#define TCA_ACT_CONNMARK 14
+#define TCA_ACT_SKBMOD 15
+#define TCA_ACT_CSUM 16
+#define TCA_ACT_TUNNEL_KEY 17
+#define TCA_ACT_SIMP 22
+#define TCA_ACT_IFE 25
+#define TCA_ACT_SAMPLE 26
+enum tca_id {
   TCA_ID_UNSPEC = 0,
   TCA_ID_POLICE = 1,
+  TCA_ID_GACT = TCA_ACT_GACT,
+  TCA_ID_IPT = TCA_ACT_IPT,
+  TCA_ID_PEDIT = TCA_ACT_PEDIT,
+  TCA_ID_MIRRED = TCA_ACT_MIRRED,
+  TCA_ID_NAT = TCA_ACT_NAT,
+  TCA_ID_XT = TCA_ACT_XT,
+  TCA_ID_SKBEDIT = TCA_ACT_SKBEDIT,
+  TCA_ID_VLAN = TCA_ACT_VLAN,
+  TCA_ID_BPF = TCA_ACT_BPF,
+  TCA_ID_CONNMARK = TCA_ACT_CONNMARK,
+  TCA_ID_SKBMOD = TCA_ACT_SKBMOD,
+  TCA_ID_CSUM = TCA_ACT_CSUM,
+  TCA_ID_TUNNEL_KEY = TCA_ACT_TUNNEL_KEY,
+  TCA_ID_SIMP = TCA_ACT_SIMP,
+  TCA_ID_IFE = TCA_ACT_IFE,
+  TCA_ID_SAMPLE = TCA_ACT_SAMPLE,
   __TCA_ID_MAX = 255
 };
 #define TCA_ID_MAX __TCA_ID_MAX
@@ -267,12 +299,18 @@
   __TCA_FLOW_MAX
 };
 #define TCA_FLOW_MAX (__TCA_FLOW_MAX - 1)
+struct tc_basic_pcnt {
+  __u64 rcnt;
+  __u64 rhit;
+};
 enum {
   TCA_BASIC_UNSPEC,
   TCA_BASIC_CLASSID,
   TCA_BASIC_EMATCHES,
   TCA_BASIC_ACT,
   TCA_BASIC_POLICE,
+  TCA_BASIC_PCNT,
+  TCA_BASIC_PAD,
   __TCA_BASIC_MAX
 };
 #define TCA_BASIC_MAX (__TCA_BASIC_MAX - 1)
@@ -415,11 +453,16 @@
   TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST = (1 << 1),
 };
 #define TCA_FLOWER_MASK_FLAGS_RANGE (1 << 0)
+struct tc_matchall_pcnt {
+  __u64 rhit;
+};
 enum {
   TCA_MATCHALL_UNSPEC,
   TCA_MATCHALL_CLASSID,
   TCA_MATCHALL_ACT,
   TCA_MATCHALL_FLAGS,
+  TCA_MATCHALL_PCNT,
+  TCA_MATCHALL_PAD,
   __TCA_MATCHALL_MAX,
 };
 #define TCA_MATCHALL_MAX (__TCA_MATCHALL_MAX - 1)
diff --git a/libc/kernel/uapi/linux/pkt_sched.h b/libc/kernel/uapi/linux/pkt_sched.h
index dc0cd2f..6adc013 100644
--- a/libc/kernel/uapi/linux/pkt_sched.h
+++ b/libc/kernel/uapi/linux/pkt_sched.h
@@ -713,7 +713,7 @@
 };
 #define TCA_PIE_MAX (__TCA_PIE_MAX - 1)
 struct tc_pie_xstats {
-  __u32 prob;
+  __u64 prob;
   __u32 delay;
   __u32 avg_dq_rate;
   __u32 packets_in;
@@ -768,6 +768,7 @@
   TCA_CAKE_INGRESS,
   TCA_CAKE_ACK_FILTER,
   TCA_CAKE_SPLIT_GSO,
+  TCA_CAKE_FWMARK,
   __TCA_CAKE_MAX
 };
 #define TCA_CAKE_MAX (__TCA_CAKE_MAX - 1)
diff --git a/libc/kernel/uapi/linux/pmu.h b/libc/kernel/uapi/linux/pmu.h
index 2c7ffef..d3d08b0 100644
--- a/libc/kernel/uapi/linux/pmu.h
+++ b/libc/kernel/uapi/linux/pmu.h
@@ -23,7 +23,9 @@
 #define PMU_POWER_CTRL 0x11
 #define PMU_ADB_CMD 0x20
 #define PMU_ADB_POLL_OFF 0x21
+#define PMU_WRITE_XPRAM 0x32
 #define PMU_WRITE_NVRAM 0x33
+#define PMU_READ_XPRAM 0x3a
 #define PMU_READ_NVRAM 0x3b
 #define PMU_SET_RTC 0x30
 #define PMU_READ_RTC 0x38
diff --git a/libc/kernel/uapi/linux/prctl.h b/libc/kernel/uapi/linux/prctl.h
index 5031e8d..9015e29 100644
--- a/libc/kernel/uapi/linux/prctl.h
+++ b/libc/kernel/uapi/linux/prctl.h
@@ -143,6 +143,7 @@
 #define PR_SPEC_ENABLE (1UL << 1)
 #define PR_SPEC_DISABLE (1UL << 2)
 #define PR_SPEC_FORCE_DISABLE (1UL << 3)
+#define PR_SPEC_DISABLE_NOEXEC (1UL << 4)
 #define PR_PAC_RESET_KEYS 54
 #define PR_PAC_APIAKEY (1UL << 0)
 #define PR_PAC_APIBKEY (1UL << 1)
diff --git a/libc/kernel/uapi/linux/rds.h b/libc/kernel/uapi/linux/rds.h
index 05da0cd..951427f 100644
--- a/libc/kernel/uapi/linux/rds.h
+++ b/libc/kernel/uapi/linux/rds.h
@@ -36,6 +36,9 @@
 #define RDS_TRANS_TCP 2
 #define RDS_TRANS_COUNT 3
 #define RDS_TRANS_NONE (~0)
+#define SIOCRDSSETTOS (SIOCPROTOPRIVATE)
+#define SIOCRDSGETTOS (SIOCPROTOPRIVATE + 1)
+typedef __u8 rds_tos_t;
 #define RDS_CMSG_RDMA_ARGS 1
 #define RDS_CMSG_RDMA_DEST 2
 #define RDS_CMSG_RDMA_MAP 3
@@ -82,6 +85,7 @@
   __be32 faddr;
   __u8 transport[TRANSNAMSIZ];
   __u8 flags;
+  __u8 tos;
 } __attribute__((packed));
 struct rds6_info_connection {
   __u64 next_tx_seq;
@@ -101,6 +105,7 @@
   __be16 lport;
   __be16 fport;
   __u8 flags;
+  __u8 tos;
 } __attribute__((packed));
 struct rds6_info_message {
   __u64 seq;
@@ -140,6 +145,7 @@
   __u32 last_sent_nxt;
   __u32 last_expected_una;
   __u32 last_seen_una;
+  __u8 tos;
 } __attribute__((packed));
 struct rds6_info_tcp_socket {
   struct in6_addr local_addr;
@@ -163,6 +169,7 @@
   __u32 max_send_sge;
   __u32 rdma_mr_max;
   __u32 rdma_mr_size;
+  __u8 tos;
 };
 struct rds6_info_rdma_connection {
   struct in6_addr src_addr;
@@ -174,6 +181,7 @@
   __u32 max_send_sge;
   __u32 rdma_mr_max;
   __u32 rdma_mr_size;
+  __u8 tos;
 };
 enum rds_message_rxpath_latency {
   RDS_MSG_RX_HDR_TO_DGRAM_START = 0,
diff --git a/libc/kernel/uapi/linux/sctp.h b/libc/kernel/uapi/linux/sctp.h
index 66fde70..18c5d21 100644
--- a/libc/kernel/uapi/linux/sctp.h
+++ b/libc/kernel/uapi/linux/sctp.h
@@ -21,6 +21,9 @@
 #include <linux/types.h>
 #include <linux/socket.h>
 typedef __s32 sctp_assoc_t;
+#define SCTP_FUTURE_ASSOC 0
+#define SCTP_CURRENT_ASSOC 1
+#define SCTP_ALL_ASSOC 2
 #define SCTP_RTOINFO 0
 #define SCTP_ASSOCINFO 1
 #define SCTP_INITMSG 2
diff --git a/libc/kernel/uapi/linux/serial_core.h b/libc/kernel/uapi/linux/serial_core.h
index b9af467..791f5d7 100644
--- a/libc/kernel/uapi/linux/serial_core.h
+++ b/libc/kernel/uapi/linux/serial_core.h
@@ -60,6 +60,7 @@
 #define PORT_SUNZILOG 38
 #define PORT_SUNSAB 39
 #define PORT_NPCM 40
+#define PORT_TEGRA_TCU 41
 #define PORT_PCH_8LINE 44
 #define PORT_PCH_2LINE 45
 #define PORT_DZ 46
diff --git a/libc/kernel/uapi/linux/tc_act/tc_bpf.h b/libc/kernel/uapi/linux/tc_act/tc_bpf.h
index c4963a5..48094d4 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_bpf.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_bpf.h
@@ -19,7 +19,6 @@
 #ifndef __LINUX_TC_BPF_H
 #define __LINUX_TC_BPF_H
 #include <linux/pkt_cls.h>
-#define TCA_ACT_BPF 13
 struct tc_act_bpf {
   tc_gen;
 };
diff --git a/libc/kernel/uapi/linux/tc_act/tc_connmark.h b/libc/kernel/uapi/linux/tc_act/tc_connmark.h
index 32cc44b..5fe979c 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_connmark.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_connmark.h
@@ -20,7 +20,6 @@
 #define __UAPI_TC_CONNMARK_H
 #include <linux/types.h>
 #include <linux/pkt_cls.h>
-#define TCA_ACT_CONNMARK 14
 struct tc_connmark {
   tc_gen;
   __u16 zone;
diff --git a/libc/kernel/uapi/linux/tc_act/tc_csum.h b/libc/kernel/uapi/linux/tc_act/tc_csum.h
index 7de4019..1fcd00d 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_csum.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_csum.h
@@ -20,7 +20,6 @@
 #define __LINUX_TC_CSUM_H
 #include <linux/types.h>
 #include <linux/pkt_cls.h>
-#define TCA_ACT_CSUM 16
 enum {
   TCA_CSUM_UNSPEC,
   TCA_CSUM_PARMS,
diff --git a/libc/kernel/uapi/linux/tc_act/tc_gact.h b/libc/kernel/uapi/linux/tc_act/tc_gact.h
index 11d8533..ac96dff 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_gact.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_gact.h
@@ -20,7 +20,6 @@
 #define __LINUX_TC_GACT_H
 #include <linux/types.h>
 #include <linux/pkt_cls.h>
-#define TCA_ACT_GACT 5
 struct tc_gact {
   tc_gen;
 };
diff --git a/libc/kernel/uapi/linux/tc_act/tc_ife.h b/libc/kernel/uapi/linux/tc_act/tc_ife.h
index 3193be0..346ebac 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_ife.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_ife.h
@@ -21,7 +21,6 @@
 #include <linux/types.h>
 #include <linux/pkt_cls.h>
 #include <linux/ife.h>
-#define TCA_ACT_IFE 25
 #define IFE_ENCODE 1
 #define IFE_DECODE 0
 struct tc_ife {
diff --git a/libc/kernel/uapi/linux/tc_act/tc_ipt.h b/libc/kernel/uapi/linux/tc_act/tc_ipt.h
index 89b0706..d578ce7 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_ipt.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_ipt.h
@@ -19,8 +19,6 @@
 #ifndef __LINUX_TC_IPT_H
 #define __LINUX_TC_IPT_H
 #include <linux/pkt_cls.h>
-#define TCA_ACT_IPT 6
-#define TCA_ACT_XT 10
 enum {
   TCA_IPT_UNSPEC,
   TCA_IPT_TABLE,
diff --git a/libc/kernel/uapi/linux/tc_act/tc_mirred.h b/libc/kernel/uapi/linux/tc_act/tc_mirred.h
index 2eb4f81..af04d03 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_mirred.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_mirred.h
@@ -20,7 +20,6 @@
 #define __LINUX_TC_MIR_H
 #include <linux/types.h>
 #include <linux/pkt_cls.h>
-#define TCA_ACT_MIRRED 8
 #define TCA_EGRESS_REDIR 1
 #define TCA_EGRESS_MIRROR 2
 #define TCA_INGRESS_REDIR 3
diff --git a/libc/kernel/uapi/linux/tc_act/tc_nat.h b/libc/kernel/uapi/linux/tc_act/tc_nat.h
index 093c7da..14aeffb 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_nat.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_nat.h
@@ -20,7 +20,6 @@
 #define __LINUX_TC_NAT_H
 #include <linux/pkt_cls.h>
 #include <linux/types.h>
-#define TCA_ACT_NAT 9
 enum {
   TCA_NAT_UNSPEC,
   TCA_NAT_PARMS,
diff --git a/libc/kernel/uapi/linux/tc_act/tc_pedit.h b/libc/kernel/uapi/linux/tc_act/tc_pedit.h
index 93eb1dc..cb8bd22 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_pedit.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_pedit.h
@@ -20,7 +20,6 @@
 #define __LINUX_TC_PED_H
 #include <linux/types.h>
 #include <linux/pkt_cls.h>
-#define TCA_ACT_PEDIT 7
 enum {
   TCA_PEDIT_UNSPEC,
   TCA_PEDIT_TM,
diff --git a/libc/kernel/uapi/linux/tc_act/tc_sample.h b/libc/kernel/uapi/linux/tc_act/tc_sample.h
index 64f5d08..7d9a32e 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_sample.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_sample.h
@@ -21,7 +21,6 @@
 #include <linux/types.h>
 #include <linux/pkt_cls.h>
 #include <linux/if_ether.h>
-#define TCA_ACT_SAMPLE 26
 struct tc_sample {
   tc_gen;
 };
diff --git a/libc/kernel/uapi/linux/tc_act/tc_skbedit.h b/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
index 30d529a..5706d4d 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
@@ -19,7 +19,6 @@
 #ifndef __LINUX_TC_SKBEDIT_H
 #define __LINUX_TC_SKBEDIT_H
 #include <linux/pkt_cls.h>
-#define TCA_ACT_SKBEDIT 11
 #define SKBEDIT_F_PRIORITY 0x1
 #define SKBEDIT_F_QUEUE_MAPPING 0x2
 #define SKBEDIT_F_MARK 0x4
diff --git a/libc/kernel/uapi/linux/tc_act/tc_skbmod.h b/libc/kernel/uapi/linux/tc_act/tc_skbmod.h
index 5b34c28..0a53b06 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_skbmod.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_skbmod.h
@@ -19,7 +19,6 @@
 #ifndef __LINUX_TC_SKBMOD_H
 #define __LINUX_TC_SKBMOD_H
 #include <linux/pkt_cls.h>
-#define TCA_ACT_SKBMOD 15
 #define SKBMOD_F_DMAC 0x1
 #define SKBMOD_F_SMAC 0x2
 #define SKBMOD_F_ETYPE 0x4
diff --git a/libc/kernel/uapi/linux/tc_act/tc_tunnel_key.h b/libc/kernel/uapi/linux/tc_act/tc_tunnel_key.h
index bd5fb24..4511b18 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_tunnel_key.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_tunnel_key.h
@@ -19,7 +19,6 @@
 #ifndef __LINUX_TC_TUNNEL_KEY_H
 #define __LINUX_TC_TUNNEL_KEY_H
 #include <linux/pkt_cls.h>
-#define TCA_ACT_TUNNEL_KEY 17
 #define TCA_TUNNEL_KEY_ACT_SET 1
 #define TCA_TUNNEL_KEY_ACT_RELEASE 2
 struct tc_tunnel_key {
diff --git a/libc/kernel/uapi/linux/tc_act/tc_vlan.h b/libc/kernel/uapi/linux/tc_act/tc_vlan.h
index b1b8ce7..ecd445d 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_vlan.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_vlan.h
@@ -19,7 +19,6 @@
 #ifndef __LINUX_TC_VLAN_H
 #define __LINUX_TC_VLAN_H
 #include <linux/pkt_cls.h>
-#define TCA_ACT_VLAN 12
 #define TCA_VLAN_ACT_POP 1
 #define TCA_VLAN_ACT_PUSH 2
 #define TCA_VLAN_ACT_MODIFY 3
diff --git a/libc/kernel/uapi/linux/time.h b/libc/kernel/uapi/linux/time.h
index 96a7042..dbf105b 100644
--- a/libc/kernel/uapi/linux/time.h
+++ b/libc/kernel/uapi/linux/time.h
@@ -19,6 +19,7 @@
 #ifndef _UAPI_LINUX_TIME_H
 #define _UAPI_LINUX_TIME_H
 #include <linux/types.h>
+#include <linux/time_types.h>
 #ifndef _STRUCT_TIMESPEC
 #define _STRUCT_TIMESPEC
 struct timespec {
@@ -45,22 +46,6 @@
   struct timeval it_interval;
   struct timeval it_value;
 };
-#ifndef __kernel_timespec
-struct __kernel_timespec {
-  __kernel_time64_t tv_sec;
-  long long tv_nsec;
-};
-#endif
-#ifndef __kernel_itimerspec
-struct __kernel_itimerspec {
-  struct __kernel_timespec it_interval;
-  struct __kernel_timespec it_value;
-};
-#endif
-struct __kernel_old_timeval {
-  __kernel_long_t tv_sec;
-  __kernel_long_t tv_usec;
-};
 #define CLOCK_REALTIME 0
 #define CLOCK_MONOTONIC 1
 #define CLOCK_PROCESS_CPUTIME_ID 2
diff --git a/libc/kernel/uapi/linux/time_types.h b/libc/kernel/uapi/linux/time_types.h
new file mode 100644
index 0000000..425e6ae
--- /dev/null
+++ b/libc/kernel/uapi/linux/time_types.h
@@ -0,0 +1,40 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_TIME_TYPES_H
+#define _UAPI_LINUX_TIME_TYPES_H
+#include <linux/types.h>
+struct __kernel_timespec {
+  __kernel_time64_t tv_sec;
+  long long tv_nsec;
+};
+struct __kernel_itimerspec {
+  struct __kernel_timespec it_interval;
+  struct __kernel_timespec it_value;
+};
+#ifndef __kernel_old_timeval
+struct __kernel_old_timeval {
+  __kernel_long_t tv_sec;
+  __kernel_long_t tv_usec;
+};
+#endif
+struct __kernel_sock_timeval {
+  __s64 tv_sec;
+  __s64 tv_usec;
+};
+#endif
diff --git a/libc/kernel/uapi/linux/timex.h b/libc/kernel/uapi/linux/timex.h
index e574b4b..803eaec 100644
--- a/libc/kernel/uapi/linux/timex.h
+++ b/libc/kernel/uapi/linux/timex.h
@@ -53,6 +53,46 @@
   int : 32;
   int : 32;
 };
+struct __kernel_timex_timeval {
+  __kernel_time64_t tv_sec;
+  long long tv_usec;
+};
+struct __kernel_timex {
+  unsigned int modes;
+  int : 32;
+  long long offset;
+  long long freq;
+  long long maxerror;
+  long long esterror;
+  int status;
+  int : 32;
+  long long constant;
+  long long precision;
+  long long tolerance;
+  struct __kernel_timex_timeval time;
+  long long tick;
+  long long ppsfreq;
+  long long jitter;
+  int shift;
+  int : 32;
+  long long stabil;
+  long long jitcnt;
+  long long calcnt;
+  long long errcnt;
+  long long stbcnt;
+  int tai;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+  int : 32;
+};
 #define ADJ_OFFSET 0x0001
 #define ADJ_FREQUENCY 0x0002
 #define ADJ_MAXERROR 0x0004
diff --git a/libc/kernel/uapi/linux/tls.h b/libc/kernel/uapi/linux/tls.h
index b6910af..96bb3a5 100644
--- a/libc/kernel/uapi/linux/tls.h
+++ b/libc/kernel/uapi/linux/tls.h
@@ -27,12 +27,21 @@
 #define TLS_1_2_VERSION_MAJOR 0x3
 #define TLS_1_2_VERSION_MINOR 0x3
 #define TLS_1_2_VERSION TLS_VERSION_NUMBER(TLS_1_2)
+#define TLS_1_3_VERSION_MAJOR 0x3
+#define TLS_1_3_VERSION_MINOR 0x4
+#define TLS_1_3_VERSION TLS_VERSION_NUMBER(TLS_1_3)
 #define TLS_CIPHER_AES_GCM_128 51
 #define TLS_CIPHER_AES_GCM_128_IV_SIZE 8
 #define TLS_CIPHER_AES_GCM_128_KEY_SIZE 16
 #define TLS_CIPHER_AES_GCM_128_SALT_SIZE 4
 #define TLS_CIPHER_AES_GCM_128_TAG_SIZE 16
 #define TLS_CIPHER_AES_GCM_128_REC_SEQ_SIZE 8
+#define TLS_CIPHER_AES_GCM_256 52
+#define TLS_CIPHER_AES_GCM_256_IV_SIZE 8
+#define TLS_CIPHER_AES_GCM_256_KEY_SIZE 32
+#define TLS_CIPHER_AES_GCM_256_SALT_SIZE 4
+#define TLS_CIPHER_AES_GCM_256_TAG_SIZE 16
+#define TLS_CIPHER_AES_GCM_256_REC_SEQ_SIZE 8
 #define TLS_SET_RECORD_TYPE 1
 #define TLS_GET_RECORD_TYPE 2
 struct tls_crypto_info {
@@ -46,4 +55,11 @@
   unsigned char salt[TLS_CIPHER_AES_GCM_128_SALT_SIZE];
   unsigned char rec_seq[TLS_CIPHER_AES_GCM_128_REC_SEQ_SIZE];
 };
+struct tls12_crypto_info_aes_gcm_256 {
+  struct tls_crypto_info info;
+  unsigned char iv[TLS_CIPHER_AES_GCM_256_IV_SIZE];
+  unsigned char key[TLS_CIPHER_AES_GCM_256_KEY_SIZE];
+  unsigned char salt[TLS_CIPHER_AES_GCM_256_SALT_SIZE];
+  unsigned char rec_seq[TLS_CIPHER_AES_GCM_256_REC_SEQ_SIZE];
+};
 #endif
diff --git a/libc/kernel/uapi/linux/v4l2-controls.h b/libc/kernel/uapi/linux/v4l2-controls.h
index 3c2d2b2..e8108dd 100644
--- a/libc/kernel/uapi/linux/v4l2-controls.h
+++ b/libc/kernel/uapi/linux/v4l2-controls.h
@@ -439,6 +439,8 @@
 };
 #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER (V4L2_CID_MPEG_BASE + 381)
 #define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP (V4L2_CID_MPEG_BASE + 382)
+#define V4L2_CID_MPEG_VIDEO_H264_CONSTRAINED_INTRA_PREDICTION (V4L2_CID_MPEG_BASE + 383)
+#define V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET (V4L2_CID_MPEG_BASE + 384)
 #define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (V4L2_CID_MPEG_BASE + 400)
 #define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP (V4L2_CID_MPEG_BASE + 401)
 #define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP (V4L2_CID_MPEG_BASE + 402)
diff --git a/libc/kernel/uapi/linux/vbox_vmmdev_types.h b/libc/kernel/uapi/linux/vbox_vmmdev_types.h
index 46b3486..3b27029 100644
--- a/libc/kernel/uapi/linux/vbox_vmmdev_types.h
+++ b/libc/kernel/uapi/linux/vbox_vmmdev_types.h
@@ -84,6 +84,30 @@
 #else
 #define VMMDEVREQ_HGCM_CALL VMMDEVREQ_HGCM_CALL32
 #endif
+#define VMMDEV_REQUESTOR_USR_NOT_GIVEN 0x00000000
+#define VMMDEV_REQUESTOR_USR_DRV 0x00000001
+#define VMMDEV_REQUESTOR_USR_DRV_OTHER 0x00000002
+#define VMMDEV_REQUESTOR_USR_ROOT 0x00000003
+#define VMMDEV_REQUESTOR_USR_USER 0x00000006
+#define VMMDEV_REQUESTOR_USR_MASK 0x00000007
+#define VMMDEV_REQUESTOR_KERNEL 0x00000000
+#define VMMDEV_REQUESTOR_USERMODE 0x00000008
+#define VMMDEV_REQUESTOR_MODE_MASK 0x00000008
+#define VMMDEV_REQUESTOR_CON_DONT_KNOW 0x00000000
+#define VMMDEV_REQUESTOR_CON_NO 0x00000010
+#define VMMDEV_REQUESTOR_CON_YES 0x00000020
+#define VMMDEV_REQUESTOR_CON_MASK 0x00000030
+#define VMMDEV_REQUESTOR_GRP_VBOX 0x00000080
+#define VMMDEV_REQUESTOR_TRUST_NOT_GIVEN 0x00000000
+#define VMMDEV_REQUESTOR_TRUST_UNTRUSTED 0x00001000
+#define VMMDEV_REQUESTOR_TRUST_LOW 0x00002000
+#define VMMDEV_REQUESTOR_TRUST_MEDIUM 0x00003000
+#define VMMDEV_REQUESTOR_TRUST_MEDIUM_PLUS 0x00004000
+#define VMMDEV_REQUESTOR_TRUST_HIGH 0x00005000
+#define VMMDEV_REQUESTOR_TRUST_SYSTEM 0x00006000
+#define VMMDEV_REQUESTOR_TRUST_PROTECTED 0x00007000
+#define VMMDEV_REQUESTOR_TRUST_MASK 0x00007000
+#define VMMDEV_REQUESTOR_USER_DEVICE 0x00008000
 enum vmmdev_hgcm_service_location_type {
   VMMDEV_HGCM_LOC_INVALID = 0,
   VMMDEV_HGCM_LOC_LOCALHOST = 1,
diff --git a/libc/kernel/uapi/linux/version.h b/libc/kernel/uapi/linux/version.h
index 43c04d1..5905e81 100644
--- a/libc/kernel/uapi/linux/version.h
+++ b/libc/kernel/uapi/linux/version.h
@@ -16,5 +16,5 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#define LINUX_VERSION_CODE 327683
+#define LINUX_VERSION_CODE 327939
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
diff --git a/libc/kernel/uapi/linux/videodev2.h b/libc/kernel/uapi/linux/videodev2.h
index 74e591d..3bd7138 100644
--- a/libc/kernel/uapi/linux/videodev2.h
+++ b/libc/kernel/uapi/linux/videodev2.h
@@ -44,6 +44,8 @@
 #define V4L2_FIELD_HAS_BOTTOM(field) ((field) == V4L2_FIELD_BOTTOM || (field) == V4L2_FIELD_INTERLACED || (field) == V4L2_FIELD_INTERLACED_TB || (field) == V4L2_FIELD_INTERLACED_BT || (field) == V4L2_FIELD_SEQ_TB || (field) == V4L2_FIELD_SEQ_BT)
 #define V4L2_FIELD_HAS_BOTH(field) ((field) == V4L2_FIELD_INTERLACED || (field) == V4L2_FIELD_INTERLACED_TB || (field) == V4L2_FIELD_INTERLACED_BT || (field) == V4L2_FIELD_SEQ_TB || (field) == V4L2_FIELD_SEQ_BT)
 #define V4L2_FIELD_HAS_T_OR_B(field) ((field) == V4L2_FIELD_BOTTOM || (field) == V4L2_FIELD_TOP || (field) == V4L2_FIELD_ALTERNATE)
+#define V4L2_FIELD_IS_INTERLACED(field) ((field) == V4L2_FIELD_INTERLACED || (field) == V4L2_FIELD_INTERLACED_TB || (field) == V4L2_FIELD_INTERLACED_BT)
+#define V4L2_FIELD_IS_SEQUENTIAL(field) ((field) == V4L2_FIELD_SEQ_TB || (field) == V4L2_FIELD_SEQ_BT)
 enum v4l2_buf_type {
   V4L2_BUF_TYPE_VIDEO_CAPTURE = 1,
   V4L2_BUF_TYPE_VIDEO_OUTPUT = 2,
@@ -62,7 +64,7 @@
   V4L2_BUF_TYPE_PRIVATE = 0x80,
 };
 #define V4L2_TYPE_IS_MULTIPLANAR(type) ((type) == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
-#define V4L2_TYPE_IS_OUTPUT(type) ((type) == V4L2_BUF_TYPE_VIDEO_OUTPUT || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE || (type) == V4L2_BUF_TYPE_VIDEO_OVERLAY || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY || (type) == V4L2_BUF_TYPE_VBI_OUTPUT || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT || (type) == V4L2_BUF_TYPE_SDR_OUTPUT)
+#define V4L2_TYPE_IS_OUTPUT(type) ((type) == V4L2_BUF_TYPE_VIDEO_OUTPUT || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE || (type) == V4L2_BUF_TYPE_VIDEO_OVERLAY || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY || (type) == V4L2_BUF_TYPE_VBI_OUTPUT || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT || (type) == V4L2_BUF_TYPE_SDR_OUTPUT || (type) == V4L2_BUF_TYPE_META_OUTPUT)
 enum v4l2_tuner_type {
   V4L2_TUNER_RADIO = 1,
   V4L2_TUNER_ANALOG_TV = 2,
@@ -242,6 +244,10 @@
 #define V4L2_PIX_FMT_YUV555 v4l2_fourcc('Y', 'U', 'V', 'O')
 #define V4L2_PIX_FMT_YUV565 v4l2_fourcc('Y', 'U', 'V', 'P')
 #define V4L2_PIX_FMT_YUV32 v4l2_fourcc('Y', 'U', 'V', '4')
+#define V4L2_PIX_FMT_AYUV32 v4l2_fourcc('A', 'Y', 'U', 'V')
+#define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V')
+#define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A')
+#define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X')
 #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4')
 #define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2')
 #define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0')
diff --git a/libc/kernel/uapi/linux/xdp_diag.h b/libc/kernel/uapi/linux/xdp_diag.h
new file mode 100644
index 0000000..f7d203f
--- /dev/null
+++ b/libc/kernel/uapi/linux/xdp_diag.h
@@ -0,0 +1,73 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_XDP_DIAG_H
+#define _LINUX_XDP_DIAG_H
+#include <linux/types.h>
+struct xdp_diag_req {
+  __u8 sdiag_family;
+  __u8 sdiag_protocol;
+  __u16 pad;
+  __u32 xdiag_ino;
+  __u32 xdiag_show;
+  __u32 xdiag_cookie[2];
+};
+struct xdp_diag_msg {
+  __u8 xdiag_family;
+  __u8 xdiag_type;
+  __u16 pad;
+  __u32 xdiag_ino;
+  __u32 xdiag_cookie[2];
+};
+#define XDP_SHOW_INFO (1 << 0)
+#define XDP_SHOW_RING_CFG (1 << 1)
+#define XDP_SHOW_UMEM (1 << 2)
+#define XDP_SHOW_MEMINFO (1 << 3)
+enum {
+  XDP_DIAG_NONE,
+  XDP_DIAG_INFO,
+  XDP_DIAG_UID,
+  XDP_DIAG_RX_RING,
+  XDP_DIAG_TX_RING,
+  XDP_DIAG_UMEM,
+  XDP_DIAG_UMEM_FILL_RING,
+  XDP_DIAG_UMEM_COMPLETION_RING,
+  XDP_DIAG_MEMINFO,
+  __XDP_DIAG_MAX,
+};
+#define XDP_DIAG_MAX (__XDP_DIAG_MAX - 1)
+struct xdp_diag_info {
+  __u32 ifindex;
+  __u32 queue_id;
+};
+struct xdp_diag_ring {
+  __u32 entries;
+};
+#define XDP_DU_F_ZEROCOPY (1 << 0)
+struct xdp_diag_umem {
+  __u64 size;
+  __u32 id;
+  __u32 num_pages;
+  __u32 chunk_size;
+  __u32 headroom;
+  __u32 ifindex;
+  __u32 queue_id;
+  __u32 flags;
+  __u32 refs;
+};
+#endif
diff --git a/libc/kernel/uapi/misc/fastrpc.h b/libc/kernel/uapi/misc/fastrpc.h
new file mode 100644
index 0000000..6f99e63
--- /dev/null
+++ b/libc/kernel/uapi/misc/fastrpc.h
@@ -0,0 +1,50 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __QCOM_FASTRPC_H__
+#define __QCOM_FASTRPC_H__
+#include <linux/types.h>
+#define FASTRPC_IOCTL_ALLOC_DMA_BUFF _IOWR('R', 1, struct fastrpc_alloc_dma_buf)
+#define FASTRPC_IOCTL_FREE_DMA_BUFF _IOWR('R', 2, __u32)
+#define FASTRPC_IOCTL_INVOKE _IOWR('R', 3, struct fastrpc_invoke)
+#define FASTRPC_IOCTL_INIT_ATTACH _IO('R', 4)
+#define FASTRPC_IOCTL_INIT_CREATE _IOWR('R', 5, struct fastrpc_init_create)
+struct fastrpc_invoke_args {
+  __u64 ptr;
+  __u64 length;
+  __s32 fd;
+  __u32 reserved;
+};
+struct fastrpc_invoke {
+  __u32 handle;
+  __u32 sc;
+  __u64 args;
+};
+struct fastrpc_init_create {
+  __u32 filelen;
+  __s32 filefd;
+  __u32 attrs;
+  __u32 siglen;
+  __u64 file;
+};
+struct fastrpc_alloc_dma_buf {
+  __s32 fd;
+  __u32 flags;
+  __u64 size;
+};
+#endif
diff --git a/libc/kernel/uapi/misc/habanalabs.h b/libc/kernel/uapi/misc/habanalabs.h
new file mode 100644
index 0000000..c2e25de
--- /dev/null
+++ b/libc/kernel/uapi/misc/habanalabs.h
@@ -0,0 +1,193 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef HABANALABS_H_
+#define HABANALABS_H_
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define GOYA_KMD_SRAM_RESERVED_SIZE_FROM_START 0x8000
+enum goya_queue_id {
+  GOYA_QUEUE_ID_DMA_0 = 0,
+  GOYA_QUEUE_ID_DMA_1,
+  GOYA_QUEUE_ID_DMA_2,
+  GOYA_QUEUE_ID_DMA_3,
+  GOYA_QUEUE_ID_DMA_4,
+  GOYA_QUEUE_ID_CPU_PQ,
+  GOYA_QUEUE_ID_MME,
+  GOYA_QUEUE_ID_TPC0,
+  GOYA_QUEUE_ID_TPC1,
+  GOYA_QUEUE_ID_TPC2,
+  GOYA_QUEUE_ID_TPC3,
+  GOYA_QUEUE_ID_TPC4,
+  GOYA_QUEUE_ID_TPC5,
+  GOYA_QUEUE_ID_TPC6,
+  GOYA_QUEUE_ID_TPC7,
+  GOYA_QUEUE_ID_SIZE
+};
+#define HL_INFO_HW_IP_INFO 0
+#define HL_INFO_HW_EVENTS 1
+#define HL_INFO_DRAM_USAGE 2
+#define HL_INFO_HW_IDLE 3
+#define HL_INFO_VERSION_MAX_LEN 128
+struct hl_info_hw_ip_info {
+  __u64 sram_base_address;
+  __u64 dram_base_address;
+  __u64 dram_size;
+  __u32 sram_size;
+  __u32 num_of_events;
+  __u32 device_id;
+  __u32 reserved[3];
+  __u32 armcp_cpld_version;
+  __u32 psoc_pci_pll_nr;
+  __u32 psoc_pci_pll_nf;
+  __u32 psoc_pci_pll_od;
+  __u32 psoc_pci_pll_div_factor;
+  __u8 tpc_enabled_mask;
+  __u8 dram_enabled;
+  __u8 pad[2];
+  __u8 armcp_version[HL_INFO_VERSION_MAX_LEN];
+};
+struct hl_info_dram_usage {
+  __u64 dram_free_mem;
+  __u64 ctx_dram_mem;
+};
+struct hl_info_hw_idle {
+  __u32 is_idle;
+  __u32 pad;
+};
+struct hl_info_args {
+  __u64 return_pointer;
+  __u32 return_size;
+  __u32 op;
+  __u32 ctx_id;
+  __u32 pad;
+};
+#define HL_CB_OP_CREATE 0
+#define HL_CB_OP_DESTROY 1
+struct hl_cb_in {
+  __u64 cb_handle;
+  __u32 op;
+  __u32 cb_size;
+  __u32 ctx_id;
+  __u32 pad;
+};
+struct hl_cb_out {
+  __u64 cb_handle;
+};
+union hl_cb_args {
+  struct hl_cb_in in;
+  struct hl_cb_out out;
+};
+struct hl_cs_chunk {
+  __u64 cb_handle;
+  __u32 queue_index;
+  __u32 cb_size;
+  __u32 cs_chunk_flags;
+  __u32 pad[11];
+};
+#define HL_CS_FLAGS_FORCE_RESTORE 0x1
+#define HL_CS_STATUS_SUCCESS 0
+struct hl_cs_in {
+  __u64 chunks_restore;
+  __u64 chunks_execute;
+  __u64 chunks_store;
+  __u32 num_chunks_restore;
+  __u32 num_chunks_execute;
+  __u32 num_chunks_store;
+  __u32 cs_flags;
+  __u32 ctx_id;
+};
+struct hl_cs_out {
+  __u64 seq;
+  __u32 status;
+  __u32 pad;
+};
+union hl_cs_args {
+  struct hl_cs_in in;
+  struct hl_cs_out out;
+};
+struct hl_wait_cs_in {
+  __u64 seq;
+  __u64 timeout_us;
+  __u32 ctx_id;
+  __u32 pad;
+};
+#define HL_WAIT_CS_STATUS_COMPLETED 0
+#define HL_WAIT_CS_STATUS_BUSY 1
+#define HL_WAIT_CS_STATUS_TIMEDOUT 2
+#define HL_WAIT_CS_STATUS_ABORTED 3
+#define HL_WAIT_CS_STATUS_INTERRUPTED 4
+struct hl_wait_cs_out {
+  __u32 status;
+  __u32 pad;
+};
+union hl_wait_cs_args {
+  struct hl_wait_cs_in in;
+  struct hl_wait_cs_out out;
+};
+#define HL_MEM_OP_ALLOC 0
+#define HL_MEM_OP_FREE 1
+#define HL_MEM_OP_MAP 2
+#define HL_MEM_OP_UNMAP 3
+#define HL_MEM_CONTIGUOUS 0x1
+#define HL_MEM_SHARED 0x2
+#define HL_MEM_USERPTR 0x4
+struct hl_mem_in {
+  union {
+    struct {
+      __u64 mem_size;
+    } alloc;
+    struct {
+      __u64 handle;
+    } free;
+    struct {
+      __u64 hint_addr;
+      __u64 handle;
+    } map_device;
+    struct {
+      __u64 host_virt_addr;
+      __u64 hint_addr;
+      __u64 mem_size;
+    } map_host;
+    struct {
+      __u64 device_virt_addr;
+    } unmap;
+  };
+  __u32 op;
+  __u32 flags;
+  __u32 ctx_id;
+  __u32 pad;
+};
+struct hl_mem_out {
+  union {
+    __u64 device_virt_addr;
+    __u64 handle;
+  };
+};
+union hl_mem_args {
+  struct hl_mem_in in;
+  struct hl_mem_out out;
+};
+#define HL_IOCTL_INFO _IOWR('H', 0x01, struct hl_info_args)
+#define HL_IOCTL_CB _IOWR('H', 0x02, union hl_cb_args)
+#define HL_IOCTL_CS _IOWR('H', 0x03, union hl_cs_args)
+#define HL_IOCTL_WAIT_CS _IOWR('H', 0x04, union hl_wait_cs_args)
+#define HL_IOCTL_MEMORY _IOWR('H', 0x05, union hl_mem_args)
+#define HL_COMMAND_START 0x01
+#define HL_COMMAND_END 0x06
+#endif
diff --git a/libc/kernel/uapi/mtd/ubi-user.h b/libc/kernel/uapi/mtd/ubi-user.h
index 8405536..866fbd2 100644
--- a/libc/kernel/uapi/mtd/ubi-user.h
+++ b/libc/kernel/uapi/mtd/ubi-user.h
@@ -27,6 +27,8 @@
 #define UBI_IOCRMVOL _IOW(UBI_IOC_MAGIC, 1, __s32)
 #define UBI_IOCRSVOL _IOW(UBI_IOC_MAGIC, 2, struct ubi_rsvol_req)
 #define UBI_IOCRNVOL _IOW(UBI_IOC_MAGIC, 3, struct ubi_rnvol_req)
+#define UBI_IOCRPEB _IOW(UBI_IOC_MAGIC, 4, __s32)
+#define UBI_IOCSPEB _IOW(UBI_IOC_MAGIC, 5, __s32)
 #define UBI_CTRL_IOC_MAGIC 'o'
 #define UBI_IOCATT _IOW(UBI_CTRL_IOC_MAGIC, 64, struct ubi_attach_req)
 #define UBI_IOCDET _IOW(UBI_CTRL_IOC_MAGIC, 65, __s32)
diff --git a/libc/kernel/uapi/rdma/bnxt_re-abi.h b/libc/kernel/uapi/rdma/bnxt_re-abi.h
index 4e29624..3e45dc3 100644
--- a/libc/kernel/uapi/rdma/bnxt_re-abi.h
+++ b/libc/kernel/uapi/rdma/bnxt_re-abi.h
@@ -20,6 +20,12 @@
 #define __BNXT_RE_UVERBS_ABI_H__
 #include <linux/types.h>
 #define BNXT_RE_ABI_VERSION 1
+#define BNXT_RE_CHIP_ID0_CHIP_NUM_SFT 0x00
+#define BNXT_RE_CHIP_ID0_CHIP_REV_SFT 0x10
+#define BNXT_RE_CHIP_ID0_CHIP_MET_SFT 0x18
+enum {
+  BNXT_RE_UCNTX_CMASK_HAVE_CCTX = 0x1ULL
+};
 struct bnxt_re_uctx_resp {
   __u32 dev_id;
   __u32 max_qp;
@@ -27,6 +33,9 @@
   __u32 cqe_sz;
   __u32 max_cqd;
   __u32 rsvd;
+  __aligned_u64 comp_mask;
+  __u32 chip_id0;
+  __u32 chip_id1;
 };
 struct bnxt_re_pd_resp {
   __u32 pdid;
diff --git a/libc/kernel/uapi/rdma/ib_user_verbs.h b/libc/kernel/uapi/rdma/ib_user_verbs.h
index 3154b7a..25df6e2 100644
--- a/libc/kernel/uapi/rdma/ib_user_verbs.h
+++ b/libc/kernel/uapi/rdma/ib_user_verbs.h
@@ -201,6 +201,8 @@
   struct ib_uverbs_tm_caps tm_caps;
   struct ib_uverbs_cq_moderation_caps cq_moderation_caps;
   __aligned_u64 max_dm_size;
+  __u32 xrc_odp_caps;
+  __u32 reserved;
 };
 struct ib_uverbs_query_port {
   __aligned_u64 response;
diff --git a/libc/kernel/uapi/rdma/mlx5-abi.h b/libc/kernel/uapi/rdma/mlx5-abi.h
index 4c85c6c..f1ab147 100644
--- a/libc/kernel/uapi/rdma/mlx5-abi.h
+++ b/libc/kernel/uapi/rdma/mlx5-abi.h
@@ -164,6 +164,7 @@
   MLX5_IB_QUERY_DEV_RESP_FLAGS_CQE_128B_COMP = 1 << 0,
   MLX5_IB_QUERY_DEV_RESP_FLAGS_CQE_128B_PAD = 1 << 1,
   MLX5_IB_QUERY_DEV_RESP_PACKET_BASED_CREDIT_MODE = 1 << 2,
+  MLX5_IB_QUERY_DEV_RESP_FLAGS_SCAT2CQE_DCT = 1 << 3,
 };
 enum mlx5_ib_tunnel_offloads {
   MLX5_IB_TUNNELED_OFFLOADS_VXLAN = 1 << 0,
diff --git a/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h b/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
index dcc3d85..88b84c2 100644
--- a/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
+++ b/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
@@ -58,6 +58,13 @@
   MLX5_IB_ATTR_DEVX_OBJ_QUERY_CMD_IN,
   MLX5_IB_ATTR_DEVX_OBJ_QUERY_CMD_OUT,
 };
+enum mlx5_ib_devx_obj_query_async_attrs {
+  MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+  MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_CMD_IN,
+  MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_FD,
+  MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_WR_ID,
+  MLX5_IB_ATTR_DEVX_OBJ_QUERY_ASYNC_OUT_LEN,
+};
 enum mlx5_ib_devx_query_eqn_attrs {
   MLX5_IB_ATTR_DEVX_QUERY_EQN_USER_VEC = (1U << UVERBS_ID_NS_SHIFT),
   MLX5_IB_ATTR_DEVX_QUERY_EQN_DEV_EQN,
@@ -67,6 +74,7 @@
   MLX5_IB_METHOD_DEVX_OBJ_DESTROY,
   MLX5_IB_METHOD_DEVX_OBJ_MODIFY,
   MLX5_IB_METHOD_DEVX_OBJ_QUERY,
+  MLX5_IB_METHOD_DEVX_OBJ_ASYNC_QUERY,
 };
 enum mlx5_ib_devx_umem_reg_attrs {
   MLX5_IB_ATTR_DEVX_UMEM_REG_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
@@ -82,11 +90,18 @@
   MLX5_IB_METHOD_DEVX_UMEM_REG = (1U << UVERBS_ID_NS_SHIFT),
   MLX5_IB_METHOD_DEVX_UMEM_DEREG,
 };
+enum mlx5_ib_devx_async_cmd_fd_alloc_attrs {
+  MLX5_IB_ATTR_DEVX_ASYNC_CMD_FD_ALLOC_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
+};
+enum mlx5_ib_devx_async_cmd_fd_methods {
+  MLX5_IB_METHOD_DEVX_ASYNC_CMD_FD_ALLOC = (1U << UVERBS_ID_NS_SHIFT),
+};
 enum mlx5_ib_objects {
   MLX5_IB_OBJECT_DEVX = (1U << UVERBS_ID_NS_SHIFT),
   MLX5_IB_OBJECT_DEVX_OBJ,
   MLX5_IB_OBJECT_DEVX_UMEM,
   MLX5_IB_OBJECT_FLOW_MATCHER,
+  MLX5_IB_OBJECT_DEVX_ASYNC_CMD_FD,
 };
 enum mlx5_ib_flow_matcher_create_attrs {
   MLX5_IB_ATTR_FLOW_MATCHER_CREATE_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
diff --git a/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h b/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
index dc246e5..e83b9e2 100644
--- a/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
+++ b/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
@@ -32,4 +32,8 @@
   MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L3_TUNNEL_TO_L2 = 0x2,
   MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L2_TO_L3_TUNNEL = 0x3,
 };
+struct mlx5_ib_uapi_devx_async_cmd_hdr {
+  __aligned_u64 wr_id;
+  __u8 out_data[];
+};
 #endif
diff --git a/libc/kernel/uapi/rdma/rdma_netlink.h b/libc/kernel/uapi/rdma/rdma_netlink.h
index 69805f1..7730edf 100644
--- a/libc/kernel/uapi/rdma/rdma_netlink.h
+++ b/libc/kernel/uapi/rdma/rdma_netlink.h
@@ -20,30 +20,24 @@
 #define _UAPI_RDMA_NETLINK_H
 #include <linux/types.h>
 enum {
-  RDMA_NL_RDMA_CM = 1,
-  RDMA_NL_IWCM,
+  RDMA_NL_IWCM = 2,
   RDMA_NL_RSVD,
   RDMA_NL_LS,
   RDMA_NL_NLDEV,
   RDMA_NL_NUM_CLIENTS
 };
 enum {
-  RDMA_NL_GROUP_CM = 1,
-  RDMA_NL_GROUP_IWPM,
+  RDMA_NL_GROUP_IWPM = 2,
   RDMA_NL_GROUP_LS,
   RDMA_NL_NUM_GROUPS
 };
 #define RDMA_NL_GET_CLIENT(type) ((type & (((1 << 6) - 1) << 10)) >> 10)
 #define RDMA_NL_GET_OP(type) (type & ((1 << 10) - 1))
 #define RDMA_NL_GET_TYPE(client,op) ((client << 10) + op)
+#define IWPM_UABI_VERSION_MIN 3
+#define IWPM_UABI_VERSION 4
 enum {
-  RDMA_NL_RDMA_CM_ID_STATS = 0,
-  RDMA_NL_RDMA_CM_NUM_OPS
-};
-enum {
-  RDMA_NL_RDMA_CM_ATTR_SRC_ADDR = 1,
-  RDMA_NL_RDMA_CM_ATTR_DST_ADDR,
-  RDMA_NL_RDMA_CM_NUM_ATTR,
+  IWPM_FLAGS_NO_PORT_MAP = (1 << 0),
 };
 enum {
   RDMA_NL_IWPM_REG_PID = 0,
@@ -54,6 +48,7 @@
   RDMA_NL_IWPM_HANDLE_ERR,
   RDMA_NL_IWPM_MAPINFO,
   RDMA_NL_IWPM_MAPINFO_NUM,
+  RDMA_NL_IWPM_HELLO,
   RDMA_NL_IWPM_NUM_OPS
 };
 struct rdma_cm_id_stats {
@@ -87,18 +82,33 @@
   IWPM_NLA_MANAGE_MAPPING_UNSPEC = 0,
   IWPM_NLA_MANAGE_MAPPING_SEQ,
   IWPM_NLA_MANAGE_ADDR,
-  IWPM_NLA_MANAGE_MAPPED_LOC_ADDR,
+  IWPM_NLA_MANAGE_FLAGS,
+  IWPM_NLA_MANAGE_MAPPING_MAX
+};
+enum {
+  IWPM_NLA_RMANAGE_MAPPING_UNSPEC = 0,
+  IWPM_NLA_RMANAGE_MAPPING_SEQ,
+  IWPM_NLA_RMANAGE_ADDR,
+  IWPM_NLA_RMANAGE_MAPPED_LOC_ADDR,
+  IWPM_NLA_MANAGE_MAPPED_LOC_ADDR = IWPM_NLA_RMANAGE_MAPPED_LOC_ADDR,
   IWPM_NLA_RMANAGE_MAPPING_ERR,
   IWPM_NLA_RMANAGE_MAPPING_MAX
 };
-#define IWPM_NLA_MANAGE_MAPPING_MAX 3
-#define IWPM_NLA_QUERY_MAPPING_MAX 4
 #define IWPM_NLA_MAPINFO_SEND_MAX 3
+#define IWPM_NLA_REMOVE_MAPPING_MAX 3
 enum {
   IWPM_NLA_QUERY_MAPPING_UNSPEC = 0,
   IWPM_NLA_QUERY_MAPPING_SEQ,
   IWPM_NLA_QUERY_LOCAL_ADDR,
   IWPM_NLA_QUERY_REMOTE_ADDR,
+  IWPM_NLA_QUERY_FLAGS,
+  IWPM_NLA_QUERY_MAPPING_MAX,
+};
+enum {
+  IWPM_NLA_RQUERY_MAPPING_UNSPEC = 0,
+  IWPM_NLA_RQUERY_MAPPING_SEQ,
+  IWPM_NLA_RQUERY_LOCAL_ADDR,
+  IWPM_NLA_RQUERY_REMOTE_ADDR,
   IWPM_NLA_RQUERY_MAPPED_LOC_ADDR,
   IWPM_NLA_RQUERY_MAPPED_REM_ADDR,
   IWPM_NLA_RQUERY_MAPPING_ERR,
@@ -114,6 +124,7 @@
   IWPM_NLA_MAPINFO_UNSPEC = 0,
   IWPM_NLA_MAPINFO_LOCAL_ADDR,
   IWPM_NLA_MAPINFO_MAPPED_ADDR,
+  IWPM_NLA_MAPINFO_FLAGS,
   IWPM_NLA_MAPINFO_MAX
 };
 enum {
@@ -130,6 +141,11 @@
   IWPM_NLA_ERR_MAX
 };
 enum {
+  IWPM_NLA_HELLO_UNSPEC = 0,
+  IWPM_NLA_HELLO_ABI_VERSION,
+  IWPM_NLA_HELLO_MAX
+};
+enum {
   RDMA_NL_LS_OP_RESOLVE = 0,
   RDMA_NL_LS_OP_SET_TIMEOUT,
   RDMA_NL_LS_OP_IP_RESOLVE,
@@ -174,7 +190,9 @@
   RDMA_NLDEV_CMD_UNSPEC,
   RDMA_NLDEV_CMD_GET,
   RDMA_NLDEV_CMD_SET,
-  RDMA_NLDEV_CMD_PORT_GET = 5,
+  RDMA_NLDEV_CMD_NEWLINK,
+  RDMA_NLDEV_CMD_DELLINK,
+  RDMA_NLDEV_CMD_PORT_GET,
   RDMA_NLDEV_CMD_RES_GET = 9,
   RDMA_NLDEV_CMD_RES_QP_GET,
   RDMA_NLDEV_CMD_RES_CM_ID_GET,
@@ -252,6 +270,12 @@
   RDMA_NLDEV_ATTR_DRIVER_U32,
   RDMA_NLDEV_ATTR_DRIVER_S64,
   RDMA_NLDEV_ATTR_DRIVER_U64,
+  RDMA_NLDEV_ATTR_RES_PDN,
+  RDMA_NLDEV_ATTR_RES_CQN,
+  RDMA_NLDEV_ATTR_RES_MRN,
+  RDMA_NLDEV_ATTR_RES_CM_IDN,
+  RDMA_NLDEV_ATTR_RES_CTXN,
+  RDMA_NLDEV_ATTR_LINK_TYPE,
   RDMA_NLDEV_ATTR_MAX
 };
 #endif
diff --git a/libc/kernel/uapi/rdma/rdma_user_cm.h b/libc/kernel/uapi/rdma/rdma_user_cm.h
index b200491..9042b6f 100644
--- a/libc/kernel/uapi/rdma/rdma_user_cm.h
+++ b/libc/kernel/uapi/rdma/rdma_user_cm.h
@@ -238,6 +238,9 @@
   RDMA_OPTION_ID_TOS = 0,
   RDMA_OPTION_ID_REUSEADDR = 1,
   RDMA_OPTION_ID_AFONLY = 2,
+  RDMA_OPTION_ID_ACK_TIMEOUT = 3
+};
+enum {
   RDMA_OPTION_IB_PATH = 1
 };
 struct rdma_ucm_set_option {
diff --git a/libc/kernel/uapi/rdma/rdma_user_rxe.h b/libc/kernel/uapi/rdma/rdma_user_rxe.h
index a57ed1a..e4a2f40 100644
--- a/libc/kernel/uapi/rdma/rdma_user_rxe.h
+++ b/libc/kernel/uapi/rdma/rdma_user_rxe.h
@@ -39,8 +39,7 @@
 struct rxe_av {
   __u8 port_num;
   __u8 network_type;
-  __u16 reserved1;
-  __u32 reserved2;
+  __u8 dmac[6];
   struct rxe_global_route grh;
   union {
     struct sockaddr_in _sockaddr_in;
diff --git a/libc/kernel/uapi/sound/asound.h b/libc/kernel/uapi/sound/asound.h
index e5473a5..abc81dd 100644
--- a/libc/kernel/uapi/sound/asound.h
+++ b/libc/kernel/uapi/sound/asound.h
@@ -24,6 +24,7 @@
 #include <sys/ioctl.h>
 #endif
 #include <stdlib.h>
+#include <time.h>
 #define SNDRV_PROTOCOL_VERSION(major,minor,subminor) (((major) << 16) | ((minor) << 8) | (subminor))
 #define SNDRV_PROTOCOL_MAJOR(version) (((version) >> 16) & 0xffff)
 #define SNDRV_PROTOCOL_MINOR(version) (((version) >> 8) & 0xff)