Update to v5.11 kernel headers.

Kernel headers coming from:

Git: https://android.googlesource.com/kernel/common/
Branch: android-mainline
Tag: android-mainline-5.11

Test: Built cuttlefish and flame images. Ran bionic unit tests on both.
Change-Id: Ie60337aafad4bda55af99b6c8fe9f56bf2fa787f
diff --git a/libc/kernel/uapi/asm-arm/asm/signal.h b/libc/kernel/uapi/asm-arm/asm/signal.h
index 51a3022..5f7e0c5 100644
--- a/libc/kernel/uapi/asm-arm/asm/signal.h
+++ b/libc/kernel/uapi/asm-arm/asm/signal.h
@@ -59,17 +59,8 @@
 #define __SIGRTMIN 32
 #define __SIGRTMAX _KERNEL__NSIG
 #define SIGSWI 32
-#define SA_NOCLDSTOP 0x00000001
-#define SA_NOCLDWAIT 0x00000002
-#define SA_SIGINFO 0x00000004
 #define SA_THIRTYTWO 0x02000000
 #define SA_RESTORER 0x04000000
-#define SA_ONSTACK 0x08000000
-#define SA_RESTART 0x10000000
-#define SA_NODEFER 0x40000000
-#define SA_RESETHAND 0x80000000
-#define SA_NOMASK SA_NODEFER
-#define SA_ONESHOT SA_RESETHAND
 #define MINSIGSTKSZ 2048
 #define SIGSTKSZ 8192
 #include <asm-generic/signal-defs.h>
diff --git a/libc/kernel/uapi/asm-arm/asm/unistd-common.h b/libc/kernel/uapi/asm-arm/asm/unistd-common.h
index 060d626..6068bd2 100644
--- a/libc/kernel/uapi/asm-arm/asm/unistd-common.h
+++ b/libc/kernel/uapi/asm-arm/asm/unistd-common.h
@@ -412,4 +412,5 @@
 #define __NR_pidfd_getfd (__NR_SYSCALL_BASE + 438)
 #define __NR_faccessat2 (__NR_SYSCALL_BASE + 439)
 #define __NR_process_madvise (__NR_SYSCALL_BASE + 440)
+#define __NR_epoll_pwait2 (__NR_SYSCALL_BASE + 441)
 #endif
diff --git a/libc/kernel/uapi/asm-arm64/asm/kvm.h b/libc/kernel/uapi/asm-arm64/asm/kvm.h
index 32b6a2b..014504a 100644
--- a/libc/kernel/uapi/asm-arm64/asm/kvm.h
+++ b/libc/kernel/uapi/asm-arm64/asm/kvm.h
@@ -97,8 +97,6 @@
 struct kvm_sync_regs {
   __u64 device_irq_level;
 };
-struct kvm_arch_memory_slot {
-};
 struct kvm_pmu_event_filter {
   __u16 base_event;
   __u16 nevents;
diff --git a/libc/kernel/uapi/asm-generic/siginfo.h b/libc/kernel/uapi/asm-generic/siginfo.h
index 16a85c3..8bcbabb 100644
--- a/libc/kernel/uapi/asm-generic/siginfo.h
+++ b/libc/kernel/uapi/asm-generic/siginfo.h
@@ -209,7 +209,8 @@
 #define POLL_HUP 6
 #define NSIGPOLL 6
 #define SYS_SECCOMP 1
-#define NSIGSYS 1
+#define SYS_USER_DISPATCH 2
+#define NSIGSYS 2
 #define EMT_TAGOVF 1
 #define NSIGEMT 1
 #define SIGEV_SIGNAL 0
diff --git a/libc/kernel/uapi/asm-generic/signal-defs.h b/libc/kernel/uapi/asm-generic/signal-defs.h
index a6de2e4..c7e9504 100644
--- a/libc/kernel/uapi/asm-generic/signal-defs.h
+++ b/libc/kernel/uapi/asm-generic/signal-defs.h
@@ -19,6 +19,31 @@
 #ifndef __ASM_GENERIC_SIGNAL_DEFS_H
 #define __ASM_GENERIC_SIGNAL_DEFS_H
 #include <linux/compiler.h>
+#ifndef SA_NOCLDSTOP
+#define SA_NOCLDSTOP 0x00000001
+#endif
+#ifndef SA_NOCLDWAIT
+#define SA_NOCLDWAIT 0x00000002
+#endif
+#ifndef SA_SIGINFO
+#define SA_SIGINFO 0x00000004
+#endif
+#define SA_UNSUPPORTED 0x00000400
+#define SA_EXPOSE_TAGBITS 0x00000800
+#ifndef SA_ONSTACK
+#define SA_ONSTACK 0x08000000
+#endif
+#ifndef SA_RESTART
+#define SA_RESTART 0x10000000
+#endif
+#ifndef SA_NODEFER
+#define SA_NODEFER 0x40000000
+#endif
+#ifndef SA_RESETHAND
+#define SA_RESETHAND 0x80000000
+#endif
+#define SA_NOMASK SA_NODEFER
+#define SA_ONESHOT SA_RESETHAND
 #ifndef SIG_BLOCK
 #define SIG_BLOCK 0
 #endif
diff --git a/libc/kernel/uapi/asm-generic/signal.h b/libc/kernel/uapi/asm-generic/signal.h
index 1210cbc..874fece 100644
--- a/libc/kernel/uapi/asm-generic/signal.h
+++ b/libc/kernel/uapi/asm-generic/signal.h
@@ -60,15 +60,6 @@
 #ifndef __SIGRTMAX
 #define __SIGRTMAX _KERNEL__NSIG
 #endif
-#define SA_NOCLDSTOP 0x00000001
-#define SA_NOCLDWAIT 0x00000002
-#define SA_SIGINFO 0x00000004
-#define SA_ONSTACK 0x08000000
-#define SA_RESTART 0x10000000
-#define SA_NODEFER 0x40000000
-#define SA_RESETHAND 0x80000000
-#define SA_NOMASK SA_NODEFER
-#define SA_ONESHOT SA_RESETHAND
 #if !defined(MINSIGSTKSZ) || !defined(SIGSTKSZ)
 #define MINSIGSTKSZ 2048
 #define SIGSTKSZ 8192
diff --git a/libc/kernel/uapi/asm-generic/socket.h b/libc/kernel/uapi/asm-generic/socket.h
index 11557aa..7372be8 100644
--- a/libc/kernel/uapi/asm-generic/socket.h
+++ b/libc/kernel/uapi/asm-generic/socket.h
@@ -95,6 +95,8 @@
 #define SO_RCVTIMEO_NEW 66
 #define SO_SNDTIMEO_NEW 67
 #define SO_DETACH_REUSEPORT_BPF 68
+#define SO_PREFER_BUSY_POLL 69
+#define SO_BUSY_POLL_BUDGET 70
 #if __BITS_PER_LONG == 64 || defined(__x86_64__) && defined(__ILP32__)
 #define SO_TIMESTAMP SO_TIMESTAMP_OLD
 #define SO_TIMESTAMPNS SO_TIMESTAMPNS_OLD
diff --git a/libc/kernel/uapi/asm-generic/unistd.h b/libc/kernel/uapi/asm-generic/unistd.h
index 412e751..f284254 100644
--- a/libc/kernel/uapi/asm-generic/unistd.h
+++ b/libc/kernel/uapi/asm-generic/unistd.h
@@ -401,8 +401,9 @@
 #define __NR_pidfd_getfd 438
 #define __NR_faccessat2 439
 #define __NR_process_madvise 440
+#define __NR_epoll_pwait2 441
 #undef __NR_syscalls
-#define __NR_syscalls 441
+#define __NR_syscalls 442
 #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-x86/asm/kvm.h b/libc/kernel/uapi/asm-x86/asm/kvm.h
index 6eaaec6..7740002 100644
--- a/libc/kernel/uapi/asm-x86/asm/kvm.h
+++ b/libc/kernel/uapi/asm-x86/asm/kvm.h
@@ -22,6 +22,7 @@
 #include <linux/ioctl.h>
 #define KVM_PIO_PAGE_OFFSET 1
 #define KVM_COALESCED_MMIO_PAGE_OFFSET 2
+#define KVM_DIRTY_LOG_PAGE_OFFSET 64
 #define DE_VECTOR 0
 #define DB_VECTOR 1
 #define BP_VECTOR 3
diff --git a/libc/kernel/uapi/asm-x86/asm/sgx.h b/libc/kernel/uapi/asm-x86/asm/sgx.h
new file mode 100644
index 0000000..349791a
--- /dev/null
+++ b/libc/kernel/uapi/asm-x86/asm/sgx.h
@@ -0,0 +1,61 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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_ASM_X86_SGX_H
+#define _UAPI_ASM_X86_SGX_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+enum sgx_page_flags {
+  SGX_PAGE_MEASURE = 0x01,
+};
+#define SGX_MAGIC 0xA4
+#define SGX_IOC_ENCLAVE_CREATE _IOW(SGX_MAGIC, 0x00, struct sgx_enclave_create)
+#define SGX_IOC_ENCLAVE_ADD_PAGES _IOWR(SGX_MAGIC, 0x01, struct sgx_enclave_add_pages)
+#define SGX_IOC_ENCLAVE_INIT _IOW(SGX_MAGIC, 0x02, struct sgx_enclave_init)
+#define SGX_IOC_ENCLAVE_PROVISION _IOW(SGX_MAGIC, 0x03, struct sgx_enclave_provision)
+struct sgx_enclave_create {
+  __u64 src;
+};
+struct sgx_enclave_add_pages {
+  __u64 src;
+  __u64 offset;
+  __u64 length;
+  __u64 secinfo;
+  __u64 flags;
+  __u64 count;
+};
+struct sgx_enclave_init {
+  __u64 sigstruct;
+};
+struct sgx_enclave_provision {
+  __u64 fd;
+};
+struct sgx_enclave_run;
+typedef int(* sgx_enclave_user_handler_t) (long rdi, long rsi, long rdx, long rsp, long r8, long r9, struct sgx_enclave_run * run);
+struct sgx_enclave_run {
+  __u64 tcs;
+  __u32 function;
+  __u16 exception_vector;
+  __u16 exception_error_code;
+  __u64 exception_addr;
+  __u64 user_handler;
+  __u64 user_data;
+  __u8 reserved[216];
+};
+typedef int(* vdso_sgx_enter_enclave_t) (unsigned long rdi, unsigned long rsi, unsigned long rdx, unsigned int function, unsigned long r8, unsigned long r9, struct sgx_enclave_run * run);
+#endif
diff --git a/libc/kernel/uapi/asm-x86/asm/signal.h b/libc/kernel/uapi/asm-x86/asm/signal.h
index c7caa97..8226da8 100644
--- a/libc/kernel/uapi/asm-x86/asm/signal.h
+++ b/libc/kernel/uapi/asm-x86/asm/signal.h
@@ -62,15 +62,6 @@
 #define SIGUNUSED 31
 #define __SIGRTMIN 32
 #define __SIGRTMAX _KERNEL__NSIG
-#define SA_NOCLDSTOP 0x00000001u
-#define SA_NOCLDWAIT 0x00000002u
-#define SA_SIGINFO 0x00000004u
-#define SA_ONSTACK 0x08000000u
-#define SA_RESTART 0x10000000u
-#define SA_NODEFER 0x40000000u
-#define SA_RESETHAND 0x80000000u
-#define SA_NOMASK SA_NODEFER
-#define SA_ONESHOT SA_RESETHAND
 #define SA_RESTORER 0x04000000
 #define MINSIGSTKSZ 2048
 #define SIGSTKSZ 8192
diff --git a/libc/kernel/uapi/asm-x86/asm/svm.h b/libc/kernel/uapi/asm-x86/asm/svm.h
index 4de0feb..db9918b 100644
--- a/libc/kernel/uapi/asm-x86/asm/svm.h
+++ b/libc/kernel/uapi/asm-x86/asm/svm.h
@@ -93,10 +93,28 @@
 #define SVM_EXIT_MWAIT_COND 0x08c
 #define SVM_EXIT_XSETBV 0x08d
 #define SVM_EXIT_RDPRU 0x08e
+#define SVM_EXIT_EFER_WRITE_TRAP 0x08f
+#define SVM_EXIT_CR0_WRITE_TRAP 0x090
+#define SVM_EXIT_CR1_WRITE_TRAP 0x091
+#define SVM_EXIT_CR2_WRITE_TRAP 0x092
+#define SVM_EXIT_CR3_WRITE_TRAP 0x093
+#define SVM_EXIT_CR4_WRITE_TRAP 0x094
+#define SVM_EXIT_CR5_WRITE_TRAP 0x095
+#define SVM_EXIT_CR6_WRITE_TRAP 0x096
+#define SVM_EXIT_CR7_WRITE_TRAP 0x097
+#define SVM_EXIT_CR8_WRITE_TRAP 0x098
+#define SVM_EXIT_CR9_WRITE_TRAP 0x099
+#define SVM_EXIT_CR10_WRITE_TRAP 0x09a
+#define SVM_EXIT_CR11_WRITE_TRAP 0x09b
+#define SVM_EXIT_CR12_WRITE_TRAP 0x09c
+#define SVM_EXIT_CR13_WRITE_TRAP 0x09d
+#define SVM_EXIT_CR14_WRITE_TRAP 0x09e
+#define SVM_EXIT_CR15_WRITE_TRAP 0x09f
 #define SVM_EXIT_INVPCID 0x0a2
 #define SVM_EXIT_NPF 0x400
 #define SVM_EXIT_AVIC_INCOMPLETE_IPI 0x401
 #define SVM_EXIT_AVIC_UNACCELERATED_ACCESS 0x402
+#define SVM_EXIT_VMGEXIT 0x403
 #define SVM_VMGEXIT_MMIO_READ 0x80000001
 #define SVM_VMGEXIT_MMIO_WRITE 0x80000002
 #define SVM_VMGEXIT_NMI_COMPLETE 0x80000003
@@ -106,5 +124,5 @@
 #define SVM_VMGEXIT_GET_AP_JUMP_TABLE 1
 #define SVM_VMGEXIT_UNSUPPORTED_EVENT 0x8000ffff
 #define SVM_EXIT_ERR - 1
-#define SVM_EXIT_REASONS { SVM_EXIT_READ_CR0, "read_cr0" }, { SVM_EXIT_READ_CR2, "read_cr2" }, { SVM_EXIT_READ_CR3, "read_cr3" }, { SVM_EXIT_READ_CR4, "read_cr4" }, { SVM_EXIT_READ_CR8, "read_cr8" }, { SVM_EXIT_WRITE_CR0, "write_cr0" }, { SVM_EXIT_WRITE_CR2, "write_cr2" }, { SVM_EXIT_WRITE_CR3, "write_cr3" }, { SVM_EXIT_WRITE_CR4, "write_cr4" }, { SVM_EXIT_WRITE_CR8, "write_cr8" }, { SVM_EXIT_READ_DR0, "read_dr0" }, { SVM_EXIT_READ_DR1, "read_dr1" }, { SVM_EXIT_READ_DR2, "read_dr2" }, { SVM_EXIT_READ_DR3, "read_dr3" }, { SVM_EXIT_READ_DR4, "read_dr4" }, { SVM_EXIT_READ_DR5, "read_dr5" }, { SVM_EXIT_READ_DR6, "read_dr6" }, { SVM_EXIT_READ_DR7, "read_dr7" }, { SVM_EXIT_WRITE_DR0, "write_dr0" }, { SVM_EXIT_WRITE_DR1, "write_dr1" }, { SVM_EXIT_WRITE_DR2, "write_dr2" }, { SVM_EXIT_WRITE_DR3, "write_dr3" }, { SVM_EXIT_WRITE_DR4, "write_dr4" }, { SVM_EXIT_WRITE_DR5, "write_dr5" }, { SVM_EXIT_WRITE_DR6, "write_dr6" }, { SVM_EXIT_WRITE_DR7, "write_dr7" }, { SVM_EXIT_EXCP_BASE + DE_VECTOR, "DE excp" }, { SVM_EXIT_EXCP_BASE + DB_VECTOR, "DB excp" }, { SVM_EXIT_EXCP_BASE + BP_VECTOR, "BP excp" }, { SVM_EXIT_EXCP_BASE + OF_VECTOR, "OF excp" }, { SVM_EXIT_EXCP_BASE + BR_VECTOR, "BR excp" }, { SVM_EXIT_EXCP_BASE + UD_VECTOR, "UD excp" }, { SVM_EXIT_EXCP_BASE + NM_VECTOR, "NM excp" }, { SVM_EXIT_EXCP_BASE + DF_VECTOR, "DF excp" }, { SVM_EXIT_EXCP_BASE + TS_VECTOR, "TS excp" }, { SVM_EXIT_EXCP_BASE + NP_VECTOR, "NP excp" }, { SVM_EXIT_EXCP_BASE + SS_VECTOR, "SS excp" }, { SVM_EXIT_EXCP_BASE + GP_VECTOR, "GP excp" }, { SVM_EXIT_EXCP_BASE + PF_VECTOR, "PF excp" }, { SVM_EXIT_EXCP_BASE + MF_VECTOR, "MF excp" }, { SVM_EXIT_EXCP_BASE + AC_VECTOR, "AC excp" }, { SVM_EXIT_EXCP_BASE + MC_VECTOR, "MC excp" }, { SVM_EXIT_EXCP_BASE + XM_VECTOR, "XF excp" }, { SVM_EXIT_INTR, "interrupt" }, { SVM_EXIT_NMI, "nmi" }, { SVM_EXIT_SMI, "smi" }, { SVM_EXIT_INIT, "init" }, { SVM_EXIT_VINTR, "vintr" }, { SVM_EXIT_CR0_SEL_WRITE, "cr0_sel_write" }, { SVM_EXIT_IDTR_READ, "read_idtr" }, { SVM_EXIT_GDTR_READ, "read_gdtr" }, { SVM_EXIT_LDTR_READ, "read_ldtr" }, { SVM_EXIT_TR_READ, "read_rt" }, { SVM_EXIT_IDTR_WRITE, "write_idtr" }, { SVM_EXIT_GDTR_WRITE, "write_gdtr" }, { SVM_EXIT_LDTR_WRITE, "write_ldtr" }, { SVM_EXIT_TR_WRITE, "write_rt" }, { SVM_EXIT_RDTSC, "rdtsc" }, { SVM_EXIT_RDPMC, "rdpmc" }, { SVM_EXIT_PUSHF, "pushf" }, { SVM_EXIT_POPF, "popf" }, { SVM_EXIT_CPUID, "cpuid" }, { SVM_EXIT_RSM, "rsm" }, { SVM_EXIT_IRET, "iret" }, { SVM_EXIT_SWINT, "swint" }, { SVM_EXIT_INVD, "invd" }, { SVM_EXIT_PAUSE, "pause" }, { SVM_EXIT_HLT, "hlt" }, { SVM_EXIT_INVLPG, "invlpg" }, { SVM_EXIT_INVLPGA, "invlpga" }, { SVM_EXIT_IOIO, "io" }, { SVM_EXIT_MSR, "msr" }, { SVM_EXIT_TASK_SWITCH, "task_switch" }, { SVM_EXIT_FERR_FREEZE, "ferr_freeze" }, { SVM_EXIT_SHUTDOWN, "shutdown" }, { SVM_EXIT_VMRUN, "vmrun" }, { SVM_EXIT_VMMCALL, "hypercall" }, { SVM_EXIT_VMLOAD, "vmload" }, { SVM_EXIT_VMSAVE, "vmsave" }, { SVM_EXIT_STGI, "stgi" }, { SVM_EXIT_CLGI, "clgi" }, { SVM_EXIT_SKINIT, "skinit" }, { SVM_EXIT_RDTSCP, "rdtscp" }, { SVM_EXIT_ICEBP, "icebp" }, { SVM_EXIT_WBINVD, "wbinvd" }, { SVM_EXIT_MONITOR, "monitor" }, { SVM_EXIT_MWAIT, "mwait" }, { SVM_EXIT_XSETBV, "xsetbv" }, { SVM_EXIT_INVPCID, "invpcid" }, { SVM_EXIT_NPF, "npf" }, { SVM_EXIT_AVIC_INCOMPLETE_IPI, "avic_incomplete_ipi" }, { SVM_EXIT_AVIC_UNACCELERATED_ACCESS, "avic_unaccelerated_access" }, { SVM_EXIT_ERR, "invalid_guest_state" }
+#define SVM_EXIT_REASONS { SVM_EXIT_READ_CR0, "read_cr0" }, { SVM_EXIT_READ_CR2, "read_cr2" }, { SVM_EXIT_READ_CR3, "read_cr3" }, { SVM_EXIT_READ_CR4, "read_cr4" }, { SVM_EXIT_READ_CR8, "read_cr8" }, { SVM_EXIT_WRITE_CR0, "write_cr0" }, { SVM_EXIT_WRITE_CR2, "write_cr2" }, { SVM_EXIT_WRITE_CR3, "write_cr3" }, { SVM_EXIT_WRITE_CR4, "write_cr4" }, { SVM_EXIT_WRITE_CR8, "write_cr8" }, { SVM_EXIT_READ_DR0, "read_dr0" }, { SVM_EXIT_READ_DR1, "read_dr1" }, { SVM_EXIT_READ_DR2, "read_dr2" }, { SVM_EXIT_READ_DR3, "read_dr3" }, { SVM_EXIT_READ_DR4, "read_dr4" }, { SVM_EXIT_READ_DR5, "read_dr5" }, { SVM_EXIT_READ_DR6, "read_dr6" }, { SVM_EXIT_READ_DR7, "read_dr7" }, { SVM_EXIT_WRITE_DR0, "write_dr0" }, { SVM_EXIT_WRITE_DR1, "write_dr1" }, { SVM_EXIT_WRITE_DR2, "write_dr2" }, { SVM_EXIT_WRITE_DR3, "write_dr3" }, { SVM_EXIT_WRITE_DR4, "write_dr4" }, { SVM_EXIT_WRITE_DR5, "write_dr5" }, { SVM_EXIT_WRITE_DR6, "write_dr6" }, { SVM_EXIT_WRITE_DR7, "write_dr7" }, { SVM_EXIT_EXCP_BASE + DE_VECTOR, "DE excp" }, { SVM_EXIT_EXCP_BASE + DB_VECTOR, "DB excp" }, { SVM_EXIT_EXCP_BASE + BP_VECTOR, "BP excp" }, { SVM_EXIT_EXCP_BASE + OF_VECTOR, "OF excp" }, { SVM_EXIT_EXCP_BASE + BR_VECTOR, "BR excp" }, { SVM_EXIT_EXCP_BASE + UD_VECTOR, "UD excp" }, { SVM_EXIT_EXCP_BASE + NM_VECTOR, "NM excp" }, { SVM_EXIT_EXCP_BASE + DF_VECTOR, "DF excp" }, { SVM_EXIT_EXCP_BASE + TS_VECTOR, "TS excp" }, { SVM_EXIT_EXCP_BASE + NP_VECTOR, "NP excp" }, { SVM_EXIT_EXCP_BASE + SS_VECTOR, "SS excp" }, { SVM_EXIT_EXCP_BASE + GP_VECTOR, "GP excp" }, { SVM_EXIT_EXCP_BASE + PF_VECTOR, "PF excp" }, { SVM_EXIT_EXCP_BASE + MF_VECTOR, "MF excp" }, { SVM_EXIT_EXCP_BASE + AC_VECTOR, "AC excp" }, { SVM_EXIT_EXCP_BASE + MC_VECTOR, "MC excp" }, { SVM_EXIT_EXCP_BASE + XM_VECTOR, "XF excp" }, { SVM_EXIT_INTR, "interrupt" }, { SVM_EXIT_NMI, "nmi" }, { SVM_EXIT_SMI, "smi" }, { SVM_EXIT_INIT, "init" }, { SVM_EXIT_VINTR, "vintr" }, { SVM_EXIT_CR0_SEL_WRITE, "cr0_sel_write" }, { SVM_EXIT_IDTR_READ, "read_idtr" }, { SVM_EXIT_GDTR_READ, "read_gdtr" }, { SVM_EXIT_LDTR_READ, "read_ldtr" }, { SVM_EXIT_TR_READ, "read_rt" }, { SVM_EXIT_IDTR_WRITE, "write_idtr" }, { SVM_EXIT_GDTR_WRITE, "write_gdtr" }, { SVM_EXIT_LDTR_WRITE, "write_ldtr" }, { SVM_EXIT_TR_WRITE, "write_rt" }, { SVM_EXIT_RDTSC, "rdtsc" }, { SVM_EXIT_RDPMC, "rdpmc" }, { SVM_EXIT_PUSHF, "pushf" }, { SVM_EXIT_POPF, "popf" }, { SVM_EXIT_CPUID, "cpuid" }, { SVM_EXIT_RSM, "rsm" }, { SVM_EXIT_IRET, "iret" }, { SVM_EXIT_SWINT, "swint" }, { SVM_EXIT_INVD, "invd" }, { SVM_EXIT_PAUSE, "pause" }, { SVM_EXIT_HLT, "hlt" }, { SVM_EXIT_INVLPG, "invlpg" }, { SVM_EXIT_INVLPGA, "invlpga" }, { SVM_EXIT_IOIO, "io" }, { SVM_EXIT_MSR, "msr" }, { SVM_EXIT_TASK_SWITCH, "task_switch" }, { SVM_EXIT_FERR_FREEZE, "ferr_freeze" }, { SVM_EXIT_SHUTDOWN, "shutdown" }, { SVM_EXIT_VMRUN, "vmrun" }, { SVM_EXIT_VMMCALL, "hypercall" }, { SVM_EXIT_VMLOAD, "vmload" }, { SVM_EXIT_VMSAVE, "vmsave" }, { SVM_EXIT_STGI, "stgi" }, { SVM_EXIT_CLGI, "clgi" }, { SVM_EXIT_SKINIT, "skinit" }, { SVM_EXIT_RDTSCP, "rdtscp" }, { SVM_EXIT_ICEBP, "icebp" }, { SVM_EXIT_WBINVD, "wbinvd" }, { SVM_EXIT_MONITOR, "monitor" }, { SVM_EXIT_MWAIT, "mwait" }, { SVM_EXIT_XSETBV, "xsetbv" }, { SVM_EXIT_EFER_WRITE_TRAP, "write_efer_trap" }, { SVM_EXIT_CR0_WRITE_TRAP, "write_cr0_trap" }, { SVM_EXIT_CR4_WRITE_TRAP, "write_cr4_trap" }, { SVM_EXIT_CR8_WRITE_TRAP, "write_cr8_trap" }, { SVM_EXIT_INVPCID, "invpcid" }, { SVM_EXIT_NPF, "npf" }, { SVM_EXIT_AVIC_INCOMPLETE_IPI, "avic_incomplete_ipi" }, { SVM_EXIT_AVIC_UNACCELERATED_ACCESS, "avic_unaccelerated_access" }, { SVM_EXIT_VMGEXIT, "vmgexit" }, { SVM_VMGEXIT_MMIO_READ, "vmgexit_mmio_read" }, { SVM_VMGEXIT_MMIO_WRITE, "vmgexit_mmio_write" }, { SVM_VMGEXIT_NMI_COMPLETE, "vmgexit_nmi_complete" }, { SVM_VMGEXIT_AP_HLT_LOOP, "vmgexit_ap_hlt_loop" }, { SVM_VMGEXIT_AP_JUMP_TABLE, "vmgexit_ap_jump_table" }, { SVM_EXIT_ERR, "invalid_guest_state" }
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/unistd_32.h b/libc/kernel/uapi/asm-x86/asm/unistd_32.h
index c99fa05..ca34f04 100644
--- a/libc/kernel/uapi/asm-x86/asm/unistd_32.h
+++ b/libc/kernel/uapi/asm-x86/asm/unistd_32.h
@@ -448,4 +448,5 @@
 #define __NR_pidfd_getfd 438
 #define __NR_faccessat2 439
 #define __NR_process_madvise 440
+#define __NR_epoll_pwait2 441
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/unistd_64.h b/libc/kernel/uapi/asm-x86/asm/unistd_64.h
index 04932fc..82268bd 100644
--- a/libc/kernel/uapi/asm-x86/asm/unistd_64.h
+++ b/libc/kernel/uapi/asm-x86/asm/unistd_64.h
@@ -370,4 +370,5 @@
 #define __NR_pidfd_getfd 438
 #define __NR_faccessat2 439
 #define __NR_process_madvise 440
+#define __NR_epoll_pwait2 441
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/unistd_x32.h b/libc/kernel/uapi/asm-x86/asm/unistd_x32.h
index fa891c7..b5b39ad 100644
--- a/libc/kernel/uapi/asm-x86/asm/unistd_x32.h
+++ b/libc/kernel/uapi/asm-x86/asm/unistd_x32.h
@@ -323,6 +323,7 @@
 #define __NR_pidfd_getfd (__X32_SYSCALL_BIT + 438)
 #define __NR_faccessat2 (__X32_SYSCALL_BIT + 439)
 #define __NR_process_madvise (__X32_SYSCALL_BIT + 440)
+#define __NR_epoll_pwait2 (__X32_SYSCALL_BIT + 441)
 #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 47d5fb2..fc10e02 100644
--- a/libc/kernel/uapi/asm-x86/asm/vmx.h
+++ b/libc/kernel/uapi/asm-x86/asm/vmx.h
@@ -23,6 +23,7 @@
 #define EXIT_REASON_EXTERNAL_INTERRUPT 1
 #define EXIT_REASON_TRIPLE_FAULT 2
 #define EXIT_REASON_INIT_SIGNAL 3
+#define EXIT_REASON_SIPI_SIGNAL 4
 #define EXIT_REASON_INTERRUPT_WINDOW 7
 #define EXIT_REASON_NMI_WINDOW 8
 #define EXIT_REASON_TASK_SWITCH 9
@@ -78,7 +79,7 @@
 #define EXIT_REASON_XRSTORS 64
 #define EXIT_REASON_UMWAIT 67
 #define EXIT_REASON_TPAUSE 68
-#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_INIT_SIGNAL, "INIT_SIGNAL" }, { EXIT_REASON_INTERRUPT_WINDOW, "INTERRUPT_WINDOW" }, { 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" }, { EXIT_REASON_UMWAIT, "UMWAIT" }, { EXIT_REASON_TPAUSE, "TPAUSE" }
+#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_INIT_SIGNAL, "INIT_SIGNAL" }, { EXIT_REASON_SIPI_SIGNAL, "SIPI_SIGNAL" }, { EXIT_REASON_INTERRUPT_WINDOW, "INTERRUPT_WINDOW" }, { 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" }, { EXIT_REASON_UMWAIT, "UMWAIT" }, { EXIT_REASON_TPAUSE, "TPAUSE" }
 #define VMX_EXIT_REASON_FLAGS { VMX_EXIT_REASONS_FAILED_VMENTRY, "FAILED_VMENTRY" }
 #define VMX_ABORT_SAVE_GUEST_MSR_FAIL 1
 #define VMX_ABORT_LOAD_HOST_PDPTE_FAIL 2
diff --git a/libc/kernel/uapi/drm/amdgpu_drm.h b/libc/kernel/uapi/drm/amdgpu_drm.h
index 01a11dc..f8eb023 100644
--- a/libc/kernel/uapi/drm/amdgpu_drm.h
+++ b/libc/kernel/uapi/drm/amdgpu_drm.h
@@ -437,6 +437,7 @@
 #define AMDGPU_INFO_FW_DMCU 0x12
 #define AMDGPU_INFO_FW_TA 0x13
 #define AMDGPU_INFO_FW_DMCUB 0x14
+#define AMDGPU_INFO_FW_TOC 0x15
 #define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f
 #define AMDGPU_INFO_VRAM_USAGE 0x10
 #define AMDGPU_INFO_GTT_USAGE 0x11
@@ -558,6 +559,7 @@
 #define AMDGPU_VRAM_TYPE_DDR3 7
 #define AMDGPU_VRAM_TYPE_DDR4 8
 #define AMDGPU_VRAM_TYPE_GDDR6 9
+#define AMDGPU_VRAM_TYPE_DDR5 10
 struct drm_amdgpu_info_device {
   __u32 device_id;
   __u32 chip_rev;
@@ -643,6 +645,7 @@
 #define AMDGPU_FAMILY_AI 141
 #define AMDGPU_FAMILY_RV 142
 #define AMDGPU_FAMILY_NV 143
+#define AMDGPU_FAMILY_VGH 144
 #ifdef __cplusplus
 }
 #endif
diff --git a/libc/kernel/uapi/drm/drm_fourcc.h b/libc/kernel/uapi/drm/drm_fourcc.h
index 794a9e9..de01ddf 100644
--- a/libc/kernel/uapi/drm/drm_fourcc.h
+++ b/libc/kernel/uapi/drm/drm_fourcc.h
@@ -74,6 +74,7 @@
 #define DRM_FORMAT_XBGR16161616F fourcc_code('X', 'B', '4', 'H')
 #define DRM_FORMAT_ARGB16161616F fourcc_code('A', 'R', '4', 'H')
 #define DRM_FORMAT_ABGR16161616F fourcc_code('A', 'B', '4', 'H')
+#define DRM_FORMAT_AXBXGXRX106106106106 fourcc_code('A', 'B', '1', '0')
 #define DRM_FORMAT_YUYV fourcc_code('Y', 'U', 'Y', 'V')
 #define DRM_FORMAT_YVYU fourcc_code('Y', 'V', 'Y', 'U')
 #define DRM_FORMAT_UYVY fourcc_code('U', 'Y', 'V', 'Y')
@@ -128,7 +129,6 @@
 #define DRM_FORMAT_YVU422 fourcc_code('Y', 'V', '1', '6')
 #define DRM_FORMAT_YUV444 fourcc_code('Y', 'U', '2', '4')
 #define DRM_FORMAT_YVU444 fourcc_code('Y', 'V', '2', '4')
-#define DRM_FORMAT_MOD_NONE 0
 #define DRM_FORMAT_MOD_VENDOR_NONE 0
 #define DRM_FORMAT_MOD_VENDOR_INTEL 0x01
 #define DRM_FORMAT_MOD_VENDOR_AMD 0x02
@@ -145,6 +145,7 @@
 #define DRM_FORMAT_MOD_GENERIC_16_16_TILE DRM_FORMAT_MOD_SAMSUNG_16_16_TILE
 #define DRM_FORMAT_MOD_INVALID fourcc_mod_code(NONE, DRM_FORMAT_RESERVED)
 #define DRM_FORMAT_MOD_LINEAR fourcc_mod_code(NONE, 0)
+#define DRM_FORMAT_MOD_NONE 0
 #define I915_FORMAT_MOD_X_TILED fourcc_mod_code(INTEL, 1)
 #define I915_FORMAT_MOD_Y_TILED fourcc_mod_code(INTEL, 2)
 #define I915_FORMAT_MOD_Yf_TILED fourcc_mod_code(INTEL, 3)
@@ -210,6 +211,50 @@
 #define AMLOGIC_FBC_LAYOUT_BASIC (1ULL)
 #define AMLOGIC_FBC_LAYOUT_SCATTER (2ULL)
 #define AMLOGIC_FBC_OPTION_MEM_SAVING (1ULL << 0)
+#define AMD_FMT_MOD fourcc_mod_code(AMD, 0)
+#define IS_AMD_FMT_MOD(val) (((val) >> 56) == DRM_FORMAT_MOD_VENDOR_AMD)
+#define AMD_FMT_MOD_TILE_VER_GFX9 1
+#define AMD_FMT_MOD_TILE_VER_GFX10 2
+#define AMD_FMT_MOD_TILE_VER_GFX10_RBPLUS 3
+#define AMD_FMT_MOD_TILE_GFX9_64K_S 9
+#define AMD_FMT_MOD_TILE_GFX9_64K_D 10
+#define AMD_FMT_MOD_TILE_GFX9_64K_S_X 25
+#define AMD_FMT_MOD_TILE_GFX9_64K_D_X 26
+#define AMD_FMT_MOD_TILE_GFX9_64K_R_X 27
+#define AMD_FMT_MOD_DCC_BLOCK_64B 0
+#define AMD_FMT_MOD_DCC_BLOCK_128B 1
+#define AMD_FMT_MOD_DCC_BLOCK_256B 2
+#define AMD_FMT_MOD_TILE_VERSION_SHIFT 0
+#define AMD_FMT_MOD_TILE_VERSION_MASK 0xFF
+#define AMD_FMT_MOD_TILE_SHIFT 8
+#define AMD_FMT_MOD_TILE_MASK 0x1F
+#define AMD_FMT_MOD_DCC_SHIFT 13
+#define AMD_FMT_MOD_DCC_MASK 0x1
+#define AMD_FMT_MOD_DCC_RETILE_SHIFT 14
+#define AMD_FMT_MOD_DCC_RETILE_MASK 0x1
+#define AMD_FMT_MOD_DCC_PIPE_ALIGN_SHIFT 15
+#define AMD_FMT_MOD_DCC_PIPE_ALIGN_MASK 0x1
+#define AMD_FMT_MOD_DCC_INDEPENDENT_64B_SHIFT 16
+#define AMD_FMT_MOD_DCC_INDEPENDENT_64B_MASK 0x1
+#define AMD_FMT_MOD_DCC_INDEPENDENT_128B_SHIFT 17
+#define AMD_FMT_MOD_DCC_INDEPENDENT_128B_MASK 0x1
+#define AMD_FMT_MOD_DCC_MAX_COMPRESSED_BLOCK_SHIFT 18
+#define AMD_FMT_MOD_DCC_MAX_COMPRESSED_BLOCK_MASK 0x3
+#define AMD_FMT_MOD_DCC_CONSTANT_ENCODE_SHIFT 20
+#define AMD_FMT_MOD_DCC_CONSTANT_ENCODE_MASK 0x1
+#define AMD_FMT_MOD_PIPE_XOR_BITS_SHIFT 21
+#define AMD_FMT_MOD_PIPE_XOR_BITS_MASK 0x7
+#define AMD_FMT_MOD_BANK_XOR_BITS_SHIFT 24
+#define AMD_FMT_MOD_BANK_XOR_BITS_MASK 0x7
+#define AMD_FMT_MOD_PACKERS_SHIFT 27
+#define AMD_FMT_MOD_PACKERS_MASK 0x7
+#define AMD_FMT_MOD_RB_SHIFT 30
+#define AMD_FMT_MOD_RB_MASK 0x7
+#define AMD_FMT_MOD_PIPE_SHIFT 33
+#define AMD_FMT_MOD_PIPE_MASK 0x7
+#define AMD_FMT_MOD_SET(field,value) ((uint64_t) (value) << AMD_FMT_MOD_ ##field ##_SHIFT)
+#define AMD_FMT_MOD_GET(field,value) (((value) >> AMD_FMT_MOD_ ##field ##_SHIFT) & AMD_FMT_MOD_ ##field ##_MASK)
+#define AMD_FMT_MOD_CLEAR(field) (~((uint64_t) AMD_FMT_MOD_ ##field ##_MASK << AMD_FMT_MOD_ ##field ##_SHIFT))
 #ifdef __cplusplus
 }
 #endif
diff --git a/libc/kernel/uapi/drm/virtgpu_drm.h b/libc/kernel/uapi/drm/virtgpu_drm.h
index bc4aad4..842c1fd 100644
--- a/libc/kernel/uapi/drm/virtgpu_drm.h
+++ b/libc/kernel/uapi/drm/virtgpu_drm.h
@@ -31,6 +31,7 @@
 #define DRM_VIRTGPU_TRANSFER_TO_HOST 0x07
 #define DRM_VIRTGPU_WAIT 0x08
 #define DRM_VIRTGPU_GET_CAPS 0x09
+#define DRM_VIRTGPU_RESOURCE_CREATE_BLOB 0x0a
 #define VIRTGPU_EXECBUF_FENCE_FD_IN 0x01
 #define VIRTGPU_EXECBUF_FENCE_FD_OUT 0x02
 #define VIRTGPU_EXECBUF_FLAGS (VIRTGPU_EXECBUF_FENCE_FD_IN | VIRTGPU_EXECBUF_FENCE_FD_OUT | 0)
@@ -49,6 +50,9 @@
 };
 #define VIRTGPU_PARAM_3D_FEATURES 1
 #define VIRTGPU_PARAM_CAPSET_QUERY_FIX 2
+#define VIRTGPU_PARAM_RESOURCE_BLOB 3
+#define VIRTGPU_PARAM_HOST_VISIBLE 4
+#define VIRTGPU_PARAM_CROSS_DEVICE 5
 struct drm_virtgpu_getparam {
   __u64 param;
   __u64 value;
@@ -73,7 +77,7 @@
   __u32 bo_handle;
   __u32 res_handle;
   __u32 size;
-  __u32 stride;
+  __u32 blob_mem;
 };
 struct drm_virtgpu_3d_box {
   __u32 x;
@@ -88,12 +92,16 @@
   struct drm_virtgpu_3d_box box;
   __u32 level;
   __u32 offset;
+  __u32 stride;
+  __u32 layer_stride;
 };
 struct drm_virtgpu_3d_transfer_from_host {
   __u32 bo_handle;
   struct drm_virtgpu_3d_box box;
   __u32 level;
   __u32 offset;
+  __u32 stride;
+  __u32 layer_stride;
 };
 #define VIRTGPU_WAIT_NOWAIT 1
 struct drm_virtgpu_3d_wait {
@@ -107,6 +115,23 @@
   __u32 size;
   __u32 pad;
 };
+struct drm_virtgpu_resource_create_blob {
+#define VIRTGPU_BLOB_MEM_GUEST 0x0001
+#define VIRTGPU_BLOB_MEM_HOST3D 0x0002
+#define VIRTGPU_BLOB_MEM_HOST3D_GUEST 0x0003
+#define VIRTGPU_BLOB_FLAG_USE_MAPPABLE 0x0001
+#define VIRTGPU_BLOB_FLAG_USE_SHAREABLE 0x0002
+#define VIRTGPU_BLOB_FLAG_USE_CROSS_DEVICE 0x0004
+  __u32 blob_mem;
+  __u32 blob_flags;
+  __u32 bo_handle;
+  __u32 res_handle;
+  __u64 size;
+  __u32 pad;
+  __u32 cmd_size;
+  __u64 cmd;
+  __u64 blob_id;
+};
 #define DRM_IOCTL_VIRTGPU_MAP DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_MAP, struct drm_virtgpu_map)
 #define DRM_IOCTL_VIRTGPU_EXECBUFFER DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_EXECBUFFER, struct drm_virtgpu_execbuffer)
 #define DRM_IOCTL_VIRTGPU_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_GETPARAM, struct drm_virtgpu_getparam)
@@ -116,6 +141,7 @@
 #define DRM_IOCTL_VIRTGPU_TRANSFER_TO_HOST DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_TRANSFER_TO_HOST, struct drm_virtgpu_3d_transfer_to_host)
 #define DRM_IOCTL_VIRTGPU_WAIT DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_WAIT, struct drm_virtgpu_3d_wait)
 #define DRM_IOCTL_VIRTGPU_GET_CAPS DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_GET_CAPS, struct drm_virtgpu_get_caps)
+#define DRM_IOCTL_VIRTGPU_RESOURCE_CREATE_BLOB DRM_IOWR(DRM_COMMAND_BASE + DRM_VIRTGPU_RESOURCE_CREATE_BLOB, struct drm_virtgpu_resource_create_blob)
 #ifdef __cplusplus
 }
 #endif
diff --git a/libc/kernel/uapi/linux/android/binder.h b/libc/kernel/uapi/linux/android/binder.h
index 0674008..5416344 100644
--- a/libc/kernel/uapi/linux/android/binder.h
+++ b/libc/kernel/uapi/linux/android/binder.h
@@ -132,6 +132,7 @@
   TF_ROOT_OBJECT = 0x04,
   TF_STATUS_CODE = 0x08,
   TF_ACCEPT_FDS = 0x10,
+  TF_CLEAR_BUF = 0x20,
 };
 struct binder_transaction_data {
   union {
diff --git a/libc/kernel/uapi/linux/batman_adv.h b/libc/kernel/uapi/linux/batman_adv.h
index 96b259b..9f48dac 100644
--- a/libc/kernel/uapi/linux/batman_adv.h
+++ b/libc/kernel/uapi/linux/batman_adv.h
@@ -144,4 +144,10 @@
   BATADV_TP_REASON_CANT_SEND = 132,
   BATADV_TP_REASON_TOO_MANY = 133,
 };
+enum batadv_ifla_attrs {
+  IFLA_BATADV_UNSPEC,
+  IFLA_BATADV_ALGO_NAME,
+  __IFLA_BATADV_MAX,
+};
+#define IFLA_BATADV_MAX (__IFLA_BATADV_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/bcache.h b/libc/kernel/uapi/linux/bcache.h
index 09335c8..25b6987 100644
--- a/libc/kernel/uapi/linux/bcache.h
+++ b/libc/kernel/uapi/linux/bcache.h
@@ -100,7 +100,7 @@
     __le16 keys;
   };
   __le64 d[SB_JOURNAL_BUCKETS];
-  __le16 bucket_size_hi;
+  __le16 obso_bucket_size_hi;
 };
 struct cache_sb {
   __u64 offset;
diff --git a/libc/kernel/uapi/linux/bpf.h b/libc/kernel/uapi/linux/bpf.h
index 4e81cd0..9ee7fbd 100644
--- a/libc/kernel/uapi/linux/bpf.h
+++ b/libc/kernel/uapi/linux/bpf.h
@@ -143,6 +143,7 @@
   BPF_MAP_TYPE_STRUCT_OPS,
   BPF_MAP_TYPE_RINGBUF,
   BPF_MAP_TYPE_INODE_STORAGE,
+  BPF_MAP_TYPE_TASK_STORAGE,
 };
 enum bpf_prog_type {
   BPF_PROG_TYPE_UNSPEC,
@@ -338,7 +339,10 @@
     __aligned_u64 line_info;
     __u32 line_info_cnt;
     __u32 attach_btf_id;
-    __u32 attach_prog_fd;
+    union {
+      __u32 attach_prog_fd;
+      __u32 attach_btf_obj_fd;
+    };
   };
   struct {
     __aligned_u64 pathname;
@@ -452,7 +456,7 @@
     __u32 flags;
   } prog_bind_map;
 } __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), FN(spin_lock), FN(spin_unlock), FN(sk_fullsock), FN(tcp_sock), FN(skb_ecn_set_ce), FN(get_listener_sock), FN(skc_lookup_tcp), FN(tcp_check_syncookie), FN(sysctl_get_name), FN(sysctl_get_current_value), FN(sysctl_get_new_value), FN(sysctl_set_new_value), FN(strtol), FN(strtoul), FN(sk_storage_get), FN(sk_storage_delete), FN(send_signal), FN(tcp_gen_syncookie), FN(skb_output), FN(probe_read_user), FN(probe_read_kernel), FN(probe_read_user_str), FN(probe_read_kernel_str), FN(tcp_send_ack), FN(send_signal_thread), FN(jiffies64), FN(read_branch_records), FN(get_ns_current_pid_tgid), FN(xdp_output), FN(get_netns_cookie), FN(get_current_ancestor_cgroup_id), FN(sk_assign), FN(ktime_get_boot_ns), FN(seq_printf), FN(seq_write), FN(sk_cgroup_id), FN(sk_ancestor_cgroup_id), FN(ringbuf_output), FN(ringbuf_reserve), FN(ringbuf_submit), FN(ringbuf_discard), FN(ringbuf_query), FN(csum_level), FN(skc_to_tcp6_sock), FN(skc_to_tcp_sock), FN(skc_to_tcp_timewait_sock), FN(skc_to_tcp_request_sock), FN(skc_to_udp6_sock), FN(get_task_stack), FN(load_hdr_opt), FN(store_hdr_opt), FN(reserve_hdr_opt), FN(inode_storage_get), FN(inode_storage_delete), FN(d_path), FN(copy_from_user), FN(snprintf_btf), FN(seq_printf_btf), FN(skb_cgroup_classid), FN(redirect_neigh), FN(per_cpu_ptr), FN(this_cpu_ptr), FN(redirect_peer),
+#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), FN(skc_lookup_tcp), FN(tcp_check_syncookie), FN(sysctl_get_name), FN(sysctl_get_current_value), FN(sysctl_get_new_value), FN(sysctl_set_new_value), FN(strtol), FN(strtoul), FN(sk_storage_get), FN(sk_storage_delete), FN(send_signal), FN(tcp_gen_syncookie), FN(skb_output), FN(probe_read_user), FN(probe_read_kernel), FN(probe_read_user_str), FN(probe_read_kernel_str), FN(tcp_send_ack), FN(send_signal_thread), FN(jiffies64), FN(read_branch_records), FN(get_ns_current_pid_tgid), FN(xdp_output), FN(get_netns_cookie), FN(get_current_ancestor_cgroup_id), FN(sk_assign), FN(ktime_get_boot_ns), FN(seq_printf), FN(seq_write), FN(sk_cgroup_id), FN(sk_ancestor_cgroup_id), FN(ringbuf_output), FN(ringbuf_reserve), FN(ringbuf_submit), FN(ringbuf_discard), FN(ringbuf_query), FN(csum_level), FN(skc_to_tcp6_sock), FN(skc_to_tcp_sock), FN(skc_to_tcp_timewait_sock), FN(skc_to_tcp_request_sock), FN(skc_to_udp6_sock), FN(get_task_stack), FN(load_hdr_opt), FN(store_hdr_opt), FN(reserve_hdr_opt), FN(inode_storage_get), FN(inode_storage_delete), FN(d_path), FN(copy_from_user), FN(snprintf_btf), FN(seq_printf_btf), FN(skb_cgroup_classid), FN(redirect_neigh), FN(per_cpu_ptr), FN(this_cpu_ptr), FN(redirect_peer), FN(task_storage_get), FN(task_storage_delete), FN(get_current_task_btf), FN(bprm_opts_set), FN(ktime_get_coarse_ns), FN(ima_inode_hash), FN(sock_from_file),
 #define __BPF_ENUM_FN(x) BPF_FUNC_ ##x
 enum bpf_func_id {
   __BPF_FUNC_MAPPER(__BPF_ENUM_FN) __BPF_FUNC_MAX_ID,
@@ -557,6 +561,9 @@
   BPF_LWT_ENCAP_SEG6_INLINE,
   BPF_LWT_ENCAP_IP,
 };
+enum {
+  BPF_F_BPRM_SECUREEXEC = (1ULL << 0),
+};
 #define __bpf_md_ptr(type,name) union { type name; __u64 : 64; \
 } __attribute__((aligned(8)))
 struct __sk_buff {
@@ -797,6 +804,9 @@
   __aligned_u64 btf;
   __u32 btf_size;
   __u32 id;
+  __aligned_u64 name;
+  __u32 name_len;
+  __u32 kernel_btf;
 } __attribute__((aligned(8)));
 struct bpf_link_info {
   __u32 type;
diff --git a/libc/kernel/uapi/linux/btrfs.h b/libc/kernel/uapi/linux/btrfs.h
index cfeef2a..c0a586c 100644
--- a/libc/kernel/uapi/linux/btrfs.h
+++ b/libc/kernel/uapi/linux/btrfs.h
@@ -187,6 +187,7 @@
 #define BTRFS_FEATURE_INCOMPAT_NO_HOLES (1ULL << 9)
 #define BTRFS_FEATURE_INCOMPAT_METADATA_UUID (1ULL << 10)
 #define BTRFS_FEATURE_INCOMPAT_RAID1C34 (1ULL << 11)
+#define BTRFS_FEATURE_INCOMPAT_ZONED (1ULL << 12)
 struct btrfs_ioctl_feature_flags {
   __u64 compat_flags;
   __u64 compat_ro_flags;
diff --git a/libc/kernel/uapi/linux/btrfs_tree.h b/libc/kernel/uapi/linux/btrfs_tree.h
index 2a9178d..4e36c37 100644
--- a/libc/kernel/uapi/linux/btrfs_tree.h
+++ b/libc/kernel/uapi/linux/btrfs_tree.h
@@ -92,6 +92,7 @@
 #define BTRFS_UUID_KEY_SUBVOL 251
 #define BTRFS_UUID_KEY_RECEIVED_SUBVOL 252
 #define BTRFS_STRING_ITEM_KEY 253
+#define BTRFS_MAX_METADATA_BLOCKSIZE 65536
 #define BTRFS_CSUM_SIZE 32
 enum btrfs_csum_type {
   BTRFS_CSUM_TYPE_CRC32 = 0,
diff --git a/libc/kernel/uapi/linux/can.h b/libc/kernel/uapi/linux/can.h
index 3933614..46eafc5 100644
--- a/libc/kernel/uapi/linux/can.h
+++ b/libc/kernel/uapi/linux/can.h
@@ -31,15 +31,19 @@
 #define CAN_EFF_ID_BITS 29
 typedef __u32 can_err_mask_t;
 #define CAN_MAX_DLC 8
+#define CAN_MAX_RAW_DLC 15
 #define CAN_MAX_DLEN 8
 #define CANFD_MAX_DLC 15
 #define CANFD_MAX_DLEN 64
 struct can_frame {
   canid_t can_id;
-  __u8 can_dlc;
+  union {
+    __u8 len;
+    __u8 can_dlc;
+  };
   __u8 __pad;
   __u8 __res0;
-  __u8 __res1;
+  __u8 len8_dlc;
   __u8 data[CAN_MAX_DLEN] __attribute__((aligned(8)));
 };
 #define CANFD_BRS 0x01
diff --git a/libc/kernel/uapi/linux/can/isotp.h b/libc/kernel/uapi/linux/can/isotp.h
index 8264b7c..dd5e4f5 100644
--- a/libc/kernel/uapi/linux/can/isotp.h
+++ b/libc/kernel/uapi/linux/can/isotp.h
@@ -55,6 +55,7 @@
 #define CAN_ISOTP_FORCE_RXSTMIN 0x100
 #define CAN_ISOTP_RX_EXT_ADDR 0x200
 #define CAN_ISOTP_WAIT_TX_DONE 0x400
+#define CAN_ISOTP_SF_BROADCAST 0x800
 #define CAN_ISOTP_DEFAULT_FLAGS 0
 #define CAN_ISOTP_DEFAULT_EXT_ADDRESS 0x00
 #define CAN_ISOTP_DEFAULT_PAD_CONTENT 0xCC
diff --git a/libc/kernel/uapi/linux/can/netlink.h b/libc/kernel/uapi/linux/can/netlink.h
index ddf9058..3e6551d 100644
--- a/libc/kernel/uapi/linux/can/netlink.h
+++ b/libc/kernel/uapi/linux/can/netlink.h
@@ -68,6 +68,7 @@
 #define CAN_CTRLMODE_FD 0x20
 #define CAN_CTRLMODE_PRESUME_ACK 0x40
 #define CAN_CTRLMODE_FD_NON_ISO 0x80
+#define CAN_CTRLMODE_CC_LEN8_DLC 0x100
 struct can_device_stats {
   __u32 bus_error;
   __u32 error_warning;
diff --git a/libc/kernel/uapi/linux/cfm_bridge.h b/libc/kernel/uapi/linux/cfm_bridge.h
new file mode 100644
index 0000000..de9d023
--- /dev/null
+++ b/libc/kernel/uapi/linux/cfm_bridge.h
@@ -0,0 +1,66 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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_CFM_BRIDGE_H_
+#define _UAPI_LINUX_CFM_BRIDGE_H_
+#include <linux/types.h>
+#include <linux/if_ether.h>
+#define ETHER_HEADER_LENGTH (6 + 6 + 4 + 2)
+#define CFM_MAID_LENGTH 48
+#define CFM_CCM_PDU_LENGTH 75
+#define CFM_PORT_STATUS_TLV_LENGTH 4
+#define CFM_IF_STATUS_TLV_LENGTH 4
+#define CFM_IF_STATUS_TLV_TYPE 4
+#define CFM_PORT_STATUS_TLV_TYPE 2
+#define CFM_ENDE_TLV_TYPE 0
+#define CFM_CCM_MAX_FRAME_LENGTH (ETHER_HEADER_LENGTH + CFM_CCM_PDU_LENGTH + CFM_PORT_STATUS_TLV_LENGTH + CFM_IF_STATUS_TLV_LENGTH)
+#define CFM_FRAME_PRIO 7
+#define CFM_CCM_TLV_OFFSET 70
+#define CFM_CCM_PDU_MAID_OFFSET 10
+#define CFM_CCM_PDU_MEPID_OFFSET 8
+#define CFM_CCM_PDU_SEQNR_OFFSET 4
+#define CFM_CCM_PDU_TLV_OFFSET 74
+#define CFM_CCM_ITU_RESERVED_SIZE 16
+struct br_cfm_common_hdr {
+  __u8 mdlevel_version;
+  __u8 opcode;
+  __u8 flags;
+  __u8 tlv_offset;
+};
+enum br_cfm_opcodes {
+  BR_CFM_OPCODE_CCM = 0x1,
+};
+enum br_cfm_domain {
+  BR_CFM_PORT,
+  BR_CFM_VLAN,
+};
+enum br_cfm_mep_direction {
+  BR_CFM_MEP_DIRECTION_DOWN,
+  BR_CFM_MEP_DIRECTION_UP,
+};
+enum br_cfm_ccm_interval {
+  BR_CFM_CCM_INTERVAL_NONE,
+  BR_CFM_CCM_INTERVAL_3_3_MS,
+  BR_CFM_CCM_INTERVAL_10_MS,
+  BR_CFM_CCM_INTERVAL_100_MS,
+  BR_CFM_CCM_INTERVAL_1_SEC,
+  BR_CFM_CCM_INTERVAL_10_SEC,
+  BR_CFM_CCM_INTERVAL_1_MIN,
+  BR_CFM_CCM_INTERVAL_10_MIN,
+};
+#endif
diff --git a/libc/kernel/uapi/linux/cifs/cifs_netlink.h b/libc/kernel/uapi/linux/cifs/cifs_netlink.h
new file mode 100644
index 0000000..7286cfa
--- /dev/null
+++ b/libc/kernel/uapi/linux/cifs/cifs_netlink.h
@@ -0,0 +1,65 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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 _UAPILINUX_CIFS_NETLINK_H
+#define _UAPILINUX_CIFS_NETLINK_H
+#define CIFS_GENL_NAME "cifs"
+#define CIFS_GENL_VERSION 0x1
+#define CIFS_GENL_MCGRP_SWN_NAME "cifs_mcgrp_swn"
+enum cifs_genl_multicast_groups {
+  CIFS_GENL_MCGRP_SWN,
+};
+enum cifs_genl_attributes {
+  CIFS_GENL_ATTR_UNSPEC,
+  CIFS_GENL_ATTR_SWN_REGISTRATION_ID,
+  CIFS_GENL_ATTR_SWN_NET_NAME,
+  CIFS_GENL_ATTR_SWN_SHARE_NAME,
+  CIFS_GENL_ATTR_SWN_IP,
+  CIFS_GENL_ATTR_SWN_NET_NAME_NOTIFY,
+  CIFS_GENL_ATTR_SWN_SHARE_NAME_NOTIFY,
+  CIFS_GENL_ATTR_SWN_IP_NOTIFY,
+  CIFS_GENL_ATTR_SWN_KRB_AUTH,
+  CIFS_GENL_ATTR_SWN_USER_NAME,
+  CIFS_GENL_ATTR_SWN_PASSWORD,
+  CIFS_GENL_ATTR_SWN_DOMAIN_NAME,
+  CIFS_GENL_ATTR_SWN_NOTIFICATION_TYPE,
+  CIFS_GENL_ATTR_SWN_RESOURCE_STATE,
+  CIFS_GENL_ATTR_SWN_RESOURCE_NAME,
+  __CIFS_GENL_ATTR_MAX,
+};
+#define CIFS_GENL_ATTR_MAX (__CIFS_GENL_ATTR_MAX - 1)
+enum cifs_genl_commands {
+  CIFS_GENL_CMD_UNSPEC,
+  CIFS_GENL_CMD_SWN_REGISTER,
+  CIFS_GENL_CMD_SWN_UNREGISTER,
+  CIFS_GENL_CMD_SWN_NOTIFY,
+  __CIFS_GENL_CMD_MAX
+};
+#define CIFS_GENL_CMD_MAX (__CIFS_GENL_CMD_MAX - 1)
+enum cifs_swn_notification_type {
+  CIFS_SWN_NOTIFICATION_RESOURCE_CHANGE = 0x01,
+  CIFS_SWN_NOTIFICATION_CLIENT_MOVE = 0x02,
+  CIFS_SWN_NOTIFICATION_SHARE_MOVE = 0x03,
+  CIFS_SWN_NOTIFICATION_IP_CHANGE = 0x04,
+};
+enum cifs_swn_resource_state {
+  CIFS_SWN_RESOURCE_STATE_UNKNOWN = 0x00,
+  CIFS_SWN_RESOURCE_STATE_AVAILABLE = 0x01,
+  CIFS_SWN_RESOURCE_STATE_UNAVAILABLE = 0xFF
+};
+#endif
diff --git a/libc/kernel/uapi/linux/close_range.h b/libc/kernel/uapi/linux/close_range.h
index de4135e..279e4bb 100644
--- a/libc/kernel/uapi/linux/close_range.h
+++ b/libc/kernel/uapi/linux/close_range.h
@@ -19,4 +19,5 @@
 #ifndef _UAPI_LINUX_CLOSE_RANGE_H
 #define _UAPI_LINUX_CLOSE_RANGE_H
 #define CLOSE_RANGE_UNSHARE (1U << 1)
+#define CLOSE_RANGE_CLOEXEC (1U << 2)
 #endif
diff --git a/libc/kernel/uapi/linux/const.h b/libc/kernel/uapi/linux/const.h
index 6a4c1f7..c62a702 100644
--- a/libc/kernel/uapi/linux/const.h
+++ b/libc/kernel/uapi/linux/const.h
@@ -30,4 +30,7 @@
 #define _ULL(x) (_AC(x, ULL))
 #define _BITUL(x) (_UL(1) << (x))
 #define _BITULL(x) (_ULL(1) << (x))
+#define __ALIGN_KERNEL(x,a) __ALIGN_KERNEL_MASK(x, (typeof(x)) (a) - 1)
+#define __ALIGN_KERNEL_MASK(x,mask) (((x) + (mask)) & ~(mask))
+#define __KERNEL_DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
 #endif
diff --git a/libc/kernel/uapi/linux/devlink.h b/libc/kernel/uapi/linux/devlink.h
index 5f3d30d..306557a 100644
--- a/libc/kernel/uapi/linux/devlink.h
+++ b/libc/kernel/uapi/linux/devlink.h
@@ -202,7 +202,7 @@
   __DEVLINK_RELOAD_LIMIT_MAX,
   DEVLINK_RELOAD_LIMIT_MAX = __DEVLINK_RELOAD_LIMIT_MAX - 1
 };
-#define DEVLINK_RELOAD_LIMITS_VALID_MASK (BIT(__DEVLINK_RELOAD_LIMIT_MAX) - 1)
+#define DEVLINK_RELOAD_LIMITS_VALID_MASK (_BITUL(__DEVLINK_RELOAD_LIMIT_MAX) - 1)
 enum devlink_attr {
   DEVLINK_ATTR_UNSPEC,
   DEVLINK_ATTR_BUS_NAME,
diff --git a/libc/kernel/uapi/linux/ethtool.h b/libc/kernel/uapi/linux/ethtool.h
index 238c2d9..021a69b 100644
--- a/libc/kernel/uapi/linux/ethtool.h
+++ b/libc/kernel/uapi/linux/ethtool.h
@@ -18,7 +18,7 @@
  ****************************************************************************/
 #ifndef _UAPI_LINUX_ETHTOOL_H
 #define _UAPI_LINUX_ETHTOOL_H
-#include <linux/kernel.h>
+#include <linux/const.h>
 #include <linux/types.h>
 #include <linux/if_ether.h>
 #include <limits.h>
diff --git a/libc/kernel/uapi/linux/f2fs.h b/libc/kernel/uapi/linux/f2fs.h
new file mode 100644
index 0000000..76da8f6
--- /dev/null
+++ b/libc/kernel/uapi/linux/f2fs.h
@@ -0,0 +1,85 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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_F2FS_H
+#define _UAPI_LINUX_F2FS_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define F2FS_IOCTL_MAGIC 0xf5
+#define F2FS_IOC_START_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 1)
+#define F2FS_IOC_COMMIT_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 2)
+#define F2FS_IOC_START_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 3)
+#define F2FS_IOC_RELEASE_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 4)
+#define F2FS_IOC_ABORT_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 5)
+#define F2FS_IOC_GARBAGE_COLLECT _IOW(F2FS_IOCTL_MAGIC, 6, __u32)
+#define F2FS_IOC_WRITE_CHECKPOINT _IO(F2FS_IOCTL_MAGIC, 7)
+#define F2FS_IOC_DEFRAGMENT _IOWR(F2FS_IOCTL_MAGIC, 8, struct f2fs_defragment)
+#define F2FS_IOC_MOVE_RANGE _IOWR(F2FS_IOCTL_MAGIC, 9, struct f2fs_move_range)
+#define F2FS_IOC_FLUSH_DEVICE _IOW(F2FS_IOCTL_MAGIC, 10, struct f2fs_flush_device)
+#define F2FS_IOC_GARBAGE_COLLECT_RANGE _IOW(F2FS_IOCTL_MAGIC, 11, struct f2fs_gc_range)
+#define F2FS_IOC_GET_FEATURES _IOR(F2FS_IOCTL_MAGIC, 12, __u32)
+#define F2FS_IOC_SET_PIN_FILE _IOW(F2FS_IOCTL_MAGIC, 13, __u32)
+#define F2FS_IOC_GET_PIN_FILE _IOR(F2FS_IOCTL_MAGIC, 14, __u32)
+#define F2FS_IOC_PRECACHE_EXTENTS _IO(F2FS_IOCTL_MAGIC, 15)
+#define F2FS_IOC_RESIZE_FS _IOW(F2FS_IOCTL_MAGIC, 16, __u64)
+#define F2FS_IOC_GET_COMPRESS_BLOCKS _IOR(F2FS_IOCTL_MAGIC, 17, __u64)
+#define F2FS_IOC_RELEASE_COMPRESS_BLOCKS _IOR(F2FS_IOCTL_MAGIC, 18, __u64)
+#define F2FS_IOC_RESERVE_COMPRESS_BLOCKS _IOR(F2FS_IOCTL_MAGIC, 19, __u64)
+#define F2FS_IOC_SEC_TRIM_FILE _IOW(F2FS_IOCTL_MAGIC, 20, struct f2fs_sectrim_range)
+#define F2FS_IOC_GET_COMPRESS_OPTION _IOR(F2FS_IOCTL_MAGIC, 21, struct f2fs_comp_option)
+#define F2FS_IOC_SET_COMPRESS_OPTION _IOW(F2FS_IOCTL_MAGIC, 22, struct f2fs_comp_option)
+#define F2FS_IOC_DECOMPRESS_FILE _IO(F2FS_IOCTL_MAGIC, 23)
+#define F2FS_IOC_COMPRESS_FILE _IO(F2FS_IOCTL_MAGIC, 24)
+#define F2FS_IOC_SHUTDOWN _IOR('X', 125, __u32)
+#define F2FS_GOING_DOWN_FULLSYNC 0x0
+#define F2FS_GOING_DOWN_METASYNC 0x1
+#define F2FS_GOING_DOWN_NOSYNC 0x2
+#define F2FS_GOING_DOWN_METAFLUSH 0x3
+#define F2FS_GOING_DOWN_NEED_FSCK 0x4
+#define F2FS_TRIM_FILE_DISCARD 0x1
+#define F2FS_TRIM_FILE_ZEROOUT 0x2
+#define F2FS_TRIM_FILE_MASK 0x3
+struct f2fs_gc_range {
+  __u32 sync;
+  __u64 start;
+  __u64 len;
+};
+struct f2fs_defragment {
+  __u64 start;
+  __u64 len;
+};
+struct f2fs_move_range {
+  __u32 dst_fd;
+  __u64 pos_in;
+  __u64 pos_out;
+  __u64 len;
+};
+struct f2fs_flush_device {
+  __u32 dev_num;
+  __u32 segments;
+};
+struct f2fs_sectrim_range {
+  __u64 start;
+  __u64 len;
+  __u64 flags;
+};
+struct f2fs_comp_option {
+  __u8 algorithm;
+  __u8 log_cluster_size;
+};
+#endif
diff --git a/libc/kernel/uapi/linux/fscrypt.h b/libc/kernel/uapi/linux/fscrypt.h
index 168b331..ca42eb3 100644
--- a/libc/kernel/uapi/linux/fscrypt.h
+++ b/libc/kernel/uapi/linux/fscrypt.h
@@ -28,13 +28,11 @@
 #define FSCRYPT_POLICY_FLAG_DIRECT_KEY 0x04
 #define FSCRYPT_POLICY_FLAG_IV_INO_LBLK_64 0x08
 #define FSCRYPT_POLICY_FLAG_IV_INO_LBLK_32 0x10
-#define FSCRYPT_POLICY_FLAGS_VALID 0x1F
 #define FSCRYPT_MODE_AES_256_XTS 1
 #define FSCRYPT_MODE_AES_256_CTS 4
 #define FSCRYPT_MODE_AES_128_CBC 5
 #define FSCRYPT_MODE_AES_128_CTS 6
 #define FSCRYPT_MODE_ADIANTUM 9
-#define __FSCRYPT_MODE_MAX 9
 #define FSCRYPT_POLICY_V1 0
 #define FSCRYPT_KEY_DESCRIPTOR_SIZE 8
 struct fscrypt_policy_v1 {
@@ -131,7 +129,7 @@
 #define FS_POLICY_FLAGS_PAD_32 FSCRYPT_POLICY_FLAGS_PAD_32
 #define FS_POLICY_FLAGS_PAD_MASK FSCRYPT_POLICY_FLAGS_PAD_MASK
 #define FS_POLICY_FLAG_DIRECT_KEY FSCRYPT_POLICY_FLAG_DIRECT_KEY
-#define FS_POLICY_FLAGS_VALID FSCRYPT_POLICY_FLAGS_VALID
+#define FS_POLICY_FLAGS_VALID 0x07
 #define FS_ENCRYPTION_MODE_INVALID 0
 #define FS_ENCRYPTION_MODE_AES_256_XTS FSCRYPT_MODE_AES_256_XTS
 #define FS_ENCRYPTION_MODE_AES_256_GCM 2
diff --git a/libc/kernel/uapi/linux/fsverity.h b/libc/kernel/uapi/linux/fsverity.h
index 5013567..da8b99d 100644
--- a/libc/kernel/uapi/linux/fsverity.h
+++ b/libc/kernel/uapi/linux/fsverity.h
@@ -38,6 +38,23 @@
   __u16 digest_size;
   __u8 digest[];
 };
+struct fsverity_descriptor {
+  __u8 version;
+  __u8 hash_algorithm;
+  __u8 log_blocksize;
+  __u8 salt_size;
+  __le32 __reserved_0x04;
+  __le64 data_size;
+  __u8 root_hash[64];
+  __u8 salt[32];
+  __u8 __reserved[144];
+};
+struct fsverity_formatted_digest {
+  char magic[8];
+  __le16 digest_algorithm;
+  __le16 digest_size;
+  __u8 digest[];
+};
 #define FS_IOC_ENABLE_VERITY _IOW('f', 133, struct fsverity_enable_arg)
 #define FS_IOC_MEASURE_VERITY _IOWR('f', 134, struct fsverity_digest)
 #endif
diff --git a/libc/kernel/uapi/linux/fuse.h b/libc/kernel/uapi/linux/fuse.h
index 8f1789b..efb5424 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 32
+#define FUSE_KERNEL_MINOR_VERSION 33
 #define FUSE_ROOT_ID 1
 struct fuse_attr {
   uint64_t ino;
@@ -69,6 +69,7 @@
 #define FATTR_MTIME_NOW (1 << 8)
 #define FATTR_LOCKOWNER (1 << 9)
 #define FATTR_CTIME (1 << 10)
+#define FATTR_KILL_SUIDGID (1 << 11)
 #define FOPEN_DIRECT_IO (1 << 0)
 #define FOPEN_KEEP_CACHE (1 << 1)
 #define FOPEN_NONSEEKABLE (1 << 2)
@@ -102,6 +103,7 @@
 #define FUSE_EXPLICIT_INVAL_DATA (1 << 25)
 #define FUSE_MAP_ALIGNMENT (1 << 26)
 #define FUSE_SUBMOUNTS (1 << 27)
+#define FUSE_HANDLE_KILLPRIV_V2 (1 << 28)
 #define FUSE_PASSTHROUGH (1 << 31)
 #define CUSE_UNRESTRICTED_IOCTL (1 << 0)
 #define FUSE_RELEASE_FLUSH (1 << 0)
@@ -110,7 +112,8 @@
 #define FUSE_LK_FLOCK (1 << 0)
 #define FUSE_WRITE_CACHE (1 << 0)
 #define FUSE_WRITE_LOCKOWNER (1 << 1)
-#define FUSE_WRITE_KILL_PRIV (1 << 2)
+#define FUSE_WRITE_KILL_SUIDGID (1 << 2)
+#define FUSE_WRITE_KILL_PRIV FUSE_WRITE_KILL_SUIDGID
 #define FUSE_READ_LOCKOWNER (1 << 1)
 #define FUSE_IOCTL_COMPAT (1 << 0)
 #define FUSE_IOCTL_UNRESTRICTED (1 << 1)
@@ -122,6 +125,7 @@
 #define FUSE_POLL_SCHEDULE_NOTIFY (1 << 0)
 #define FUSE_FSYNC_FDATASYNC (1 << 0)
 #define FUSE_ATTR_SUBMOUNT (1 << 0)
+#define FUSE_OPEN_KILL_SUIDGID (1 << 0)
 enum fuse_opcode {
   FUSE_LOOKUP = 1,
   FUSE_FORGET = 2,
@@ -260,13 +264,13 @@
 };
 struct fuse_open_in {
   uint32_t flags;
-  uint32_t unused;
+  uint32_t open_flags;
 };
 struct fuse_create_in {
   uint32_t flags;
   uint32_t mode;
   uint32_t umask;
-  uint32_t padding;
+  uint32_t open_flags;
 };
 struct fuse_open_out {
   uint64_t fh;
@@ -504,8 +508,9 @@
   uint64_t dummy3;
   uint64_t dummy4;
 };
-#define FUSE_DEV_IOC_CLONE _IOR(229, 0, uint32_t)
-#define FUSE_DEV_IOC_PASSTHROUGH_OPEN _IOW(229, 1, struct fuse_passthrough_out)
+#define FUSE_DEV_IOC_MAGIC 229
+#define FUSE_DEV_IOC_CLONE _IOR(FUSE_DEV_IOC_MAGIC, 0, uint32_t)
+#define FUSE_DEV_IOC_PASSTHROUGH_OPEN _IOW(FUSE_DEV_IOC_MAGIC, 127, struct fuse_passthrough_out)
 struct fuse_lseek_in {
   uint64_t fh;
   uint64_t offset;
diff --git a/libc/kernel/uapi/linux/gpio.h b/libc/kernel/uapi/linux/gpio.h
index a3836ff..7e010d9 100644
--- a/libc/kernel/uapi/linux/gpio.h
+++ b/libc/kernel/uapi/linux/gpio.h
@@ -41,6 +41,7 @@
   GPIO_V2_LINE_FLAG_BIAS_PULL_UP = _BITULL(8),
   GPIO_V2_LINE_FLAG_BIAS_PULL_DOWN = _BITULL(9),
   GPIO_V2_LINE_FLAG_BIAS_DISABLED = _BITULL(10),
+  GPIO_V2_LINE_FLAG_EVENT_CLOCK_REALTIME = _BITULL(11),
 };
 struct gpio_v2_line_values {
   __aligned_u64 bits;
diff --git a/libc/kernel/uapi/linux/hidraw.h b/libc/kernel/uapi/linux/hidraw.h
index ab7ed1c..65020ac 100644
--- a/libc/kernel/uapi/linux/hidraw.h
+++ b/libc/kernel/uapi/linux/hidraw.h
@@ -37,6 +37,10 @@
 #define HIDIOCSFEATURE(len) _IOC(_IOC_WRITE | _IOC_READ, 'H', 0x06, len)
 #define HIDIOCGFEATURE(len) _IOC(_IOC_WRITE | _IOC_READ, 'H', 0x07, len)
 #define HIDIOCGRAWUNIQ(len) _IOC(_IOC_READ, 'H', 0x08, len)
+#define HIDIOCSINPUT(len) _IOC(_IOC_WRITE | _IOC_READ, 'H', 0x09, len)
+#define HIDIOCGINPUT(len) _IOC(_IOC_WRITE | _IOC_READ, 'H', 0x0A, len)
+#define HIDIOCSOUTPUT(len) _IOC(_IOC_WRITE | _IOC_READ, 'H', 0x0B, len)
+#define HIDIOCGOUTPUT(len) _IOC(_IOC_WRITE | _IOC_READ, 'H', 0x0C, len)
 #define HIDRAW_FIRST_MINOR 0
 #define HIDRAW_MAX_DEVICES 64
 #define HIDRAW_BUFFER_SIZE 64
diff --git a/libc/kernel/uapi/linux/idxd.h b/libc/kernel/uapi/linux/idxd.h
index 74cdabd..8724149 100644
--- a/libc/kernel/uapi/linux/idxd.h
+++ b/libc/kernel/uapi/linux/idxd.h
@@ -34,6 +34,7 @@
 #define IDXD_OP_FLAG_STORD 0x2000
 #define IDXD_OP_FLAG_DRDBK 0x4000
 #define IDXD_OP_FLAG_DSTS 0x8000
+#define IDXD_OP_FLAG_RD_SRC2_AECS 0x010000
 enum dsa_opcode {
   DSA_OPCODE_NOOP = 0,
   DSA_OPCODE_BATCH,
@@ -53,6 +54,13 @@
   DSA_OPCODE_DIF_UPDT,
   DSA_OPCODE_CFLUSH = 0x20,
 };
+enum iax_opcode {
+  IAX_OPCODE_NOOP = 0,
+  IAX_OPCODE_DRAIN = 2,
+  IAX_OPCODE_MEMMOVE,
+  IAX_OPCODE_DECOMPRESS = 0x42,
+  IAX_OPCODE_COMPRESS,
+};
 enum dsa_completion_status {
   DSA_COMP_NONE = 0,
   DSA_COMP_SUCCESS,
@@ -84,6 +92,32 @@
   DSA_COMP_HW_ERR_DRB,
   DSA_COMP_TRANSLATION_FAIL,
 };
+enum iax_completion_status {
+  IAX_COMP_NONE = 0,
+  IAX_COMP_SUCCESS,
+  IAX_COMP_PAGE_FAULT_IR = 0x04,
+  IAX_COMP_OUTBUF_OVERFLOW,
+  IAX_COMP_BAD_OPCODE = 0x10,
+  IAX_COMP_INVALID_FLAGS,
+  IAX_COMP_NOZERO_RESERVE,
+  IAX_COMP_INVALID_SIZE,
+  IAX_COMP_OVERLAP_BUFFERS = 0x16,
+  IAX_COMP_INT_HANDLE_INVAL = 0x19,
+  IAX_COMP_CRA_XLAT,
+  IAX_COMP_CRA_ALIGN,
+  IAX_COMP_ADDR_ALIGN,
+  IAX_COMP_PRIV_BAD,
+  IAX_COMP_TRAFFIC_CLASS_CONF,
+  IAX_COMP_PFAULT_RDBA,
+  IAX_COMP_HW_ERR1,
+  IAX_COMP_HW_ERR_DRB,
+  IAX_COMP_TRANSLATION_FAIL,
+  IAX_COMP_PRS_TIMEOUT,
+  IAX_COMP_WATCHDOG,
+  IAX_COMP_INVALID_COMP_FLAG = 0x30,
+  IAX_COMP_INVALID_FILTER_FLAG,
+  IAX_COMP_INVALID_NUM_ELEMS = 0x33,
+};
 #define DSA_COMP_STATUS_MASK 0x7f
 #define DSA_COMP_STATUS_WRITE 0x80
 struct dsa_hw_desc {
@@ -159,6 +193,27 @@
     uint8_t op_specific[24];
   };
 } __attribute__((packed));
+struct iax_hw_desc {
+  uint32_t pasid : 20;
+  uint32_t rsvd : 11;
+  uint32_t priv : 1;
+  uint32_t flags : 24;
+  uint32_t opcode : 8;
+  uint64_t completion_addr;
+  uint64_t src1_addr;
+  uint64_t dst_addr;
+  uint32_t src1_size;
+  uint16_t int_handle;
+  union {
+    uint16_t compr_flags;
+    uint16_t decompr_flags;
+  };
+  uint64_t src2_addr;
+  uint32_t max_dst_size;
+  uint32_t src2_size;
+  uint32_t filter_flags;
+  uint32_t num_inputs;
+} __attribute__((packed));
 struct dsa_raw_desc {
   uint64_t field[8];
 } __attribute__((packed));
@@ -203,4 +258,21 @@
 struct dsa_raw_completion_record {
   uint64_t field[4];
 } __attribute__((packed));
+struct iax_completion_record {
+  volatile uint8_t status;
+  uint8_t error_code;
+  uint16_t rsvd;
+  uint32_t bytes_completed;
+  uint64_t fault_addr;
+  uint32_t invalid_flags;
+  uint32_t rsvd2;
+  uint32_t output_size;
+  uint8_t output_bits;
+  uint8_t rsvd3;
+  uint16_t rsvd4;
+  uint64_t rsvd5[4];
+} __attribute__((packed));
+struct iax_raw_completion_record {
+  uint64_t field[8];
+} __attribute__((packed));
 #endif
diff --git a/libc/kernel/uapi/linux/if_alg.h b/libc/kernel/uapi/linux/if_alg.h
index 7505f86..6530a16 100644
--- a/libc/kernel/uapi/linux/if_alg.h
+++ b/libc/kernel/uapi/linux/if_alg.h
@@ -26,6 +26,13 @@
   __u32 salg_mask;
   __u8 salg_name[64];
 };
+struct sockaddr_alg_new {
+  __u16 salg_family;
+  __u8 salg_type[14];
+  __u32 salg_feat;
+  __u32 salg_mask;
+  __u8 salg_name[];
+};
 struct af_alg_iv {
   __u32 ivlen;
   __u8 iv[0];
diff --git a/libc/kernel/uapi/linux/if_bridge.h b/libc/kernel/uapi/linux/if_bridge.h
index b896d99..570c09e 100644
--- a/libc/kernel/uapi/linux/if_bridge.h
+++ b/libc/kernel/uapi/linux/if_bridge.h
@@ -107,6 +107,7 @@
   IFLA_BRIDGE_VLAN_INFO,
   IFLA_BRIDGE_VLAN_TUNNEL_INFO,
   IFLA_BRIDGE_MRP,
+  IFLA_BRIDGE_CFM,
   __IFLA_BRIDGE_MAX,
 };
 #define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1)
@@ -279,6 +280,110 @@
   __u32 period;
   __u16 in_id;
 };
+enum {
+  IFLA_BRIDGE_CFM_UNSPEC,
+  IFLA_BRIDGE_CFM_MEP_CREATE,
+  IFLA_BRIDGE_CFM_MEP_DELETE,
+  IFLA_BRIDGE_CFM_MEP_CONFIG,
+  IFLA_BRIDGE_CFM_CC_CONFIG,
+  IFLA_BRIDGE_CFM_CC_PEER_MEP_ADD,
+  IFLA_BRIDGE_CFM_CC_PEER_MEP_REMOVE,
+  IFLA_BRIDGE_CFM_CC_RDI,
+  IFLA_BRIDGE_CFM_CC_CCM_TX,
+  IFLA_BRIDGE_CFM_MEP_CREATE_INFO,
+  IFLA_BRIDGE_CFM_MEP_CONFIG_INFO,
+  IFLA_BRIDGE_CFM_CC_CONFIG_INFO,
+  IFLA_BRIDGE_CFM_CC_RDI_INFO,
+  IFLA_BRIDGE_CFM_CC_CCM_TX_INFO,
+  IFLA_BRIDGE_CFM_CC_PEER_MEP_INFO,
+  IFLA_BRIDGE_CFM_MEP_STATUS_INFO,
+  IFLA_BRIDGE_CFM_CC_PEER_STATUS_INFO,
+  __IFLA_BRIDGE_CFM_MAX,
+};
+#define IFLA_BRIDGE_CFM_MAX (__IFLA_BRIDGE_CFM_MAX - 1)
+enum {
+  IFLA_BRIDGE_CFM_MEP_CREATE_UNSPEC,
+  IFLA_BRIDGE_CFM_MEP_CREATE_INSTANCE,
+  IFLA_BRIDGE_CFM_MEP_CREATE_DOMAIN,
+  IFLA_BRIDGE_CFM_MEP_CREATE_DIRECTION,
+  IFLA_BRIDGE_CFM_MEP_CREATE_IFINDEX,
+  __IFLA_BRIDGE_CFM_MEP_CREATE_MAX,
+};
+#define IFLA_BRIDGE_CFM_MEP_CREATE_MAX (__IFLA_BRIDGE_CFM_MEP_CREATE_MAX - 1)
+enum {
+  IFLA_BRIDGE_CFM_MEP_DELETE_UNSPEC,
+  IFLA_BRIDGE_CFM_MEP_DELETE_INSTANCE,
+  __IFLA_BRIDGE_CFM_MEP_DELETE_MAX,
+};
+#define IFLA_BRIDGE_CFM_MEP_DELETE_MAX (__IFLA_BRIDGE_CFM_MEP_DELETE_MAX - 1)
+enum {
+  IFLA_BRIDGE_CFM_MEP_CONFIG_UNSPEC,
+  IFLA_BRIDGE_CFM_MEP_CONFIG_INSTANCE,
+  IFLA_BRIDGE_CFM_MEP_CONFIG_UNICAST_MAC,
+  IFLA_BRIDGE_CFM_MEP_CONFIG_MDLEVEL,
+  IFLA_BRIDGE_CFM_MEP_CONFIG_MEPID,
+  __IFLA_BRIDGE_CFM_MEP_CONFIG_MAX,
+};
+#define IFLA_BRIDGE_CFM_MEP_CONFIG_MAX (__IFLA_BRIDGE_CFM_MEP_CONFIG_MAX - 1)
+enum {
+  IFLA_BRIDGE_CFM_CC_CONFIG_UNSPEC,
+  IFLA_BRIDGE_CFM_CC_CONFIG_INSTANCE,
+  IFLA_BRIDGE_CFM_CC_CONFIG_ENABLE,
+  IFLA_BRIDGE_CFM_CC_CONFIG_EXP_INTERVAL,
+  IFLA_BRIDGE_CFM_CC_CONFIG_EXP_MAID,
+  __IFLA_BRIDGE_CFM_CC_CONFIG_MAX,
+};
+#define IFLA_BRIDGE_CFM_CC_CONFIG_MAX (__IFLA_BRIDGE_CFM_CC_CONFIG_MAX - 1)
+enum {
+  IFLA_BRIDGE_CFM_CC_PEER_MEP_UNSPEC,
+  IFLA_BRIDGE_CFM_CC_PEER_MEP_INSTANCE,
+  IFLA_BRIDGE_CFM_CC_PEER_MEPID,
+  __IFLA_BRIDGE_CFM_CC_PEER_MEP_MAX,
+};
+#define IFLA_BRIDGE_CFM_CC_PEER_MEP_MAX (__IFLA_BRIDGE_CFM_CC_PEER_MEP_MAX - 1)
+enum {
+  IFLA_BRIDGE_CFM_CC_RDI_UNSPEC,
+  IFLA_BRIDGE_CFM_CC_RDI_INSTANCE,
+  IFLA_BRIDGE_CFM_CC_RDI_RDI,
+  __IFLA_BRIDGE_CFM_CC_RDI_MAX,
+};
+#define IFLA_BRIDGE_CFM_CC_RDI_MAX (__IFLA_BRIDGE_CFM_CC_RDI_MAX - 1)
+enum {
+  IFLA_BRIDGE_CFM_CC_CCM_TX_UNSPEC,
+  IFLA_BRIDGE_CFM_CC_CCM_TX_INSTANCE,
+  IFLA_BRIDGE_CFM_CC_CCM_TX_DMAC,
+  IFLA_BRIDGE_CFM_CC_CCM_TX_SEQ_NO_UPDATE,
+  IFLA_BRIDGE_CFM_CC_CCM_TX_PERIOD,
+  IFLA_BRIDGE_CFM_CC_CCM_TX_IF_TLV,
+  IFLA_BRIDGE_CFM_CC_CCM_TX_IF_TLV_VALUE,
+  IFLA_BRIDGE_CFM_CC_CCM_TX_PORT_TLV,
+  IFLA_BRIDGE_CFM_CC_CCM_TX_PORT_TLV_VALUE,
+  __IFLA_BRIDGE_CFM_CC_CCM_TX_MAX,
+};
+#define IFLA_BRIDGE_CFM_CC_CCM_TX_MAX (__IFLA_BRIDGE_CFM_CC_CCM_TX_MAX - 1)
+enum {
+  IFLA_BRIDGE_CFM_MEP_STATUS_UNSPEC,
+  IFLA_BRIDGE_CFM_MEP_STATUS_INSTANCE,
+  IFLA_BRIDGE_CFM_MEP_STATUS_OPCODE_UNEXP_SEEN,
+  IFLA_BRIDGE_CFM_MEP_STATUS_VERSION_UNEXP_SEEN,
+  IFLA_BRIDGE_CFM_MEP_STATUS_RX_LEVEL_LOW_SEEN,
+  __IFLA_BRIDGE_CFM_MEP_STATUS_MAX,
+};
+#define IFLA_BRIDGE_CFM_MEP_STATUS_MAX (__IFLA_BRIDGE_CFM_MEP_STATUS_MAX - 1)
+enum {
+  IFLA_BRIDGE_CFM_CC_PEER_STATUS_UNSPEC,
+  IFLA_BRIDGE_CFM_CC_PEER_STATUS_INSTANCE,
+  IFLA_BRIDGE_CFM_CC_PEER_STATUS_PEER_MEPID,
+  IFLA_BRIDGE_CFM_CC_PEER_STATUS_CCM_DEFECT,
+  IFLA_BRIDGE_CFM_CC_PEER_STATUS_RDI,
+  IFLA_BRIDGE_CFM_CC_PEER_STATUS_PORT_TLV_VALUE,
+  IFLA_BRIDGE_CFM_CC_PEER_STATUS_IF_TLV_VALUE,
+  IFLA_BRIDGE_CFM_CC_PEER_STATUS_SEEN,
+  IFLA_BRIDGE_CFM_CC_PEER_STATUS_TLV_SEEN,
+  IFLA_BRIDGE_CFM_CC_PEER_STATUS_SEQ_UNEXP_SEEN,
+  __IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX,
+};
+#define IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX (__IFLA_BRIDGE_CFM_CC_PEER_STATUS_MAX - 1)
 struct bridge_stp_xstats {
   __u64 transition_blk;
   __u64 transition_fwd;
@@ -413,6 +518,7 @@
     union {
       __be32 ip4;
       struct in6_addr ip6;
+      unsigned char mac_addr[ETH_ALEN];
     } u;
     __be16 proto;
   } addr;
diff --git a/libc/kernel/uapi/linux/if_ether.h b/libc/kernel/uapi/linux/if_ether.h
index c3e0718..8405653 100644
--- a/libc/kernel/uapi/linux/if_ether.h
+++ b/libc/kernel/uapi/linux/if_ether.h
@@ -80,6 +80,7 @@
 #define ETH_P_1588 0x88F7
 #define ETH_P_NCSI 0x88F8
 #define ETH_P_PRP 0x88FB
+#define ETH_P_CFM 0x8902
 #define ETH_P_FCOE 0x8906
 #define ETH_P_IBOE 0x8915
 #define ETH_P_TDLS 0x890D
diff --git a/libc/kernel/uapi/linux/if_frad.h b/libc/kernel/uapi/linux/if_frad.h
deleted file mode 100644
index 1876305..0000000
--- a/libc/kernel/uapi/linux/if_frad.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- ***   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_FRAD_H_
-#define _UAPI_FRAD_H_
-#include <linux/if.h>
-struct dlci_add {
-  char devname[IFNAMSIZ];
-  short dlci;
-};
-#define DLCI_GET_CONF (SIOCDEVPRIVATE + 2)
-#define DLCI_SET_CONF (SIOCDEVPRIVATE + 3)
-struct dlci_conf {
-  short flags;
-  short CIR_fwd;
-  short Bc_fwd;
-  short Be_fwd;
-  short CIR_bwd;
-  short Bc_bwd;
-  short Be_bwd;
-  short Tc_fwd;
-  short Tc_bwd;
-  short Tf_max;
-  short Tb_max;
-};
-#define DLCI_GET_SLAVE (SIOCDEVPRIVATE + 4)
-#define DLCI_IGNORE_CIR_OUT 0x0001
-#define DLCI_ACCOUNT_CIR_IN 0x0002
-#define DLCI_BUFFER_IF 0x0008
-#define DLCI_VALID_FLAGS 0x000B
-#define FRAD_GET_CONF (SIOCDEVPRIVATE)
-#define FRAD_SET_CONF (SIOCDEVPRIVATE + 1)
-#define FRAD_LAST_IOCTL FRAD_SET_CONF
-struct frad_conf {
-  short station;
-  short flags;
-  short kbaud;
-  short clocking;
-  short mtu;
-  short T391;
-  short T392;
-  short N391;
-  short N392;
-  short N393;
-  short CIR_fwd;
-  short Bc_fwd;
-  short Be_fwd;
-  short CIR_bwd;
-  short Bc_bwd;
-  short Be_bwd;
-};
-#define FRAD_STATION_CPE 0x0000
-#define FRAD_STATION_NODE 0x0001
-#define FRAD_TX_IGNORE_CIR 0x0001
-#define FRAD_RX_ACCOUNT_CIR 0x0002
-#define FRAD_DROP_ABORTED 0x0004
-#define FRAD_BUFFERIF 0x0008
-#define FRAD_STATS 0x0010
-#define FRAD_MCI 0x0100
-#define FRAD_AUTODLCI 0x8000
-#define FRAD_VALID_FLAGS 0x811F
-#define FRAD_CLOCK_INT 0x0001
-#define FRAD_CLOCK_EXT 0x0000
-#endif
diff --git a/libc/kernel/uapi/linux/if_link.h b/libc/kernel/uapi/linux/if_link.h
index 1b4683e..3db8a4f 100644
--- a/libc/kernel/uapi/linux/if_link.h
+++ b/libc/kernel/uapi/linux/if_link.h
@@ -333,6 +333,8 @@
   IFLA_MACVLAN_MACADDR,
   IFLA_MACVLAN_MACADDR_DATA,
   IFLA_MACVLAN_MACADDR_COUNT,
+  IFLA_MACVLAN_BC_QUEUE_LEN,
+  IFLA_MACVLAN_BC_QUEUE_LEN_USED,
   __IFLA_MACVLAN_MAX,
 };
 #define IFLA_MACVLAN_MAX (__IFLA_MACVLAN_MAX - 1)
diff --git a/libc/kernel/uapi/linux/if_packet.h b/libc/kernel/uapi/linux/if_packet.h
index db24bbe..e7e7a33 100644
--- a/libc/kernel/uapi/linux/if_packet.h
+++ b/libc/kernel/uapi/linux/if_packet.h
@@ -18,6 +18,7 @@
  ****************************************************************************/
 #ifndef __LINUX_IF_PACKET_H
 #define __LINUX_IF_PACKET_H
+#include <asm/byteorder.h>
 #include <linux/types.h>
 struct sockaddr_pkt {
   unsigned short spkt_family;
@@ -218,6 +219,16 @@
   unsigned short mr_alen;
   unsigned char mr_address[8];
 };
+struct fanout_args {
+#ifdef __LITTLE_ENDIAN_BITFIELD
+  __u16 id;
+  __u16 type_flags;
+#else
+  __u16 type_flags;
+  __u16 id;
+#endif
+  __u32 max_num_members;
+};
 #define PACKET_MR_MULTICAST 0
 #define PACKET_MR_PROMISC 1
 #define PACKET_MR_ALLMULTI 2
diff --git a/libc/kernel/uapi/linux/incrementalfs.h b/libc/kernel/uapi/linux/incrementalfs.h
index ad2424e..65d825c 100644
--- a/libc/kernel/uapi/linux/incrementalfs.h
+++ b/libc/kernel/uapi/linux/incrementalfs.h
@@ -28,12 +28,15 @@
 #define INCFS_HEADER_VER 1
 #define INCFS_MAX_HASH_SIZE 32
 #define INCFS_MAX_FILE_ATTR_SIZE 512
+#define INCFS_INDEX_NAME ".index"
+#define INCFS_INCOMPLETE_NAME ".incomplete"
 #define INCFS_PENDING_READS_FILENAME ".pending_reads"
 #define INCFS_LOG_FILENAME ".log"
 #define INCFS_BLOCKS_WRITTEN_FILENAME ".blocks_written"
 #define INCFS_XATTR_ID_NAME (XATTR_USER_PREFIX "incfs.id")
 #define INCFS_XATTR_SIZE_NAME (XATTR_USER_PREFIX "incfs.size")
 #define INCFS_XATTR_METADATA_NAME (XATTR_USER_PREFIX "incfs.metadata")
+#define INCFS_XATTR_VERITY_NAME (XATTR_USER_PREFIX "incfs.verity")
 #define INCFS_MAX_SIGNATURE_SIZE 8096
 #define INCFS_SIGNATURE_VERSION 2
 #define INCFS_SIGNATURE_SECTIONS 2
diff --git a/libc/kernel/uapi/linux/io_uring.h b/libc/kernel/uapi/linux/io_uring.h
index 5bfd85b..ea9fcdb 100644
--- a/libc/kernel/uapi/linux/io_uring.h
+++ b/libc/kernel/uapi/linux/io_uring.h
@@ -48,6 +48,8 @@
     __u32 statx_flags;
     __u32 fadvise_advice;
     __u32 splice_flags;
+    __u32 rename_flags;
+    __u32 unlink_flags;
   };
   __u64 user_data;
   union {
@@ -118,10 +120,14 @@
   IORING_OP_PROVIDE_BUFFERS,
   IORING_OP_REMOVE_BUFFERS,
   IORING_OP_TEE,
+  IORING_OP_SHUTDOWN,
+  IORING_OP_RENAMEAT,
+  IORING_OP_UNLINKAT,
   IORING_OP_LAST,
 };
 #define IORING_FSYNC_DATASYNC (1U << 0)
 #define IORING_TIMEOUT_ABS (1U << 0)
+#define IORING_TIMEOUT_UPDATE (1U << 1)
 #define SPLICE_F_FD_IN_FIXED (1U << 31)
 struct io_uring_cqe {
   __u64 user_data;
@@ -163,6 +169,7 @@
 #define IORING_ENTER_GETEVENTS (1U << 0)
 #define IORING_ENTER_SQ_WAKEUP (1U << 1)
 #define IORING_ENTER_SQ_WAIT (1U << 2)
+#define IORING_ENTER_EXT_ARG (1U << 3)
 struct io_uring_params {
   __u32 sq_entries;
   __u32 cq_entries;
@@ -182,6 +189,8 @@
 #define IORING_FEAT_CUR_PERSONALITY (1U << 4)
 #define IORING_FEAT_FAST_POLL (1U << 5)
 #define IORING_FEAT_POLL_32BITS (1U << 6)
+#define IORING_FEAT_SQPOLL_NONFIXED (1U << 7)
+#define IORING_FEAT_EXT_ARG (1U << 8)
 enum {
   IORING_REGISTER_BUFFERS = 0,
   IORING_UNREGISTER_BUFFERS = 1,
@@ -234,4 +243,10 @@
   IORING_RESTRICTION_SQE_FLAGS_REQUIRED = 3,
   IORING_RESTRICTION_LAST
 };
+struct io_uring_getevents_arg {
+  __u64 sigmask;
+  __u32 sigmask_sz;
+  __u32 pad;
+  __u64 ts;
+};
 #endif
diff --git a/libc/kernel/uapi/linux/kernel.h b/libc/kernel/uapi/linux/kernel.h
index 000cd30..7506a41 100644
--- a/libc/kernel/uapi/linux/kernel.h
+++ b/libc/kernel/uapi/linux/kernel.h
@@ -19,7 +19,5 @@
 #ifndef _UAPI_LINUX_KERNEL_H
 #define _UAPI_LINUX_KERNEL_H
 #include <linux/sysinfo.h>
-#define __ALIGN_KERNEL(x,a) __ALIGN_KERNEL_MASK(x, (typeof(x)) (a) - 1)
-#define __ALIGN_KERNEL_MASK(x,mask) (((x) + (mask)) & ~(mask))
-#define __KERNEL_DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
+#include <linux/const.h>
 #endif
diff --git a/libc/kernel/uapi/linux/keyboard.h b/libc/kernel/uapi/linux/keyboard.h
index 570cca9..a05438b 100644
--- a/libc/kernel/uapi/linux/keyboard.h
+++ b/libc/kernel/uapi/linux/keyboard.h
@@ -35,7 +35,6 @@
 #define MAX_NR_OF_USER_KEYMAPS 256
 #define MAX_NR_FUNC 256
 #define KT_LATIN 0
-#define KT_LETTER 11
 #define KT_FN 1
 #define KT_SPEC 2
 #define KT_PAD 3
@@ -46,6 +45,7 @@
 #define KT_META 8
 #define KT_ASCII 9
 #define KT_LOCK 10
+#define KT_LETTER 11
 #define KT_SLOCK 12
 #define KT_DEAD2 13
 #define KT_BRL 14
diff --git a/libc/kernel/uapi/linux/kvm.h b/libc/kernel/uapi/linux/kvm.h
index a5bc1f2..1153458 100644
--- a/libc/kernel/uapi/linux/kvm.h
+++ b/libc/kernel/uapi/linux/kvm.h
@@ -197,6 +197,8 @@
 #define KVM_EXIT_ARM_NISV 28
 #define KVM_EXIT_X86_RDMSR 29
 #define KVM_EXIT_X86_WRMSR 30
+#define KVM_EXIT_DIRTY_RING_FULL 31
+#define KVM_EXIT_AP_RESET_HOLD 32
 #define KVM_INTERNAL_ERROR_EMULATION 1
 #define KVM_INTERNAL_ERROR_SIMUL_EX 2
 #define KVM_INTERNAL_ERROR_DELIVERY_EV 3
@@ -433,6 +435,7 @@
 #define KVM_MP_STATE_CHECK_STOP 6
 #define KVM_MP_STATE_OPERATING 7
 #define KVM_MP_STATE_LOAD 8
+#define KVM_MP_STATE_AP_RESET_HOLD 9
 struct kvm_mp_state {
   __u32 mp_state;
 };
@@ -831,6 +834,8 @@
 #define KVM_CAP_X86_USER_SPACE_MSR 188
 #define KVM_CAP_X86_MSR_FILTER 189
 #define KVM_CAP_ENFORCE_PV_FEATURE_CPUID 190
+#define KVM_CAP_SYS_HYPERV_CPUID 191
+#define KVM_CAP_DIRTY_LOG_RING 192
 #ifdef KVM_CAP_IRQ_ROUTING
 struct kvm_irq_routing_irqchip {
   __u32 irqchip;
@@ -1183,6 +1188,7 @@
 };
 #define KVM_S390_PV_COMMAND _IOWR(KVMIO, 0xc5, struct kvm_pv_cmd)
 #define KVM_X86_SET_MSR_FILTER _IOW(KVMIO, 0xc6, struct kvm_msr_filter)
+#define KVM_RESET_DIRTY_RINGS _IO(KVMIO, 0xc7)
 enum sev_cmd_id {
   KVM_SEV_INIT = 0,
   KVM_SEV_ES_INIT,
@@ -1303,4 +1309,15 @@
 #define KVM_HYPERV_EVENTFD_DEASSIGN (1 << 0)
 #define KVM_DIRTY_LOG_MANUAL_PROTECT_ENABLE (1 << 0)
 #define KVM_DIRTY_LOG_INITIALLY_SET (1 << 1)
+#ifndef KVM_DIRTY_LOG_PAGE_OFFSET
+#define KVM_DIRTY_LOG_PAGE_OFFSET 0
+#endif
+#define KVM_DIRTY_GFN_F_DIRTY BIT(0)
+#define KVM_DIRTY_GFN_F_RESET BIT(1)
+#define KVM_DIRTY_GFN_F_MASK 0x3
+struct kvm_dirty_gfn {
+  __u32 flags;
+  __u32 slot;
+  __u64 offset;
+};
 #endif
diff --git a/libc/kernel/uapi/linux/lirc.h b/libc/kernel/uapi/linux/lirc.h
index 20b08e9..a0ac24a 100644
--- a/libc/kernel/uapi/linux/lirc.h
+++ b/libc/kernel/uapi/linux/lirc.h
@@ -131,5 +131,6 @@
   RC_PROTO_RCMM24 = 25,
   RC_PROTO_RCMM32 = 26,
   RC_PROTO_XBOX_DVD = 27,
+  RC_PROTO_MAX = RC_PROTO_XBOX_DVD,
 };
 #endif
diff --git a/libc/kernel/uapi/linux/media-bus-format.h b/libc/kernel/uapi/linux/media-bus-format.h
index 9e0ef0f..2542a32 100644
--- a/libc/kernel/uapi/linux/media-bus-format.h
+++ b/libc/kernel/uapi/linux/media-bus-format.h
@@ -40,6 +40,7 @@
 #define MEDIA_BUS_FMT_RGB888_2X12_BE 0x100b
 #define MEDIA_BUS_FMT_RGB888_2X12_LE 0x100c
 #define MEDIA_BUS_FMT_RGB888_3X8 0x101c
+#define MEDIA_BUS_FMT_RGB888_3X8_DELTA 0x101d
 #define MEDIA_BUS_FMT_RGB888_1X7X4_SPWG 0x1011
 #define MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA 0x1012
 #define MEDIA_BUS_FMT_ARGB8888_1X32 0x100d
@@ -127,4 +128,5 @@
 #define MEDIA_BUS_FMT_JPEG_1X8 0x4001
 #define MEDIA_BUS_FMT_S5C_UYVY_JPEG_1X8 0x5001
 #define MEDIA_BUS_FMT_AHSV8888_1X32 0x6001
+#define MEDIA_BUS_FMT_METADATA_FIXED 0x7001
 #endif
diff --git a/libc/kernel/uapi/linux/mroute6.h b/libc/kernel/uapi/linux/mroute6.h
index e6c83e9..c73765c 100644
--- a/libc/kernel/uapi/linux/mroute6.h
+++ b/libc/kernel/uapi/linux/mroute6.h
@@ -18,7 +18,7 @@
  ****************************************************************************/
 #ifndef _UAPI__LINUX_MROUTE6_H
 #define _UAPI__LINUX_MROUTE6_H
-#include <linux/kernel.h>
+#include <linux/const.h>
 #include <linux/types.h>
 #include <linux/sockios.h>
 #include <linux/in6.h>
diff --git a/libc/kernel/uapi/linux/mrp_bridge.h b/libc/kernel/uapi/linux/mrp_bridge.h
index ea4a7e3..0f93514 100644
--- a/libc/kernel/uapi/linux/mrp_bridge.h
+++ b/libc/kernel/uapi/linux/mrp_bridge.h
@@ -68,6 +68,7 @@
   BR_MRP_TLV_HEADER_IN_TOPO = 0x7,
   BR_MRP_TLV_HEADER_IN_LINK_DOWN = 0x8,
   BR_MRP_TLV_HEADER_IN_LINK_UP = 0x9,
+  BR_MRP_TLV_HEADER_IN_LINK_STATUS = 0xa,
   BR_MRP_TLV_HEADER_OPTION = 0x7f,
 };
 enum br_mrp_sub_tlv_header_type {
@@ -75,76 +76,4 @@
   BR_MRP_SUB_TLV_HEADER_TEST_PROPAGATE = 0x2,
   BR_MRP_SUB_TLV_HEADER_TEST_AUTO_MGR = 0x3,
 };
-struct br_mrp_tlv_hdr {
-  __u8 type;
-  __u8 length;
-};
-struct br_mrp_sub_tlv_hdr {
-  __u8 type;
-  __u8 length;
-};
-struct br_mrp_end_hdr {
-  struct br_mrp_tlv_hdr hdr;
-};
-struct br_mrp_common_hdr {
-  __be16 seq_id;
-  __u8 domain[MRP_DOMAIN_UUID_LENGTH];
-};
-struct br_mrp_ring_test_hdr {
-  __be16 prio;
-  __u8 sa[ETH_ALEN];
-  __be16 port_role;
-  __be16 state;
-  __be16 transitions;
-  __be32 timestamp;
-};
-struct br_mrp_ring_topo_hdr {
-  __be16 prio;
-  __u8 sa[ETH_ALEN];
-  __be16 interval;
-};
-struct br_mrp_ring_link_hdr {
-  __u8 sa[ETH_ALEN];
-  __be16 port_role;
-  __be16 interval;
-  __be16 blocked;
-};
-struct br_mrp_sub_opt_hdr {
-  __u8 type;
-  __u8 manufacture_data[MRP_MANUFACTURE_DATA_LENGTH];
-};
-struct br_mrp_test_mgr_nack_hdr {
-  __be16 prio;
-  __u8 sa[ETH_ALEN];
-  __be16 other_prio;
-  __u8 other_sa[ETH_ALEN];
-};
-struct br_mrp_test_prop_hdr {
-  __be16 prio;
-  __u8 sa[ETH_ALEN];
-  __be16 other_prio;
-  __u8 other_sa[ETH_ALEN];
-};
-struct br_mrp_oui_hdr {
-  __u8 oui[MRP_OUI_LENGTH];
-};
-struct br_mrp_in_test_hdr {
-  __be16 id;
-  __u8 sa[ETH_ALEN];
-  __be16 port_role;
-  __be16 state;
-  __be16 transitions;
-  __be32 timestamp;
-};
-struct br_mrp_in_topo_hdr {
-  __u8 sa[ETH_ALEN];
-  __be16 id;
-  __be16 interval;
-};
-struct br_mrp_in_link_hdr {
-  __u8 sa[ETH_ALEN];
-  __be16 port_role;
-  __be16 id;
-  __be16 interval;
-};
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/ipset/ip_set.h b/libc/kernel/uapi/linux/netfilter/ipset/ip_set.h
index a6e1bce..4252530 100644
--- a/libc/kernel/uapi/linux/netfilter/ipset/ip_set.h
+++ b/libc/kernel/uapi/linux/netfilter/ipset/ip_set.h
@@ -81,11 +81,11 @@
   IPSET_ATTR_MARK,
   IPSET_ATTR_MARKMASK,
   IPSET_ATTR_CADT_MAX = 16,
-  IPSET_ATTR_GC,
+  IPSET_ATTR_INITVAL,
   IPSET_ATTR_HASHSIZE,
   IPSET_ATTR_MAXELEM,
   IPSET_ATTR_NETMASK,
-  IPSET_ATTR_PROBES,
+  IPSET_ATTR_BUCKETSIZE,
   IPSET_ATTR_RESIZE,
   IPSET_ATTR_SIZE,
   IPSET_ATTR_ELEMENTS,
@@ -185,6 +185,8 @@
 enum ipset_create_flags {
   IPSET_CREATE_FLAG_BIT_FORCEADD = 0,
   IPSET_CREATE_FLAG_FORCEADD = (1 << IPSET_CREATE_FLAG_BIT_FORCEADD),
+  IPSET_CREATE_FLAG_BIT_BUCKETSIZE = 1,
+  IPSET_CREATE_FLAG_BUCKETSIZE = (1 << IPSET_CREATE_FLAG_BIT_BUCKETSIZE),
   IPSET_CREATE_FLAG_BIT_MAX = 7,
 };
 enum ipset_adt {
diff --git a/libc/kernel/uapi/linux/netfilter/nf_tables.h b/libc/kernel/uapi/linux/netfilter/nf_tables.h
index 3249dc5..b35dd65 100644
--- a/libc/kernel/uapi/linux/netfilter/nf_tables.h
+++ b/libc/kernel/uapi/linux/netfilter/nf_tables.h
@@ -176,6 +176,7 @@
   NFT_SET_EVAL = 0x20,
   NFT_SET_OBJECT = 0x40,
   NFT_SET_CONCAT = 0x80,
+  NFT_SET_EXPR = 0x100,
 };
 enum nft_set_policies {
   NFT_SET_POL_PERFORMANCE,
@@ -213,6 +214,7 @@
   NFTA_SET_OBJ_TYPE,
   NFTA_SET_HANDLE,
   NFTA_SET_EXPR,
+  NFTA_SET_EXPRESSIONS,
   __NFTA_SET_MAX
 };
 #define NFTA_SET_MAX (__NFTA_SET_MAX - 1)
@@ -231,6 +233,7 @@
   NFTA_SET_ELEM_PAD,
   NFTA_SET_ELEM_OBJREF,
   NFTA_SET_ELEM_KEY_END,
+  NFTA_SET_ELEM_EXPRESSIONS,
   __NFTA_SET_ELEM_MAX
 };
 #define NFTA_SET_ELEM_MAX (__NFTA_SET_ELEM_MAX - 1)
@@ -358,6 +361,7 @@
 };
 enum nft_dynset_flags {
   NFT_DYNSET_F_INV = (1 << 0),
+  NFT_DYNSET_F_EXPR = (1 << 1),
 };
 enum nft_dynset_attributes {
   NFTA_DYNSET_UNSPEC,
@@ -370,6 +374,7 @@
   NFTA_DYNSET_EXPR,
   NFTA_DYNSET_PAD,
   NFTA_DYNSET_FLAGS,
+  NFTA_DYNSET_EXPRESSIONS,
   __NFTA_DYNSET_MAX,
 };
 #define NFTA_DYNSET_MAX (__NFTA_DYNSET_MAX - 1)
diff --git a/libc/kernel/uapi/linux/netfilter/x_tables.h b/libc/kernel/uapi/linux/netfilter/x_tables.h
index 3d88cd1..46bde57 100644
--- a/libc/kernel/uapi/linux/netfilter/x_tables.h
+++ b/libc/kernel/uapi/linux/netfilter/x_tables.h
@@ -18,7 +18,7 @@
  ****************************************************************************/
 #ifndef _UAPI_X_TABLES_H
 #define _UAPI_X_TABLES_H
-#include <linux/kernel.h>
+#include <linux/const.h>
 #include <linux/types.h>
 #define XT_FUNCTION_MAXNAMELEN 30
 #define XT_EXTENSION_MAXNAMELEN 29
diff --git a/libc/kernel/uapi/linux/netlink.h b/libc/kernel/uapi/linux/netlink.h
index 255b0b6..da6a46b 100644
--- a/libc/kernel/uapi/linux/netlink.h
+++ b/libc/kernel/uapi/linux/netlink.h
@@ -18,7 +18,7 @@
  ****************************************************************************/
 #ifndef _UAPI__LINUX_NETLINK_H
 #define _UAPI__LINUX_NETLINK_H
-#include <linux/kernel.h>
+#include <linux/const.h>
 #include <linux/socket.h>
 #include <linux/types.h>
 #define NETLINK_ROUTE 0
diff --git a/libc/kernel/uapi/linux/nl80211.h b/libc/kernel/uapi/linux/nl80211.h
index 7c36598..0632ff2 100644
--- a/libc/kernel/uapi/linux/nl80211.h
+++ b/libc/kernel/uapi/linux/nl80211.h
@@ -177,6 +177,7 @@
   NL80211_CMD_SET_TID_CONFIG,
   NL80211_CMD_UNPROT_BEACON,
   NL80211_CMD_CONTROL_PORT_FRAME_TX_STATUS,
+  NL80211_CMD_SET_SAR_SPECS,
   __NL80211_CMD_AFTER_LAST,
   NL80211_CMD_MAX = __NL80211_CMD_AFTER_LAST - 1
 };
@@ -491,6 +492,9 @@
   NL80211_ATTR_UNSOL_BCAST_PROBE_RESP,
   NL80211_ATTR_S1G_CAPABILITY,
   NL80211_ATTR_S1G_CAPABILITY_MASK,
+  NL80211_ATTR_SAE_PWE,
+  NL80211_ATTR_RECONNECT_REQUESTED,
+  NL80211_ATTR_SAR_SPEC,
   __NL80211_ATTR_AFTER_LAST,
   NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST,
   NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
@@ -1443,6 +1447,7 @@
   NL80211_EXT_FEATURE_SAE_OFFLOAD_AP,
   NL80211_EXT_FEATURE_FILS_DISCOVERY,
   NL80211_EXT_FEATURE_UNSOL_BCAST_PROBE_RESP,
+  NL80211_EXT_FEATURE_BEACON_RATE_HE,
   NUM_NL80211_EXT_FEATURES,
   MAX_NL80211_EXT_FEATURES = NUM_NL80211_EXT_FEATURES - 1
 };
@@ -1795,4 +1800,30 @@
   __NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_LAST,
   NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_MAX = __NL80211_UNSOL_BCAST_PROBE_RESP_ATTR_LAST - 1
 };
+enum nl80211_sae_pwe_mechanism {
+  NL80211_SAE_PWE_UNSPECIFIED,
+  NL80211_SAE_PWE_HUNT_AND_PECK,
+  NL80211_SAE_PWE_HASH_TO_ELEMENT,
+  NL80211_SAE_PWE_BOTH,
+};
+enum nl80211_sar_type {
+  NL80211_SAR_TYPE_POWER,
+  NUM_NL80211_SAR_TYPE,
+};
+enum nl80211_sar_attrs {
+  __NL80211_SAR_ATTR_INVALID,
+  NL80211_SAR_ATTR_TYPE,
+  NL80211_SAR_ATTR_SPECS,
+  __NL80211_SAR_ATTR_LAST,
+  NL80211_SAR_ATTR_MAX = __NL80211_SAR_ATTR_LAST - 1,
+};
+enum nl80211_sar_specs_attrs {
+  __NL80211_SAR_ATTR_SPECS_INVALID,
+  NL80211_SAR_ATTR_SPECS_POWER,
+  NL80211_SAR_ATTR_SPECS_RANGE_INDEX,
+  NL80211_SAR_ATTR_SPECS_START_FREQ,
+  NL80211_SAR_ATTR_SPECS_END_FREQ,
+  __NL80211_SAR_ATTR_SPECS_LAST,
+  NL80211_SAR_ATTR_SPECS_MAX = __NL80211_SAR_ATTR_SPECS_LAST - 1,
+};
 #endif
diff --git a/libc/kernel/uapi/linux/pci_regs.h b/libc/kernel/uapi/linux/pci_regs.h
index 19a6fb6..81450a7 100644
--- a/libc/kernel/uapi/linux/pci_regs.h
+++ b/libc/kernel/uapi/linux/pci_regs.h
@@ -440,6 +440,7 @@
 #define PCI_EXP_LNKCAP_SLS_8_0GB 0x00000003
 #define PCI_EXP_LNKCAP_SLS_16_0GB 0x00000004
 #define PCI_EXP_LNKCAP_SLS_32_0GB 0x00000005
+#define PCI_EXP_LNKCAP_SLS_64_0GB 0x00000006
 #define PCI_EXP_LNKCAP_MLW 0x000003f0
 #define PCI_EXP_LNKCAP_ASPMS 0x00000c00
 #define PCI_EXP_LNKCAP_ASPM_L0S 0x00000400
@@ -471,6 +472,7 @@
 #define PCI_EXP_LNKSTA_CLS_8_0GB 0x0003
 #define PCI_EXP_LNKSTA_CLS_16_0GB 0x0004
 #define PCI_EXP_LNKSTA_CLS_32_0GB 0x0005
+#define PCI_EXP_LNKSTA_CLS_64_0GB 0x0006
 #define PCI_EXP_LNKSTA_NLW 0x03f0
 #define PCI_EXP_LNKSTA_NLW_X1 0x0010
 #define PCI_EXP_LNKSTA_NLW_X2 0x0020
@@ -571,6 +573,7 @@
 #define PCI_EXP_LNKCAP2_SLS_8_0GB 0x00000008
 #define PCI_EXP_LNKCAP2_SLS_16_0GB 0x00000010
 #define PCI_EXP_LNKCAP2_SLS_32_0GB 0x00000020
+#define PCI_EXP_LNKCAP2_SLS_64_0GB 0x00000040
 #define PCI_EXP_LNKCAP2_CROSSLINK 0x00000100
 #define PCI_EXP_LNKCTL2 48
 #define PCI_EXP_LNKCTL2_TLS 0x000f
@@ -579,6 +582,7 @@
 #define PCI_EXP_LNKCTL2_TLS_8_0GT 0x0003
 #define PCI_EXP_LNKCTL2_TLS_16_0GT 0x0004
 #define PCI_EXP_LNKCTL2_TLS_32_0GT 0x0005
+#define PCI_EXP_LNKCTL2_TLS_64_0GT 0x0006
 #define PCI_EXP_LNKCTL2_ENTER_COMP 0x0010
 #define PCI_EXP_LNKCTL2_TX_MARGIN 0x0380
 #define PCI_EXP_LNKCTL2_HASD 0x0020
@@ -621,6 +625,7 @@
 #define PCI_EXT_CAP_ID_DPC 0x1D
 #define PCI_EXT_CAP_ID_L1SS 0x1E
 #define PCI_EXT_CAP_ID_PTM 0x1F
+#define PCI_EXT_CAP_ID_DVSEC 0x23
 #define PCI_EXT_CAP_ID_DLF 0x25
 #define PCI_EXT_CAP_ID_PL_16GT 0x26
 #define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_PL_16GT
@@ -718,6 +723,11 @@
 #define PCI_PWR_CAP 12
 #define PCI_PWR_CAP_BUDGET(x) ((x) & 1)
 #define PCI_EXT_CAP_PWR_SIZEOF 16
+#define PCI_RCEC_RCIEP_BITMAP 4
+#define PCI_RCEC_BUSN 8
+#define PCI_RCEC_BUSN_REG_VER 0x02
+#define PCI_RCEC_BUSN_NEXT(x) (((x) >> 8) & 0xff)
+#define PCI_RCEC_BUSN_LAST(x) (((x) >> 16) & 0xff)
 #define PCI_VNDR_HEADER 4
 #define PCI_VNDR_HEADER_ID(x) ((x) & 0xffff)
 #define PCI_VNDR_HEADER_REV(x) (((x) >> 16) & 0xf)
@@ -909,6 +919,8 @@
 #define PCI_L1SS_CTL1_LTR_L12_TH_VALUE 0x03ff0000
 #define PCI_L1SS_CTL1_LTR_L12_TH_SCALE 0xe0000000
 #define PCI_L1SS_CTL2 0x0c
+#define PCI_DVSEC_HEADER1 0x4
+#define PCI_DVSEC_HEADER2 0x8
 #define PCI_DLF_CAP 0x04
 #define PCI_DLF_EXCHANGE_ENABLE 0x80000000
 #define PCI_PL_16GT_LE_CTRL 0x20
diff --git a/libc/kernel/uapi/linux/perf_event.h b/libc/kernel/uapi/linux/perf_event.h
index fa1abf4..be32b51 100644
--- a/libc/kernel/uapi/linux/perf_event.h
+++ b/libc/kernel/uapi/linux/perf_event.h
@@ -101,7 +101,9 @@
   PERF_SAMPLE_PHYS_ADDR = 1U << 19,
   PERF_SAMPLE_AUX = 1U << 20,
   PERF_SAMPLE_CGROUP = 1U << 21,
-  PERF_SAMPLE_MAX = 1U << 22,
+  PERF_SAMPLE_DATA_PAGE_SIZE = 1U << 22,
+  PERF_SAMPLE_CODE_PAGE_SIZE = 1U << 23,
+  PERF_SAMPLE_MAX = 1U << 24,
   __PERF_SAMPLE_CALLCHAIN_EARLY = 1ULL << 63,
 };
 enum perf_branch_sample_type_shift {
diff --git a/libc/kernel/uapi/linux/ppp-ioctl.h b/libc/kernel/uapi/linux/ppp-ioctl.h
index f188dff..69c6e6d 100644
--- a/libc/kernel/uapi/linux/ppp-ioctl.h
+++ b/libc/kernel/uapi/linux/ppp-ioctl.h
@@ -105,6 +105,8 @@
 #define PPPIOCATTCHAN _IOW('t', 56, int)
 #define PPPIOCGCHAN _IOR('t', 55, int)
 #define PPPIOCGL2TPSTATS _IOR('t', 54, struct pppol2tp_ioc_stats)
+#define PPPIOCBRIDGECHAN _IOW('t', 53, int)
+#define PPPIOCUNBRIDGECHAN _IO('t', 52)
 #define SIOCGPPPSTATS (SIOCDEVPRIVATE + 0)
 #define SIOCGPPPVER (SIOCDEVPRIVATE + 1)
 #define SIOCGPPPCSTATS (SIOCDEVPRIVATE + 2)
diff --git a/libc/kernel/uapi/linux/prctl.h b/libc/kernel/uapi/linux/prctl.h
index 2890747..6095881 100644
--- a/libc/kernel/uapi/linux/prctl.h
+++ b/libc/kernel/uapi/linux/prctl.h
@@ -162,6 +162,11 @@
 #define PR_MTE_TAG_MASK (0xffffUL << PR_MTE_TAG_SHIFT)
 #define PR_SET_IO_FLUSHER 57
 #define PR_GET_IO_FLUSHER 58
+#define PR_SET_SYSCALL_USER_DISPATCH 59
+#define PR_SYS_DISPATCH_OFF 0
+#define PR_SYS_DISPATCH_ON 1
+#define SYSCALL_DISPATCH_FILTER_ALLOW 0
+#define SYSCALL_DISPATCH_FILTER_BLOCK 1
 #define PR_SET_VMA 0x53564d41
 #define PR_SET_VMA_ANON_NAME 0
 #endif
diff --git a/libc/kernel/uapi/linux/ptrace.h b/libc/kernel/uapi/linux/ptrace.h
index a1528db..5de0998 100644
--- a/libc/kernel/uapi/linux/ptrace.h
+++ b/libc/kernel/uapi/linux/ptrace.h
@@ -62,7 +62,8 @@
 #define PTRACE_SYSCALL_INFO_SECCOMP 3
 struct ptrace_syscall_info {
   __u8 op;
-  __u32 arch __attribute__((__aligned__(sizeof(__u32))));
+  __u8 pad[3];
+  __u32 arch;
   __u64 instruction_pointer;
   __u64 stack_pointer;
   union {
diff --git a/libc/kernel/uapi/linux/rfkill.h b/libc/kernel/uapi/linux/rfkill.h
index 504f780..4e72938 100644
--- a/libc/kernel/uapi/linux/rfkill.h
+++ b/libc/kernel/uapi/linux/rfkill.h
@@ -40,11 +40,17 @@
   RFKILL_OP_CHANGE,
   RFKILL_OP_CHANGE_ALL,
 };
+enum rfkill_hard_block_reasons {
+  RFKILL_HARD_BLOCK_SIGNAL = 1 << 0,
+  RFKILL_HARD_BLOCK_NOT_OWNER = 1 << 1,
+};
 struct rfkill_event {
   __u32 idx;
   __u8 type;
   __u8 op;
-  __u8 soft, hard;
+  __u8 soft;
+  __u8 hard;
+  __u8 hard_block_reasons;
 } __attribute__((packed));
 #define RFKILL_EVENT_SIZE_V1 8
 #define RFKILL_IOC_MAGIC 'R'
diff --git a/libc/kernel/uapi/linux/rkisp1-config.h b/libc/kernel/uapi/linux/rkisp1-config.h
new file mode 100644
index 0000000..cea14cd
--- /dev/null
+++ b/libc/kernel/uapi/linux/rkisp1-config.h
@@ -0,0 +1,371 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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_RKISP1_CONFIG_H
+#define _UAPI_RKISP1_CONFIG_H
+#include <linux/types.h>
+#define RKISP1_CIF_ISP_MODULE_DPCC (1U << 0)
+#define RKISP1_CIF_ISP_MODULE_BLS (1U << 1)
+#define RKISP1_CIF_ISP_MODULE_SDG (1U << 2)
+#define RKISP1_CIF_ISP_MODULE_HST (1U << 3)
+#define RKISP1_CIF_ISP_MODULE_LSC (1U << 4)
+#define RKISP1_CIF_ISP_MODULE_AWB_GAIN (1U << 5)
+#define RKISP1_CIF_ISP_MODULE_FLT (1U << 6)
+#define RKISP1_CIF_ISP_MODULE_BDM (1U << 7)
+#define RKISP1_CIF_ISP_MODULE_CTK (1U << 8)
+#define RKISP1_CIF_ISP_MODULE_GOC (1U << 9)
+#define RKISP1_CIF_ISP_MODULE_CPROC (1U << 10)
+#define RKISP1_CIF_ISP_MODULE_AFC (1U << 11)
+#define RKISP1_CIF_ISP_MODULE_AWB (1U << 12)
+#define RKISP1_CIF_ISP_MODULE_IE (1U << 13)
+#define RKISP1_CIF_ISP_MODULE_AEC (1U << 14)
+#define RKISP1_CIF_ISP_MODULE_WDR (1U << 15)
+#define RKISP1_CIF_ISP_MODULE_DPF (1U << 16)
+#define RKISP1_CIF_ISP_MODULE_DPF_STRENGTH (1U << 17)
+#define RKISP1_CIF_ISP_CTK_COEFF_MAX 0x100
+#define RKISP1_CIF_ISP_CTK_OFFSET_MAX 0x800
+#define RKISP1_CIF_ISP_AE_MEAN_MAX_V10 25
+#define RKISP1_CIF_ISP_AE_MEAN_MAX_V12 81
+#define RKISP1_CIF_ISP_AE_MEAN_MAX RKISP1_CIF_ISP_AE_MEAN_MAX_V12
+#define RKISP1_CIF_ISP_HIST_BIN_N_MAX_V10 16
+#define RKISP1_CIF_ISP_HIST_BIN_N_MAX_V12 32
+#define RKISP1_CIF_ISP_HIST_BIN_N_MAX RKISP1_CIF_ISP_HIST_BIN_N_MAX_V12
+#define RKISP1_CIF_ISP_AFM_MAX_WINDOWS 3
+#define RKISP1_CIF_ISP_DEGAMMA_CURVE_SIZE 17
+#define RKISP1_CIF_ISP_BDM_MAX_TH 0xff
+#define RKISP1_CIF_ISP_BLS_START_H_MAX 0x00000fff
+#define RKISP1_CIF_ISP_BLS_STOP_H_MAX 0x00000fff
+#define RKISP1_CIF_ISP_BLS_START_V_MAX 0x00000fff
+#define RKISP1_CIF_ISP_BLS_STOP_V_MAX 0x00000fff
+#define RKISP1_CIF_ISP_BLS_SAMPLES_MAX 0x00000012
+#define RKISP1_CIF_ISP_BLS_FIX_SUB_MAX 0x00000fff
+#define RKISP1_CIF_ISP_BLS_FIX_SUB_MIN 0xfffff000
+#define RKISP1_CIF_ISP_BLS_FIX_MASK 0x00001fff
+#define RKISP1_CIF_ISP_AWB_MAX_GRID 1
+#define RKISP1_CIF_ISP_AWB_MAX_FRAMES 7
+#define RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES_V10 17
+#define RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES_V12 34
+#define RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES_V12
+#define RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE 8
+#define RKISP1_CIF_ISP_LSC_SAMPLES_MAX 17
+#define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V10 25
+#define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12 81
+#define RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE_V12
+#define RKISP1_CIF_ISP_DPCC_METHODS_MAX 3
+#define RKISP1_CIF_ISP_DPF_MAX_NLF_COEFFS 17
+#define RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS 6
+#define RKISP1_CIF_ISP_STAT_AWB (1U << 0)
+#define RKISP1_CIF_ISP_STAT_AUTOEXP (1U << 1)
+#define RKISP1_CIF_ISP_STAT_AFM (1U << 2)
+#define RKISP1_CIF_ISP_STAT_HIST (1U << 3)
+enum rkisp1_cif_isp_version {
+  RKISP1_V10 = 10,
+  RKISP1_V11,
+  RKISP1_V12,
+  RKISP1_V13,
+};
+enum rkisp1_cif_isp_histogram_mode {
+  RKISP1_CIF_ISP_HISTOGRAM_MODE_DISABLE,
+  RKISP1_CIF_ISP_HISTOGRAM_MODE_RGB_COMBINED,
+  RKISP1_CIF_ISP_HISTOGRAM_MODE_R_HISTOGRAM,
+  RKISP1_CIF_ISP_HISTOGRAM_MODE_G_HISTOGRAM,
+  RKISP1_CIF_ISP_HISTOGRAM_MODE_B_HISTOGRAM,
+  RKISP1_CIF_ISP_HISTOGRAM_MODE_Y_HISTOGRAM
+};
+enum rkisp1_cif_isp_awb_mode_type {
+  RKISP1_CIF_ISP_AWB_MODE_MANUAL,
+  RKISP1_CIF_ISP_AWB_MODE_RGB,
+  RKISP1_CIF_ISP_AWB_MODE_YCBCR
+};
+enum rkisp1_cif_isp_flt_mode {
+  RKISP1_CIF_ISP_FLT_STATIC_MODE,
+  RKISP1_CIF_ISP_FLT_DYNAMIC_MODE
+};
+enum rkisp1_cif_isp_exp_ctrl_autostop {
+  RKISP1_CIF_ISP_EXP_CTRL_AUTOSTOP_0 = 0,
+  RKISP1_CIF_ISP_EXP_CTRL_AUTOSTOP_1 = 1,
+};
+enum rkisp1_cif_isp_exp_meas_mode {
+  RKISP1_CIF_ISP_EXP_MEASURING_MODE_0,
+  RKISP1_CIF_ISP_EXP_MEASURING_MODE_1,
+};
+struct rkisp1_cif_isp_window {
+  __u16 h_offs;
+  __u16 v_offs;
+  __u16 h_size;
+  __u16 v_size;
+};
+struct rkisp1_cif_isp_bls_fixed_val {
+  __s16 r;
+  __s16 gr;
+  __s16 gb;
+  __s16 b;
+};
+struct rkisp1_cif_isp_bls_config {
+  __u8 enable_auto;
+  __u8 en_windows;
+  struct rkisp1_cif_isp_window bls_window1;
+  struct rkisp1_cif_isp_window bls_window2;
+  __u8 bls_samples;
+  struct rkisp1_cif_isp_bls_fixed_val fixed_val;
+};
+struct rkisp1_cif_isp_dpcc_methods_config {
+  __u32 method;
+  __u32 line_thresh;
+  __u32 line_mad_fac;
+  __u32 pg_fac;
+  __u32 rnd_thresh;
+  __u32 rg_fac;
+};
+struct rkisp1_cif_isp_dpcc_config {
+  __u32 mode;
+  __u32 output_mode;
+  __u32 set_use;
+  struct rkisp1_cif_isp_dpcc_methods_config methods[RKISP1_CIF_ISP_DPCC_METHODS_MAX];
+  __u32 ro_limits;
+  __u32 rnd_offs;
+};
+struct rkisp1_cif_isp_gamma_corr_curve {
+  __u16 gamma_y[RKISP1_CIF_ISP_DEGAMMA_CURVE_SIZE];
+};
+struct rkisp1_cif_isp_gamma_curve_x_axis_pnts {
+  __u32 gamma_dx0;
+  __u32 gamma_dx1;
+};
+struct rkisp1_cif_isp_sdg_config {
+  struct rkisp1_cif_isp_gamma_corr_curve curve_r;
+  struct rkisp1_cif_isp_gamma_corr_curve curve_g;
+  struct rkisp1_cif_isp_gamma_corr_curve curve_b;
+  struct rkisp1_cif_isp_gamma_curve_x_axis_pnts xa_pnts;
+};
+struct rkisp1_cif_isp_lsc_config {
+  __u16 r_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX];
+  __u16 gr_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX];
+  __u16 gb_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX];
+  __u16 b_data_tbl[RKISP1_CIF_ISP_LSC_SAMPLES_MAX][RKISP1_CIF_ISP_LSC_SAMPLES_MAX];
+  __u16 x_grad_tbl[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];
+  __u16 y_grad_tbl[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];
+  __u16 x_size_tbl[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];
+  __u16 y_size_tbl[RKISP1_CIF_ISP_LSC_SECTORS_TBL_SIZE];
+  __u16 config_width;
+  __u16 config_height;
+};
+struct rkisp1_cif_isp_ie_config {
+  __u16 effect;
+  __u16 color_sel;
+  __u16 eff_mat_1;
+  __u16 eff_mat_2;
+  __u16 eff_mat_3;
+  __u16 eff_mat_4;
+  __u16 eff_mat_5;
+  __u16 eff_tint;
+};
+struct rkisp1_cif_isp_cproc_config {
+  __u8 c_out_range;
+  __u8 y_in_range;
+  __u8 y_out_range;
+  __u8 contrast;
+  __u8 brightness;
+  __u8 sat;
+  __u8 hue;
+};
+struct rkisp1_cif_isp_awb_meas_config {
+  struct rkisp1_cif_isp_window awb_wnd;
+  __u32 awb_mode;
+  __u8 max_y;
+  __u8 min_y;
+  __u8 max_csum;
+  __u8 min_c;
+  __u8 frames;
+  __u8 awb_ref_cr;
+  __u8 awb_ref_cb;
+  __u8 enable_ymax_cmp;
+};
+struct rkisp1_cif_isp_awb_gain_config {
+  __u16 gain_red;
+  __u16 gain_green_r;
+  __u16 gain_blue;
+  __u16 gain_green_b;
+};
+struct rkisp1_cif_isp_flt_config {
+  __u32 mode;
+  __u8 grn_stage1;
+  __u8 chr_h_mode;
+  __u8 chr_v_mode;
+  __u32 thresh_bl0;
+  __u32 thresh_bl1;
+  __u32 thresh_sh0;
+  __u32 thresh_sh1;
+  __u32 lum_weight;
+  __u32 fac_sh1;
+  __u32 fac_sh0;
+  __u32 fac_mid;
+  __u32 fac_bl0;
+  __u32 fac_bl1;
+};
+struct rkisp1_cif_isp_bdm_config {
+  __u8 demosaic_th;
+};
+struct rkisp1_cif_isp_ctk_config {
+  __u16 coeff[3][3];
+  __u16 ct_offset[3];
+};
+enum rkisp1_cif_isp_goc_mode {
+  RKISP1_CIF_ISP_GOC_MODE_LOGARITHMIC,
+  RKISP1_CIF_ISP_GOC_MODE_EQUIDISTANT
+};
+struct rkisp1_cif_isp_goc_config {
+  __u32 mode;
+  __u16 gamma_y[RKISP1_CIF_ISP_GAMMA_OUT_MAX_SAMPLES];
+};
+struct rkisp1_cif_isp_hst_config {
+  __u32 mode;
+  __u8 histogram_predivider;
+  struct rkisp1_cif_isp_window meas_window;
+  __u8 hist_weight[RKISP1_CIF_ISP_HISTOGRAM_WEIGHT_GRIDS_SIZE];
+};
+struct rkisp1_cif_isp_aec_config {
+  __u32 mode;
+  __u32 autostop;
+  struct rkisp1_cif_isp_window meas_window;
+};
+struct rkisp1_cif_isp_afc_config {
+  __u8 num_afm_win;
+  struct rkisp1_cif_isp_window afm_win[RKISP1_CIF_ISP_AFM_MAX_WINDOWS];
+  __u32 thres;
+  __u32 var_shift;
+};
+enum rkisp1_cif_isp_dpf_gain_usage {
+  RKISP1_CIF_ISP_DPF_GAIN_USAGE_DISABLED,
+  RKISP1_CIF_ISP_DPF_GAIN_USAGE_NF_GAINS,
+  RKISP1_CIF_ISP_DPF_GAIN_USAGE_LSC_GAINS,
+  RKISP1_CIF_ISP_DPF_GAIN_USAGE_NF_LSC_GAINS,
+  RKISP1_CIF_ISP_DPF_GAIN_USAGE_AWB_GAINS,
+  RKISP1_CIF_ISP_DPF_GAIN_USAGE_AWB_LSC_GAINS,
+  RKISP1_CIF_ISP_DPF_GAIN_USAGE_MAX
+};
+enum rkisp1_cif_isp_dpf_rb_filtersize {
+  RKISP1_CIF_ISP_DPF_RB_FILTERSIZE_13x9,
+  RKISP1_CIF_ISP_DPF_RB_FILTERSIZE_9x9,
+};
+enum rkisp1_cif_isp_dpf_nll_scale_mode {
+  RKISP1_CIF_ISP_NLL_SCALE_LINEAR,
+  RKISP1_CIF_ISP_NLL_SCALE_LOGARITHMIC,
+};
+struct rkisp1_cif_isp_dpf_nll {
+  __u16 coeff[RKISP1_CIF_ISP_DPF_MAX_NLF_COEFFS];
+  __u32 scale_mode;
+};
+struct rkisp1_cif_isp_dpf_rb_flt {
+  __u32 fltsize;
+  __u8 spatial_coeff[RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS];
+  __u8 r_enable;
+  __u8 b_enable;
+};
+struct rkisp1_cif_isp_dpf_g_flt {
+  __u8 spatial_coeff[RKISP1_CIF_ISP_DPF_MAX_SPATIAL_COEFFS];
+  __u8 gr_enable;
+  __u8 gb_enable;
+};
+struct rkisp1_cif_isp_dpf_gain {
+  __u32 mode;
+  __u16 nf_r_gain;
+  __u16 nf_b_gain;
+  __u16 nf_gr_gain;
+  __u16 nf_gb_gain;
+};
+struct rkisp1_cif_isp_dpf_config {
+  struct rkisp1_cif_isp_dpf_gain gain;
+  struct rkisp1_cif_isp_dpf_g_flt g_flt;
+  struct rkisp1_cif_isp_dpf_rb_flt rb_flt;
+  struct rkisp1_cif_isp_dpf_nll nll;
+};
+struct rkisp1_cif_isp_dpf_strength_config {
+  __u8 r;
+  __u8 g;
+  __u8 b;
+};
+struct rkisp1_cif_isp_isp_other_cfg {
+  struct rkisp1_cif_isp_dpcc_config dpcc_config;
+  struct rkisp1_cif_isp_bls_config bls_config;
+  struct rkisp1_cif_isp_sdg_config sdg_config;
+  struct rkisp1_cif_isp_lsc_config lsc_config;
+  struct rkisp1_cif_isp_awb_gain_config awb_gain_config;
+  struct rkisp1_cif_isp_flt_config flt_config;
+  struct rkisp1_cif_isp_bdm_config bdm_config;
+  struct rkisp1_cif_isp_ctk_config ctk_config;
+  struct rkisp1_cif_isp_goc_config goc_config;
+  struct rkisp1_cif_isp_dpf_config dpf_config;
+  struct rkisp1_cif_isp_dpf_strength_config dpf_strength_config;
+  struct rkisp1_cif_isp_cproc_config cproc_config;
+  struct rkisp1_cif_isp_ie_config ie_config;
+};
+struct rkisp1_cif_isp_isp_meas_cfg {
+  struct rkisp1_cif_isp_awb_meas_config awb_meas_config;
+  struct rkisp1_cif_isp_hst_config hst_config;
+  struct rkisp1_cif_isp_aec_config aec_config;
+  struct rkisp1_cif_isp_afc_config afc_config;
+};
+struct rkisp1_params_cfg {
+  __u32 module_en_update;
+  __u32 module_ens;
+  __u32 module_cfg_update;
+  struct rkisp1_cif_isp_isp_meas_cfg meas;
+  struct rkisp1_cif_isp_isp_other_cfg others;
+};
+struct rkisp1_cif_isp_awb_meas {
+  __u32 cnt;
+  __u8 mean_y_or_g;
+  __u8 mean_cb_or_b;
+  __u8 mean_cr_or_r;
+};
+struct rkisp1_cif_isp_awb_stat {
+  struct rkisp1_cif_isp_awb_meas awb_mean[RKISP1_CIF_ISP_AWB_MAX_GRID];
+};
+struct rkisp1_cif_isp_bls_meas_val {
+  __u16 meas_r;
+  __u16 meas_gr;
+  __u16 meas_gb;
+  __u16 meas_b;
+};
+struct rkisp1_cif_isp_ae_stat {
+  __u8 exp_mean[RKISP1_CIF_ISP_AE_MEAN_MAX];
+  struct rkisp1_cif_isp_bls_meas_val bls_val;
+};
+struct rkisp1_cif_isp_af_meas_val {
+  __u32 sum;
+  __u32 lum;
+};
+struct rkisp1_cif_isp_af_stat {
+  struct rkisp1_cif_isp_af_meas_val window[RKISP1_CIF_ISP_AFM_MAX_WINDOWS];
+};
+struct rkisp1_cif_isp_hist_stat {
+  __u32 hist_bins[RKISP1_CIF_ISP_HIST_BIN_N_MAX];
+};
+struct rkisp1_cif_isp_stat {
+  struct rkisp1_cif_isp_awb_stat awb;
+  struct rkisp1_cif_isp_ae_stat ae;
+  struct rkisp1_cif_isp_af_stat af;
+  struct rkisp1_cif_isp_hist_stat hist;
+};
+struct rkisp1_stat_buffer {
+  __u32 meas_type;
+  __u32 frame_id;
+  struct rkisp1_cif_isp_stat params;
+};
+#endif
diff --git a/libc/kernel/uapi/linux/rpl.h b/libc/kernel/uapi/linux/rpl.h
index 4437731..3648bfc 100644
--- a/libc/kernel/uapi/linux/rpl.h
+++ b/libc/kernel/uapi/linux/rpl.h
@@ -29,7 +29,7 @@
 #ifdef __LITTLE_ENDIAN_BITFIELD
   __u32 cmpre : 4, cmpri : 4, reserved : 4, pad : 4, reserved1 : 16;
 #elif defined(__BIG_ENDIAN_BITFIELD)
-  __u32 reserved : 20, pad : 4, cmpri : 4, cmpre : 4;
+  __u32 cmpri : 4, cmpre : 4, pad : 4, reserved : 20;
 #else
 #error "Please fix <asm/byteorder.h>"
 #endif
diff --git a/libc/kernel/uapi/linux/rpmsg_types.h b/libc/kernel/uapi/linux/rpmsg_types.h
new file mode 100644
index 0000000..6599f4c
--- /dev/null
+++ b/libc/kernel/uapi/linux/rpmsg_types.h
@@ -0,0 +1,25 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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_RPMSG_TYPES_H
+#define _UAPI_LINUX_RPMSG_TYPES_H
+#include <linux/types.h>
+typedef __u16 __bitwise __rpmsg16;
+typedef __u32 __bitwise __rpmsg32;
+typedef __u64 __bitwise __rpmsg64;
+#endif
diff --git a/libc/kernel/uapi/linux/rtnetlink.h b/libc/kernel/uapi/linux/rtnetlink.h
index 6f50bb5..335a5e9 100644
--- a/libc/kernel/uapi/linux/rtnetlink.h
+++ b/libc/kernel/uapi/linux/rtnetlink.h
@@ -296,7 +296,8 @@
 #define RTNH_F_OFFLOAD 8
 #define RTNH_F_LINKDOWN 16
 #define RTNH_F_UNRESOLVED 32
-#define RTNH_COMPARE_MASK (RTNH_F_DEAD | RTNH_F_LINKDOWN | RTNH_F_OFFLOAD)
+#define RTNH_F_TRAP 64
+#define RTNH_COMPARE_MASK (RTNH_F_DEAD | RTNH_F_LINKDOWN | RTNH_F_OFFLOAD | RTNH_F_TRAP)
 #define RTNH_ALIGNTO 4
 #define RTNH_ALIGN(len) (((len) + RTNH_ALIGNTO - 1) & ~(RTNH_ALIGNTO - 1))
 #define RTNH_OK(rtnh,len) ((rtnh)->rtnh_len >= sizeof(struct rtnexthop) && ((int) (rtnh)->rtnh_len) <= (len))
@@ -572,9 +573,13 @@
 #define TA_RTA(r) ((struct rtattr *) (((char *) (r)) + NLMSG_ALIGN(sizeof(struct tcamsg))))
 #define TA_PAYLOAD(n) NLMSG_PAYLOAD(n, sizeof(struct tcamsg))
 #define TCA_FLAG_LARGE_DUMP_ON (1 << 0)
+#define TCA_ACT_FLAG_LARGE_DUMP_ON TCA_FLAG_LARGE_DUMP_ON
+#define TCA_ACT_FLAG_TERSE_DUMP (1 << 1)
 #define RTEXT_FILTER_VF (1 << 0)
 #define RTEXT_FILTER_BRVLAN (1 << 1)
 #define RTEXT_FILTER_BRVLAN_COMPRESSED (1 << 2)
 #define RTEXT_FILTER_SKIP_STATS (1 << 3)
 #define RTEXT_FILTER_MRP (1 << 4)
+#define RTEXT_FILTER_CFM_CONFIG (1 << 5)
+#define RTEXT_FILTER_CFM_STATUS (1 << 6)
 #endif
diff --git a/libc/kernel/uapi/linux/sctp.h b/libc/kernel/uapi/linux/sctp.h
index e3fc7bf..883920b 100644
--- a/libc/kernel/uapi/linux/sctp.h
+++ b/libc/kernel/uapi/linux/sctp.h
@@ -93,6 +93,7 @@
 #define SCTP_ECN_SUPPORTED 130
 #define SCTP_EXPOSE_POTENTIALLY_FAILED_STATE 131
 #define SCTP_EXPOSE_PF_STATE SCTP_EXPOSE_POTENTIALLY_FAILED_STATE
+#define SCTP_REMOTE_UDP_ENCAPS_PORT 132
 #define SCTP_PR_SCTP_NONE 0x0000
 #define SCTP_PR_SCTP_TTL 0x0010
 #define SCTP_PR_SCTP_RTX 0x0020
@@ -697,6 +698,11 @@
   uint16_t se_type;
   uint8_t se_on;
 };
+struct sctp_udpencaps {
+  sctp_assoc_t sue_assoc_id;
+  struct sockaddr_storage sue_address;
+  uint16_t sue_port;
+};
 enum sctp_sched_type {
   SCTP_SS_FCFS,
   SCTP_SS_DEFAULT = SCTP_SS_FCFS,
diff --git a/libc/kernel/uapi/linux/sdla.h b/libc/kernel/uapi/linux/sdla.h
deleted file mode 100644
index acdfb6b..0000000
--- a/libc/kernel/uapi/linux/sdla.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- ***   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 _UAPISDLA_H
-#define _UAPISDLA_H
-#define SDLA_TYPES
-#define SDLA_S502A 5020
-#define SDLA_S502E 5021
-#define SDLA_S503 5030
-#define SDLA_S507 5070
-#define SDLA_S508 5080
-#define SDLA_S509 5090
-#define SDLA_UNKNOWN - 1
-#define SDLA_S508_PORT_V35 0x00
-#define SDLA_S508_PORT_RS232 0x02
-#define SDLA_CPU_3M 0x00
-#define SDLA_CPU_5M 0x01
-#define SDLA_CPU_7M 0x02
-#define SDLA_CPU_8M 0x03
-#define SDLA_CPU_10M 0x04
-#define SDLA_CPU_16M 0x05
-#define SDLA_CPU_12M 0x06
-#define SDLA_IDENTIFY (FRAD_LAST_IOCTL + 1)
-#define SDLA_CPUSPEED (FRAD_LAST_IOCTL + 2)
-#define SDLA_PROTOCOL (FRAD_LAST_IOCTL + 3)
-#define SDLA_CLEARMEM (FRAD_LAST_IOCTL + 4)
-#define SDLA_WRITEMEM (FRAD_LAST_IOCTL + 5)
-#define SDLA_READMEM (FRAD_LAST_IOCTL + 6)
-struct sdla_mem {
-  int addr;
-  int len;
-  void __user * data;
-};
-#define SDLA_START (FRAD_LAST_IOCTL + 7)
-#define SDLA_STOP (FRAD_LAST_IOCTL + 8)
-#define SDLA_NMIADDR 0x0000
-#define SDLA_CONF_ADDR 0x0010
-#define SDLA_S502A_NMIADDR 0x0066
-#define SDLA_CODE_BASEADDR 0x0100
-#define SDLA_WINDOW_SIZE 0x2000
-#define SDLA_ADDR_MASK 0x1FFF
-#define SDLA_MAX_DATA 4080
-#define SDLA_MAX_MTU 4072
-#define SDLA_MAX_DLCI 24
-struct sdla_conf {
-  short station;
-  short config;
-  short kbaud;
-  short clocking;
-  short max_frm;
-  short T391;
-  short T392;
-  short N391;
-  short N392;
-  short N393;
-  short CIR_fwd;
-  short Bc_fwd;
-  short Be_fwd;
-  short CIR_bwd;
-  short Bc_bwd;
-  short Be_bwd;
-};
-struct sdla_dlci_conf {
-  short config;
-  short CIR_fwd;
-  short Bc_fwd;
-  short Be_fwd;
-  short CIR_bwd;
-  short Bc_bwd;
-  short Be_bwd;
-  short Tc_fwd;
-  short Tc_bwd;
-  short Tf_max;
-  short Tb_max;
-};
-#endif
diff --git a/libc/kernel/uapi/linux/seg6_local.h b/libc/kernel/uapi/linux/seg6_local.h
index 73873a8..9508eca 100644
--- a/libc/kernel/uapi/linux/seg6_local.h
+++ b/libc/kernel/uapi/linux/seg6_local.h
@@ -29,6 +29,7 @@
   SEG6_LOCAL_IIF,
   SEG6_LOCAL_OIF,
   SEG6_LOCAL_BPF,
+  SEG6_LOCAL_VRFTABLE,
   __SEG6_LOCAL_MAX,
 };
 #define SEG6_LOCAL_MAX (__SEG6_LOCAL_MAX - 1)
diff --git a/libc/kernel/uapi/linux/serial_core.h b/libc/kernel/uapi/linux/serial_core.h
index b2c3253..fd75fff 100644
--- a/libc/kernel/uapi/linux/serial_core.h
+++ b/libc/kernel/uapi/linux/serial_core.h
@@ -73,7 +73,6 @@
 #define PORT_S3C2400 67
 #define PORT_M32R_SIO 68
 #define PORT_JSM 69
-#define PORT_PNX8XXX 70
 #define PORT_SUNHV 72
 #define PORT_S3C2412 73
 #define PORT_UARTLITE 74
diff --git a/libc/kernel/uapi/linux/smc.h b/libc/kernel/uapi/linux/smc.h
index 824a29d..88eef62 100644
--- a/libc/kernel/uapi/linux/smc.h
+++ b/libc/kernel/uapi/linux/smc.h
@@ -35,4 +35,109 @@
 };
 #define SMCR_GENL_FAMILY_NAME "SMC_PNETID"
 #define SMCR_GENL_FAMILY_VERSION 1
+#define SMC_GENL_FAMILY_NAME "SMC_GEN_NETLINK"
+#define SMC_GENL_FAMILY_VERSION 1
+#define SMC_PCI_ID_STR_LEN 16
+enum {
+  SMC_NETLINK_GET_SYS_INFO = 1,
+  SMC_NETLINK_GET_LGR_SMCR,
+  SMC_NETLINK_GET_LINK_SMCR,
+  SMC_NETLINK_GET_LGR_SMCD,
+  SMC_NETLINK_GET_DEV_SMCD,
+  SMC_NETLINK_GET_DEV_SMCR,
+};
+enum {
+  SMC_GEN_UNSPEC,
+  SMC_GEN_SYS_INFO,
+  SMC_GEN_LGR_SMCR,
+  SMC_GEN_LINK_SMCR,
+  SMC_GEN_LGR_SMCD,
+  SMC_GEN_DEV_SMCD,
+  SMC_GEN_DEV_SMCR,
+  __SMC_GEN_MAX,
+  SMC_GEN_MAX = __SMC_GEN_MAX - 1
+};
+enum {
+  SMC_NLA_SYS_UNSPEC,
+  SMC_NLA_SYS_VER,
+  SMC_NLA_SYS_REL,
+  SMC_NLA_SYS_IS_ISM_V2,
+  SMC_NLA_SYS_LOCAL_HOST,
+  SMC_NLA_SYS_SEID,
+  __SMC_NLA_SYS_MAX,
+  SMC_NLA_SYS_MAX = __SMC_NLA_SYS_MAX - 1
+};
+enum {
+  SMC_NLA_LGR_V2_VER,
+  SMC_NLA_LGR_V2_REL,
+  SMC_NLA_LGR_V2_OS,
+  SMC_NLA_LGR_V2_NEG_EID,
+  SMC_NLA_LGR_V2_PEER_HOST,
+};
+enum {
+  SMC_NLA_LGR_R_UNSPEC,
+  SMC_NLA_LGR_R_ID,
+  SMC_NLA_LGR_R_ROLE,
+  SMC_NLA_LGR_R_TYPE,
+  SMC_NLA_LGR_R_PNETID,
+  SMC_NLA_LGR_R_VLAN_ID,
+  SMC_NLA_LGR_R_CONNS_NUM,
+  __SMC_NLA_LGR_R_MAX,
+  SMC_NLA_LGR_R_MAX = __SMC_NLA_LGR_R_MAX - 1
+};
+enum {
+  SMC_NLA_LINK_UNSPEC,
+  SMC_NLA_LINK_ID,
+  SMC_NLA_LINK_IB_DEV,
+  SMC_NLA_LINK_IB_PORT,
+  SMC_NLA_LINK_GID,
+  SMC_NLA_LINK_PEER_GID,
+  SMC_NLA_LINK_CONN_CNT,
+  SMC_NLA_LINK_NET_DEV,
+  SMC_NLA_LINK_UID,
+  SMC_NLA_LINK_PEER_UID,
+  SMC_NLA_LINK_STATE,
+  __SMC_NLA_LINK_MAX,
+  SMC_NLA_LINK_MAX = __SMC_NLA_LINK_MAX - 1
+};
+enum {
+  SMC_NLA_LGR_D_UNSPEC,
+  SMC_NLA_LGR_D_ID,
+  SMC_NLA_LGR_D_GID,
+  SMC_NLA_LGR_D_PEER_GID,
+  SMC_NLA_LGR_D_VLAN_ID,
+  SMC_NLA_LGR_D_CONNS_NUM,
+  SMC_NLA_LGR_D_PNETID,
+  SMC_NLA_LGR_D_CHID,
+  SMC_NLA_LGR_D_PAD,
+  SMC_NLA_LGR_V2,
+  __SMC_NLA_LGR_D_MAX,
+  SMC_NLA_LGR_D_MAX = __SMC_NLA_LGR_D_MAX - 1
+};
+enum {
+  SMC_NLA_DEV_PORT_UNSPEC,
+  SMC_NLA_DEV_PORT_PNET_USR,
+  SMC_NLA_DEV_PORT_PNETID,
+  SMC_NLA_DEV_PORT_NETDEV,
+  SMC_NLA_DEV_PORT_STATE,
+  SMC_NLA_DEV_PORT_VALID,
+  SMC_NLA_DEV_PORT_LNK_CNT,
+  __SMC_NLA_DEV_PORT_MAX,
+  SMC_NLA_DEV_PORT_MAX = __SMC_NLA_DEV_PORT_MAX - 1
+};
+enum {
+  SMC_NLA_DEV_UNSPEC,
+  SMC_NLA_DEV_USE_CNT,
+  SMC_NLA_DEV_IS_CRIT,
+  SMC_NLA_DEV_PCI_FID,
+  SMC_NLA_DEV_PCI_CHID,
+  SMC_NLA_DEV_PCI_VENDOR,
+  SMC_NLA_DEV_PCI_DEVICE,
+  SMC_NLA_DEV_PCI_ID,
+  SMC_NLA_DEV_PORT,
+  SMC_NLA_DEV_PORT2,
+  SMC_NLA_DEV_IB_NAME,
+  __SMC_NLA_DEV_MAX,
+  SMC_NLA_DEV_MAX = __SMC_NLA_DEV_MAX - 1
+};
 #endif
diff --git a/libc/kernel/uapi/linux/snmp.h b/libc/kernel/uapi/linux/snmp.h
index 8d63a3c..40e8fa5 100644
--- a/libc/kernel/uapi/linux/snmp.h
+++ b/libc/kernel/uapi/linux/snmp.h
@@ -129,6 +129,7 @@
   UDP_MIB_SNDBUFERRORS,
   UDP_MIB_CSUMERRORS,
   UDP_MIB_IGNOREDMULTI,
+  UDP_MIB_MEMERRORS,
   __UDP_MIB_MAX
 };
 enum {
diff --git a/libc/kernel/uapi/linux/sysctl.h b/libc/kernel/uapi/linux/sysctl.h
index ae0f44a..3f53f2d 100644
--- a/libc/kernel/uapi/linux/sysctl.h
+++ b/libc/kernel/uapi/linux/sysctl.h
@@ -18,7 +18,7 @@
  ****************************************************************************/
 #ifndef _UAPI_LINUX_SYSCTL_H
 #define _UAPI_LINUX_SYSCTL_H
-#include <linux/kernel.h>
+#include <linux/const.h>
 #include <linux/types.h>
 #include <linux/compiler.h>
 #define CTL_MAXNAME 10
diff --git a/libc/kernel/uapi/linux/tcp.h b/libc/kernel/uapi/linux/tcp.h
index e05e3ad..2ca37a6 100644
--- a/libc/kernel/uapi/linux/tcp.h
+++ b/libc/kernel/uapi/linux/tcp.h
@@ -239,11 +239,15 @@
   __be32 tcpm_addr[4];
   __u8 tcpm_key[TCP_MD5SIG_MAXKEYLEN];
 };
+#define TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT 0x1
 struct tcp_zerocopy_receive {
   __u64 address;
   __u32 length;
   __u32 recv_skip_hint;
   __u32 inq;
   __s32 err;
+  __u64 copybuf_address;
+  __s32 copybuf_len;
+  __u32 flags;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/tls.h b/libc/kernel/uapi/linux/tls.h
index 6949d65..c765f30 100644
--- a/libc/kernel/uapi/linux/tls.h
+++ b/libc/kernel/uapi/linux/tls.h
@@ -48,6 +48,12 @@
 #define TLS_CIPHER_AES_CCM_128_SALT_SIZE 4
 #define TLS_CIPHER_AES_CCM_128_TAG_SIZE 16
 #define TLS_CIPHER_AES_CCM_128_REC_SEQ_SIZE 8
+#define TLS_CIPHER_CHACHA20_POLY1305 54
+#define TLS_CIPHER_CHACHA20_POLY1305_IV_SIZE 12
+#define TLS_CIPHER_CHACHA20_POLY1305_KEY_SIZE 32
+#define TLS_CIPHER_CHACHA20_POLY1305_SALT_SIZE 0
+#define TLS_CIPHER_CHACHA20_POLY1305_TAG_SIZE 16
+#define TLS_CIPHER_CHACHA20_POLY1305_REC_SEQ_SIZE 8
 #define TLS_SET_RECORD_TYPE 1
 #define TLS_GET_RECORD_TYPE 2
 struct tls_crypto_info {
@@ -75,6 +81,13 @@
   unsigned char salt[TLS_CIPHER_AES_CCM_128_SALT_SIZE];
   unsigned char rec_seq[TLS_CIPHER_AES_CCM_128_REC_SEQ_SIZE];
 };
+struct tls12_crypto_info_chacha20_poly1305 {
+  struct tls_crypto_info info;
+  unsigned char iv[TLS_CIPHER_CHACHA20_POLY1305_IV_SIZE];
+  unsigned char key[TLS_CIPHER_CHACHA20_POLY1305_KEY_SIZE];
+  unsigned char salt[TLS_CIPHER_CHACHA20_POLY1305_SALT_SIZE];
+  unsigned char rec_seq[TLS_CIPHER_CHACHA20_POLY1305_REC_SEQ_SIZE];
+};
 enum {
   TLS_INFO_UNSPEC,
   TLS_INFO_VERSION,
diff --git a/libc/kernel/uapi/linux/userfaultfd.h b/libc/kernel/uapi/linux/userfaultfd.h
index e6b776a..fc100ae 100644
--- a/libc/kernel/uapi/linux/userfaultfd.h
+++ b/libc/kernel/uapi/linux/userfaultfd.h
@@ -124,4 +124,5 @@
 #define UFFDIO_WRITEPROTECT_MODE_DONTWAKE ((__u64) 1 << 1)
   __u64 mode;
 };
+#define UFFD_USER_MODE_ONLY 1
 #endif
diff --git a/libc/kernel/uapi/linux/v4l2-controls.h b/libc/kernel/uapi/linux/v4l2-controls.h
index 7f965a3..4cb46e2 100644
--- a/libc/kernel/uapi/linux/v4l2-controls.h
+++ b/libc/kernel/uapi/linux/v4l2-controls.h
@@ -20,7 +20,7 @@
 #define __LINUX_V4L2_CONTROLS_H
 #include <linux/types.h>
 #define V4L2_CTRL_CLASS_USER 0x00980000
-#define V4L2_CTRL_CLASS_MPEG 0x00990000
+#define V4L2_CTRL_CLASS_CODEC 0x00990000
 #define V4L2_CTRL_CLASS_CAMERA 0x009a0000
 #define V4L2_CTRL_CLASS_FM_TX 0x009b0000
 #define V4L2_CTRL_CLASS_FLASH 0x009c0000
@@ -31,6 +31,7 @@
 #define V4L2_CTRL_CLASS_FM_RX 0x00a10000
 #define V4L2_CTRL_CLASS_RF_TUNER 0x00a20000
 #define V4L2_CTRL_CLASS_DETECT 0x00a30000
+#define V4L2_CTRL_CLASS_CODEC_STATELESS 0x00a40000
 #define V4L2_CID_BASE (V4L2_CTRL_CLASS_USER | 0x900)
 #define V4L2_CID_USER_BASE V4L2_CID_BASE
 #define V4L2_CID_USER_CLASS (V4L2_CTRL_CLASS_USER | 1)
@@ -111,9 +112,10 @@
 #define V4L2_CID_USER_MAX217X_BASE (V4L2_CID_USER_BASE + 0x1090)
 #define V4L2_CID_USER_IMX_BASE (V4L2_CID_USER_BASE + 0x10b0)
 #define V4L2_CID_USER_ATMEL_ISC_BASE (V4L2_CID_USER_BASE + 0x10c0)
-#define V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900)
-#define V4L2_CID_MPEG_CLASS (V4L2_CTRL_CLASS_MPEG | 1)
-#define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_MPEG_BASE + 0)
+#define V4L2_CID_USER_CODA_BASE (V4L2_CID_USER_BASE + 0x10e0)
+#define V4L2_CID_CODEC_BASE (V4L2_CTRL_CLASS_CODEC | 0x900)
+#define V4L2_CID_CODEC_CLASS (V4L2_CTRL_CLASS_CODEC | 1)
+#define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_CODEC_BASE + 0)
 enum v4l2_mpeg_stream_type {
   V4L2_MPEG_STREAM_TYPE_MPEG2_PS = 0,
   V4L2_MPEG_STREAM_TYPE_MPEG2_TS = 1,
@@ -122,24 +124,24 @@
   V4L2_MPEG_STREAM_TYPE_MPEG1_VCD = 4,
   V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD = 5,
 };
-#define V4L2_CID_MPEG_STREAM_PID_PMT (V4L2_CID_MPEG_BASE + 1)
-#define V4L2_CID_MPEG_STREAM_PID_AUDIO (V4L2_CID_MPEG_BASE + 2)
-#define V4L2_CID_MPEG_STREAM_PID_VIDEO (V4L2_CID_MPEG_BASE + 3)
-#define V4L2_CID_MPEG_STREAM_PID_PCR (V4L2_CID_MPEG_BASE + 4)
-#define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO (V4L2_CID_MPEG_BASE + 5)
-#define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO (V4L2_CID_MPEG_BASE + 6)
-#define V4L2_CID_MPEG_STREAM_VBI_FMT (V4L2_CID_MPEG_BASE + 7)
+#define V4L2_CID_MPEG_STREAM_PID_PMT (V4L2_CID_CODEC_BASE + 1)
+#define V4L2_CID_MPEG_STREAM_PID_AUDIO (V4L2_CID_CODEC_BASE + 2)
+#define V4L2_CID_MPEG_STREAM_PID_VIDEO (V4L2_CID_CODEC_BASE + 3)
+#define V4L2_CID_MPEG_STREAM_PID_PCR (V4L2_CID_CODEC_BASE + 4)
+#define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO (V4L2_CID_CODEC_BASE + 5)
+#define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO (V4L2_CID_CODEC_BASE + 6)
+#define V4L2_CID_MPEG_STREAM_VBI_FMT (V4L2_CID_CODEC_BASE + 7)
 enum v4l2_mpeg_stream_vbi_fmt {
   V4L2_MPEG_STREAM_VBI_FMT_NONE = 0,
   V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1,
 };
-#define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ (V4L2_CID_MPEG_BASE + 100)
+#define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ (V4L2_CID_CODEC_BASE + 100)
 enum v4l2_mpeg_audio_sampling_freq {
   V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0,
   V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000 = 1,
   V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000 = 2,
 };
-#define V4L2_CID_MPEG_AUDIO_ENCODING (V4L2_CID_MPEG_BASE + 101)
+#define V4L2_CID_MPEG_AUDIO_ENCODING (V4L2_CID_CODEC_BASE + 101)
 enum v4l2_mpeg_audio_encoding {
   V4L2_MPEG_AUDIO_ENCODING_LAYER_1 = 0,
   V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1,
@@ -147,7 +149,7 @@
   V4L2_MPEG_AUDIO_ENCODING_AAC = 3,
   V4L2_MPEG_AUDIO_ENCODING_AC3 = 4,
 };
-#define V4L2_CID_MPEG_AUDIO_L1_BITRATE (V4L2_CID_MPEG_BASE + 102)
+#define V4L2_CID_MPEG_AUDIO_L1_BITRATE (V4L2_CID_CODEC_BASE + 102)
 enum v4l2_mpeg_audio_l1_bitrate {
   V4L2_MPEG_AUDIO_L1_BITRATE_32K = 0,
   V4L2_MPEG_AUDIO_L1_BITRATE_64K = 1,
@@ -164,7 +166,7 @@
   V4L2_MPEG_AUDIO_L1_BITRATE_416K = 12,
   V4L2_MPEG_AUDIO_L1_BITRATE_448K = 13,
 };
-#define V4L2_CID_MPEG_AUDIO_L2_BITRATE (V4L2_CID_MPEG_BASE + 103)
+#define V4L2_CID_MPEG_AUDIO_L2_BITRATE (V4L2_CID_CODEC_BASE + 103)
 enum v4l2_mpeg_audio_l2_bitrate {
   V4L2_MPEG_AUDIO_L2_BITRATE_32K = 0,
   V4L2_MPEG_AUDIO_L2_BITRATE_48K = 1,
@@ -181,7 +183,7 @@
   V4L2_MPEG_AUDIO_L2_BITRATE_320K = 12,
   V4L2_MPEG_AUDIO_L2_BITRATE_384K = 13,
 };
-#define V4L2_CID_MPEG_AUDIO_L3_BITRATE (V4L2_CID_MPEG_BASE + 104)
+#define V4L2_CID_MPEG_AUDIO_L3_BITRATE (V4L2_CID_CODEC_BASE + 104)
 enum v4l2_mpeg_audio_l3_bitrate {
   V4L2_MPEG_AUDIO_L3_BITRATE_32K = 0,
   V4L2_MPEG_AUDIO_L3_BITRATE_40K = 1,
@@ -198,34 +200,34 @@
   V4L2_MPEG_AUDIO_L3_BITRATE_256K = 12,
   V4L2_MPEG_AUDIO_L3_BITRATE_320K = 13,
 };
-#define V4L2_CID_MPEG_AUDIO_MODE (V4L2_CID_MPEG_BASE + 105)
+#define V4L2_CID_MPEG_AUDIO_MODE (V4L2_CID_CODEC_BASE + 105)
 enum v4l2_mpeg_audio_mode {
   V4L2_MPEG_AUDIO_MODE_STEREO = 0,
   V4L2_MPEG_AUDIO_MODE_JOINT_STEREO = 1,
   V4L2_MPEG_AUDIO_MODE_DUAL = 2,
   V4L2_MPEG_AUDIO_MODE_MONO = 3,
 };
-#define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION (V4L2_CID_MPEG_BASE + 106)
+#define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION (V4L2_CID_CODEC_BASE + 106)
 enum v4l2_mpeg_audio_mode_extension {
   V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4 = 0,
   V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8 = 1,
   V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12 = 2,
   V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16 = 3,
 };
-#define V4L2_CID_MPEG_AUDIO_EMPHASIS (V4L2_CID_MPEG_BASE + 107)
+#define V4L2_CID_MPEG_AUDIO_EMPHASIS (V4L2_CID_CODEC_BASE + 107)
 enum v4l2_mpeg_audio_emphasis {
   V4L2_MPEG_AUDIO_EMPHASIS_NONE = 0,
   V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS = 1,
   V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17 = 2,
 };
-#define V4L2_CID_MPEG_AUDIO_CRC (V4L2_CID_MPEG_BASE + 108)
+#define V4L2_CID_MPEG_AUDIO_CRC (V4L2_CID_CODEC_BASE + 108)
 enum v4l2_mpeg_audio_crc {
   V4L2_MPEG_AUDIO_CRC_NONE = 0,
   V4L2_MPEG_AUDIO_CRC_CRC16 = 1,
 };
-#define V4L2_CID_MPEG_AUDIO_MUTE (V4L2_CID_MPEG_BASE + 109)
-#define V4L2_CID_MPEG_AUDIO_AAC_BITRATE (V4L2_CID_MPEG_BASE + 110)
-#define V4L2_CID_MPEG_AUDIO_AC3_BITRATE (V4L2_CID_MPEG_BASE + 111)
+#define V4L2_CID_MPEG_AUDIO_MUTE (V4L2_CID_CODEC_BASE + 109)
+#define V4L2_CID_MPEG_AUDIO_AAC_BITRATE (V4L2_CID_CODEC_BASE + 110)
+#define V4L2_CID_MPEG_AUDIO_AC3_BITRATE (V4L2_CID_CODEC_BASE + 111)
 enum v4l2_mpeg_audio_ac3_bitrate {
   V4L2_MPEG_AUDIO_AC3_BITRATE_32K = 0,
   V4L2_MPEG_AUDIO_AC3_BITRATE_40K = 1,
@@ -247,7 +249,7 @@
   V4L2_MPEG_AUDIO_AC3_BITRATE_576K = 17,
   V4L2_MPEG_AUDIO_AC3_BITRATE_640K = 18,
 };
-#define V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK (V4L2_CID_MPEG_BASE + 112)
+#define V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK (V4L2_CID_CODEC_BASE + 112)
 enum v4l2_mpeg_audio_dec_playback {
   V4L2_MPEG_AUDIO_DEC_PLAYBACK_AUTO = 0,
   V4L2_MPEG_AUDIO_DEC_PLAYBACK_STEREO = 1,
@@ -256,49 +258,49 @@
   V4L2_MPEG_AUDIO_DEC_PLAYBACK_MONO = 4,
   V4L2_MPEG_AUDIO_DEC_PLAYBACK_SWAPPED_STEREO = 5,
 };
-#define V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK (V4L2_CID_MPEG_BASE + 113)
-#define V4L2_CID_MPEG_VIDEO_ENCODING (V4L2_CID_MPEG_BASE + 200)
+#define V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK (V4L2_CID_CODEC_BASE + 113)
+#define V4L2_CID_MPEG_VIDEO_ENCODING (V4L2_CID_CODEC_BASE + 200)
 enum v4l2_mpeg_video_encoding {
   V4L2_MPEG_VIDEO_ENCODING_MPEG_1 = 0,
   V4L2_MPEG_VIDEO_ENCODING_MPEG_2 = 1,
   V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC = 2,
 };
-#define V4L2_CID_MPEG_VIDEO_ASPECT (V4L2_CID_MPEG_BASE + 201)
+#define V4L2_CID_MPEG_VIDEO_ASPECT (V4L2_CID_CODEC_BASE + 201)
 enum v4l2_mpeg_video_aspect {
   V4L2_MPEG_VIDEO_ASPECT_1x1 = 0,
   V4L2_MPEG_VIDEO_ASPECT_4x3 = 1,
   V4L2_MPEG_VIDEO_ASPECT_16x9 = 2,
   V4L2_MPEG_VIDEO_ASPECT_221x100 = 3,
 };
-#define V4L2_CID_MPEG_VIDEO_B_FRAMES (V4L2_CID_MPEG_BASE + 202)
-#define V4L2_CID_MPEG_VIDEO_GOP_SIZE (V4L2_CID_MPEG_BASE + 203)
-#define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE (V4L2_CID_MPEG_BASE + 204)
-#define V4L2_CID_MPEG_VIDEO_PULLDOWN (V4L2_CID_MPEG_BASE + 205)
-#define V4L2_CID_MPEG_VIDEO_BITRATE_MODE (V4L2_CID_MPEG_BASE + 206)
+#define V4L2_CID_MPEG_VIDEO_B_FRAMES (V4L2_CID_CODEC_BASE + 202)
+#define V4L2_CID_MPEG_VIDEO_GOP_SIZE (V4L2_CID_CODEC_BASE + 203)
+#define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE (V4L2_CID_CODEC_BASE + 204)
+#define V4L2_CID_MPEG_VIDEO_PULLDOWN (V4L2_CID_CODEC_BASE + 205)
+#define V4L2_CID_MPEG_VIDEO_BITRATE_MODE (V4L2_CID_CODEC_BASE + 206)
 enum v4l2_mpeg_video_bitrate_mode {
   V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0,
   V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1,
   V4L2_MPEG_VIDEO_BITRATE_MODE_CQ = 2,
 };
-#define V4L2_CID_MPEG_VIDEO_BITRATE (V4L2_CID_MPEG_BASE + 207)
-#define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (V4L2_CID_MPEG_BASE + 208)
-#define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_MPEG_BASE + 209)
-#define V4L2_CID_MPEG_VIDEO_MUTE (V4L2_CID_MPEG_BASE + 210)
-#define V4L2_CID_MPEG_VIDEO_MUTE_YUV (V4L2_CID_MPEG_BASE + 211)
-#define V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE (V4L2_CID_MPEG_BASE + 212)
-#define V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER (V4L2_CID_MPEG_BASE + 213)
-#define V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB (V4L2_CID_MPEG_BASE + 214)
-#define V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE (V4L2_CID_MPEG_BASE + 215)
-#define V4L2_CID_MPEG_VIDEO_HEADER_MODE (V4L2_CID_MPEG_BASE + 216)
+#define V4L2_CID_MPEG_VIDEO_BITRATE (V4L2_CID_CODEC_BASE + 207)
+#define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (V4L2_CID_CODEC_BASE + 208)
+#define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_CODEC_BASE + 209)
+#define V4L2_CID_MPEG_VIDEO_MUTE (V4L2_CID_CODEC_BASE + 210)
+#define V4L2_CID_MPEG_VIDEO_MUTE_YUV (V4L2_CID_CODEC_BASE + 211)
+#define V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE (V4L2_CID_CODEC_BASE + 212)
+#define V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER (V4L2_CID_CODEC_BASE + 213)
+#define V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB (V4L2_CID_CODEC_BASE + 214)
+#define V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE (V4L2_CID_CODEC_BASE + 215)
+#define V4L2_CID_MPEG_VIDEO_HEADER_MODE (V4L2_CID_CODEC_BASE + 216)
 enum v4l2_mpeg_video_header_mode {
   V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE = 0,
   V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME = 1,
 };
-#define V4L2_CID_MPEG_VIDEO_MAX_REF_PIC (V4L2_CID_MPEG_BASE + 217)
-#define V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE (V4L2_CID_MPEG_BASE + 218)
-#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES (V4L2_CID_MPEG_BASE + 219)
-#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB (V4L2_CID_MPEG_BASE + 220)
-#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE (V4L2_CID_MPEG_BASE + 221)
+#define V4L2_CID_MPEG_VIDEO_MAX_REF_PIC (V4L2_CID_CODEC_BASE + 217)
+#define V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE (V4L2_CID_CODEC_BASE + 218)
+#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES (V4L2_CID_CODEC_BASE + 219)
+#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB (V4L2_CID_CODEC_BASE + 220)
+#define V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE (V4L2_CID_CODEC_BASE + 221)
 enum v4l2_mpeg_video_multi_slice_mode {
   V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE = 0,
   V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_MB = 1,
@@ -306,22 +308,22 @@
   V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_MB = 1,
   V4L2_MPEG_VIDEO_MULTI_SICE_MODE_MAX_BYTES = 2,
 };
-#define V4L2_CID_MPEG_VIDEO_VBV_SIZE (V4L2_CID_MPEG_BASE + 222)
-#define V4L2_CID_MPEG_VIDEO_DEC_PTS (V4L2_CID_MPEG_BASE + 223)
-#define V4L2_CID_MPEG_VIDEO_DEC_FRAME (V4L2_CID_MPEG_BASE + 224)
-#define V4L2_CID_MPEG_VIDEO_VBV_DELAY (V4L2_CID_MPEG_BASE + 225)
-#define V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER (V4L2_CID_MPEG_BASE + 226)
-#define V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE (V4L2_CID_MPEG_BASE + 227)
-#define V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE (V4L2_CID_MPEG_BASE + 228)
-#define V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME (V4L2_CID_MPEG_BASE + 229)
-#define V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL (V4L2_CID_MPEG_BASE + 270)
+#define V4L2_CID_MPEG_VIDEO_VBV_SIZE (V4L2_CID_CODEC_BASE + 222)
+#define V4L2_CID_MPEG_VIDEO_DEC_PTS (V4L2_CID_CODEC_BASE + 223)
+#define V4L2_CID_MPEG_VIDEO_DEC_FRAME (V4L2_CID_CODEC_BASE + 224)
+#define V4L2_CID_MPEG_VIDEO_VBV_DELAY (V4L2_CID_CODEC_BASE + 225)
+#define V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER (V4L2_CID_CODEC_BASE + 226)
+#define V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE (V4L2_CID_CODEC_BASE + 227)
+#define V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE (V4L2_CID_CODEC_BASE + 228)
+#define V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME (V4L2_CID_CODEC_BASE + 229)
+#define V4L2_CID_MPEG_VIDEO_MPEG2_LEVEL (V4L2_CID_CODEC_BASE + 270)
 enum v4l2_mpeg_video_mpeg2_level {
   V4L2_MPEG_VIDEO_MPEG2_LEVEL_LOW = 0,
   V4L2_MPEG_VIDEO_MPEG2_LEVEL_MAIN = 1,
   V4L2_MPEG_VIDEO_MPEG2_LEVEL_HIGH_1440 = 2,
   V4L2_MPEG_VIDEO_MPEG2_LEVEL_HIGH = 3,
 };
-#define V4L2_CID_MPEG_VIDEO_MPEG2_PROFILE (V4L2_CID_MPEG_BASE + 271)
+#define V4L2_CID_MPEG_VIDEO_MPEG2_PROFILE (V4L2_CID_CODEC_BASE + 271)
 enum v4l2_mpeg_video_mpeg2_profile {
   V4L2_MPEG_VIDEO_MPEG2_PROFILE_SIMPLE = 0,
   V4L2_MPEG_VIDEO_MPEG2_PROFILE_MAIN = 1,
@@ -330,27 +332,27 @@
   V4L2_MPEG_VIDEO_MPEG2_PROFILE_HIGH = 4,
   V4L2_MPEG_VIDEO_MPEG2_PROFILE_MULTIVIEW = 5,
 };
-#define V4L2_CID_FWHT_I_FRAME_QP (V4L2_CID_MPEG_BASE + 290)
-#define V4L2_CID_FWHT_P_FRAME_QP (V4L2_CID_MPEG_BASE + 291)
-#define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP (V4L2_CID_MPEG_BASE + 300)
-#define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP (V4L2_CID_MPEG_BASE + 301)
-#define V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP (V4L2_CID_MPEG_BASE + 302)
-#define V4L2_CID_MPEG_VIDEO_H263_MIN_QP (V4L2_CID_MPEG_BASE + 303)
-#define V4L2_CID_MPEG_VIDEO_H263_MAX_QP (V4L2_CID_MPEG_BASE + 304)
-#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP (V4L2_CID_MPEG_BASE + 350)
-#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP (V4L2_CID_MPEG_BASE + 351)
-#define V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP (V4L2_CID_MPEG_BASE + 352)
-#define V4L2_CID_MPEG_VIDEO_H264_MIN_QP (V4L2_CID_MPEG_BASE + 353)
-#define V4L2_CID_MPEG_VIDEO_H264_MAX_QP (V4L2_CID_MPEG_BASE + 354)
-#define V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM (V4L2_CID_MPEG_BASE + 355)
-#define V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE (V4L2_CID_MPEG_BASE + 356)
-#define V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE (V4L2_CID_MPEG_BASE + 357)
+#define V4L2_CID_FWHT_I_FRAME_QP (V4L2_CID_CODEC_BASE + 290)
+#define V4L2_CID_FWHT_P_FRAME_QP (V4L2_CID_CODEC_BASE + 291)
+#define V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP (V4L2_CID_CODEC_BASE + 300)
+#define V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP (V4L2_CID_CODEC_BASE + 301)
+#define V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP (V4L2_CID_CODEC_BASE + 302)
+#define V4L2_CID_MPEG_VIDEO_H263_MIN_QP (V4L2_CID_CODEC_BASE + 303)
+#define V4L2_CID_MPEG_VIDEO_H263_MAX_QP (V4L2_CID_CODEC_BASE + 304)
+#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP (V4L2_CID_CODEC_BASE + 350)
+#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP (V4L2_CID_CODEC_BASE + 351)
+#define V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP (V4L2_CID_CODEC_BASE + 352)
+#define V4L2_CID_MPEG_VIDEO_H264_MIN_QP (V4L2_CID_CODEC_BASE + 353)
+#define V4L2_CID_MPEG_VIDEO_H264_MAX_QP (V4L2_CID_CODEC_BASE + 354)
+#define V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM (V4L2_CID_CODEC_BASE + 355)
+#define V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE (V4L2_CID_CODEC_BASE + 356)
+#define V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE (V4L2_CID_CODEC_BASE + 357)
 enum v4l2_mpeg_video_h264_entropy_mode {
   V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC = 0,
   V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC = 1,
 };
-#define V4L2_CID_MPEG_VIDEO_H264_I_PERIOD (V4L2_CID_MPEG_BASE + 358)
-#define V4L2_CID_MPEG_VIDEO_H264_LEVEL (V4L2_CID_MPEG_BASE + 359)
+#define V4L2_CID_MPEG_VIDEO_H264_I_PERIOD (V4L2_CID_CODEC_BASE + 358)
+#define V4L2_CID_MPEG_VIDEO_H264_LEVEL (V4L2_CID_CODEC_BASE + 359)
 enum v4l2_mpeg_video_h264_level {
   V4L2_MPEG_VIDEO_H264_LEVEL_1_0 = 0,
   V4L2_MPEG_VIDEO_H264_LEVEL_1B = 1,
@@ -373,15 +375,15 @@
   V4L2_MPEG_VIDEO_H264_LEVEL_6_1 = 18,
   V4L2_MPEG_VIDEO_H264_LEVEL_6_2 = 19,
 };
-#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA (V4L2_CID_MPEG_BASE + 360)
-#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA (V4L2_CID_MPEG_BASE + 361)
-#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE (V4L2_CID_MPEG_BASE + 362)
+#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA (V4L2_CID_CODEC_BASE + 360)
+#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA (V4L2_CID_CODEC_BASE + 361)
+#define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE (V4L2_CID_CODEC_BASE + 362)
 enum v4l2_mpeg_video_h264_loop_filter_mode {
   V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED = 0,
   V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED = 1,
   V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY = 2,
 };
-#define V4L2_CID_MPEG_VIDEO_H264_PROFILE (V4L2_CID_MPEG_BASE + 363)
+#define V4L2_CID_MPEG_VIDEO_H264_PROFILE (V4L2_CID_CODEC_BASE + 363)
 enum v4l2_mpeg_video_h264_profile {
   V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE = 0,
   V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE = 1,
@@ -402,10 +404,10 @@
   V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH = 16,
   V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH = 17,
 };
-#define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT (V4L2_CID_MPEG_BASE + 364)
-#define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH (V4L2_CID_MPEG_BASE + 365)
-#define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE (V4L2_CID_MPEG_BASE + 366)
-#define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC (V4L2_CID_MPEG_BASE + 367)
+#define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT (V4L2_CID_CODEC_BASE + 364)
+#define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH (V4L2_CID_CODEC_BASE + 365)
+#define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE (V4L2_CID_CODEC_BASE + 366)
+#define V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC (V4L2_CID_CODEC_BASE + 367)
 enum v4l2_mpeg_video_h264_vui_sar_idc {
   V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_UNSPECIFIED = 0,
   V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_1x1 = 1,
@@ -426,9 +428,9 @@
   V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_2x1 = 16,
   V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_EXTENDED = 17,
 };
-#define V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING (V4L2_CID_MPEG_BASE + 368)
-#define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0 (V4L2_CID_MPEG_BASE + 369)
-#define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE (V4L2_CID_MPEG_BASE + 370)
+#define V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING (V4L2_CID_CODEC_BASE + 368)
+#define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0 (V4L2_CID_CODEC_BASE + 369)
+#define V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE (V4L2_CID_CODEC_BASE + 370)
 enum v4l2_mpeg_video_h264_sei_fp_arrangement_type {
   V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_CHECKERBOARD = 0,
   V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_COLUMN = 1,
@@ -437,8 +439,8 @@
   V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TOP_BOTTOM = 4,
   V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TEMPORAL = 5,
 };
-#define V4L2_CID_MPEG_VIDEO_H264_FMO (V4L2_CID_MPEG_BASE + 371)
-#define V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE (V4L2_CID_MPEG_BASE + 372)
+#define V4L2_CID_MPEG_VIDEO_H264_FMO (V4L2_CID_CODEC_BASE + 371)
+#define V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE (V4L2_CID_CODEC_BASE + 372)
 enum v4l2_mpeg_video_h264_fmo_map_type {
   V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_INTERLEAVED_SLICES = 0,
   V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_SCATTERED_SLICES = 1,
@@ -448,36 +450,36 @@
   V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_WIPE_SCAN = 5,
   V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_EXPLICIT = 6,
 };
-#define V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP (V4L2_CID_MPEG_BASE + 373)
-#define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION (V4L2_CID_MPEG_BASE + 374)
+#define V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP (V4L2_CID_CODEC_BASE + 373)
+#define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION (V4L2_CID_CODEC_BASE + 374)
 enum v4l2_mpeg_video_h264_fmo_change_dir {
   V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_RIGHT = 0,
   V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_LEFT = 1,
 };
-#define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE (V4L2_CID_MPEG_BASE + 375)
-#define V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH (V4L2_CID_MPEG_BASE + 376)
-#define V4L2_CID_MPEG_VIDEO_H264_ASO (V4L2_CID_MPEG_BASE + 377)
-#define V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER (V4L2_CID_MPEG_BASE + 378)
-#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING (V4L2_CID_MPEG_BASE + 379)
-#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE (V4L2_CID_MPEG_BASE + 380)
+#define V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE (V4L2_CID_CODEC_BASE + 375)
+#define V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH (V4L2_CID_CODEC_BASE + 376)
+#define V4L2_CID_MPEG_VIDEO_H264_ASO (V4L2_CID_CODEC_BASE + 377)
+#define V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER (V4L2_CID_CODEC_BASE + 378)
+#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING (V4L2_CID_CODEC_BASE + 379)
+#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE (V4L2_CID_CODEC_BASE + 380)
 enum v4l2_mpeg_video_h264_hierarchical_coding_type {
   V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B = 0,
   V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P = 1,
 };
-#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_H264_I_FRAME_MIN_QP (V4L2_CID_MPEG_BASE + 385)
-#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP (V4L2_CID_MPEG_BASE + 386)
-#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP (V4L2_CID_MPEG_BASE + 387)
-#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP (V4L2_CID_MPEG_BASE + 388)
-#define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (V4L2_CID_MPEG_BASE + 400)
-#define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP (V4L2_CID_MPEG_BASE + 401)
-#define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP (V4L2_CID_MPEG_BASE + 402)
-#define V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP (V4L2_CID_MPEG_BASE + 403)
-#define V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP (V4L2_CID_MPEG_BASE + 404)
-#define V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL (V4L2_CID_MPEG_BASE + 405)
+#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER (V4L2_CID_CODEC_BASE + 381)
+#define V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP (V4L2_CID_CODEC_BASE + 382)
+#define V4L2_CID_MPEG_VIDEO_H264_CONSTRAINED_INTRA_PREDICTION (V4L2_CID_CODEC_BASE + 383)
+#define V4L2_CID_MPEG_VIDEO_H264_CHROMA_QP_INDEX_OFFSET (V4L2_CID_CODEC_BASE + 384)
+#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MIN_QP (V4L2_CID_CODEC_BASE + 385)
+#define V4L2_CID_MPEG_VIDEO_H264_I_FRAME_MAX_QP (V4L2_CID_CODEC_BASE + 386)
+#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MIN_QP (V4L2_CID_CODEC_BASE + 387)
+#define V4L2_CID_MPEG_VIDEO_H264_P_FRAME_MAX_QP (V4L2_CID_CODEC_BASE + 388)
+#define V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP (V4L2_CID_CODEC_BASE + 400)
+#define V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP (V4L2_CID_CODEC_BASE + 401)
+#define V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP (V4L2_CID_CODEC_BASE + 402)
+#define V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP (V4L2_CID_CODEC_BASE + 403)
+#define V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP (V4L2_CID_CODEC_BASE + 404)
+#define V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL (V4L2_CID_CODEC_BASE + 405)
 enum v4l2_mpeg_video_mpeg4_level {
   V4L2_MPEG_VIDEO_MPEG4_LEVEL_0 = 0,
   V4L2_MPEG_VIDEO_MPEG4_LEVEL_0B = 1,
@@ -488,7 +490,7 @@
   V4L2_MPEG_VIDEO_MPEG4_LEVEL_4 = 6,
   V4L2_MPEG_VIDEO_MPEG4_LEVEL_5 = 7,
 };
-#define V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE (V4L2_CID_MPEG_BASE + 406)
+#define V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE (V4L2_CID_CODEC_BASE + 406)
 enum v4l2_mpeg_video_mpeg4_profile {
   V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE = 0,
   V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_SIMPLE = 1,
@@ -496,34 +498,34 @@
   V4L2_MPEG_VIDEO_MPEG4_PROFILE_SIMPLE_SCALABLE = 3,
   V4L2_MPEG_VIDEO_MPEG4_PROFILE_ADVANCED_CODING_EFFICIENCY = 4,
 };
-#define V4L2_CID_MPEG_VIDEO_MPEG4_QPEL (V4L2_CID_MPEG_BASE + 407)
-#define V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS (V4L2_CID_MPEG_BASE + 500)
+#define V4L2_CID_MPEG_VIDEO_MPEG4_QPEL (V4L2_CID_CODEC_BASE + 407)
+#define V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS (V4L2_CID_CODEC_BASE + 500)
 enum v4l2_vp8_num_partitions {
   V4L2_CID_MPEG_VIDEO_VPX_1_PARTITION = 0,
   V4L2_CID_MPEG_VIDEO_VPX_2_PARTITIONS = 1,
   V4L2_CID_MPEG_VIDEO_VPX_4_PARTITIONS = 2,
   V4L2_CID_MPEG_VIDEO_VPX_8_PARTITIONS = 3,
 };
-#define V4L2_CID_MPEG_VIDEO_VPX_IMD_DISABLE_4X4 (V4L2_CID_MPEG_BASE + 501)
-#define V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES (V4L2_CID_MPEG_BASE + 502)
+#define V4L2_CID_MPEG_VIDEO_VPX_IMD_DISABLE_4X4 (V4L2_CID_CODEC_BASE + 501)
+#define V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES (V4L2_CID_CODEC_BASE + 502)
 enum v4l2_vp8_num_ref_frames {
   V4L2_CID_MPEG_VIDEO_VPX_1_REF_FRAME = 0,
   V4L2_CID_MPEG_VIDEO_VPX_2_REF_FRAME = 1,
   V4L2_CID_MPEG_VIDEO_VPX_3_REF_FRAME = 2,
 };
-#define V4L2_CID_MPEG_VIDEO_VPX_FILTER_LEVEL (V4L2_CID_MPEG_BASE + 503)
-#define V4L2_CID_MPEG_VIDEO_VPX_FILTER_SHARPNESS (V4L2_CID_MPEG_BASE + 504)
-#define V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD (V4L2_CID_MPEG_BASE + 505)
-#define V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL (V4L2_CID_MPEG_BASE + 506)
+#define V4L2_CID_MPEG_VIDEO_VPX_FILTER_LEVEL (V4L2_CID_CODEC_BASE + 503)
+#define V4L2_CID_MPEG_VIDEO_VPX_FILTER_SHARPNESS (V4L2_CID_CODEC_BASE + 504)
+#define V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD (V4L2_CID_CODEC_BASE + 505)
+#define V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL (V4L2_CID_CODEC_BASE + 506)
 enum v4l2_vp8_golden_frame_sel {
   V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV = 0,
   V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_REF_PERIOD = 1,
 };
-#define V4L2_CID_MPEG_VIDEO_VPX_MIN_QP (V4L2_CID_MPEG_BASE + 507)
-#define V4L2_CID_MPEG_VIDEO_VPX_MAX_QP (V4L2_CID_MPEG_BASE + 508)
-#define V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP (V4L2_CID_MPEG_BASE + 509)
-#define V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP (V4L2_CID_MPEG_BASE + 510)
-#define V4L2_CID_MPEG_VIDEO_VP8_PROFILE (V4L2_CID_MPEG_BASE + 511)
+#define V4L2_CID_MPEG_VIDEO_VPX_MIN_QP (V4L2_CID_CODEC_BASE + 507)
+#define V4L2_CID_MPEG_VIDEO_VPX_MAX_QP (V4L2_CID_CODEC_BASE + 508)
+#define V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP (V4L2_CID_CODEC_BASE + 509)
+#define V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP (V4L2_CID_CODEC_BASE + 510)
+#define V4L2_CID_MPEG_VIDEO_VP8_PROFILE (V4L2_CID_CODEC_BASE + 511)
 enum v4l2_mpeg_video_vp8_profile {
   V4L2_MPEG_VIDEO_VP8_PROFILE_0 = 0,
   V4L2_MPEG_VIDEO_VP8_PROFILE_1 = 1,
@@ -531,14 +533,14 @@
   V4L2_MPEG_VIDEO_VP8_PROFILE_3 = 3,
 };
 #define V4L2_CID_MPEG_VIDEO_VPX_PROFILE V4L2_CID_MPEG_VIDEO_VP8_PROFILE
-#define V4L2_CID_MPEG_VIDEO_VP9_PROFILE (V4L2_CID_MPEG_BASE + 512)
+#define V4L2_CID_MPEG_VIDEO_VP9_PROFILE (V4L2_CID_CODEC_BASE + 512)
 enum v4l2_mpeg_video_vp9_profile {
   V4L2_MPEG_VIDEO_VP9_PROFILE_0 = 0,
   V4L2_MPEG_VIDEO_VP9_PROFILE_1 = 1,
   V4L2_MPEG_VIDEO_VP9_PROFILE_2 = 2,
   V4L2_MPEG_VIDEO_VP9_PROFILE_3 = 3,
 };
-#define V4L2_CID_MPEG_VIDEO_VP9_LEVEL (V4L2_CID_MPEG_BASE + 513)
+#define V4L2_CID_MPEG_VIDEO_VP9_LEVEL (V4L2_CID_CODEC_BASE + 513)
 enum v4l2_mpeg_video_vp9_level {
   V4L2_MPEG_VIDEO_VP9_LEVEL_1_0 = 0,
   V4L2_MPEG_VIDEO_VP9_LEVEL_1_1 = 1,
@@ -555,32 +557,32 @@
   V4L2_MPEG_VIDEO_VP9_LEVEL_6_1 = 12,
   V4L2_MPEG_VIDEO_VP9_LEVEL_6_2 = 13,
 };
-#define V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP (V4L2_CID_MPEG_BASE + 600)
-#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP (V4L2_CID_MPEG_BASE + 601)
-#define V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP (V4L2_CID_MPEG_BASE + 602)
-#define V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_QP (V4L2_CID_MPEG_BASE + 603)
-#define V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP (V4L2_CID_MPEG_BASE + 604)
-#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_QP (V4L2_CID_MPEG_BASE + 605)
-#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE (V4L2_CID_MPEG_BASE + 606)
+#define V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP (V4L2_CID_CODEC_BASE + 600)
+#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP (V4L2_CID_CODEC_BASE + 601)
+#define V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP (V4L2_CID_CODEC_BASE + 602)
+#define V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_QP (V4L2_CID_CODEC_BASE + 603)
+#define V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP (V4L2_CID_CODEC_BASE + 604)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_QP (V4L2_CID_CODEC_BASE + 605)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE (V4L2_CID_CODEC_BASE + 606)
 enum v4l2_mpeg_video_hevc_hier_coding_type {
   V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B = 0,
   V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P = 1,
 };
-#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER (V4L2_CID_MPEG_BASE + 607)
-#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_QP (V4L2_CID_MPEG_BASE + 608)
-#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_QP (V4L2_CID_MPEG_BASE + 609)
-#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_QP (V4L2_CID_MPEG_BASE + 610)
-#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_QP (V4L2_CID_MPEG_BASE + 611)
-#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_QP (V4L2_CID_MPEG_BASE + 612)
-#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_QP (V4L2_CID_MPEG_BASE + 613)
-#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_QP (V4L2_CID_MPEG_BASE + 614)
-#define V4L2_CID_MPEG_VIDEO_HEVC_PROFILE (V4L2_CID_MPEG_BASE + 615)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER (V4L2_CID_CODEC_BASE + 607)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_QP (V4L2_CID_CODEC_BASE + 608)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_QP (V4L2_CID_CODEC_BASE + 609)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_QP (V4L2_CID_CODEC_BASE + 610)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_QP (V4L2_CID_CODEC_BASE + 611)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_QP (V4L2_CID_CODEC_BASE + 612)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_QP (V4L2_CID_CODEC_BASE + 613)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_QP (V4L2_CID_CODEC_BASE + 614)
+#define V4L2_CID_MPEG_VIDEO_HEVC_PROFILE (V4L2_CID_CODEC_BASE + 615)
 enum v4l2_mpeg_video_hevc_profile {
   V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN = 0,
   V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE = 1,
   V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10 = 2,
 };
-#define V4L2_CID_MPEG_VIDEO_HEVC_LEVEL (V4L2_CID_MPEG_BASE + 616)
+#define V4L2_CID_MPEG_VIDEO_HEVC_LEVEL (V4L2_CID_CODEC_BASE + 616)
 enum v4l2_mpeg_video_hevc_level {
   V4L2_MPEG_VIDEO_HEVC_LEVEL_1 = 0,
   V4L2_MPEG_VIDEO_HEVC_LEVEL_2 = 1,
@@ -596,69 +598,69 @@
   V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1 = 11,
   V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2 = 12,
 };
-#define V4L2_CID_MPEG_VIDEO_HEVC_FRAME_RATE_RESOLUTION (V4L2_CID_MPEG_BASE + 617)
-#define V4L2_CID_MPEG_VIDEO_HEVC_TIER (V4L2_CID_MPEG_BASE + 618)
+#define V4L2_CID_MPEG_VIDEO_HEVC_FRAME_RATE_RESOLUTION (V4L2_CID_CODEC_BASE + 617)
+#define V4L2_CID_MPEG_VIDEO_HEVC_TIER (V4L2_CID_CODEC_BASE + 618)
 enum v4l2_mpeg_video_hevc_tier {
   V4L2_MPEG_VIDEO_HEVC_TIER_MAIN = 0,
   V4L2_MPEG_VIDEO_HEVC_TIER_HIGH = 1,
 };
-#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_PARTITION_DEPTH (V4L2_CID_MPEG_BASE + 619)
-#define V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE (V4L2_CID_MPEG_BASE + 620)
+#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_PARTITION_DEPTH (V4L2_CID_CODEC_BASE + 619)
+#define V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE (V4L2_CID_CODEC_BASE + 620)
 enum v4l2_cid_mpeg_video_hevc_loop_filter_mode {
   V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED = 0,
   V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED = 1,
   V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY = 2,
 };
-#define V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2 (V4L2_CID_MPEG_BASE + 621)
-#define V4L2_CID_MPEG_VIDEO_HEVC_LF_TC_OFFSET_DIV2 (V4L2_CID_MPEG_BASE + 622)
-#define V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_TYPE (V4L2_CID_MPEG_BASE + 623)
+#define V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2 (V4L2_CID_CODEC_BASE + 621)
+#define V4L2_CID_MPEG_VIDEO_HEVC_LF_TC_OFFSET_DIV2 (V4L2_CID_CODEC_BASE + 622)
+#define V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_TYPE (V4L2_CID_CODEC_BASE + 623)
 enum v4l2_cid_mpeg_video_hevc_refresh_type {
   V4L2_MPEG_VIDEO_HEVC_REFRESH_NONE = 0,
   V4L2_MPEG_VIDEO_HEVC_REFRESH_CRA = 1,
   V4L2_MPEG_VIDEO_HEVC_REFRESH_IDR = 2,
 };
-#define V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_PERIOD (V4L2_CID_MPEG_BASE + 624)
-#define V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU (V4L2_CID_MPEG_BASE + 625)
-#define V4L2_CID_MPEG_VIDEO_HEVC_CONST_INTRA_PRED (V4L2_CID_MPEG_BASE + 626)
-#define V4L2_CID_MPEG_VIDEO_HEVC_WAVEFRONT (V4L2_CID_MPEG_BASE + 627)
-#define V4L2_CID_MPEG_VIDEO_HEVC_GENERAL_PB (V4L2_CID_MPEG_BASE + 628)
-#define V4L2_CID_MPEG_VIDEO_HEVC_TEMPORAL_ID (V4L2_CID_MPEG_BASE + 629)
-#define V4L2_CID_MPEG_VIDEO_HEVC_STRONG_SMOOTHING (V4L2_CID_MPEG_BASE + 630)
-#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_NUM_MERGE_MV_MINUS1 (V4L2_CID_MPEG_BASE + 631)
-#define V4L2_CID_MPEG_VIDEO_HEVC_INTRA_PU_SPLIT (V4L2_CID_MPEG_BASE + 632)
-#define V4L2_CID_MPEG_VIDEO_HEVC_TMV_PREDICTION (V4L2_CID_MPEG_BASE + 633)
-#define V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE (V4L2_CID_MPEG_BASE + 634)
-#define V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD (V4L2_CID_MPEG_BASE + 635)
+#define V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_PERIOD (V4L2_CID_CODEC_BASE + 624)
+#define V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU (V4L2_CID_CODEC_BASE + 625)
+#define V4L2_CID_MPEG_VIDEO_HEVC_CONST_INTRA_PRED (V4L2_CID_CODEC_BASE + 626)
+#define V4L2_CID_MPEG_VIDEO_HEVC_WAVEFRONT (V4L2_CID_CODEC_BASE + 627)
+#define V4L2_CID_MPEG_VIDEO_HEVC_GENERAL_PB (V4L2_CID_CODEC_BASE + 628)
+#define V4L2_CID_MPEG_VIDEO_HEVC_TEMPORAL_ID (V4L2_CID_CODEC_BASE + 629)
+#define V4L2_CID_MPEG_VIDEO_HEVC_STRONG_SMOOTHING (V4L2_CID_CODEC_BASE + 630)
+#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_NUM_MERGE_MV_MINUS1 (V4L2_CID_CODEC_BASE + 631)
+#define V4L2_CID_MPEG_VIDEO_HEVC_INTRA_PU_SPLIT (V4L2_CID_CODEC_BASE + 632)
+#define V4L2_CID_MPEG_VIDEO_HEVC_TMV_PREDICTION (V4L2_CID_CODEC_BASE + 633)
+#define V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE (V4L2_CID_CODEC_BASE + 634)
+#define V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD (V4L2_CID_CODEC_BASE + 635)
 enum v4l2_cid_mpeg_video_hevc_size_of_length_field {
   V4L2_MPEG_VIDEO_HEVC_SIZE_0 = 0,
   V4L2_MPEG_VIDEO_HEVC_SIZE_1 = 1,
   V4L2_MPEG_VIDEO_HEVC_SIZE_2 = 2,
   V4L2_MPEG_VIDEO_HEVC_SIZE_4 = 3,
 };
-#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR (V4L2_CID_MPEG_BASE + 636)
-#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR (V4L2_CID_MPEG_BASE + 637)
-#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR (V4L2_CID_MPEG_BASE + 638)
-#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR (V4L2_CID_MPEG_BASE + 639)
-#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR (V4L2_CID_MPEG_BASE + 640)
-#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR (V4L2_CID_MPEG_BASE + 641)
-#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BR (V4L2_CID_MPEG_BASE + 642)
-#define V4L2_CID_MPEG_VIDEO_REF_NUMBER_FOR_PFRAMES (V4L2_CID_MPEG_BASE + 643)
-#define V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR (V4L2_CID_MPEG_BASE + 644)
-#define V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY (V4L2_CID_MPEG_BASE + 645)
-#define V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE (V4L2_CID_MPEG_BASE + 646)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR (V4L2_CID_CODEC_BASE + 636)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR (V4L2_CID_CODEC_BASE + 637)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR (V4L2_CID_CODEC_BASE + 638)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR (V4L2_CID_CODEC_BASE + 639)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR (V4L2_CID_CODEC_BASE + 640)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR (V4L2_CID_CODEC_BASE + 641)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BR (V4L2_CID_CODEC_BASE + 642)
+#define V4L2_CID_MPEG_VIDEO_REF_NUMBER_FOR_PFRAMES (V4L2_CID_CODEC_BASE + 643)
+#define V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR (V4L2_CID_CODEC_BASE + 644)
+#define V4L2_CID_MPEG_VIDEO_CONSTANT_QUALITY (V4L2_CID_CODEC_BASE + 645)
+#define V4L2_CID_MPEG_VIDEO_FRAME_SKIP_MODE (V4L2_CID_CODEC_BASE + 646)
 enum v4l2_mpeg_video_frame_skip_mode {
   V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_DISABLED = 0,
   V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT = 1,
   V4L2_MPEG_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT = 2,
 };
-#define V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000)
-#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE + 0)
+#define V4L2_CID_CODEC_CX2341X_BASE (V4L2_CTRL_CLASS_CODEC | 0x1000)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_CODEC_CX2341X_BASE + 0)
 enum v4l2_mpeg_cx2341x_video_spatial_filter_mode {
   V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL = 0,
   V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO = 1,
 };
-#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE + 1)
-#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE + 2)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER (V4L2_CID_CODEC_CX2341X_BASE + 1)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE (V4L2_CID_CODEC_CX2341X_BASE + 2)
 enum v4l2_mpeg_cx2341x_video_luma_spatial_filter_type {
   V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF = 0,
   V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
@@ -666,18 +668,18 @@
   V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE = 3,
   V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE = 4,
 };
-#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE + 3)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE (V4L2_CID_CODEC_CX2341X_BASE + 3)
 enum v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type {
   V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF = 0,
   V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
 };
-#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE + 4)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE (V4L2_CID_CODEC_CX2341X_BASE + 4)
 enum v4l2_mpeg_cx2341x_video_temporal_filter_mode {
   V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL = 0,
   V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO = 1,
 };
-#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE + 5)
-#define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE + 6)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER (V4L2_CID_CODEC_CX2341X_BASE + 5)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE (V4L2_CID_CODEC_CX2341X_BASE + 6)
 enum v4l2_mpeg_cx2341x_video_median_filter_type {
   V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF = 0,
   V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR = 1,
@@ -685,35 +687,35 @@
   V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT = 3,
   V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG = 4,
 };
-#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE + 7)
-#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE + 8)
-#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE + 9)
-#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE + 10)
-#define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS (V4L2_CID_MPEG_CX2341X_BASE + 11)
-#define V4L2_CID_MPEG_MFC51_BASE (V4L2_CTRL_CLASS_MPEG | 0x1100)
-#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY (V4L2_CID_MPEG_MFC51_BASE + 0)
-#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE (V4L2_CID_MPEG_MFC51_BASE + 1)
-#define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE (V4L2_CID_MPEG_MFC51_BASE + 2)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_CODEC_CX2341X_BASE + 7)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP (V4L2_CID_CODEC_CX2341X_BASE + 8)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_CODEC_CX2341X_BASE + 9)
+#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP (V4L2_CID_CODEC_CX2341X_BASE + 10)
+#define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS (V4L2_CID_CODEC_CX2341X_BASE + 11)
+#define V4L2_CID_CODEC_MFC51_BASE (V4L2_CTRL_CLASS_CODEC | 0x1100)
+#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY (V4L2_CID_CODEC_MFC51_BASE + 0)
+#define V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE (V4L2_CID_CODEC_MFC51_BASE + 1)
+#define V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE (V4L2_CID_CODEC_MFC51_BASE + 2)
 enum v4l2_mpeg_mfc51_video_frame_skip_mode {
   V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_DISABLED = 0,
   V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_LEVEL_LIMIT = 1,
   V4L2_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE_BUF_LIMIT = 2,
 };
-#define V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE (V4L2_CID_MPEG_MFC51_BASE + 3)
+#define V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE (V4L2_CID_CODEC_MFC51_BASE + 3)
 enum v4l2_mpeg_mfc51_video_force_frame_type {
   V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_DISABLED = 0,
   V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_I_FRAME = 1,
   V4L2_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE_NOT_CODED = 2,
 };
-#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING (V4L2_CID_MPEG_MFC51_BASE + 4)
-#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING_YUV (V4L2_CID_MPEG_MFC51_BASE + 5)
-#define V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT (V4L2_CID_MPEG_MFC51_BASE + 6)
-#define V4L2_CID_MPEG_MFC51_VIDEO_RC_REACTION_COEFF (V4L2_CID_MPEG_MFC51_BASE + 7)
-#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_ACTIVITY (V4L2_CID_MPEG_MFC51_BASE + 50)
-#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_DARK (V4L2_CID_MPEG_MFC51_BASE + 51)
-#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_SMOOTH (V4L2_CID_MPEG_MFC51_BASE + 52)
-#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC (V4L2_CID_MPEG_MFC51_BASE + 53)
-#define V4L2_CID_MPEG_MFC51_VIDEO_H264_NUM_REF_PIC_FOR_P (V4L2_CID_MPEG_MFC51_BASE + 54)
+#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING (V4L2_CID_CODEC_MFC51_BASE + 4)
+#define V4L2_CID_MPEG_MFC51_VIDEO_PADDING_YUV (V4L2_CID_CODEC_MFC51_BASE + 5)
+#define V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT (V4L2_CID_CODEC_MFC51_BASE + 6)
+#define V4L2_CID_MPEG_MFC51_VIDEO_RC_REACTION_COEFF (V4L2_CID_CODEC_MFC51_BASE + 7)
+#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_ACTIVITY (V4L2_CID_CODEC_MFC51_BASE + 50)
+#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_DARK (V4L2_CID_CODEC_MFC51_BASE + 51)
+#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_SMOOTH (V4L2_CID_CODEC_MFC51_BASE + 52)
+#define V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC (V4L2_CID_CODEC_MFC51_BASE + 53)
+#define V4L2_CID_MPEG_MFC51_VIDEO_H264_NUM_REF_PIC_FOR_P (V4L2_CID_CODEC_MFC51_BASE + 54)
 #define V4L2_CID_CAMERA_CLASS_BASE (V4L2_CTRL_CLASS_CAMERA | 0x900)
 #define V4L2_CID_CAMERA_CLASS (V4L2_CTRL_CLASS_CAMERA | 1)
 #define V4L2_CID_EXPOSURE_AUTO (V4L2_CID_CAMERA_CLASS_BASE + 1)
@@ -980,4 +982,198 @@
 #define V4L2_CID_DETECT_MD_GLOBAL_THRESHOLD (V4L2_CID_DETECT_CLASS_BASE + 2)
 #define V4L2_CID_DETECT_MD_THRESHOLD_GRID (V4L2_CID_DETECT_CLASS_BASE + 3)
 #define V4L2_CID_DETECT_MD_REGION_GRID (V4L2_CID_DETECT_CLASS_BASE + 4)
+#define V4L2_CID_CODEC_STATELESS_BASE (V4L2_CTRL_CLASS_CODEC_STATELESS | 0x900)
+#define V4L2_CID_CODEC_STATELESS_CLASS (V4L2_CTRL_CLASS_CODEC_STATELESS | 1)
+#define V4L2_CID_STATELESS_H264_DECODE_MODE (V4L2_CID_CODEC_STATELESS_BASE + 0)
+enum v4l2_stateless_h264_decode_mode {
+  V4L2_STATELESS_H264_DECODE_MODE_SLICE_BASED,
+  V4L2_STATELESS_H264_DECODE_MODE_FRAME_BASED,
+};
+#define V4L2_CID_STATELESS_H264_START_CODE (V4L2_CID_CODEC_STATELESS_BASE + 1)
+enum v4l2_stateless_h264_start_code {
+  V4L2_STATELESS_H264_START_CODE_NONE,
+  V4L2_STATELESS_H264_START_CODE_ANNEX_B,
+};
+#define V4L2_H264_SPS_CONSTRAINT_SET0_FLAG 0x01
+#define V4L2_H264_SPS_CONSTRAINT_SET1_FLAG 0x02
+#define V4L2_H264_SPS_CONSTRAINT_SET2_FLAG 0x04
+#define V4L2_H264_SPS_CONSTRAINT_SET3_FLAG 0x08
+#define V4L2_H264_SPS_CONSTRAINT_SET4_FLAG 0x10
+#define V4L2_H264_SPS_CONSTRAINT_SET5_FLAG 0x20
+#define V4L2_H264_SPS_FLAG_SEPARATE_COLOUR_PLANE 0x01
+#define V4L2_H264_SPS_FLAG_QPPRIME_Y_ZERO_TRANSFORM_BYPASS 0x02
+#define V4L2_H264_SPS_FLAG_DELTA_PIC_ORDER_ALWAYS_ZERO 0x04
+#define V4L2_H264_SPS_FLAG_GAPS_IN_FRAME_NUM_VALUE_ALLOWED 0x08
+#define V4L2_H264_SPS_FLAG_FRAME_MBS_ONLY 0x10
+#define V4L2_H264_SPS_FLAG_MB_ADAPTIVE_FRAME_FIELD 0x20
+#define V4L2_H264_SPS_FLAG_DIRECT_8X8_INFERENCE 0x40
+#define V4L2_H264_SPS_HAS_CHROMA_FORMAT(sps) ((sps)->profile_idc == 100 || (sps)->profile_idc == 110 || (sps)->profile_idc == 122 || (sps)->profile_idc == 244 || (sps)->profile_idc == 44 || (sps)->profile_idc == 83 || (sps)->profile_idc == 86 || (sps)->profile_idc == 118 || (sps)->profile_idc == 128 || (sps)->profile_idc == 138 || (sps)->profile_idc == 139 || (sps)->profile_idc == 134 || (sps)->profile_idc == 135)
+#define V4L2_CID_STATELESS_H264_SPS (V4L2_CID_CODEC_STATELESS_BASE + 2)
+struct v4l2_ctrl_h264_sps {
+  __u8 profile_idc;
+  __u8 constraint_set_flags;
+  __u8 level_idc;
+  __u8 seq_parameter_set_id;
+  __u8 chroma_format_idc;
+  __u8 bit_depth_luma_minus8;
+  __u8 bit_depth_chroma_minus8;
+  __u8 log2_max_frame_num_minus4;
+  __u8 pic_order_cnt_type;
+  __u8 log2_max_pic_order_cnt_lsb_minus4;
+  __u8 max_num_ref_frames;
+  __u8 num_ref_frames_in_pic_order_cnt_cycle;
+  __s32 offset_for_ref_frame[255];
+  __s32 offset_for_non_ref_pic;
+  __s32 offset_for_top_to_bottom_field;
+  __u16 pic_width_in_mbs_minus1;
+  __u16 pic_height_in_map_units_minus1;
+  __u32 flags;
+};
+#define V4L2_H264_PPS_FLAG_ENTROPY_CODING_MODE 0x0001
+#define V4L2_H264_PPS_FLAG_BOTTOM_FIELD_PIC_ORDER_IN_FRAME_PRESENT 0x0002
+#define V4L2_H264_PPS_FLAG_WEIGHTED_PRED 0x0004
+#define V4L2_H264_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT 0x0008
+#define V4L2_H264_PPS_FLAG_CONSTRAINED_INTRA_PRED 0x0010
+#define V4L2_H264_PPS_FLAG_REDUNDANT_PIC_CNT_PRESENT 0x0020
+#define V4L2_H264_PPS_FLAG_TRANSFORM_8X8_MODE 0x0040
+#define V4L2_H264_PPS_FLAG_SCALING_MATRIX_PRESENT 0x0080
+#define V4L2_CID_STATELESS_H264_PPS (V4L2_CID_CODEC_STATELESS_BASE + 3)
+struct v4l2_ctrl_h264_pps {
+  __u8 pic_parameter_set_id;
+  __u8 seq_parameter_set_id;
+  __u8 num_slice_groups_minus1;
+  __u8 num_ref_idx_l0_default_active_minus1;
+  __u8 num_ref_idx_l1_default_active_minus1;
+  __u8 weighted_bipred_idc;
+  __s8 pic_init_qp_minus26;
+  __s8 pic_init_qs_minus26;
+  __s8 chroma_qp_index_offset;
+  __s8 second_chroma_qp_index_offset;
+  __u16 flags;
+};
+#define V4L2_CID_STATELESS_H264_SCALING_MATRIX (V4L2_CID_CODEC_STATELESS_BASE + 4)
+struct v4l2_ctrl_h264_scaling_matrix {
+  __u8 scaling_list_4x4[6][16];
+  __u8 scaling_list_8x8[6][64];
+};
+struct v4l2_h264_weight_factors {
+  __s16 luma_weight[32];
+  __s16 luma_offset[32];
+  __s16 chroma_weight[32][2];
+  __s16 chroma_offset[32][2];
+};
+#define V4L2_H264_CTRL_PRED_WEIGHTS_REQUIRED(pps,slice) ((((pps)->flags & V4L2_H264_PPS_FLAG_WEIGHTED_PRED) && ((slice)->slice_type == V4L2_H264_SLICE_TYPE_P || (slice)->slice_type == V4L2_H264_SLICE_TYPE_SP)) || ((pps)->weighted_bipred_idc == 1 && (slice)->slice_type == V4L2_H264_SLICE_TYPE_B))
+#define V4L2_CID_STATELESS_H264_PRED_WEIGHTS (V4L2_CID_CODEC_STATELESS_BASE + 5)
+struct v4l2_ctrl_h264_pred_weights {
+  __u16 luma_log2_weight_denom;
+  __u16 chroma_log2_weight_denom;
+  struct v4l2_h264_weight_factors weight_factors[2];
+};
+#define V4L2_H264_SLICE_TYPE_P 0
+#define V4L2_H264_SLICE_TYPE_B 1
+#define V4L2_H264_SLICE_TYPE_I 2
+#define V4L2_H264_SLICE_TYPE_SP 3
+#define V4L2_H264_SLICE_TYPE_SI 4
+#define V4L2_H264_SLICE_FLAG_DIRECT_SPATIAL_MV_PRED 0x01
+#define V4L2_H264_SLICE_FLAG_SP_FOR_SWITCH 0x02
+#define V4L2_H264_TOP_FIELD_REF 0x1
+#define V4L2_H264_BOTTOM_FIELD_REF 0x2
+#define V4L2_H264_FRAME_REF 0x3
+struct v4l2_h264_reference {
+  __u8 fields;
+  __u8 index;
+};
+#define V4L2_H264_NUM_DPB_ENTRIES 16
+#define V4L2_H264_REF_LIST_LEN (2 * V4L2_H264_NUM_DPB_ENTRIES)
+#define V4L2_CID_STATELESS_H264_SLICE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 6)
+struct v4l2_ctrl_h264_slice_params {
+  __u32 header_bit_size;
+  __u32 first_mb_in_slice;
+  __u8 slice_type;
+  __u8 colour_plane_id;
+  __u8 redundant_pic_cnt;
+  __u8 cabac_init_idc;
+  __s8 slice_qp_delta;
+  __s8 slice_qs_delta;
+  __u8 disable_deblocking_filter_idc;
+  __s8 slice_alpha_c0_offset_div2;
+  __s8 slice_beta_offset_div2;
+  __u8 num_ref_idx_l0_active_minus1;
+  __u8 num_ref_idx_l1_active_minus1;
+  __u8 reserved;
+  struct v4l2_h264_reference ref_pic_list0[V4L2_H264_REF_LIST_LEN];
+  struct v4l2_h264_reference ref_pic_list1[V4L2_H264_REF_LIST_LEN];
+  __u32 flags;
+};
+#define V4L2_H264_DPB_ENTRY_FLAG_VALID 0x01
+#define V4L2_H264_DPB_ENTRY_FLAG_ACTIVE 0x02
+#define V4L2_H264_DPB_ENTRY_FLAG_LONG_TERM 0x04
+#define V4L2_H264_DPB_ENTRY_FLAG_FIELD 0x08
+struct v4l2_h264_dpb_entry {
+  __u64 reference_ts;
+  __u32 pic_num;
+  __u16 frame_num;
+  __u8 fields;
+  __u8 reserved[5];
+  __s32 top_field_order_cnt;
+  __s32 bottom_field_order_cnt;
+  __u32 flags;
+};
+#define V4L2_H264_DECODE_PARAM_FLAG_IDR_PIC 0x01
+#define V4L2_H264_DECODE_PARAM_FLAG_FIELD_PIC 0x02
+#define V4L2_H264_DECODE_PARAM_FLAG_BOTTOM_FIELD 0x04
+#define V4L2_CID_STATELESS_H264_DECODE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 7)
+struct v4l2_ctrl_h264_decode_params {
+  struct v4l2_h264_dpb_entry dpb[V4L2_H264_NUM_DPB_ENTRIES];
+  __u16 nal_ref_idc;
+  __u16 frame_num;
+  __s32 top_field_order_cnt;
+  __s32 bottom_field_order_cnt;
+  __u16 idr_pic_id;
+  __u16 pic_order_cnt_lsb;
+  __s32 delta_pic_order_cnt_bottom;
+  __s32 delta_pic_order_cnt0;
+  __s32 delta_pic_order_cnt1;
+  __u32 dec_ref_pic_marking_bit_size;
+  __u32 pic_order_cnt_bit_size;
+  __u32 slice_group_change_cycle;
+  __u32 reserved;
+  __u32 flags;
+};
+#define V4L2_FWHT_VERSION 3
+#define V4L2_FWHT_FL_IS_INTERLACED BIT(0)
+#define V4L2_FWHT_FL_IS_BOTTOM_FIRST BIT(1)
+#define V4L2_FWHT_FL_IS_ALTERNATE BIT(2)
+#define V4L2_FWHT_FL_IS_BOTTOM_FIELD BIT(3)
+#define V4L2_FWHT_FL_LUMA_IS_UNCOMPRESSED BIT(4)
+#define V4L2_FWHT_FL_CB_IS_UNCOMPRESSED BIT(5)
+#define V4L2_FWHT_FL_CR_IS_UNCOMPRESSED BIT(6)
+#define V4L2_FWHT_FL_CHROMA_FULL_HEIGHT BIT(7)
+#define V4L2_FWHT_FL_CHROMA_FULL_WIDTH BIT(8)
+#define V4L2_FWHT_FL_ALPHA_IS_UNCOMPRESSED BIT(9)
+#define V4L2_FWHT_FL_I_FRAME BIT(10)
+#define V4L2_FWHT_FL_COMPONENTS_NUM_MSK GENMASK(18, 16)
+#define V4L2_FWHT_FL_COMPONENTS_NUM_OFFSET 16
+#define V4L2_FWHT_FL_PIXENC_MSK GENMASK(20, 19)
+#define V4L2_FWHT_FL_PIXENC_OFFSET 19
+#define V4L2_FWHT_FL_PIXENC_YUV (1 << V4L2_FWHT_FL_PIXENC_OFFSET)
+#define V4L2_FWHT_FL_PIXENC_RGB (2 << V4L2_FWHT_FL_PIXENC_OFFSET)
+#define V4L2_FWHT_FL_PIXENC_HSV (3 << V4L2_FWHT_FL_PIXENC_OFFSET)
+#define V4L2_CID_STATELESS_FWHT_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 100)
+struct v4l2_ctrl_fwht_params {
+  __u64 backward_ref_ts;
+  __u32 version;
+  __u32 width;
+  __u32 height;
+  __u32 flags;
+  __u32 colorspace;
+  __u32 xfer_func;
+  __u32 ycbcr_enc;
+  __u32 quantization;
+};
+#define V4L2_CTRL_CLASS_MPEG V4L2_CTRL_CLASS_CODEC
+#define V4L2_CID_MPEG_CLASS V4L2_CID_CODEC_CLASS
+#define V4L2_CID_MPEG_BASE V4L2_CID_CODEC_BASE
+#define V4L2_CID_MPEG_CX2341X_BASE V4L2_CID_CODEC_CX2341X_BASE
+#define V4L2_CID_MPEG_MFC51_BASE V4L2_CID_CODEC_MFC51_BASE
 #endif
diff --git a/libc/kernel/uapi/linux/v4l2-subdev.h b/libc/kernel/uapi/linux/v4l2-subdev.h
index 779002b..2954dc3 100644
--- a/libc/kernel/uapi/linux/v4l2-subdev.h
+++ b/libc/kernel/uapi/linux/v4l2-subdev.h
@@ -90,7 +90,7 @@
   __u32 capabilities;
   __u32 reserved[14];
 };
-#define V4L2_SUBDEV_CAP_RO_SUBDEV BIT(0)
+#define V4L2_SUBDEV_CAP_RO_SUBDEV 0x00000001
 #define v4l2_subdev_edid v4l2_edid
 #define VIDIOC_SUBDEV_QUERYCAP _IOR('V', 0, struct v4l2_subdev_capability)
 #define VIDIOC_SUBDEV_G_FMT _IOWR('V', 4, struct v4l2_subdev_format)
diff --git a/libc/kernel/uapi/linux/version.h b/libc/kernel/uapi/linux/version.h
index c870c50..e5c1243 100644
--- a/libc/kernel/uapi/linux/version.h
+++ b/libc/kernel/uapi/linux/version.h
@@ -16,5 +16,5 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#define LINUX_VERSION_CODE 330240
+#define LINUX_VERSION_CODE 330496
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
diff --git a/libc/kernel/uapi/linux/vfio.h b/libc/kernel/uapi/linux/vfio.h
index 64fa801..f0f5c8f 100644
--- a/libc/kernel/uapi/linux/vfio.h
+++ b/libc/kernel/uapi/linux/vfio.h
@@ -212,6 +212,7 @@
 enum {
   VFIO_CCW_IO_IRQ_INDEX,
   VFIO_CCW_CRW_IRQ_INDEX,
+  VFIO_CCW_REQ_IRQ_INDEX,
   VFIO_CCW_NUM_IRQS
 };
 struct vfio_pci_dependent_device {
diff --git a/libc/kernel/uapi/linux/videodev2.h b/libc/kernel/uapi/linux/videodev2.h
index 34a6920..76d9af9 100644
--- a/libc/kernel/uapi/linux/videodev2.h
+++ b/libc/kernel/uapi/linux/videodev2.h
@@ -271,8 +271,6 @@
 #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')
 #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2')
 #define V4L2_PIX_FMT_NV21 v4l2_fourcc('N', 'V', '2', '1')
@@ -280,6 +278,7 @@
 #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1')
 #define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4')
 #define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2')
+#define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1')
 #define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6')
@@ -360,6 +359,7 @@
 #define V4L2_PIX_FMT_HEVC v4l2_fourcc('H', 'E', 'V', 'C')
 #define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T')
 #define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H')
+#define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4')
 #define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A')
 #define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A')
 #define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '0')
@@ -393,6 +393,7 @@
 #define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I')
 #define V4L2_PIX_FMT_SUNXI_TILED_NV12 v4l2_fourcc('S', 'T', '1', '2')
 #define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4')
+#define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4')
 #define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b')
 #define V4L2_PIX_FMT_IPU3_SGBRG10 v4l2_fourcc('i', 'p', '3', 'g')
 #define V4L2_PIX_FMT_IPU3_SGRBG10 v4l2_fourcc('i', 'p', '3', 'G')
@@ -414,6 +415,8 @@
 #define V4L2_META_FMT_UVC v4l2_fourcc('U', 'V', 'C', 'H')
 #define V4L2_META_FMT_D4XX v4l2_fourcc('D', '4', 'X', 'X')
 #define V4L2_META_FMT_VIVID v4l2_fourcc('V', 'I', 'V', 'D')
+#define V4L2_META_FMT_RK_ISP1_PARAMS v4l2_fourcc('R', 'K', '1', 'P')
+#define V4L2_META_FMT_RK_ISP1_STAT_3A v4l2_fourcc('R', 'K', '1', 'S')
 #define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe
 #define V4L2_PIX_FMT_FLAG_PREMUL_ALPHA 0x00000001
 #define V4L2_PIX_FMT_FLAG_SET_CSC 0x00000002
@@ -634,7 +637,7 @@
   struct v4l2_rect w;
   __u32 field;
   __u32 chromakey;
-  struct v4l2_clip __user * clips;
+  struct v4l2_clip * clips;
   __u32 clipcount;
   void __user * bitmap;
   __u8 global_alpha;
@@ -878,6 +881,13 @@
     __u16 __user * p_u16;
     __u32 __user * p_u32;
     struct v4l2_area __user * p_area;
+    struct v4l2_ctrl_h264_sps __user * p_h264_sps;
+    struct v4l2_ctrl_h264_pps * p_h264_pps;
+    struct v4l2_ctrl_h264_scaling_matrix __user * p_h264_scaling_matrix;
+    struct v4l2_ctrl_h264_pred_weights __user * p_h264_pred_weights;
+    struct v4l2_ctrl_h264_slice_params __user * p_h264_slice_params;
+    struct v4l2_ctrl_h264_decode_params __user * p_h264_decode_params;
+    struct v4l2_ctrl_fwht_params __user * p_fwht_params;
     void __user * ptr;
   };
 } __attribute__((packed));
@@ -915,6 +925,13 @@
   V4L2_CTRL_TYPE_U16 = 0x0101,
   V4L2_CTRL_TYPE_U32 = 0x0102,
   V4L2_CTRL_TYPE_AREA = 0x0106,
+  V4L2_CTRL_TYPE_H264_SPS = 0x0200,
+  V4L2_CTRL_TYPE_H264_PPS = 0x0201,
+  V4L2_CTRL_TYPE_H264_SCALING_MATRIX = 0x0202,
+  V4L2_CTRL_TYPE_H264_SLICE_PARAMS = 0x0203,
+  V4L2_CTRL_TYPE_H264_DECODE_PARAMS = 0x0204,
+  V4L2_CTRL_TYPE_H264_PRED_WEIGHTS = 0x0205,
+  V4L2_CTRL_TYPE_FWHT_PARAMS = 0x0220,
 };
 struct v4l2_queryctrl {
   __u32 id;
diff --git a/libc/kernel/uapi/linux/virtio_gpu.h b/libc/kernel/uapi/linux/virtio_gpu.h
index 25724ca..83ad5a7 100644
--- a/libc/kernel/uapi/linux/virtio_gpu.h
+++ b/libc/kernel/uapi/linux/virtio_gpu.h
@@ -22,6 +22,7 @@
 #define VIRTIO_GPU_F_VIRGL 0
 #define VIRTIO_GPU_F_EDID 1
 #define VIRTIO_GPU_F_RESOURCE_UUID 2
+#define VIRTIO_GPU_F_RESOURCE_BLOB 3
 enum virtio_gpu_ctrl_type {
   VIRTIO_GPU_UNDEFINED = 0,
   VIRTIO_GPU_CMD_GET_DISPLAY_INFO = 0x0100,
@@ -36,6 +37,8 @@
   VIRTIO_GPU_CMD_GET_CAPSET,
   VIRTIO_GPU_CMD_GET_EDID,
   VIRTIO_GPU_CMD_RESOURCE_ASSIGN_UUID,
+  VIRTIO_GPU_CMD_RESOURCE_CREATE_BLOB,
+  VIRTIO_GPU_CMD_SET_SCANOUT_BLOB,
   VIRTIO_GPU_CMD_CTX_CREATE = 0x0200,
   VIRTIO_GPU_CMD_CTX_DESTROY,
   VIRTIO_GPU_CMD_CTX_ATTACH_RESOURCE,
@@ -44,6 +47,8 @@
   VIRTIO_GPU_CMD_TRANSFER_TO_HOST_3D,
   VIRTIO_GPU_CMD_TRANSFER_FROM_HOST_3D,
   VIRTIO_GPU_CMD_SUBMIT_3D,
+  VIRTIO_GPU_CMD_RESOURCE_MAP_BLOB,
+  VIRTIO_GPU_CMD_RESOURCE_UNMAP_BLOB,
   VIRTIO_GPU_CMD_UPDATE_CURSOR = 0x0300,
   VIRTIO_GPU_CMD_MOVE_CURSOR,
   VIRTIO_GPU_RESP_OK_NODATA = 0x1100,
@@ -52,6 +57,7 @@
   VIRTIO_GPU_RESP_OK_CAPSET,
   VIRTIO_GPU_RESP_OK_EDID,
   VIRTIO_GPU_RESP_OK_RESOURCE_UUID,
+  VIRTIO_GPU_RESP_OK_MAP_INFO,
   VIRTIO_GPU_RESP_ERR_UNSPEC = 0x1200,
   VIRTIO_GPU_RESP_ERR_OUT_OF_MEMORY,
   VIRTIO_GPU_RESP_ERR_INVALID_SCANOUT_ID,
@@ -59,6 +65,10 @@
   VIRTIO_GPU_RESP_ERR_INVALID_CONTEXT_ID,
   VIRTIO_GPU_RESP_ERR_INVALID_PARAMETER,
 };
+enum virtio_gpu_shm_id {
+  VIRTIO_GPU_SHM_ID_UNDEFINED = 0,
+  VIRTIO_GPU_SHM_ID_HOST_VISIBLE = 1
+};
 #define VIRTIO_GPU_FLAG_FENCE (1 << 0)
 struct virtio_gpu_ctrl_hdr {
   __le32 type;
@@ -250,4 +260,52 @@
   struct virtio_gpu_ctrl_hdr hdr;
   __u8 uuid[16];
 };
+struct virtio_gpu_resource_create_blob {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __le32 resource_id;
+#define VIRTIO_GPU_BLOB_MEM_GUEST 0x0001
+#define VIRTIO_GPU_BLOB_MEM_HOST3D 0x0002
+#define VIRTIO_GPU_BLOB_MEM_HOST3D_GUEST 0x0003
+#define VIRTIO_GPU_BLOB_FLAG_USE_MAPPABLE 0x0001
+#define VIRTIO_GPU_BLOB_FLAG_USE_SHAREABLE 0x0002
+#define VIRTIO_GPU_BLOB_FLAG_USE_CROSS_DEVICE 0x0004
+  __le32 blob_mem;
+  __le32 blob_flags;
+  __le32 nr_entries;
+  __le64 blob_id;
+  __le64 size;
+};
+struct virtio_gpu_set_scanout_blob {
+  struct virtio_gpu_ctrl_hdr hdr;
+  struct virtio_gpu_rect r;
+  __le32 scanout_id;
+  __le32 resource_id;
+  __le32 width;
+  __le32 height;
+  __le32 format;
+  __le32 padding;
+  __le32 strides[4];
+  __le32 offsets[4];
+};
+struct virtio_gpu_resource_map_blob {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __le32 resource_id;
+  __le32 padding;
+  __le64 offset;
+};
+#define VIRTIO_GPU_MAP_CACHE_MASK 0x0f
+#define VIRTIO_GPU_MAP_CACHE_NONE 0x00
+#define VIRTIO_GPU_MAP_CACHE_CACHED 0x01
+#define VIRTIO_GPU_MAP_CACHE_UNCACHED 0x02
+#define VIRTIO_GPU_MAP_CACHE_WC 0x03
+struct virtio_gpu_resp_map_info {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __u32 map_info;
+  __u32 padding;
+};
+struct virtio_gpu_resource_unmap_blob {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __le32 resource_id;
+  __le32 padding;
+};
 #endif
diff --git a/libc/kernel/uapi/linux/virtio_ids.h b/libc/kernel/uapi/linux/virtio_ids.h
index 7b67d76..bae26a0 100644
--- a/libc/kernel/uapi/linux/virtio_ids.h
+++ b/libc/kernel/uapi/linux/virtio_ids.h
@@ -23,15 +23,21 @@
 #define VIRTIO_ID_CONSOLE 3
 #define VIRTIO_ID_RNG 4
 #define VIRTIO_ID_BALLOON 5
+#define VIRTIO_ID_IOMEM 6
 #define VIRTIO_ID_RPMSG 7
 #define VIRTIO_ID_SCSI 8
 #define VIRTIO_ID_9P 9
+#define VIRTIO_ID_MAC80211_WLAN 10
 #define VIRTIO_ID_RPROC_SERIAL 11
 #define VIRTIO_ID_CAIF 12
+#define VIRTIO_ID_MEMORY_BALLOON 13
 #define VIRTIO_ID_GPU 16
+#define VIRTIO_ID_CLOCK 17
 #define VIRTIO_ID_INPUT 18
 #define VIRTIO_ID_VSOCK 19
 #define VIRTIO_ID_CRYPTO 20
+#define VIRTIO_ID_SIGNAL_DIST 21
+#define VIRTIO_ID_PSTORE 22
 #define VIRTIO_ID_IOMMU 23
 #define VIRTIO_ID_MEM 24
 #define VIRTIO_ID_FS 26
diff --git a/libc/kernel/uapi/linux/vm_sockets.h b/libc/kernel/uapi/linux/vm_sockets.h
index 3dc4bcf..50e8456 100644
--- a/libc/kernel/uapi/linux/vm_sockets.h
+++ b/libc/kernel/uapi/linux/vm_sockets.h
@@ -19,6 +19,7 @@
 #ifndef _UAPI_VM_SOCKETS_H
 #define _UAPI_VM_SOCKETS_H
 #include <linux/socket.h>
+#include <linux/types.h>
 #define SO_VM_SOCKETS_BUFFER_SIZE 0
 #define SO_VM_SOCKETS_BUFFER_MIN_SIZE 1
 #define SO_VM_SOCKETS_BUFFER_MAX_SIZE 2
@@ -31,6 +32,7 @@
 #define VMADDR_CID_HYPERVISOR 0
 #define VMADDR_CID_LOCAL 1
 #define VMADDR_CID_HOST 2
+#define VMADDR_FLAG_TO_HOST 0x01
 #define VM_SOCKETS_INVALID_VERSION - 1U
 #define VM_SOCKETS_VERSION_EPOCH(_v) (((_v) & 0xFF000000) >> 24)
 #define VM_SOCKETS_VERSION_MAJOR(_v) (((_v) & 0x00FF0000) >> 16)
@@ -40,7 +42,8 @@
   unsigned short svm_reserved1;
   unsigned int svm_port;
   unsigned int svm_cid;
-  unsigned char svm_zero[sizeof(struct sockaddr) - sizeof(sa_family_t) - sizeof(unsigned short) - sizeof(unsigned int) - sizeof(unsigned int)];
+  __u8 svm_flags;
+  unsigned char svm_zero[sizeof(struct sockaddr) - sizeof(sa_family_t) - sizeof(unsigned short) - sizeof(unsigned int) - sizeof(unsigned int) - sizeof(__u8)];
 };
 #define IOCTL_VM_SOCKETS_GET_LOCAL_CID _IO(7, 0xb9)
 #endif
diff --git a/libc/kernel/uapi/linux/wimax.h b/libc/kernel/uapi/linux/wimax.h
deleted file mode 100644
index b35096c..0000000
--- a/libc/kernel/uapi/linux/wimax.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- ***   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__WIMAX_H__
-#define __LINUX__WIMAX_H__
-#include <linux/types.h>
-enum {
-  WIMAX_GNL_VERSION = 01,
-  WIMAX_GNL_ATTR_INVALID = 0x00,
-  WIMAX_GNL_ATTR_MAX = 10,
-};
-enum {
-  WIMAX_GNL_OP_MSG_FROM_USER,
-  WIMAX_GNL_OP_MSG_TO_USER,
-  WIMAX_GNL_OP_RFKILL,
-  WIMAX_GNL_OP_RESET,
-  WIMAX_GNL_RE_STATE_CHANGE,
-  WIMAX_GNL_OP_STATE_GET,
-};
-enum {
-  WIMAX_GNL_MSG_IFIDX = 1,
-  WIMAX_GNL_MSG_PIPE_NAME,
-  WIMAX_GNL_MSG_DATA,
-};
-enum wimax_rf_state {
-  WIMAX_RF_OFF = 0,
-  WIMAX_RF_ON = 1,
-  WIMAX_RF_QUERY = 2,
-};
-enum {
-  WIMAX_GNL_RFKILL_IFIDX = 1,
-  WIMAX_GNL_RFKILL_STATE,
-};
-enum {
-  WIMAX_GNL_RESET_IFIDX = 1,
-};
-enum {
-  WIMAX_GNL_STGET_IFIDX = 1,
-};
-enum {
-  WIMAX_GNL_STCH_IFIDX = 1,
-  WIMAX_GNL_STCH_STATE_OLD,
-  WIMAX_GNL_STCH_STATE_NEW,
-};
-enum wimax_st {
-  __WIMAX_ST_NULL = 0,
-  WIMAX_ST_DOWN,
-  __WIMAX_ST_QUIESCING,
-  WIMAX_ST_UNINITIALIZED,
-  WIMAX_ST_RADIO_OFF,
-  WIMAX_ST_READY,
-  WIMAX_ST_SCANNING,
-  WIMAX_ST_CONNECTING,
-  WIMAX_ST_CONNECTED,
-  __WIMAX_ST_INVALID
-};
-#endif
diff --git a/libc/kernel/uapi/linux/wimax/i2400m.h b/libc/kernel/uapi/linux/wimax/i2400m.h
deleted file mode 100644
index 446b661..0000000
--- a/libc/kernel/uapi/linux/wimax/i2400m.h
+++ /dev/null
@@ -1,309 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- ***   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__WIMAX__I2400M_H__
-#define __LINUX__WIMAX__I2400M_H__
-#include <linux/types.h>
-#include <linux/if_ether.h>
-struct i2400m_bcf_hdr {
-  __le32 module_type;
-  __le32 header_len;
-  __le32 header_version;
-  __le32 module_id;
-  __le32 module_vendor;
-  __le32 date;
-  __le32 size;
-  __le32 key_size;
-  __le32 modulus_size;
-  __le32 exponent_size;
-  __u8 reserved[88];
-} __attribute__((packed));
-enum i2400m_brh_opcode {
-  I2400M_BRH_READ = 1,
-  I2400M_BRH_WRITE = 2,
-  I2400M_BRH_JUMP = 3,
-  I2400M_BRH_SIGNED_JUMP = 8,
-  I2400M_BRH_HASH_PAYLOAD_ONLY = 9,
-};
-enum i2400m_brh {
-  I2400M_BRH_SIGNATURE = 0xcbbc0000,
-  I2400M_BRH_SIGNATURE_MASK = 0xffff0000,
-  I2400M_BRH_SIGNATURE_SHIFT = 16,
-  I2400M_BRH_OPCODE_MASK = 0x0000000f,
-  I2400M_BRH_RESPONSE_MASK = 0x000000f0,
-  I2400M_BRH_RESPONSE_SHIFT = 4,
-  I2400M_BRH_DIRECT_ACCESS = 0x00000400,
-  I2400M_BRH_RESPONSE_REQUIRED = 0x00000200,
-  I2400M_BRH_USE_CHECKSUM = 0x00000100,
-};
-struct i2400m_bootrom_header {
-  __le32 command;
-  __le32 target_addr;
-  __le32 data_size;
-  __le32 block_checksum;
-  char payload[0];
-} __attribute__((packed));
-enum i2400m_pt {
-  I2400M_PT_DATA = 0,
-  I2400M_PT_CTRL,
-  I2400M_PT_TRACE,
-  I2400M_PT_RESET_WARM,
-  I2400M_PT_RESET_COLD,
-  I2400M_PT_EDATA,
-  I2400M_PT_ILLEGAL
-};
-struct i2400m_pl_data_hdr {
-  __le32 reserved;
-} __attribute__((packed));
-struct i2400m_pl_edata_hdr {
-  __le32 reorder;
-  __u8 cs;
-  __u8 reserved[11];
-} __attribute__((packed));
-enum i2400m_cs {
-  I2400M_CS_IPV4_0 = 0,
-  I2400M_CS_IPV4 = 2,
-};
-enum i2400m_ro {
-  I2400M_RO_NEEDED = 0x01,
-  I2400M_RO_TYPE = 0x03,
-  I2400M_RO_TYPE_SHIFT = 1,
-  I2400M_RO_CIN = 0x0f,
-  I2400M_RO_CIN_SHIFT = 4,
-  I2400M_RO_FBN = 0x07ff,
-  I2400M_RO_FBN_SHIFT = 8,
-  I2400M_RO_SN = 0x07ff,
-  I2400M_RO_SN_SHIFT = 21,
-};
-enum i2400m_ro_type {
-  I2400M_RO_TYPE_RESET = 0,
-  I2400M_RO_TYPE_PACKET,
-  I2400M_RO_TYPE_WS,
-  I2400M_RO_TYPE_PACKET_WS,
-};
-enum {
-  I2400M_PL_ALIGN = 16,
-  I2400M_PL_SIZE_MAX = 0x3EFF,
-  I2400M_MAX_PLS_IN_MSG = 60,
-  I2400M_H2D_PREVIEW_BARKER = 0xcafe900d,
-  I2400M_COLD_RESET_BARKER = 0xc01dc01d,
-  I2400M_WARM_RESET_BARKER = 0x50f750f7,
-  I2400M_NBOOT_BARKER = 0xdeadbeef,
-  I2400M_SBOOT_BARKER = 0x0ff1c1a1,
-  I2400M_SBOOT_BARKER_6050 = 0x80000001,
-  I2400M_ACK_BARKER = 0xfeedbabe,
-  I2400M_D2H_MSG_BARKER = 0xbeefbabe,
-};
-struct i2400m_pld {
-  __le32 val;
-} __attribute__((packed));
-#define I2400M_PLD_SIZE_MASK 0x00003fff
-#define I2400M_PLD_TYPE_SHIFT 16
-#define I2400M_PLD_TYPE_MASK 0x000f0000
-struct i2400m_msg_hdr {
-  union {
-    __le32 barker;
-    __u32 size;
-  };
-  union {
-    __le32 sequence;
-    __u32 offset;
-  };
-  __le16 num_pls;
-  __le16 rsv1;
-  __le16 padding;
-  __le16 rsv2;
-  struct i2400m_pld pld[0];
-} __attribute__((packed));
-enum {
-  I2400M_L3L4_VERSION = 0x0100,
-};
-enum i2400m_mt {
-  I2400M_MT_RESERVED = 0x0000,
-  I2400M_MT_INVALID = 0xffff,
-  I2400M_MT_REPORT_MASK = 0x8000,
-  I2400M_MT_GET_SCAN_RESULT = 0x4202,
-  I2400M_MT_SET_SCAN_PARAM = 0x4402,
-  I2400M_MT_CMD_RF_CONTROL = 0x4602,
-  I2400M_MT_CMD_SCAN = 0x4603,
-  I2400M_MT_CMD_CONNECT = 0x4604,
-  I2400M_MT_CMD_DISCONNECT = 0x4605,
-  I2400M_MT_CMD_EXIT_IDLE = 0x4606,
-  I2400M_MT_GET_LM_VERSION = 0x5201,
-  I2400M_MT_GET_DEVICE_INFO = 0x5202,
-  I2400M_MT_GET_LINK_STATUS = 0x5203,
-  I2400M_MT_GET_STATISTICS = 0x5204,
-  I2400M_MT_GET_STATE = 0x5205,
-  I2400M_MT_GET_MEDIA_STATUS = 0x5206,
-  I2400M_MT_SET_INIT_CONFIG = 0x5404,
-  I2400M_MT_CMD_INIT = 0x5601,
-  I2400M_MT_CMD_TERMINATE = 0x5602,
-  I2400M_MT_CMD_MODE_OF_OP = 0x5603,
-  I2400M_MT_CMD_RESET_DEVICE = 0x5604,
-  I2400M_MT_CMD_MONITOR_CONTROL = 0x5605,
-  I2400M_MT_CMD_ENTER_POWERSAVE = 0x5606,
-  I2400M_MT_GET_TLS_OPERATION_RESULT = 0x6201,
-  I2400M_MT_SET_EAP_SUCCESS = 0x6402,
-  I2400M_MT_SET_EAP_FAIL = 0x6403,
-  I2400M_MT_SET_EAP_KEY = 0x6404,
-  I2400M_MT_CMD_SEND_EAP_RESPONSE = 0x6602,
-  I2400M_MT_REPORT_SCAN_RESULT = 0xc002,
-  I2400M_MT_REPORT_STATE = 0xd002,
-  I2400M_MT_REPORT_POWERSAVE_READY = 0xd005,
-  I2400M_MT_REPORT_EAP_REQUEST = 0xe002,
-  I2400M_MT_REPORT_EAP_RESTART = 0xe003,
-  I2400M_MT_REPORT_ALT_ACCEPT = 0xe004,
-  I2400M_MT_REPORT_KEY_REQUEST = 0xe005,
-};
-enum i2400m_ms {
-  I2400M_MS_DONE_OK = 0,
-  I2400M_MS_DONE_IN_PROGRESS = 1,
-  I2400M_MS_INVALID_OP = 2,
-  I2400M_MS_BAD_STATE = 3,
-  I2400M_MS_ILLEGAL_VALUE = 4,
-  I2400M_MS_MISSING_PARAMS = 5,
-  I2400M_MS_VERSION_ERROR = 6,
-  I2400M_MS_ACCESSIBILITY_ERROR = 7,
-  I2400M_MS_BUSY = 8,
-  I2400M_MS_CORRUPTED_TLV = 9,
-  I2400M_MS_UNINITIALIZED = 10,
-  I2400M_MS_UNKNOWN_ERROR = 11,
-  I2400M_MS_PRODUCTION_ERROR = 12,
-  I2400M_MS_NO_RF = 13,
-  I2400M_MS_NOT_READY_FOR_POWERSAVE = 14,
-  I2400M_MS_THERMAL_CRITICAL = 15,
-  I2400M_MS_MAX
-};
-enum i2400m_tlv {
-  I2400M_TLV_L4_MESSAGE_VERSIONS = 129,
-  I2400M_TLV_SYSTEM_STATE = 141,
-  I2400M_TLV_MEDIA_STATUS = 161,
-  I2400M_TLV_RF_OPERATION = 162,
-  I2400M_TLV_RF_STATUS = 163,
-  I2400M_TLV_DEVICE_RESET_TYPE = 132,
-  I2400M_TLV_CONFIG_IDLE_PARAMETERS = 601,
-  I2400M_TLV_CONFIG_IDLE_TIMEOUT = 611,
-  I2400M_TLV_CONFIG_D2H_DATA_FORMAT = 614,
-  I2400M_TLV_CONFIG_DL_HOST_REORDER = 615,
-};
-struct i2400m_tlv_hdr {
-  __le16 type;
-  __le16 length;
-  __u8 pl[0];
-} __attribute__((packed));
-struct i2400m_l3l4_hdr {
-  __le16 type;
-  __le16 length;
-  __le16 version;
-  __le16 resv1;
-  __le16 status;
-  __le16 resv2;
-  struct i2400m_tlv_hdr pl[0];
-} __attribute__((packed));
-enum i2400m_system_state {
-  I2400M_SS_UNINITIALIZED = 1,
-  I2400M_SS_INIT,
-  I2400M_SS_READY,
-  I2400M_SS_SCAN,
-  I2400M_SS_STANDBY,
-  I2400M_SS_CONNECTING,
-  I2400M_SS_WIMAX_CONNECTED,
-  I2400M_SS_DATA_PATH_CONNECTED,
-  I2400M_SS_IDLE,
-  I2400M_SS_DISCONNECTING,
-  I2400M_SS_OUT_OF_ZONE,
-  I2400M_SS_SLEEPACTIVE,
-  I2400M_SS_PRODUCTION,
-  I2400M_SS_CONFIG,
-  I2400M_SS_RF_OFF,
-  I2400M_SS_RF_SHUTDOWN,
-  I2400M_SS_DEVICE_DISCONNECT,
-  I2400M_SS_MAX,
-};
-struct i2400m_tlv_system_state {
-  struct i2400m_tlv_hdr hdr;
-  __le32 state;
-} __attribute__((packed));
-struct i2400m_tlv_l4_message_versions {
-  struct i2400m_tlv_hdr hdr;
-  __le16 major;
-  __le16 minor;
-  __le16 branch;
-  __le16 reserved;
-} __attribute__((packed));
-struct i2400m_tlv_detailed_device_info {
-  struct i2400m_tlv_hdr hdr;
-  __u8 reserved1[400];
-  __u8 mac_address[ETH_ALEN];
-  __u8 reserved2[2];
-} __attribute__((packed));
-enum i2400m_rf_switch_status {
-  I2400M_RF_SWITCH_ON = 1,
-  I2400M_RF_SWITCH_OFF = 2,
-};
-struct i2400m_tlv_rf_switches_status {
-  struct i2400m_tlv_hdr hdr;
-  __u8 sw_rf_switch;
-  __u8 hw_rf_switch;
-  __u8 reserved[2];
-} __attribute__((packed));
-enum {
-  i2400m_rf_operation_on = 1,
-  i2400m_rf_operation_off = 2
-};
-struct i2400m_tlv_rf_operation {
-  struct i2400m_tlv_hdr hdr;
-  __le32 status;
-} __attribute__((packed));
-enum i2400m_tlv_reset_type {
-  I2400M_RESET_TYPE_COLD = 1,
-  I2400M_RESET_TYPE_WARM
-};
-struct i2400m_tlv_device_reset_type {
-  struct i2400m_tlv_hdr hdr;
-  __le32 reset_type;
-} __attribute__((packed));
-struct i2400m_tlv_config_idle_parameters {
-  struct i2400m_tlv_hdr hdr;
-  __le32 idle_timeout;
-  __le32 idle_paging_interval;
-} __attribute__((packed));
-enum i2400m_media_status {
-  I2400M_MEDIA_STATUS_LINK_UP = 1,
-  I2400M_MEDIA_STATUS_LINK_DOWN,
-  I2400M_MEDIA_STATUS_LINK_RENEW,
-};
-struct i2400m_tlv_media_status {
-  struct i2400m_tlv_hdr hdr;
-  __le32 media_status;
-} __attribute__((packed));
-struct i2400m_tlv_config_idle_timeout {
-  struct i2400m_tlv_hdr hdr;
-  __le32 timeout;
-} __attribute__((packed));
-struct i2400m_tlv_config_d2h_data_format {
-  struct i2400m_tlv_hdr hdr;
-  __u8 format;
-  __u8 reserved[3];
-} __attribute__((packed));
-struct i2400m_tlv_config_dl_host_reorder {
-  struct i2400m_tlv_hdr hdr;
-  __u8 reorder;
-  __u8 reserved[3];
-} __attribute__((packed));
-#endif
diff --git a/libc/kernel/uapi/misc/habanalabs.h b/libc/kernel/uapi/misc/habanalabs.h
index 63b70b8..d8f724b 100644
--- a/libc/kernel/uapi/misc/habanalabs.h
+++ b/libc/kernel/uapi/misc/habanalabs.h
@@ -22,8 +22,8 @@
 #include <linux/ioctl.h>
 #define GOYA_KMD_SRAM_RESERVED_SIZE_FROM_START 0x8000
 #define GAUDI_DRIVER_SRAM_RESERVED_SIZE_FROM_START 0x80
-#define GAUDI_FIRST_AVAILABLE_W_S_SYNC_OBJECT 48
-#define GAUDI_FIRST_AVAILABLE_W_S_MONITOR 24
+#define GAUDI_FIRST_AVAILABLE_W_S_SYNC_OBJECT 144
+#define GAUDI_FIRST_AVAILABLE_W_S_MONITOR 72
 enum goya_queue_id {
   GOYA_QUEUE_ID_DMA_0 = 0,
   GOYA_QUEUE_ID_DMA_1 = 1,
@@ -211,7 +211,8 @@
 enum hl_device_status {
   HL_DEVICE_STATUS_OPERATIONAL,
   HL_DEVICE_STATUS_IN_RESET,
-  HL_DEVICE_STATUS_MALFUNCTION
+  HL_DEVICE_STATUS_MALFUNCTION,
+  HL_DEVICE_STATUS_NEEDS_RESET
 };
 #define HL_INFO_HW_IP_INFO 0
 #define HL_INFO_HW_EVENTS 1
@@ -228,6 +229,7 @@
 #define HL_INFO_CLK_THROTTLE_REASON 13
 #define HL_INFO_SYNC_MANAGER 14
 #define HL_INFO_TOTAL_ENERGY 15
+#define HL_INFO_PLL_FREQUENCY 16
 #define HL_INFO_VERSION_MAX_LEN 128
 #define HL_INFO_CARD_NAME_MAX_LEN 16
 struct hl_info_hw_ip_info {
@@ -292,20 +294,27 @@
 struct hl_info_energy {
   __u64 total_energy_consumption;
 };
+#define HL_PLL_NUM_OUTPUTS 4
+struct hl_pll_frequency_info {
+  __u16 output[HL_PLL_NUM_OUTPUTS];
+};
 struct hl_info_sync_manager {
   __u32 first_available_sync_object;
   __u32 first_available_monitor;
 };
-struct hl_cs_counters {
-  __u64 out_of_mem_drop_cnt;
-  __u64 parsing_drop_cnt;
-  __u64 queue_full_drop_cnt;
-  __u64 device_in_reset_drop_cnt;
-  __u64 max_cs_in_flight_drop_cnt;
-};
 struct hl_info_cs_counters {
-  struct hl_cs_counters cs_counters;
-  struct hl_cs_counters ctx_cs_counters;
+  __u64 total_out_of_mem_drop_cnt;
+  __u64 ctx_out_of_mem_drop_cnt;
+  __u64 total_parsing_drop_cnt;
+  __u64 ctx_parsing_drop_cnt;
+  __u64 total_queue_full_drop_cnt;
+  __u64 ctx_queue_full_drop_cnt;
+  __u64 total_device_in_reset_drop_cnt;
+  __u64 ctx_device_in_reset_drop_cnt;
+  __u64 total_max_cs_in_flight_drop_cnt;
+  __u64 ctx_max_cs_in_flight_drop_cnt;
+  __u64 total_validation_drop_cnt;
+  __u64 ctx_validation_drop_cnt;
 };
 enum gaudi_dcores {
   HL_GAUDI_WS_DCORE,
@@ -321,11 +330,13 @@
     __u32 dcore_id;
     __u32 ctx_id;
     __u32 period_ms;
+    __u32 pll_index;
   };
   __u32 pad;
 };
 #define HL_CB_OP_CREATE 0
 #define HL_CB_OP_DESTROY 1
+#define HL_CB_OP_INFO 2
 #define HL_MAX_CB_SIZE (0x200000 - 32)
 #define HL_CB_FLAGS_MAP 0x1
 struct hl_cb_in {
@@ -336,12 +347,19 @@
   __u32 flags;
 };
 struct hl_cb_out {
-  __u64 cb_handle;
+  union {
+    __u64 cb_handle;
+    struct {
+      __u32 usage_cnt;
+      __u32 pad;
+    };
+  };
 };
 union hl_cb_args {
   struct hl_cb_in in;
   struct hl_cb_out out;
 };
+#define HL_CS_CHUNK_FLAGS_USER_ALLOC_CB 0x1
 struct hl_cs_chunk {
   union {
     __u64 cb_handle;
@@ -353,11 +371,14 @@
     __u32 num_signal_seq_arr;
   };
   __u32 cs_chunk_flags;
-  __u32 pad[11];
+  __u32 collective_engine_id;
+  __u32 pad[10];
 };
 #define HL_CS_FLAGS_FORCE_RESTORE 0x1
 #define HL_CS_FLAGS_SIGNAL 0x2
 #define HL_CS_FLAGS_WAIT 0x4
+#define HL_CS_FLAGS_COLLECTIVE_WAIT 0x8
+#define HL_CS_FLAGS_TIMESTAMP 0x20
 #define HL_CS_STATUS_SUCCESS 0
 #define HL_MAX_JOBS_PER_CS 512
 struct hl_cs_in {
@@ -390,9 +411,12 @@
 #define HL_WAIT_CS_STATUS_TIMEDOUT 2
 #define HL_WAIT_CS_STATUS_ABORTED 3
 #define HL_WAIT_CS_STATUS_INTERRUPTED 4
+#define HL_WAIT_CS_STATUS_FLAG_GONE 0x1
+#define HL_WAIT_CS_STATUS_FLAG_TIMESTAMP_VLD 0x2
 struct hl_wait_cs_out {
   __u32 status;
-  __u32 pad;
+  __u32 flags;
+  __s64 timestamp_nsec;
 };
 union hl_wait_cs_args {
   struct hl_wait_cs_in in;
diff --git a/libc/kernel/uapi/rdma/hns-abi.h b/libc/kernel/uapi/rdma/hns-abi.h
index 5b6435a..ad3e460 100644
--- a/libc/kernel/uapi/rdma/hns-abi.h
+++ b/libc/kernel/uapi/rdma/hns-abi.h
@@ -25,6 +25,9 @@
   __u32 cqe_size;
   __u32 reserved;
 };
+enum hns_roce_cq_cap_flags {
+  HNS_ROCE_CQ_FLAG_RECORD_DB = 1 << 0,
+};
 struct hns_roce_ib_create_cq_resp {
   __aligned_u64 cqn;
   __aligned_u64 cap_flags;
@@ -47,6 +50,11 @@
   __u8 reserved[5];
   __aligned_u64 sdb_addr;
 };
+enum hns_roce_qp_cap_flags {
+  HNS_ROCE_QP_CAP_RQ_RECORD_DB = 1 << 0,
+  HNS_ROCE_QP_CAP_SQ_RECORD_DB = 1 << 1,
+  HNS_ROCE_QP_CAP_OWNER_DB = 1 << 2,
+};
 struct hns_roce_ib_create_qp_resp {
   __aligned_u64 cap_flags;
 };
diff --git a/libc/kernel/uapi/rdma/ib_user_verbs.h b/libc/kernel/uapi/rdma/ib_user_verbs.h
index 2f13ca4..d9ac9e0 100644
--- a/libc/kernel/uapi/rdma/ib_user_verbs.h
+++ b/libc/kernel/uapi/rdma/ib_user_verbs.h
@@ -484,12 +484,6 @@
 enum {
   IB_UVERBS_CREATE_QP_SUP_COMP_MASK = IB_UVERBS_CREATE_QP_MASK_IND_TABLE,
 };
-enum {
-  IB_USER_LEGACY_LAST_QP_ATTR_MASK = 1ULL << 20,
-};
-enum {
-  IB_USER_LAST_QP_ATTR_MASK = 1ULL << 25,
-};
 struct ib_uverbs_ex_create_qp {
   __aligned_u64 user_handle;
   __u32 pd_handle;
diff --git a/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h b/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
index d46121a..804a90b 100644
--- a/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
+++ b/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
@@ -181,7 +181,7 @@
 enum mlx5_ib_device_query_context_attrs {
   MLX5_IB_ATTR_QUERY_CONTEXT_RESP_UCTX = (1U << UVERBS_ID_NS_SHIFT),
 };
-#define MLX5_IB_DW_MATCH_PARAM 0x80
+#define MLX5_IB_DW_MATCH_PARAM 0x90
 struct mlx5_ib_match_params {
   __u32 match_params[MLX5_IB_DW_MATCH_PARAM];
 };
diff --git a/libc/kernel/uapi/rdma/rdma_user_rxe.h b/libc/kernel/uapi/rdma/rdma_user_rxe.h
index 8d8d23f..9fd21d7 100644
--- a/libc/kernel/uapi/rdma/rdma_user_rxe.h
+++ b/libc/kernel/uapi/rdma/rdma_user_rxe.h
@@ -147,4 +147,14 @@
 struct rxe_modify_srq_cmd {
   __aligned_u64 mmap_info_addr;
 };
+struct rxe_queue_buf {
+  __u32 log2_elem_size;
+  __u32 index_mask;
+  __u32 pad_1[30];
+  __u32 producer_index;
+  __u32 pad_2[31];
+  __u32 consumer_index;
+  __u32 pad_3[31];
+  __u8 data[];
+};
 #endif
diff --git a/libc/kernel/uapi/rdma/vmw_pvrdma-abi.h b/libc/kernel/uapi/rdma/vmw_pvrdma-abi.h
index 3b86798..f4444c4 100644
--- a/libc/kernel/uapi/rdma/vmw_pvrdma-abi.h
+++ b/libc/kernel/uapi/rdma/vmw_pvrdma-abi.h
@@ -98,6 +98,12 @@
   PVRDMA_WC_WITH_NETWORK_HDR_TYPE = 1 << 6,
   PVRDMA_WC_FLAGS_MAX = PVRDMA_WC_WITH_NETWORK_HDR_TYPE,
 };
+enum pvrdma_network_type {
+  PVRDMA_NETWORK_IB,
+  PVRDMA_NETWORK_ROCE_V1 = PVRDMA_NETWORK_IB,
+  PVRDMA_NETWORK_IPV4,
+  PVRDMA_NETWORK_IPV6
+};
 struct pvrdma_alloc_ucontext_resp {
   __u32 qp_tab_size;
   __u32 reserved;
diff --git a/libc/kernel/uapi/scsi/fc/fc_els.h b/libc/kernel/uapi/scsi/fc/fc_els.h
index 9822579..f31e764 100644
--- a/libc/kernel/uapi/scsi/fc/fc_els.h
+++ b/libc/kernel/uapi/scsi/fc/fc_els.h
@@ -584,6 +584,27 @@
 };
 #define FC_FPIN_LI_EVT_TYPES_INIT { { FPIN_LI_UNKNOWN, "Unknown" }, { FPIN_LI_LINK_FAILURE, "Link Failure" }, { FPIN_LI_LOSS_OF_SYNC, "Loss of Synchronization" }, { FPIN_LI_LOSS_OF_SIG, "Loss of Signal" }, { FPIN_LI_PRIM_SEQ_ERR, "Primitive Sequence Protocol Error" }, { FPIN_LI_INVALID_TX_WD, "Invalid Transmission Word" }, { FPIN_LI_INVALID_CRC, "Invalid CRC" }, { FPIN_LI_DEVICE_SPEC, "Device Specific" }, \
 }
+enum fc_fpin_deli_event_types {
+  FPIN_DELI_UNKNOWN = 0x0,
+  FPIN_DELI_TIMEOUT = 0x1,
+  FPIN_DELI_UNABLE_TO_ROUTE = 0x2,
+  FPIN_DELI_DEVICE_SPEC = 0xF,
+};
+#define FC_FPIN_DELI_EVT_TYPES_INIT { { FPIN_DELI_UNKNOWN, "Unknown" }, { FPIN_DELI_TIMEOUT, "Timeout" }, { FPIN_DELI_UNABLE_TO_ROUTE, "Unable to Route" }, { FPIN_DELI_DEVICE_SPEC, "Device Specific" }, \
+}
+enum fc_fpin_congn_event_types {
+  FPIN_CONGN_CLEAR = 0x0,
+  FPIN_CONGN_LOST_CREDIT = 0x1,
+  FPIN_CONGN_CREDIT_STALL = 0x2,
+  FPIN_CONGN_OVERSUBSCRIPTION = 0x3,
+  FPIN_CONGN_DEVICE_SPEC = 0xF,
+};
+#define FC_FPIN_CONGN_EVT_TYPES_INIT { { FPIN_CONGN_CLEAR, "Clear" }, { FPIN_CONGN_LOST_CREDIT, "Lost Credit" }, { FPIN_CONGN_CREDIT_STALL, "Credit Stall" }, { FPIN_CONGN_OVERSUBSCRIPTION, "Oversubscription" }, { FPIN_CONGN_DEVICE_SPEC, "Device Specific" }, \
+}
+enum fc_fpin_congn_severity_types {
+  FPIN_CONGN_SEVERITY_WARNING = 0xF1,
+  FPIN_CONGN_SEVERITY_ERROR = 0xF7,
+};
 struct fc_fn_li_desc {
   __be32 desc_tag;
   __be32 desc_len;
@@ -596,6 +617,33 @@
   __be32 pname_count;
   __be64 pname_list[0];
 };
+struct fc_fn_deli_desc {
+  __be32 desc_tag;
+  __be32 desc_len;
+  __be64 detecting_wwpn;
+  __be64 attached_wwpn;
+  __be32 deli_reason_code;
+};
+struct fc_fn_peer_congn_desc {
+  __be32 desc_tag;
+  __be32 desc_len;
+  __be64 detecting_wwpn;
+  __be64 attached_wwpn;
+  __be16 event_type;
+  __be16 event_modifier;
+  __be32 event_period;
+  __be32 pname_count;
+  __be64 pname_list[0];
+};
+struct fc_fn_congn_desc {
+  __be32 desc_tag;
+  __be32 desc_len;
+  __be16 event_type;
+  __be16 event_modifier;
+  __be32 event_period;
+  __u8 severity;
+  __u8 resv[3];
+};
 struct fc_els_fpin {
   __u8 fpin_cmd;
   __u8 fpin_zero[3];
diff --git a/libc/kernel/uapi/sound/asoc.h b/libc/kernel/uapi/sound/asoc.h
index e46c4b5..c962603 100644
--- a/libc/kernel/uapi/sound/asoc.h
+++ b/libc/kernel/uapi/sound/asoc.h
@@ -113,10 +113,14 @@
 #define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_CHANNELS (1 << 1)
 #define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_SAMPLEBITS (1 << 2)
 #define SND_SOC_TPLG_LNK_FLGBIT_VOICE_WAKEUP (1 << 3)
-#define SND_SOC_TPLG_BCLK_CM 0
-#define SND_SOC_TPLG_BCLK_CS 1
-#define SND_SOC_TPLG_FSYNC_CM 0
-#define SND_SOC_TPLG_FSYNC_CS 1
+#define SND_SOC_TPLG_BCLK_CP 0
+#define SND_SOC_TPLG_BCLK_CC 1
+#define SND_SOC_TPLG_BCLK_CM SND_SOC_TPLG_BCLK_CP
+#define SND_SOC_TPLG_BCLK_CS SND_SOC_TPLG_BCLK_CC
+#define SND_SOC_TPLG_FSYNC_CP 0
+#define SND_SOC_TPLG_FSYNC_CC 1
+#define SND_SOC_TPLG_FSYNC_CM SND_SOC_TPLG_FSYNC_CP
+#define SND_SOC_TPLG_FSYNC_CS SND_SOC_TPLG_FSYNC_CC
 struct snd_soc_tplg_hdr {
   __le32 magic;
   __le32 abi;
@@ -222,8 +226,8 @@
   __u8 clock_gated;
   __u8 invert_bclk;
   __u8 invert_fsync;
-  __u8 bclk_master;
-  __u8 fsync_master;
+  __u8 bclk_provider;
+  __u8 fsync_provider;
   __u8 mclk_direction;
   __le16 reserved;
   __le32 mclk_rate;
diff --git a/libc/kernel/uapi/sound/sof/abi.h b/libc/kernel/uapi/sound/sof/abi.h
index f339ccf..3af3c9d 100644
--- a/libc/kernel/uapi/sound/sof/abi.h
+++ b/libc/kernel/uapi/sound/sof/abi.h
@@ -19,7 +19,7 @@
 #ifndef __INCLUDE_UAPI_SOUND_SOF_ABI_H__
 #define __INCLUDE_UAPI_SOUND_SOF_ABI_H__
 #define SOF_ABI_MAJOR 3
-#define SOF_ABI_MINOR 17
+#define SOF_ABI_MINOR 18
 #define SOF_ABI_PATCH 0
 #define SOF_ABI_MAJOR_SHIFT 24
 #define SOF_ABI_MAJOR_MASK 0xff