Merge "Update to v6.15 kernel headers." into main
diff --git a/libc/include/bits/glibc-syscalls.h b/libc/include/bits/glibc-syscalls.h
index c92bc50..6eeaaf5 100644
--- a/libc/include/bits/glibc-syscalls.h
+++ b/libc/include/bits/glibc-syscalls.h
@@ -762,6 +762,9 @@
 #if defined(__NR_open_tree)
   #define SYS_open_tree __NR_open_tree
 #endif
+#if defined(__NR_open_tree_attr)
+  #define SYS_open_tree_attr __NR_open_tree_attr
+#endif
 #if defined(__NR_openat)
   #define SYS_openat __NR_openat
 #endif
diff --git a/libc/include/elf.h b/libc/include/elf.h
index 24454d7..218713d 100644
--- a/libc/include/elf.h
+++ b/libc/include/elf.h
@@ -114,36 +114,6 @@
 typedef Elf64_Half Elf64_Versym;
 
 typedef struct {
-  Elf32_Half vd_version;
-  Elf32_Half vd_flags;
-  Elf32_Half vd_ndx;
-  Elf32_Half vd_cnt;
-  Elf32_Word vd_hash;
-  Elf32_Word vd_aux;
-  Elf32_Word vd_next;
-} Elf32_Verdef;
-
-typedef struct {
-  Elf32_Word vda_name;
-  Elf32_Word vda_next;
-} Elf32_Verdaux;
-
-typedef struct {
-  Elf64_Half vd_version;
-  Elf64_Half vd_flags;
-  Elf64_Half vd_ndx;
-  Elf64_Half vd_cnt;
-  Elf64_Word vd_hash;
-  Elf64_Word vd_aux;
-  Elf64_Word vd_next;
-} Elf64_Verdef;
-
-typedef struct {
-  Elf64_Word vda_name;
-  Elf64_Word vda_next;
-} Elf64_Verdaux;
-
-typedef struct {
   Elf32_Half vn_version;
   Elf32_Half vn_cnt;
   Elf32_Word vn_file;
diff --git a/libc/kernel/android/scsi/scsi/scsi_proto.h b/libc/kernel/android/scsi/scsi/scsi_proto.h
index 754e12a..7d15cce 100644
--- a/libc/kernel/android/scsi/scsi/scsi_proto.h
+++ b/libc/kernel/android/scsi/scsi/scsi_proto.h
@@ -23,8 +23,8 @@
 #define INQUIRY 0x12
 #define RECOVER_BUFFERED_DATA 0x14
 #define MODE_SELECT 0x15
-#define RESERVE 0x16
-#define RELEASE 0x17
+#define RESERVE_6 0x16
+#define RELEASE_6 0x17
 #define COPY 0x18
 #define ERASE 0x19
 #define MODE_SENSE 0x1a
diff --git a/libc/kernel/uapi/asm-arm/asm/unistd-eabi.h b/libc/kernel/uapi/asm-arm/asm/unistd-eabi.h
index 15c7261..38de194 100644
--- a/libc/kernel/uapi/asm-arm/asm/unistd-eabi.h
+++ b/libc/kernel/uapi/asm-arm/asm/unistd-eabi.h
@@ -425,4 +425,5 @@
 #define __NR_getxattrat (__NR_SYSCALL_BASE + 464)
 #define __NR_listxattrat (__NR_SYSCALL_BASE + 465)
 #define __NR_removexattrat (__NR_SYSCALL_BASE + 466)
+#define __NR_open_tree_attr (__NR_SYSCALL_BASE + 467)
 #endif
diff --git a/libc/kernel/uapi/asm-arm/asm/unistd-oabi.h b/libc/kernel/uapi/asm-arm/asm/unistd-oabi.h
index 9eb602d..7fab02e 100644
--- a/libc/kernel/uapi/asm-arm/asm/unistd-oabi.h
+++ b/libc/kernel/uapi/asm-arm/asm/unistd-oabi.h
@@ -437,4 +437,5 @@
 #define __NR_getxattrat (__NR_SYSCALL_BASE + 464)
 #define __NR_listxattrat (__NR_SYSCALL_BASE + 465)
 #define __NR_removexattrat (__NR_SYSCALL_BASE + 466)
+#define __NR_open_tree_attr (__NR_SYSCALL_BASE + 467)
 #endif
diff --git a/libc/kernel/uapi/asm-arm64/asm/kvm.h b/libc/kernel/uapi/asm-arm64/asm/kvm.h
index 3516add..1cf81b8 100644
--- a/libc/kernel/uapi/asm-arm64/asm/kvm.h
+++ b/libc/kernel/uapi/asm-arm64/asm/kvm.h
@@ -60,6 +60,7 @@
 #define KVM_ARM_VCPU_PTRAUTH_ADDRESS 5
 #define KVM_ARM_VCPU_PTRAUTH_GENERIC 6
 #define KVM_ARM_VCPU_HAS_EL2 7
+#define KVM_ARM_VCPU_HAS_EL2_E2H0 8
 struct kvm_vcpu_init {
   __u32 target;
   __u32 features[7];
@@ -196,6 +197,11 @@
   KVM_REG_ARM_VENDOR_HYP_BIT_FUNC_FEAT = 0,
   KVM_REG_ARM_VENDOR_HYP_BIT_PTP = 1,
 };
+#define KVM_REG_ARM_VENDOR_HYP_BMAP_2 KVM_REG_ARM_FW_FEAT_BMAP_REG(3)
+enum {
+  KVM_REG_ARM_VENDOR_HYP_BIT_DISCOVER_IMPL_VER = 0,
+  KVM_REG_ARM_VENDOR_HYP_BIT_DISCOVER_IMPL_CPUS = 1,
+};
 #define KVM_ARM_VM_SMCCC_CTRL 0
 #define KVM_ARM_VM_SMCCC_FILTER 0
 #define KVM_DEV_ARM_VGIC_GRP_ADDR 0
@@ -214,6 +220,7 @@
 #define KVM_DEV_ARM_VGIC_GRP_CPU_SYSREGS 6
 #define KVM_DEV_ARM_VGIC_GRP_LEVEL_INFO 7
 #define KVM_DEV_ARM_VGIC_GRP_ITS_REGS 8
+#define KVM_DEV_ARM_VGIC_GRP_MAINT_IRQ 9
 #define KVM_DEV_ARM_VGIC_LINE_LEVEL_INFO_SHIFT 10
 #define KVM_DEV_ARM_VGIC_LINE_LEVEL_INFO_MASK (0x3fffffULL << KVM_DEV_ARM_VGIC_LINE_LEVEL_INFO_SHIFT)
 #define KVM_DEV_ARM_VGIC_LINE_LEVEL_INTID_MASK 0x3ff
diff --git a/libc/kernel/uapi/asm-arm64/asm/unistd_64.h b/libc/kernel/uapi/asm-arm64/asm/unistd_64.h
index 6e87993..cf278a4 100644
--- a/libc/kernel/uapi/asm-arm64/asm/unistd_64.h
+++ b/libc/kernel/uapi/asm-arm64/asm/unistd_64.h
@@ -328,4 +328,5 @@
 #define __NR_getxattrat 464
 #define __NR_listxattrat 465
 #define __NR_removexattrat 466
+#define __NR_open_tree_attr 467
 #endif
diff --git a/libc/kernel/uapi/asm-generic/mman-common.h b/libc/kernel/uapi/asm-generic/mman-common.h
index dda66fd..9dabadf 100644
--- a/libc/kernel/uapi/asm-generic/mman-common.h
+++ b/libc/kernel/uapi/asm-generic/mman-common.h
@@ -55,6 +55,7 @@
 #define MADV_GUARD_INSTALL 102
 #define MADV_GUARD_REMOVE 103
 #define MAP_FILE 0
+#define PKEY_UNRESTRICTED 0x0
 #define PKEY_DISABLE_ACCESS 0x1
 #define PKEY_DISABLE_WRITE 0x2
 #define PKEY_ACCESS_MASK (PKEY_DISABLE_ACCESS | PKEY_DISABLE_WRITE)
diff --git a/libc/kernel/uapi/asm-generic/unistd.h b/libc/kernel/uapi/asm-generic/unistd.h
index b5f19ae..0ab40ca 100644
--- a/libc/kernel/uapi/asm-generic/unistd.h
+++ b/libc/kernel/uapi/asm-generic/unistd.h
@@ -415,8 +415,9 @@
 #define __NR_getxattrat 464
 #define __NR_listxattrat 465
 #define __NR_removexattrat 466
+#define __NR_open_tree_attr 467
 #undef __NR_syscalls
-#define __NR_syscalls 467
+#define __NR_syscalls 468
 #if __BITS_PER_LONG == 64 && !defined(__SYSCALL_COMPAT)
 #define __NR_fcntl __NR3264_fcntl
 #define __NR_statfs __NR3264_statfs
diff --git a/libc/kernel/uapi/asm-riscv/asm/hwprobe.h b/libc/kernel/uapi/asm-riscv/asm/hwprobe.h
index f63be93..f1e6637 100644
--- a/libc/kernel/uapi/asm-riscv/asm/hwprobe.h
+++ b/libc/kernel/uapi/asm-riscv/asm/hwprobe.h
@@ -67,6 +67,14 @@
 #define RISCV_HWPROBE_EXT_ZCMOP (1ULL << 47)
 #define RISCV_HWPROBE_EXT_ZAWRS (1ULL << 48)
 #define RISCV_HWPROBE_EXT_SUPM (1ULL << 49)
+#define RISCV_HWPROBE_EXT_ZICNTR (1ULL << 50)
+#define RISCV_HWPROBE_EXT_ZIHPM (1ULL << 51)
+#define RISCV_HWPROBE_EXT_ZFBFMIN (1ULL << 52)
+#define RISCV_HWPROBE_EXT_ZVFBFMIN (1ULL << 53)
+#define RISCV_HWPROBE_EXT_ZVFBFWMA (1ULL << 54)
+#define RISCV_HWPROBE_EXT_ZICBOM (1ULL << 55)
+#define RISCV_HWPROBE_EXT_ZAAMO (1ULL << 56)
+#define RISCV_HWPROBE_EXT_ZALRSC (1ULL << 57)
 #define RISCV_HWPROBE_KEY_CPUPERF_0 5
 #define RISCV_HWPROBE_MISALIGNED_UNKNOWN (0 << 0)
 #define RISCV_HWPROBE_MISALIGNED_EMULATED (1 << 0)
@@ -89,5 +97,6 @@
 #define RISCV_HWPROBE_MISALIGNED_VECTOR_FAST 3
 #define RISCV_HWPROBE_MISALIGNED_VECTOR_UNSUPPORTED 4
 #define RISCV_HWPROBE_KEY_VENDOR_EXT_THEAD_0 11
+#define RISCV_HWPROBE_KEY_ZICBOM_BLOCK_SIZE 12
 #define RISCV_HWPROBE_WHICH_CPUS (1 << 0)
 #endif
diff --git a/libc/kernel/uapi/asm-riscv/asm/kvm.h b/libc/kernel/uapi/asm-riscv/asm/kvm.h
index 1816bdb..4b1f874 100644
--- a/libc/kernel/uapi/asm-riscv/asm/kvm.h
+++ b/libc/kernel/uapi/asm-riscv/asm/kvm.h
@@ -142,6 +142,8 @@
   KVM_RISCV_ISA_EXT_SVVPTC,
   KVM_RISCV_ISA_EXT_ZABHA,
   KVM_RISCV_ISA_EXT_ZICCRSE,
+  KVM_RISCV_ISA_EXT_ZAAMO,
+  KVM_RISCV_ISA_EXT_ZALRSC,
   KVM_RISCV_ISA_EXT_MAX,
 };
 enum KVM_RISCV_SBI_EXT_ID {
diff --git a/libc/kernel/uapi/asm-riscv/asm/unistd_32.h b/libc/kernel/uapi/asm-riscv/asm/unistd_32.h
index b436109..03487ce 100644
--- a/libc/kernel/uapi/asm-riscv/asm/unistd_32.h
+++ b/libc/kernel/uapi/asm-riscv/asm/unistd_32.h
@@ -319,4 +319,5 @@
 #define __NR_getxattrat 464
 #define __NR_listxattrat 465
 #define __NR_removexattrat 466
+#define __NR_open_tree_attr 467
 #endif
diff --git a/libc/kernel/uapi/asm-riscv/asm/unistd_64.h b/libc/kernel/uapi/asm-riscv/asm/unistd_64.h
index d82343b..d3977a3 100644
--- a/libc/kernel/uapi/asm-riscv/asm/unistd_64.h
+++ b/libc/kernel/uapi/asm-riscv/asm/unistd_64.h
@@ -329,4 +329,5 @@
 #define __NR_getxattrat 464
 #define __NR_listxattrat 465
 #define __NR_removexattrat 466
+#define __NR_open_tree_attr 467
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/bootparam.h b/libc/kernel/uapi/asm-x86/asm/bootparam.h
index 6a4b59c..663ac46 100644
--- a/libc/kernel/uapi/asm-x86/asm/bootparam.h
+++ b/libc/kernel/uapi/asm-x86/asm/bootparam.h
@@ -23,7 +23,7 @@
 #define XLF_5LEVEL (1 << 5)
 #define XLF_5LEVEL_ENABLED (1 << 6)
 #define XLF_MEM_ENCRYPTION (1 << 7)
-#ifndef __ASSEMBLY__
+#ifndef __ASSEMBLER__
 #include <linux/types.h>
 #include <linux/screen_info.h>
 #include <linux/apm_bios.h>
diff --git a/libc/kernel/uapi/asm-x86/asm/e820.h b/libc/kernel/uapi/asm-x86/asm/e820.h
index ed1d1a1..b836bb0 100644
--- a/libc/kernel/uapi/asm-x86/asm/e820.h
+++ b/libc/kernel/uapi/asm-x86/asm/e820.h
@@ -18,7 +18,7 @@
 #define E820_PMEM 7
 #define E820_PRAM 12
 #define E820_RESERVED_KERN 128
-#ifndef __ASSEMBLY__
+#ifndef __ASSEMBLER__
 #include <linux/types.h>
 struct e820entry {
   __u64 addr;
diff --git a/libc/kernel/uapi/asm-x86/asm/kvm.h b/libc/kernel/uapi/asm-x86/asm/kvm.h
index be0cca8..1930eda 100644
--- a/libc/kernel/uapi/asm-x86/asm/kvm.h
+++ b/libc/kernel/uapi/asm-x86/asm/kvm.h
@@ -424,6 +424,8 @@
 #define KVM_XEN_HVM_CONFIG_RUNSTATE_UPDATE_FLAG (1 << 6)
 #define KVM_XEN_HVM_CONFIG_PVCLOCK_TSC_UNSTABLE (1 << 7)
 #define KVM_XEN_HVM_CONFIG_SHARED_INFO_HVA (1 << 8)
+#define KVM_XEN_MSR_MIN_INDEX 0x40000000u
+#define KVM_XEN_MSR_MAX_INDEX 0x4fffffffu
 struct kvm_xen_hvm_config {
   __u32 flags;
   __u32 msr;
diff --git a/libc/kernel/uapi/asm-x86/asm/ldt.h b/libc/kernel/uapi/asm-x86/asm/ldt.h
index 9c22a0b..226ab74 100644
--- a/libc/kernel/uapi/asm-x86/asm/ldt.h
+++ b/libc/kernel/uapi/asm-x86/asm/ldt.h
@@ -8,7 +8,7 @@
 #define _ASM_X86_LDT_H
 #define LDT_ENTRIES 8192
 #define LDT_ENTRY_SIZE 8
-#ifndef __ASSEMBLY__
+#ifndef __ASSEMBLER__
 struct user_desc {
   unsigned int entry_number;
   unsigned int base_addr;
diff --git a/libc/kernel/uapi/asm-x86/asm/msr.h b/libc/kernel/uapi/asm-x86/asm/msr.h
index 34b7bd8..80466eb 100644
--- a/libc/kernel/uapi/asm-x86/asm/msr.h
+++ b/libc/kernel/uapi/asm-x86/asm/msr.h
@@ -6,7 +6,7 @@
  */
 #ifndef _UAPI_ASM_X86_MSR_H
 #define _UAPI_ASM_X86_MSR_H
-#ifndef __ASSEMBLY__
+#ifndef __ASSEMBLER__
 #include <linux/types.h>
 #include <linux/ioctl.h>
 #define X86_IOC_RDMSR_REGS _IOWR('c', 0xA0, __u32[8])
diff --git a/libc/kernel/uapi/asm-x86/asm/ptrace-abi.h b/libc/kernel/uapi/asm-x86/asm/ptrace-abi.h
index aa314e0..ec14525 100644
--- a/libc/kernel/uapi/asm-x86/asm/ptrace-abi.h
+++ b/libc/kernel/uapi/asm-x86/asm/ptrace-abi.h
@@ -26,7 +26,7 @@
 #define SS 16
 #define FRAME_SIZE 17
 #else
-#if defined(__ASSEMBLY__) || defined(__FRAME_OFFSETS)
+#if defined(__ASSEMBLER__) || defined(__FRAME_OFFSETS)
 #define R15 0
 #define R14 8
 #define R13 16
@@ -66,7 +66,7 @@
 #define PTRACE_SYSEMU 31
 #define PTRACE_SYSEMU_SINGLESTEP 32
 #define PTRACE_SINGLEBLOCK 33
-#ifndef __ASSEMBLY__
+#ifndef __ASSEMBLER__
 #include <linux/types.h>
 #endif
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/ptrace.h b/libc/kernel/uapi/asm-x86/asm/ptrace.h
index a791592..66ae903 100644
--- a/libc/kernel/uapi/asm-x86/asm/ptrace.h
+++ b/libc/kernel/uapi/asm-x86/asm/ptrace.h
@@ -9,7 +9,7 @@
 #include <linux/compiler.h>
 #include <asm/ptrace-abi.h>
 #include <asm/processor-flags.h>
-#ifndef __ASSEMBLY__
+#ifndef __ASSEMBLER__
 #ifdef __i386__
 struct pt_regs {
   long ebx;
diff --git a/libc/kernel/uapi/asm-x86/asm/setup_data.h b/libc/kernel/uapi/asm-x86/asm/setup_data.h
index d00a554..fae7e32 100644
--- a/libc/kernel/uapi/asm-x86/asm/setup_data.h
+++ b/libc/kernel/uapi/asm-x86/asm/setup_data.h
@@ -19,7 +19,7 @@
 #define SETUP_ENUM_MAX SETUP_RNG_SEED
 #define SETUP_INDIRECT (1 << 31)
 #define SETUP_TYPE_MAX (SETUP_ENUM_MAX | SETUP_INDIRECT)
-#ifndef __ASSEMBLY__
+#ifndef __ASSEMBLER__
 #include <linux/types.h>
 struct setup_data {
   __u64 next;
diff --git a/libc/kernel/uapi/asm-x86/asm/signal.h b/libc/kernel/uapi/asm-x86/asm/signal.h
index 6cffef3..0b99732 100644
--- a/libc/kernel/uapi/asm-x86/asm/signal.h
+++ b/libc/kernel/uapi/asm-x86/asm/signal.h
@@ -6,7 +6,7 @@
  */
 #ifndef _UAPI_ASM_X86_SIGNAL_H
 #define _UAPI_ASM_X86_SIGNAL_H
-#ifndef __ASSEMBLY__
+#ifndef __ASSEMBLER__
 #include <linux/types.h>
 #include <linux/compiler.h>
 struct siginfo;
@@ -53,7 +53,7 @@
 #define MINSIGSTKSZ 2048
 #define SIGSTKSZ 8192
 #include <asm-generic/signal-defs.h>
-#ifndef __ASSEMBLY__
+#ifndef __ASSEMBLER__
 #ifdef __i386__
 struct __kernel_sigaction {
   union {
diff --git a/libc/kernel/uapi/asm-x86/asm/svm.h b/libc/kernel/uapi/asm-x86/asm/svm.h
index 4f165fa..44c8551 100644
--- a/libc/kernel/uapi/asm-x86/asm/svm.h
+++ b/libc/kernel/uapi/asm-x86/asm/svm.h
@@ -99,6 +99,7 @@
 #define SVM_EXIT_CR14_WRITE_TRAP 0x09e
 #define SVM_EXIT_CR15_WRITE_TRAP 0x09f
 #define SVM_EXIT_INVPCID 0x0a2
+#define SVM_EXIT_IDLE_HLT 0x0a6
 #define SVM_EXIT_NPF 0x400
 #define SVM_EXIT_AVIC_INCOMPLETE_IPI 0x401
 #define SVM_EXIT_AVIC_UNACCELERATED_ACCESS 0x402
@@ -124,5 +125,5 @@
 #define SVM_VMGEXIT_UNSUPPORTED_EVENT 0x8000ffff
 #define SVM_EXIT_SW 0xf0000000
 #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_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_VMGEXIT_PSC, "vmgexit_page_state_change" }, { SVM_VMGEXIT_GUEST_REQUEST, "vmgexit_guest_request" }, { SVM_VMGEXIT_EXT_GUEST_REQUEST, "vmgexit_ext_guest_request" }, { SVM_VMGEXIT_AP_CREATION, "vmgexit_ap_creation" }, { SVM_VMGEXIT_HV_FEATURES, "vmgexit_hypervisor_feature" }, { 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_IDLE_HLT, "idle-halt" }, { 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_VMGEXIT_PSC, "vmgexit_page_state_change" }, { SVM_VMGEXIT_GUEST_REQUEST, "vmgexit_guest_request" }, { SVM_VMGEXIT_EXT_GUEST_REQUEST, "vmgexit_ext_guest_request" }, { SVM_VMGEXIT_AP_CREATION, "vmgexit_ap_creation" }, { SVM_VMGEXIT_HV_FEATURES, "vmgexit_hypervisor_feature" }, { 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 3110d7d..4813a94 100644
--- a/libc/kernel/uapi/asm-x86/asm/unistd_32.h
+++ b/libc/kernel/uapi/asm-x86/asm/unistd_32.h
@@ -462,4 +462,5 @@
 #define __NR_getxattrat 464
 #define __NR_listxattrat 465
 #define __NR_removexattrat 466
+#define __NR_open_tree_attr 467
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/unistd_64.h b/libc/kernel/uapi/asm-x86/asm/unistd_64.h
index f59ebdd..f2fe75b 100644
--- a/libc/kernel/uapi/asm-x86/asm/unistd_64.h
+++ b/libc/kernel/uapi/asm-x86/asm/unistd_64.h
@@ -385,4 +385,5 @@
 #define __NR_getxattrat 464
 #define __NR_listxattrat 465
 #define __NR_removexattrat 466
+#define __NR_open_tree_attr 467
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/unistd_x32.h b/libc/kernel/uapi/asm-x86/asm/unistd_x32.h
index 0ecada3..8a5ff8d 100644
--- a/libc/kernel/uapi/asm-x86/asm/unistd_x32.h
+++ b/libc/kernel/uapi/asm-x86/asm/unistd_x32.h
@@ -338,6 +338,7 @@
 #define __NR_getxattrat (__X32_SYSCALL_BIT + 464)
 #define __NR_listxattrat (__X32_SYSCALL_BIT + 465)
 #define __NR_removexattrat (__X32_SYSCALL_BIT + 466)
+#define __NR_open_tree_attr (__X32_SYSCALL_BIT + 467)
 #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/cxl/features.h b/libc/kernel/uapi/cxl/features.h
new file mode 100644
index 0000000..8a5e701
--- /dev/null
+++ b/libc/kernel/uapi/cxl/features.h
@@ -0,0 +1,81 @@
+/*
+ * This file is auto-generated. Modifications will be lost.
+ *
+ * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
+ * for more information.
+ */
+#ifndef _UAPI_CXL_FEATURES_H_
+#define _UAPI_CXL_FEATURES_H_
+#include <linux/types.h>
+typedef unsigned char __uapi_uuid_t[16];
+struct cxl_mbox_get_sup_feats_in {
+  __le32 count;
+  __le16 start_idx;
+  __u8 reserved[2];
+} __attribute__((__packed__));
+#define CXL_CMD_CONFIG_CHANGE_COLD_RESET BIT(0)
+#define CXL_CMD_CONFIG_CHANGE_IMMEDIATE BIT(1)
+#define CXL_CMD_DATA_CHANGE_IMMEDIATE BIT(2)
+#define CXL_CMD_POLICY_CHANGE_IMMEDIATE BIT(3)
+#define CXL_CMD_LOG_CHANGE_IMMEDIATE BIT(4)
+#define CXL_CMD_SECURITY_STATE_CHANGE BIT(5)
+#define CXL_CMD_BACKGROUND BIT(6)
+#define CXL_CMD_BGCMD_ABORT_SUPPORTED BIT(7)
+#define CXL_CMD_EFFECTS_VALID BIT(9)
+#define CXL_CMD_CONFIG_CHANGE_CONV_RESET BIT(10)
+#define CXL_CMD_CONFIG_CHANGE_CXL_RESET BIT(11)
+#define CXL_CMD_EFFECTS_RESERVED GENMASK(15, 12)
+struct cxl_feat_entry {
+  __uapi_uuid_t uuid;
+  __le16 id;
+  __le16 get_feat_size;
+  __le16 set_feat_size;
+  __le32 flags;
+  __u8 get_feat_ver;
+  __u8 set_feat_ver;
+  __le16 effects;
+  __u8 reserved[18];
+} __attribute__((__packed__));
+#define CXL_FEATURE_F_CHANGEABLE BIT(0)
+#define CXL_FEATURE_F_PERSIST_FW_UPDATE BIT(4)
+#define CXL_FEATURE_F_DEFAULT_SEL BIT(5)
+#define CXL_FEATURE_F_SAVED_SEL BIT(6)
+struct cxl_mbox_get_sup_feats_out {
+  __struct_group(cxl_mbox_get_sup_feats_out_hdr, hdr,, __le16 num_entries;
+  __le16 supported_feats;
+  __u8 reserved[4];
+ );
+  struct cxl_feat_entry ents[] __counted_by_le(num_entries);
+} __attribute__((__packed__));
+struct cxl_mbox_get_feat_in {
+  __uapi_uuid_t uuid;
+  __le16 offset;
+  __le16 count;
+  __u8 selection;
+} __attribute__((__packed__));
+enum cxl_get_feat_selection {
+  CXL_GET_FEAT_SEL_CURRENT_VALUE,
+  CXL_GET_FEAT_SEL_DEFAULT_VALUE,
+  CXL_GET_FEAT_SEL_SAVED_VALUE,
+  CXL_GET_FEAT_SEL_MAX
+};
+struct cxl_mbox_set_feat_in {
+  __struct_group(cxl_mbox_set_feat_hdr, hdr,, __uapi_uuid_t uuid;
+  __le32 flags;
+  __le16 offset;
+  __u8 version;
+  __u8 rsvd[9];
+ );
+  __u8 feat_data[];
+} __attribute__((__packed__));
+enum cxl_set_feat_flag_data_transfer {
+  CXL_SET_FEAT_FLAG_FULL_DATA_TRANSFER = 0,
+  CXL_SET_FEAT_FLAG_INITIATE_DATA_TRANSFER,
+  CXL_SET_FEAT_FLAG_CONTINUE_DATA_TRANSFER,
+  CXL_SET_FEAT_FLAG_FINISH_DATA_TRANSFER,
+  CXL_SET_FEAT_FLAG_ABORT_DATA_TRANSFER,
+  CXL_SET_FEAT_FLAG_DATA_TRANSFER_MAX
+};
+#define CXL_SET_FEAT_FLAG_DATA_TRANSFER_MASK GENMASK(2, 0)
+#define CXL_SET_FEAT_FLAG_DATA_SAVED_ACROSS_RESET BIT(3)
+#endif
diff --git a/libc/kernel/uapi/drm/amdgpu_drm.h b/libc/kernel/uapi/drm/amdgpu_drm.h
index f05c15f..196b207 100644
--- a/libc/kernel/uapi/drm/amdgpu_drm.h
+++ b/libc/kernel/uapi/drm/amdgpu_drm.h
@@ -442,6 +442,11 @@
 #define AMDGPU_IDS_FLAGS_PREEMPTION 0x2
 #define AMDGPU_IDS_FLAGS_TMZ 0x4
 #define AMDGPU_IDS_FLAGS_CONFORMANT_TRUNC_COORD 0x8
+#define AMDGPU_IDS_FLAGS_MODE_MASK 0x300
+#define AMDGPU_IDS_FLAGS_MODE_SHIFT 0x8
+#define AMDGPU_IDS_FLAGS_MODE_PF 0x0
+#define AMDGPU_IDS_FLAGS_MODE_VF 0x1
+#define AMDGPU_IDS_FLAGS_MODE_PT 0x2
 #define AMDGPU_INFO_ACCEL_WORKING 0x00
 #define AMDGPU_INFO_CRTC_FROM_ID 0x01
 #define AMDGPU_INFO_HW_IP_INFO 0x02
diff --git a/libc/kernel/uapi/drm/drm_fourcc.h b/libc/kernel/uapi/drm/drm_fourcc.h
index 7109a8f..ec015e7 100644
--- a/libc/kernel/uapi/drm/drm_fourcc.h
+++ b/libc/kernel/uapi/drm/drm_fourcc.h
@@ -149,6 +149,7 @@
 #define DRM_FORMAT_MOD_VENDOR_ARM 0x08
 #define DRM_FORMAT_MOD_VENDOR_ALLWINNER 0x09
 #define DRM_FORMAT_MOD_VENDOR_AMLOGIC 0x0a
+#define DRM_FORMAT_MOD_VENDOR_MTK 0x0b
 #define DRM_FORMAT_RESERVED ((1ULL << 56) - 1)
 #define fourcc_mod_get_vendor(modifier) (((modifier) >> 56) & 0xff)
 #define fourcc_mod_is_vendor(modifier,vendor) (fourcc_mod_get_vendor(modifier) == DRM_FORMAT_MOD_VENDOR_ ##vendor)
@@ -251,6 +252,18 @@
 #define AMLOGIC_FBC_LAYOUT_BASIC (1ULL)
 #define AMLOGIC_FBC_LAYOUT_SCATTER (2ULL)
 #define AMLOGIC_FBC_OPTION_MEM_SAVING (1ULL << 0)
+#define DRM_FORMAT_MOD_MTK(__flags) fourcc_mod_code(MTK, __flags)
+#define MTK_FMT_MOD_TILE_MASK 0xf
+#define MTK_FMT_MOD_TILE_NONE 0x0
+#define MTK_FMT_MOD_TILE_16L32S 0x1
+#define MTK_FMT_MOD_COMPRESS_MASK (0xf << 8)
+#define MTK_FMT_MOD_COMPRESS_NONE (0x0 << 8)
+#define MTK_FMT_MOD_COMPRESS_V1 (0x1 << 8)
+#define MTK_FMT_MOD_10BIT_LAYOUT_MASK (0xf << 16)
+#define MTK_FMT_MOD_10BIT_LAYOUT_PACKED (0x0 << 16)
+#define MTK_FMT_MOD_10BIT_LAYOUT_LSBTILED (0x1 << 16)
+#define MTK_FMT_MOD_10BIT_LAYOUT_LSBRASTER (0x2 << 16)
+#define DRM_FORMAT_MOD_MTK_16L_32S_TILE DRM_FORMAT_MOD_MTK(MTK_FMT_MOD_TILE_16L32S)
 #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
diff --git a/libc/kernel/uapi/drm/ivpu_accel.h b/libc/kernel/uapi/drm/ivpu_accel.h
index 8b81ebf..f8dd3af 100644
--- a/libc/kernel/uapi/drm/ivpu_accel.h
+++ b/libc/kernel/uapi/drm/ivpu_accel.h
@@ -20,6 +20,9 @@
 #define DRM_IVPU_METRIC_STREAMER_STOP 0x08
 #define DRM_IVPU_METRIC_STREAMER_GET_DATA 0x09
 #define DRM_IVPU_METRIC_STREAMER_GET_INFO 0x0a
+#define DRM_IVPU_CMDQ_CREATE 0x0b
+#define DRM_IVPU_CMDQ_DESTROY 0x0c
+#define DRM_IVPU_CMDQ_SUBMIT 0x0d
 #define DRM_IOCTL_IVPU_GET_PARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_IVPU_GET_PARAM, struct drm_ivpu_param)
 #define DRM_IOCTL_IVPU_SET_PARAM DRM_IOW(DRM_COMMAND_BASE + DRM_IVPU_SET_PARAM, struct drm_ivpu_param)
 #define DRM_IOCTL_IVPU_BO_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_IVPU_BO_CREATE, struct drm_ivpu_bo_create)
@@ -30,6 +33,9 @@
 #define DRM_IOCTL_IVPU_METRIC_STREAMER_STOP DRM_IOW(DRM_COMMAND_BASE + DRM_IVPU_METRIC_STREAMER_STOP, struct drm_ivpu_metric_streamer_stop)
 #define DRM_IOCTL_IVPU_METRIC_STREAMER_GET_DATA DRM_IOWR(DRM_COMMAND_BASE + DRM_IVPU_METRIC_STREAMER_GET_DATA, struct drm_ivpu_metric_streamer_get_data)
 #define DRM_IOCTL_IVPU_METRIC_STREAMER_GET_INFO DRM_IOWR(DRM_COMMAND_BASE + DRM_IVPU_METRIC_STREAMER_GET_INFO, struct drm_ivpu_metric_streamer_get_data)
+#define DRM_IOCTL_IVPU_CMDQ_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_IVPU_CMDQ_CREATE, struct drm_ivpu_cmdq_create)
+#define DRM_IOCTL_IVPU_CMDQ_DESTROY DRM_IOW(DRM_COMMAND_BASE + DRM_IVPU_CMDQ_DESTROY, struct drm_ivpu_cmdq_destroy)
+#define DRM_IOCTL_IVPU_CMDQ_SUBMIT DRM_IOW(DRM_COMMAND_BASE + DRM_IVPU_CMDQ_SUBMIT, struct drm_ivpu_cmdq_submit)
 #define DRM_IVPU_PARAM_DEVICE_ID 0
 #define DRM_IVPU_PARAM_DEVICE_REVISION 1
 #define DRM_IVPU_PARAM_PLATFORM_TYPE 2
@@ -56,6 +62,7 @@
 #define DRM_IVPU_JOB_PRIORITY_REALTIME 4
 #define DRM_IVPU_CAP_METRIC_STREAMER 1
 #define DRM_IVPU_CAP_DMA_MEMORY_RANGE 2
+#define DRM_IVPU_CAP_MANAGE_CMDQ 3
 struct drm_ivpu_param {
   __u32 param;
   __u32 index;
@@ -93,6 +100,13 @@
   __u32 commands_offset;
   __u32 priority;
 };
+struct drm_ivpu_cmdq_submit {
+  __u64 buffers_ptr;
+  __u32 buffer_count;
+  __u32 cmdq_id;
+  __u32 flags;
+  __u32 commands_offset;
+};
 #define DRM_IVPU_JOB_STATUS_SUCCESS 0
 #define DRM_IVPU_JOB_STATUS_ABORTED 256
 struct drm_ivpu_bo_wait {
@@ -115,6 +129,13 @@
   __u64 buffer_size;
   __u64 data_size;
 };
+struct drm_ivpu_cmdq_create {
+  __u32 cmdq_id;
+  __u32 priority;
+};
+struct drm_ivpu_cmdq_destroy {
+  __u32 cmdq_id;
+};
 struct drm_ivpu_metric_streamer_stop {
   __u64 metric_group_mask;
 };
diff --git a/libc/kernel/uapi/drm/panthor_drm.h b/libc/kernel/uapi/drm/panthor_drm.h
index 7c87cb8..bf5451e 100644
--- a/libc/kernel/uapi/drm/panthor_drm.h
+++ b/libc/kernel/uapi/drm/panthor_drm.h
@@ -29,20 +29,6 @@
   DRM_PANTHOR_TILER_HEAP_CREATE,
   DRM_PANTHOR_TILER_HEAP_DESTROY,
 };
-#define DRM_IOCTL_PANTHOR(__access,__id,__type) DRM_IO ##__access(DRM_COMMAND_BASE + DRM_PANTHOR_ ##__id, struct drm_panthor_ ##__type)
-#define DRM_IOCTL_PANTHOR_DEV_QUERY DRM_IOCTL_PANTHOR(WR, DEV_QUERY, dev_query)
-#define DRM_IOCTL_PANTHOR_VM_CREATE DRM_IOCTL_PANTHOR(WR, VM_CREATE, vm_create)
-#define DRM_IOCTL_PANTHOR_VM_DESTROY DRM_IOCTL_PANTHOR(WR, VM_DESTROY, vm_destroy)
-#define DRM_IOCTL_PANTHOR_VM_BIND DRM_IOCTL_PANTHOR(WR, VM_BIND, vm_bind)
-#define DRM_IOCTL_PANTHOR_VM_GET_STATE DRM_IOCTL_PANTHOR(WR, VM_GET_STATE, vm_get_state)
-#define DRM_IOCTL_PANTHOR_BO_CREATE DRM_IOCTL_PANTHOR(WR, BO_CREATE, bo_create)
-#define DRM_IOCTL_PANTHOR_BO_MMAP_OFFSET DRM_IOCTL_PANTHOR(WR, BO_MMAP_OFFSET, bo_mmap_offset)
-#define DRM_IOCTL_PANTHOR_GROUP_CREATE DRM_IOCTL_PANTHOR(WR, GROUP_CREATE, group_create)
-#define DRM_IOCTL_PANTHOR_GROUP_DESTROY DRM_IOCTL_PANTHOR(WR, GROUP_DESTROY, group_destroy)
-#define DRM_IOCTL_PANTHOR_GROUP_SUBMIT DRM_IOCTL_PANTHOR(WR, GROUP_SUBMIT, group_submit)
-#define DRM_IOCTL_PANTHOR_GROUP_GET_STATE DRM_IOCTL_PANTHOR(WR, GROUP_GET_STATE, group_get_state)
-#define DRM_IOCTL_PANTHOR_TILER_HEAP_CREATE DRM_IOCTL_PANTHOR(WR, TILER_HEAP_CREATE, tiler_heap_create)
-#define DRM_IOCTL_PANTHOR_TILER_HEAP_DESTROY DRM_IOCTL_PANTHOR(WR, TILER_HEAP_DESTROY, tiler_heap_destroy)
 struct drm_panthor_obj_array {
   __u32 stride;
   __u32 count;
@@ -247,6 +233,22 @@
   __u32 handle;
   __u32 pad;
 };
+#define DRM_IOCTL_PANTHOR(__access,__id,__type) DRM_IO ##__access(DRM_COMMAND_BASE + DRM_PANTHOR_ ##__id, struct drm_panthor_ ##__type)
+enum {
+  DRM_IOCTL_PANTHOR_DEV_QUERY = DRM_IOCTL_PANTHOR(WR, DEV_QUERY, dev_query),
+  DRM_IOCTL_PANTHOR_VM_CREATE = DRM_IOCTL_PANTHOR(WR, VM_CREATE, vm_create),
+  DRM_IOCTL_PANTHOR_VM_DESTROY = DRM_IOCTL_PANTHOR(WR, VM_DESTROY, vm_destroy),
+  DRM_IOCTL_PANTHOR_VM_BIND = DRM_IOCTL_PANTHOR(WR, VM_BIND, vm_bind),
+  DRM_IOCTL_PANTHOR_VM_GET_STATE = DRM_IOCTL_PANTHOR(WR, VM_GET_STATE, vm_get_state),
+  DRM_IOCTL_PANTHOR_BO_CREATE = DRM_IOCTL_PANTHOR(WR, BO_CREATE, bo_create),
+  DRM_IOCTL_PANTHOR_BO_MMAP_OFFSET = DRM_IOCTL_PANTHOR(WR, BO_MMAP_OFFSET, bo_mmap_offset),
+  DRM_IOCTL_PANTHOR_GROUP_CREATE = DRM_IOCTL_PANTHOR(WR, GROUP_CREATE, group_create),
+  DRM_IOCTL_PANTHOR_GROUP_DESTROY = DRM_IOCTL_PANTHOR(WR, GROUP_DESTROY, group_destroy),
+  DRM_IOCTL_PANTHOR_GROUP_SUBMIT = DRM_IOCTL_PANTHOR(WR, GROUP_SUBMIT, group_submit),
+  DRM_IOCTL_PANTHOR_GROUP_GET_STATE = DRM_IOCTL_PANTHOR(WR, GROUP_GET_STATE, group_get_state),
+  DRM_IOCTL_PANTHOR_TILER_HEAP_CREATE = DRM_IOCTL_PANTHOR(WR, TILER_HEAP_CREATE, tiler_heap_create),
+  DRM_IOCTL_PANTHOR_TILER_HEAP_DESTROY = DRM_IOCTL_PANTHOR(WR, TILER_HEAP_DESTROY, tiler_heap_destroy),
+};
 #ifdef __cplusplus
 }
 #endif
diff --git a/libc/kernel/uapi/drm/xe_drm.h b/libc/kernel/uapi/drm/xe_drm.h
index 46159e8..6aa2bc6 100644
--- a/libc/kernel/uapi/drm/xe_drm.h
+++ b/libc/kernel/uapi/drm/xe_drm.h
@@ -92,6 +92,8 @@
 #define DRM_XE_QUERY_CONFIG_REV_AND_DEVICE_ID 0
 #define DRM_XE_QUERY_CONFIG_FLAGS 1
 #define DRM_XE_QUERY_CONFIG_FLAG_HAS_VRAM (1 << 0)
+#define DRM_XE_QUERY_CONFIG_FLAG_HAS_LOW_LATENCY (1 << 1)
+#define DRM_XE_QUERY_CONFIG_FLAG_HAS_CPU_ADDR_MIRROR (1 << 2)
 #define DRM_XE_QUERY_CONFIG_MIN_ALIGNMENT 2
 #define DRM_XE_QUERY_CONFIG_VA_BITS 3
 #define DRM_XE_QUERY_CONFIG_MAX_EXEC_QUEUE_PRIORITY 4
@@ -149,6 +151,10 @@
   __u32 pad2;
   __u64 reserved;
 };
+struct drm_xe_query_pxp_status {
+  __u32 status;
+  __u32 supported_session_types;
+};
 struct drm_xe_device_query {
   __u64 extensions;
 #define DRM_XE_DEVICE_QUERY_ENGINES 0
@@ -160,12 +166,16 @@
 #define DRM_XE_DEVICE_QUERY_ENGINE_CYCLES 6
 #define DRM_XE_DEVICE_QUERY_UC_FW_VERSION 7
 #define DRM_XE_DEVICE_QUERY_OA_UNITS 8
+#define DRM_XE_DEVICE_QUERY_PXP_STATUS 9
+#define DRM_XE_DEVICE_QUERY_EU_STALL 10
   __u32 query;
   __u32 size;
   __u64 data;
   __u64 reserved[2];
 };
 struct drm_xe_gem_create {
+#define DRM_XE_GEM_CREATE_EXTENSION_SET_PROPERTY 0
+#define DRM_XE_GEM_CREATE_SET_PROPERTY_PXP_TYPE 0
   __u64 extensions;
   __u64 size;
   __u32 placement;
@@ -184,6 +194,7 @@
 struct drm_xe_gem_mmap_offset {
   __u64 extensions;
   __u32 handle;
+#define DRM_XE_MMAP_OFFSET_FLAG_PCI_BARRIER (1 << 0)
   __u32 flags;
   __u64 offset;
   __u64 reserved[2];
@@ -210,6 +221,7 @@
   union {
     __u64 obj_offset;
     __u64 userptr;
+    __s64 cpu_addr_mirror_offset;
   };
   __u64 range;
   __u64 addr;
@@ -223,6 +235,8 @@
 #define DRM_XE_VM_BIND_FLAG_IMMEDIATE (1 << 1)
 #define DRM_XE_VM_BIND_FLAG_NULL (1 << 2)
 #define DRM_XE_VM_BIND_FLAG_DUMPABLE (1 << 3)
+#define DRM_XE_VM_BIND_FLAG_CHECK_PXP (1 << 4)
+#define DRM_XE_VM_BIND_FLAG_CPU_ADDR_MIRROR (1 << 5)
   __u32 flags;
   __u32 prefetch_mem_region_instance;
   __u32 pad2;
@@ -247,10 +261,12 @@
 #define DRM_XE_EXEC_QUEUE_EXTENSION_SET_PROPERTY 0
 #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_PRIORITY 0
 #define DRM_XE_EXEC_QUEUE_SET_PROPERTY_TIMESLICE 1
+#define DRM_XE_EXEC_QUEUE_SET_PROPERTY_PXP_TYPE 2
   __u64 extensions;
   __u16 width;
   __u16 num_placements;
   __u32 vm_id;
+#define DRM_XE_EXEC_QUEUE_LOW_LATENCY_HINT (1 << 0)
   __u32 flags;
   __u32 exec_queue_id;
   __u64 instances;
@@ -316,6 +332,7 @@
 };
 enum drm_xe_observation_type {
   DRM_XE_OBSERVATION_TYPE_OA,
+  DRM_XE_OBSERVATION_TYPE_EU_STALL,
 };
 enum drm_xe_observation_op {
   DRM_XE_OBSERVATION_OP_STREAM_OPEN,
@@ -407,6 +424,27 @@
   __u64 oa_buf_size;
   __u64 reserved[3];
 };
+enum drm_xe_pxp_session_type {
+  DRM_XE_PXP_TYPE_NONE = 0,
+  DRM_XE_PXP_TYPE_HWDRM = 1,
+};
+#define DRM_XE_PXP_HWDRM_DEFAULT_SESSION 0xf
+enum drm_xe_eu_stall_property_id {
+#define DRM_XE_EU_STALL_EXTENSION_SET_PROPERTY 0
+  DRM_XE_EU_STALL_PROP_GT_ID = 1,
+  DRM_XE_EU_STALL_PROP_SAMPLE_RATE,
+  DRM_XE_EU_STALL_PROP_WAIT_NUM_REPORTS,
+};
+struct drm_xe_query_eu_stall {
+  __u64 extensions;
+  __u64 capabilities;
+#define DRM_XE_EU_STALL_CAPS_BASE (1 << 0)
+  __u64 record_size;
+  __u64 per_xecore_buf_size;
+  __u64 reserved[5];
+  __u64 num_sampling_rates;
+  __u64 sampling_rates[];
+};
 #ifdef __cplusplus
 }
 #endif
diff --git a/libc/kernel/uapi/fwctl/cxl.h b/libc/kernel/uapi/fwctl/cxl.h
new file mode 100644
index 0000000..b67c477
--- /dev/null
+++ b/libc/kernel/uapi/fwctl/cxl.h
@@ -0,0 +1,33 @@
+/*
+ * This file is auto-generated. Modifications will be lost.
+ *
+ * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
+ * for more information.
+ */
+#ifndef _UAPI_FWCTL_CXL_H_
+#define _UAPI_FWCTL_CXL_H_
+#include <linux/types.h>
+#include <linux/stddef.h>
+#include <cxl/features.h>
+struct fwctl_rpc_cxl {
+  __struct_group(fwctl_rpc_cxl_hdr, hdr,, __u32 opcode;
+  __u32 flags;
+  __u32 op_size;
+  __u32 reserved1;
+ );
+  union {
+    struct cxl_mbox_get_sup_feats_in get_sup_feats_in;
+    struct cxl_mbox_get_feat_in get_feat_in;
+    struct cxl_mbox_set_feat_in set_feat_in;
+  };
+};
+struct fwctl_rpc_cxl_out {
+  __struct_group(fwctl_rpc_cxl_out_hdr, hdr,, __u32 size;
+  __u32 retval;
+ );
+  union {
+    struct cxl_mbox_get_sup_feats_out get_sup_feats_out;
+    __DECLARE_FLEX_ARRAY(__u8, payload);
+  };
+};
+#endif
diff --git a/libc/kernel/uapi/fwctl/fwctl.h b/libc/kernel/uapi/fwctl/fwctl.h
new file mode 100644
index 0000000..9c126f6
--- /dev/null
+++ b/libc/kernel/uapi/fwctl/fwctl.h
@@ -0,0 +1,46 @@
+/*
+ * This file is auto-generated. Modifications will be lost.
+ *
+ * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
+ * for more information.
+ */
+#ifndef _UAPI_FWCTL_H
+#define _UAPI_FWCTL_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define FWCTL_TYPE 0x9A
+enum {
+  FWCTL_CMD_BASE = 0,
+  FWCTL_CMD_INFO = 0,
+  FWCTL_CMD_RPC = 1,
+};
+enum fwctl_device_type {
+  FWCTL_DEVICE_TYPE_ERROR = 0,
+  FWCTL_DEVICE_TYPE_MLX5 = 1,
+  FWCTL_DEVICE_TYPE_CXL = 2,
+  FWCTL_DEVICE_TYPE_PDS = 4,
+};
+struct fwctl_info {
+  __u32 size;
+  __u32 flags;
+  __u32 out_device_type;
+  __u32 device_data_len;
+  __aligned_u64 out_device_data;
+};
+#define FWCTL_INFO _IO(FWCTL_TYPE, FWCTL_CMD_INFO)
+enum fwctl_rpc_scope {
+  FWCTL_RPC_CONFIGURATION = 0,
+  FWCTL_RPC_DEBUG_READ_ONLY = 1,
+  FWCTL_RPC_DEBUG_WRITE = 2,
+  FWCTL_RPC_DEBUG_WRITE_FULL = 3,
+};
+struct fwctl_rpc {
+  __u32 size;
+  __u32 scope;
+  __u32 in_len;
+  __u32 out_len;
+  __aligned_u64 in;
+  __aligned_u64 out;
+};
+#define FWCTL_RPC _IO(FWCTL_TYPE, FWCTL_CMD_RPC)
+#endif
diff --git a/libc/kernel/uapi/fwctl/mlx5.h b/libc/kernel/uapi/fwctl/mlx5.h
new file mode 100644
index 0000000..871a3d4
--- /dev/null
+++ b/libc/kernel/uapi/fwctl/mlx5.h
@@ -0,0 +1,14 @@
+/*
+ * This file is auto-generated. Modifications will be lost.
+ *
+ * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
+ * for more information.
+ */
+#ifndef _UAPI_FWCTL_MLX5_H
+#define _UAPI_FWCTL_MLX5_H
+#include <linux/types.h>
+struct fwctl_info_mlx5 {
+  __u32 uid;
+  __u32 uctx_caps;
+};
+#endif
diff --git a/libc/kernel/uapi/fwctl/pds.h b/libc/kernel/uapi/fwctl/pds.h
new file mode 100644
index 0000000..85b4563
--- /dev/null
+++ b/libc/kernel/uapi/fwctl/pds.h
@@ -0,0 +1,32 @@
+/*
+ * This file is auto-generated. Modifications will be lost.
+ *
+ * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
+ * for more information.
+ */
+#ifndef _UAPI_FWCTL_PDS_H_
+#define _UAPI_FWCTL_PDS_H_
+#include <linux/types.h>
+struct fwctl_info_pds {
+  __u32 uctx_caps;
+};
+enum pds_fwctl_capabilities {
+  PDS_FWCTL_QUERY_CAP = 0,
+  PDS_FWCTL_SEND_CAP,
+};
+struct fwctl_rpc_pds {
+  struct {
+    __u32 op;
+    __u32 ep;
+    __u32 rsvd;
+    __u32 len;
+    __aligned_u64 payload;
+  } in;
+  struct {
+    __u32 retval;
+    __u32 rsvd[2];
+    __u32 len;
+    __aligned_u64 payload;
+  } out;
+};
+#endif
diff --git a/libc/kernel/uapi/linux/audit.h b/libc/kernel/uapi/linux/audit.h
index 170b70d..32510db 100644
--- a/libc/kernel/uapi/linux/audit.h
+++ b/libc/kernel/uapi/linux/audit.h
@@ -98,6 +98,8 @@
 #define AUDIT_IPE_ACCESS 1420
 #define AUDIT_IPE_CONFIG_CHANGE 1421
 #define AUDIT_IPE_POLICY_LOAD 1422
+#define AUDIT_LANDLOCK_ACCESS 1423
+#define AUDIT_LANDLOCK_DOMAIN 1424
 #define AUDIT_FIRST_KERN_ANOM_MSG 1700
 #define AUDIT_LAST_KERN_ANOM_MSG 1799
 #define AUDIT_ANOM_PROMISCUOUS 1700
diff --git a/libc/kernel/uapi/linux/bits.h b/libc/kernel/uapi/linux/bits.h
index 2b8dbe2..b78891b 100644
--- a/libc/kernel/uapi/linux/bits.h
+++ b/libc/kernel/uapi/linux/bits.h
@@ -6,7 +6,7 @@
  */
 #ifndef _UAPI_LINUX_BITS_H
 #define _UAPI_LINUX_BITS_H
-#define __GENMASK(h,l) (((~_UL(0)) - (_UL(1) << (l)) + 1) & (~_UL(0) >> (__BITS_PER_LONG - 1 - (h))))
-#define __GENMASK_ULL(h,l) (((~_ULL(0)) - (_ULL(1) << (l)) + 1) & (~_ULL(0) >> (__BITS_PER_LONG_LONG - 1 - (h))))
+#define __GENMASK(h,l) (((~_UL(0)) << (l)) & (~_UL(0) >> (BITS_PER_LONG - 1 - (h))))
+#define __GENMASK_ULL(h,l) (((~_ULL(0)) << (l)) & (~_ULL(0) >> (BITS_PER_LONG_LONG - 1 - (h))))
 #define __GENMASK_U128(h,l) ((_BIT128((h)) << 1) - (_BIT128(l)))
 #endif
diff --git a/libc/kernel/uapi/linux/bpf.h b/libc/kernel/uapi/linux/bpf.h
index 66d81fc..49a5f6e 100644
--- a/libc/kernel/uapi/linux/bpf.h
+++ b/libc/kernel/uapi/linux/bpf.h
@@ -34,6 +34,8 @@
 #define BPF_FETCH 0x01
 #define BPF_XCHG (0xe0 | BPF_FETCH)
 #define BPF_CMPXCHG (0xf0 | BPF_FETCH)
+#define BPF_LOAD_ACQ 0x100
+#define BPF_STORE_REL 0x110
 enum bpf_cond_pseudo_jmp {
   BPF_MAY_GOTO = 0,
 };
@@ -311,6 +313,7 @@
 #define BPF_F_BEFORE (1U << 3)
 #define BPF_F_AFTER (1U << 4)
 #define BPF_F_ID (1U << 5)
+#define BPF_F_PREORDER (1U << 6)
 #define BPF_F_LINK BPF_F_LINK
 #define BPF_F_STRICT_ALIGNMENT (1U << 0)
 #define BPF_F_ANY_ALIGNMENT (1U << 1)
@@ -506,6 +509,7 @@
     };
     __u32 next_id;
     __u32 open_flags;
+    __s32 fd_by_id_token_fd;
   };
   struct {
     __u32 bpf_fd;
@@ -1235,6 +1239,10 @@
   BPF_SOCK_OPS_ALL_CB_FLAGS = 0x7F,
 };
 enum {
+  SK_BPF_CB_TX_TIMESTAMPING = 1 << 0,
+  SK_BPF_CB_MASK = (SK_BPF_CB_TX_TIMESTAMPING - 1) | SK_BPF_CB_TX_TIMESTAMPING
+};
+enum {
   BPF_SOCK_OPS_VOID,
   BPF_SOCK_OPS_TIMEOUT_INIT,
   BPF_SOCK_OPS_RWND_INIT,
@@ -1251,6 +1259,11 @@
   BPF_SOCK_OPS_PARSE_HDR_OPT_CB,
   BPF_SOCK_OPS_HDR_OPT_LEN_CB,
   BPF_SOCK_OPS_WRITE_HDR_OPT_CB,
+  BPF_SOCK_OPS_TSTAMP_SCHED_CB,
+  BPF_SOCK_OPS_TSTAMP_SND_SW_CB,
+  BPF_SOCK_OPS_TSTAMP_SND_HW_CB,
+  BPF_SOCK_OPS_TSTAMP_ACK_CB,
+  BPF_SOCK_OPS_TSTAMP_SENDMSG_CB,
 };
 enum {
   BPF_TCP_ESTABLISHED = 1,
@@ -1277,6 +1290,7 @@
   TCP_BPF_SYN_IP = 1006,
   TCP_BPF_SYN_MAC = 1007,
   TCP_BPF_SOCK_OPS_CB_FLAGS = 1008,
+  SK_BPF_CB_FLAGS = 1009,
 };
 enum {
   BPF_LOAD_HDR_OPT_TCP_SYN = (1ULL << 0),
diff --git a/libc/kernel/uapi/linux/btrfs.h b/libc/kernel/uapi/linux/btrfs.h
index 30aca8e..bba3670 100644
--- a/libc/kernel/uapi/linux/btrfs.h
+++ b/libc/kernel/uapi/linux/btrfs.h
@@ -311,13 +311,20 @@
 };
 #define BTRFS_DEFRAG_RANGE_COMPRESS 1
 #define BTRFS_DEFRAG_RANGE_START_IO 2
-#define BTRFS_DEFRAG_RANGE_FLAGS_SUPP (BTRFS_DEFRAG_RANGE_COMPRESS | BTRFS_DEFRAG_RANGE_START_IO)
+#define BTRFS_DEFRAG_RANGE_COMPRESS_LEVEL 4
+#define BTRFS_DEFRAG_RANGE_FLAGS_SUPP (BTRFS_DEFRAG_RANGE_COMPRESS | BTRFS_DEFRAG_RANGE_COMPRESS_LEVEL | BTRFS_DEFRAG_RANGE_START_IO)
 struct btrfs_ioctl_defrag_range_args {
   __u64 start;
   __u64 len;
   __u64 flags;
   __u32 extent_thresh;
-  __u32 compress_type;
+  union {
+    __u32 compress_type;
+    struct {
+      __u8 type;
+      __s8 level;
+    } compress;
+  };
   __u32 unused[4];
 };
 #define BTRFS_SAME_DATA_DIFFERS 1
diff --git a/libc/kernel/uapi/linux/can.h b/libc/kernel/uapi/linux/can.h
index a913d73..c766d73 100644
--- a/libc/kernel/uapi/linux/can.h
+++ b/libc/kernel/uapi/linux/can.h
@@ -55,6 +55,7 @@
 };
 #define CANXL_XLF 0x80
 #define CANXL_SEC 0x01
+#define CANXL_RRS 0x02
 #define CANXL_VCID_OFFSET 16
 #define CANXL_VCID_VAL_MASK 0xFFUL
 #define CANXL_VCID_MASK (CANXL_VCID_VAL_MASK << CANXL_VCID_OFFSET)
diff --git a/libc/kernel/uapi/linux/counter.h b/libc/kernel/uapi/linux/counter.h
index 5d6f01f..e601e10 100644
--- a/libc/kernel/uapi/linux/counter.h
+++ b/libc/kernel/uapi/linux/counter.h
@@ -35,6 +35,7 @@
   COUNTER_EVENT_INDEX,
   COUNTER_EVENT_CHANGE_OF_STATE,
   COUNTER_EVENT_CAPTURE,
+  COUNTER_EVENT_DIRECTION_CHANGE,
 };
 struct counter_watch {
   struct counter_component component;
diff --git a/libc/kernel/uapi/linux/counter/microchip-tcb-capture.h b/libc/kernel/uapi/linux/counter/microchip-tcb-capture.h
new file mode 100644
index 0000000..77ce663
--- /dev/null
+++ b/libc/kernel/uapi/linux/counter/microchip-tcb-capture.h
@@ -0,0 +1,15 @@
+/*
+ * This file is auto-generated. Modifications will be lost.
+ *
+ * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
+ * for more information.
+ */
+#ifndef _UAPI_COUNTER_MCHP_TCB_H_
+#define _UAPI_COUNTER_MCHP_TCB_H_
+#define COUNTER_MCHP_EXCAP_RA 0
+#define COUNTER_MCHP_EXCAP_RB 1
+#define COUNTER_MCHP_EVCHN_CV 0
+#define COUNTER_MCHP_EVCHN_RA 0
+#define COUNTER_MCHP_EVCHN_RB 1
+#define COUNTER_MCHP_EVCHN_RC 2
+#endif
diff --git a/libc/kernel/uapi/linux/elf.h b/libc/kernel/uapi/linux/elf.h
index 89e11f9..24faa2a 100644
--- a/libc/kernel/uapi/linux/elf.h
+++ b/libc/kernel/uapi/linux/elf.h
@@ -13,6 +13,7 @@
 typedef __u32 Elf32_Off;
 typedef __s32 Elf32_Sword;
 typedef __u32 Elf32_Word;
+typedef __u16 Elf32_Versym;
 typedef __u64 Elf64_Addr;
 typedef __u16 Elf64_Half;
 typedef __s16 Elf64_SHalf;
@@ -21,6 +22,7 @@
 typedef __u32 Elf64_Word;
 typedef __u64 Elf64_Xword;
 typedef __s64 Elf64_Sxword;
+typedef __u16 Elf64_Versym;
 #define PT_NULL 0
 #define PT_LOAD 1
 #define PT_DYNAMIC 2
@@ -77,6 +79,7 @@
 #define DT_VALRNGLO 0x6ffffd00
 #define DT_VALRNGHI 0x6ffffdff
 #define DT_ADDRRNGLO 0x6ffffe00
+#define DT_GNU_HASH 0x6ffffef5
 #define DT_ADDRRNGHI 0x6ffffeff
 #define DT_VERSYM 0x6ffffff0
 #define DT_RELACOUNT 0x6ffffff9
@@ -92,6 +95,7 @@
 #define STB_LOCAL 0
 #define STB_GLOBAL 1
 #define STB_WEAK 2
+#define STN_UNDEF 0
 #define STT_NOTYPE 0
 #define STT_OBJECT 1
 #define STT_FUNC 2
@@ -99,6 +103,8 @@
 #define STT_FILE 4
 #define STT_COMMON 5
 #define STT_TLS 6
+#define VER_FLG_BASE 0x1
+#define VER_FLG_WEAK 0x2
 #define ELF_ST_BIND(x) ((x) >> 4)
 #define ELF_ST_TYPE(x) ((x) & 0xf)
 #define ELF32_ST_BIND(x) ELF_ST_BIND(x)
@@ -233,8 +239,18 @@
 #define SHF_WRITE 0x1
 #define SHF_ALLOC 0x2
 #define SHF_EXECINSTR 0x4
+#define SHF_MERGE 0x10
+#define SHF_STRINGS 0x20
+#define SHF_INFO_LINK 0x40
+#define SHF_LINK_ORDER 0x80
+#define SHF_OS_NONCONFORMING 0x100
+#define SHF_GROUP 0x200
+#define SHF_TLS 0x400
 #define SHF_RELA_LIVEPATCH 0x00100000
 #define SHF_RO_AFTER_INIT 0x00200000
+#define SHF_ORDERED 0x04000000
+#define SHF_EXCLUDE 0x08000000
+#define SHF_MASKOS 0x0ff00000
 #define SHF_MASKPROC 0xf0000000
 #define SHN_UNDEF 0
 #define SHN_LORESERVE 0xff00
@@ -298,86 +314,166 @@
 #ifndef ELF_OSABI
 #define ELF_OSABI ELFOSABI_NONE
 #endif
-#define NT_PRSTATUS 1
-#define NT_PRFPREG 2
-#define NT_PRPSINFO 3
-#define NT_TASKSTRUCT 4
-#define NT_AUXV 6
-#define NT_SIGINFO 0x53494749
-#define NT_FILE 0x46494c45
-#define NT_PRXFPREG 0x46e62b7f
-#define NT_PPC_VMX 0x100
-#define NT_PPC_SPE 0x101
-#define NT_PPC_VSX 0x102
-#define NT_PPC_TAR 0x103
-#define NT_PPC_PPR 0x104
-#define NT_PPC_DSCR 0x105
-#define NT_PPC_EBB 0x106
-#define NT_PPC_PMU 0x107
-#define NT_PPC_TM_CGPR 0x108
-#define NT_PPC_TM_CFPR 0x109
-#define NT_PPC_TM_CVMX 0x10a
-#define NT_PPC_TM_CVSX 0x10b
-#define NT_PPC_TM_SPR 0x10c
-#define NT_PPC_TM_CTAR 0x10d
-#define NT_PPC_TM_CPPR 0x10e
-#define NT_PPC_TM_CDSCR 0x10f
-#define NT_PPC_PKEY 0x110
-#define NT_PPC_DEXCR 0x111
-#define NT_PPC_HASHKEYR 0x112
-#define NT_386_TLS 0x200
-#define NT_386_IOPERM 0x201
-#define NT_X86_XSTATE 0x202
-#define NT_X86_SHSTK 0x204
-#define NT_X86_XSAVE_LAYOUT 0x205
-#define NT_S390_HIGH_GPRS 0x300
-#define NT_S390_TIMER 0x301
-#define NT_S390_TODCMP 0x302
-#define NT_S390_TODPREG 0x303
-#define NT_S390_CTRS 0x304
-#define NT_S390_PREFIX 0x305
-#define NT_S390_LAST_BREAK 0x306
-#define NT_S390_SYSTEM_CALL 0x307
-#define NT_S390_TDB 0x308
-#define NT_S390_VXRS_LOW 0x309
-#define NT_S390_VXRS_HIGH 0x30a
-#define NT_S390_GS_CB 0x30b
-#define NT_S390_GS_BC 0x30c
-#define NT_S390_RI_CB 0x30d
-#define NT_S390_PV_CPU_DATA 0x30e
-#define NT_ARM_VFP 0x400
-#define NT_ARM_TLS 0x401
-#define NT_ARM_HW_BREAK 0x402
-#define NT_ARM_HW_WATCH 0x403
-#define NT_ARM_SYSTEM_CALL 0x404
-#define NT_ARM_SVE 0x405
-#define NT_ARM_PAC_MASK 0x406
-#define NT_ARM_PACA_KEYS 0x407
-#define NT_ARM_PACG_KEYS 0x408
-#define NT_ARM_TAGGED_ADDR_CTRL 0x409
-#define NT_ARM_PAC_ENABLED_KEYS 0x40a
-#define NT_ARM_SSVE 0x40b
-#define NT_ARM_ZA 0x40c
-#define NT_ARM_ZT 0x40d
-#define NT_ARM_FPMR 0x40e
-#define NT_ARM_POE 0x40f
-#define NT_ARM_GCS 0x410
-#define NT_ARC_V2 0x600
-#define NT_VMCOREDD 0x700
-#define NT_MIPS_DSP 0x800
-#define NT_MIPS_FP_MODE 0x801
-#define NT_MIPS_MSA 0x802
-#define NT_RISCV_CSR 0x900
-#define NT_RISCV_VECTOR 0x901
-#define NT_RISCV_TAGGED_ADDR_CTRL 0x902
-#define NT_LOONGARCH_CPUCFG 0xa00
-#define NT_LOONGARCH_CSR 0xa01
-#define NT_LOONGARCH_LSX 0xa02
-#define NT_LOONGARCH_LASX 0xa03
-#define NT_LOONGARCH_LBT 0xa04
-#define NT_LOONGARCH_HW_BREAK 0xa05
-#define NT_LOONGARCH_HW_WATCH 0xa06
+#define NN_GNU_PROPERTY_TYPE_0 "GNU"
 #define NT_GNU_PROPERTY_TYPE_0 5
+#define NN_PRSTATUS "CORE"
+#define NT_PRSTATUS 1
+#define NN_PRFPREG "CORE"
+#define NT_PRFPREG 2
+#define NN_PRPSINFO "CORE"
+#define NT_PRPSINFO 3
+#define NN_TASKSTRUCT "CORE"
+#define NT_TASKSTRUCT 4
+#define NN_AUXV "CORE"
+#define NT_AUXV 6
+#define NN_SIGINFO "CORE"
+#define NT_SIGINFO 0x53494749
+#define NN_FILE "CORE"
+#define NT_FILE 0x46494c45
+#define NN_PRXFPREG "LINUX"
+#define NT_PRXFPREG 0x46e62b7f
+#define NN_PPC_VMX "LINUX"
+#define NT_PPC_VMX 0x100
+#define NN_PPC_SPE "LINUX"
+#define NT_PPC_SPE 0x101
+#define NN_PPC_VSX "LINUX"
+#define NT_PPC_VSX 0x102
+#define NN_PPC_TAR "LINUX"
+#define NT_PPC_TAR 0x103
+#define NN_PPC_PPR "LINUX"
+#define NT_PPC_PPR 0x104
+#define NN_PPC_DSCR "LINUX"
+#define NT_PPC_DSCR 0x105
+#define NN_PPC_EBB "LINUX"
+#define NT_PPC_EBB 0x106
+#define NN_PPC_PMU "LINUX"
+#define NT_PPC_PMU 0x107
+#define NN_PPC_TM_CGPR "LINUX"
+#define NT_PPC_TM_CGPR 0x108
+#define NN_PPC_TM_CFPR "LINUX"
+#define NT_PPC_TM_CFPR 0x109
+#define NN_PPC_TM_CVMX "LINUX"
+#define NT_PPC_TM_CVMX 0x10a
+#define NN_PPC_TM_CVSX "LINUX"
+#define NT_PPC_TM_CVSX 0x10b
+#define NN_PPC_TM_SPR "LINUX"
+#define NT_PPC_TM_SPR 0x10c
+#define NN_PPC_TM_CTAR "LINUX"
+#define NT_PPC_TM_CTAR 0x10d
+#define NN_PPC_TM_CPPR "LINUX"
+#define NT_PPC_TM_CPPR 0x10e
+#define NN_PPC_TM_CDSCR "LINUX"
+#define NT_PPC_TM_CDSCR 0x10f
+#define NN_PPC_PKEY "LINUX"
+#define NT_PPC_PKEY 0x110
+#define NN_PPC_DEXCR "LINUX"
+#define NT_PPC_DEXCR 0x111
+#define NN_PPC_HASHKEYR "LINUX"
+#define NT_PPC_HASHKEYR 0x112
+#define NN_386_TLS "LINUX"
+#define NT_386_TLS 0x200
+#define NN_386_IOPERM "LINUX"
+#define NT_386_IOPERM 0x201
+#define NN_X86_XSTATE "LINUX"
+#define NT_X86_XSTATE 0x202
+#define NN_X86_SHSTK "LINUX"
+#define NT_X86_SHSTK 0x204
+#define NN_X86_XSAVE_LAYOUT "LINUX"
+#define NT_X86_XSAVE_LAYOUT 0x205
+#define NN_S390_HIGH_GPRS "LINUX"
+#define NT_S390_HIGH_GPRS 0x300
+#define NN_S390_TIMER "LINUX"
+#define NT_S390_TIMER 0x301
+#define NN_S390_TODCMP "LINUX"
+#define NT_S390_TODCMP 0x302
+#define NN_S390_TODPREG "LINUX"
+#define NT_S390_TODPREG 0x303
+#define NN_S390_CTRS "LINUX"
+#define NT_S390_CTRS 0x304
+#define NN_S390_PREFIX "LINUX"
+#define NT_S390_PREFIX 0x305
+#define NN_S390_LAST_BREAK "LINUX"
+#define NT_S390_LAST_BREAK 0x306
+#define NN_S390_SYSTEM_CALL "LINUX"
+#define NT_S390_SYSTEM_CALL 0x307
+#define NN_S390_TDB "LINUX"
+#define NT_S390_TDB 0x308
+#define NN_S390_VXRS_LOW "LINUX"
+#define NT_S390_VXRS_LOW 0x309
+#define NN_S390_VXRS_HIGH "LINUX"
+#define NT_S390_VXRS_HIGH 0x30a
+#define NN_S390_GS_CB "LINUX"
+#define NT_S390_GS_CB 0x30b
+#define NN_S390_GS_BC "LINUX"
+#define NT_S390_GS_BC 0x30c
+#define NN_S390_RI_CB "LINUX"
+#define NT_S390_RI_CB 0x30d
+#define NN_S390_PV_CPU_DATA "LINUX"
+#define NT_S390_PV_CPU_DATA 0x30e
+#define NN_ARM_VFP "LINUX"
+#define NT_ARM_VFP 0x400
+#define NN_ARM_TLS "LINUX"
+#define NT_ARM_TLS 0x401
+#define NN_ARM_HW_BREAK "LINUX"
+#define NT_ARM_HW_BREAK 0x402
+#define NN_ARM_HW_WATCH "LINUX"
+#define NT_ARM_HW_WATCH 0x403
+#define NN_ARM_SYSTEM_CALL "LINUX"
+#define NT_ARM_SYSTEM_CALL 0x404
+#define NN_ARM_SVE "LINUX"
+#define NT_ARM_SVE 0x405
+#define NN_ARM_PAC_MASK "LINUX"
+#define NT_ARM_PAC_MASK 0x406
+#define NN_ARM_PACA_KEYS "LINUX"
+#define NT_ARM_PACA_KEYS 0x407
+#define NN_ARM_PACG_KEYS "LINUX"
+#define NT_ARM_PACG_KEYS 0x408
+#define NN_ARM_TAGGED_ADDR_CTRL "LINUX"
+#define NT_ARM_TAGGED_ADDR_CTRL 0x409
+#define NN_ARM_PAC_ENABLED_KEYS "LINUX"
+#define NT_ARM_PAC_ENABLED_KEYS 0x40a
+#define NN_ARM_SSVE "LINUX"
+#define NT_ARM_SSVE 0x40b
+#define NN_ARM_ZA "LINUX"
+#define NT_ARM_ZA 0x40c
+#define NN_ARM_ZT "LINUX"
+#define NT_ARM_ZT 0x40d
+#define NN_ARM_FPMR "LINUX"
+#define NT_ARM_FPMR 0x40e
+#define NN_ARM_POE "LINUX"
+#define NT_ARM_POE 0x40f
+#define NN_ARM_GCS "LINUX"
+#define NT_ARM_GCS 0x410
+#define NN_ARC_V2 "LINUX"
+#define NT_ARC_V2 0x600
+#define NN_VMCOREDD "LINUX"
+#define NT_VMCOREDD 0x700
+#define NN_MIPS_DSP "LINUX"
+#define NT_MIPS_DSP 0x800
+#define NN_MIPS_FP_MODE "LINUX"
+#define NT_MIPS_FP_MODE 0x801
+#define NN_MIPS_MSA "LINUX"
+#define NT_MIPS_MSA 0x802
+#define NN_RISCV_CSR "LINUX"
+#define NT_RISCV_CSR 0x900
+#define NN_RISCV_VECTOR "LINUX"
+#define NT_RISCV_VECTOR 0x901
+#define NN_RISCV_TAGGED_ADDR_CTRL "LINUX"
+#define NT_RISCV_TAGGED_ADDR_CTRL 0x902
+#define NN_LOONGARCH_CPUCFG "LINUX"
+#define NT_LOONGARCH_CPUCFG 0xa00
+#define NN_LOONGARCH_CSR "LINUX"
+#define NT_LOONGARCH_CSR 0xa01
+#define NN_LOONGARCH_LSX "LINUX"
+#define NT_LOONGARCH_LSX 0xa02
+#define NN_LOONGARCH_LASX "LINUX"
+#define NT_LOONGARCH_LASX 0xa03
+#define NN_LOONGARCH_LBT "LINUX"
+#define NT_LOONGARCH_LBT 0xa04
+#define NN_LOONGARCH_HW_BREAK "LINUX"
+#define NT_LOONGARCH_HW_BREAK 0xa05
+#define NN_LOONGARCH_HW_WATCH "LINUX"
+#define NT_LOONGARCH_HW_WATCH 0xa06
 typedef struct elf32_note {
   Elf32_Word n_namesz;
   Elf32_Word n_descsz;
@@ -390,4 +486,30 @@
 } Elf64_Nhdr;
 #define GNU_PROPERTY_AARCH64_FEATURE_1_AND 0xc0000000
 #define GNU_PROPERTY_AARCH64_FEATURE_1_BTI (1U << 0)
+typedef struct {
+  Elf32_Half vd_version;
+  Elf32_Half vd_flags;
+  Elf32_Half vd_ndx;
+  Elf32_Half vd_cnt;
+  Elf32_Word vd_hash;
+  Elf32_Word vd_aux;
+  Elf32_Word vd_next;
+} Elf32_Verdef;
+typedef struct {
+  Elf64_Half vd_version;
+  Elf64_Half vd_flags;
+  Elf64_Half vd_ndx;
+  Elf64_Half vd_cnt;
+  Elf64_Word vd_hash;
+  Elf64_Word vd_aux;
+  Elf64_Word vd_next;
+} Elf64_Verdef;
+typedef struct {
+  Elf32_Word vda_name;
+  Elf32_Word vda_next;
+} Elf32_Verdaux;
+typedef struct {
+  Elf64_Word vda_name;
+  Elf64_Word vda_next;
+} Elf64_Verdaux;
 #endif
diff --git a/libc/kernel/uapi/linux/errqueue.h b/libc/kernel/uapi/linux/errqueue.h
index 790ae1e..7678c51 100644
--- a/libc/kernel/uapi/linux/errqueue.h
+++ b/libc/kernel/uapi/linux/errqueue.h
@@ -48,5 +48,6 @@
   SCM_TSTAMP_SND,
   SCM_TSTAMP_SCHED,
   SCM_TSTAMP_ACK,
+  SCM_TSTAMP_COMPLETION,
 };
 #endif
diff --git a/libc/kernel/uapi/linux/ethtool.h b/libc/kernel/uapi/linux/ethtool.h
index d47e16e..dffccb9 100644
--- a/libc/kernel/uapi/linux/ethtool.h
+++ b/libc/kernel/uapi/linux/ethtool.h
@@ -808,6 +808,24 @@
   ETHTOOL_LINK_MODE_10baseT1S_Half_BIT = 100,
   ETHTOOL_LINK_MODE_10baseT1S_P2MP_Half_BIT = 101,
   ETHTOOL_LINK_MODE_10baseT1BRR_Full_BIT = 102,
+  ETHTOOL_LINK_MODE_200000baseCR_Full_BIT = 103,
+  ETHTOOL_LINK_MODE_200000baseKR_Full_BIT = 104,
+  ETHTOOL_LINK_MODE_200000baseDR_Full_BIT = 105,
+  ETHTOOL_LINK_MODE_200000baseDR_2_Full_BIT = 106,
+  ETHTOOL_LINK_MODE_200000baseSR_Full_BIT = 107,
+  ETHTOOL_LINK_MODE_200000baseVR_Full_BIT = 108,
+  ETHTOOL_LINK_MODE_400000baseCR2_Full_BIT = 109,
+  ETHTOOL_LINK_MODE_400000baseKR2_Full_BIT = 110,
+  ETHTOOL_LINK_MODE_400000baseDR2_Full_BIT = 111,
+  ETHTOOL_LINK_MODE_400000baseDR2_2_Full_BIT = 112,
+  ETHTOOL_LINK_MODE_400000baseSR2_Full_BIT = 113,
+  ETHTOOL_LINK_MODE_400000baseVR2_Full_BIT = 114,
+  ETHTOOL_LINK_MODE_800000baseCR4_Full_BIT = 115,
+  ETHTOOL_LINK_MODE_800000baseKR4_Full_BIT = 116,
+  ETHTOOL_LINK_MODE_800000baseDR4_Full_BIT = 117,
+  ETHTOOL_LINK_MODE_800000baseDR4_2_Full_BIT = 118,
+  ETHTOOL_LINK_MODE_800000baseSR4_Full_BIT = 119,
+  ETHTOOL_LINK_MODE_800000baseVR4_Full_BIT = 120,
   __ETHTOOL_LINK_MODE_MASK_NBITS
 };
 #define __ETHTOOL_LINK_MODE_LEGACY_MASK(base_name) (1UL << (ETHTOOL_LINK_MODE_ ##base_name ##_BIT))
@@ -937,6 +955,7 @@
 #define WAKE_FILTER (1 << 7)
 #define WOL_MODE_COUNT 8
 #define RXH_XFRM_SYM_XOR (1 << 0)
+#define RXH_XFRM_SYM_OR_XOR (1 << 1)
 #define RXH_XFRM_NO_CHANGE 0xff
 #define TCP_V4_FLOW 0x01
 #define UDP_V4_FLOW 0x02
diff --git a/libc/kernel/uapi/linux/ethtool_netlink_generated.h b/libc/kernel/uapi/linux/ethtool_netlink_generated.h
index 789886f..9e6be25 100644
--- a/libc/kernel/uapi/linux/ethtool_netlink_generated.h
+++ b/libc/kernel/uapi/linux/ethtool_netlink_generated.h
@@ -20,10 +20,6 @@
   ETHTOOL_FLAG_OMIT_REPLY = 2,
   ETHTOOL_FLAG_STATS = 4,
 };
-enum {
-  ETHTOOL_PHY_UPSTREAM_TYPE_MAC,
-  ETHTOOL_PHY_UPSTREAM_TYPE_PHY,
-};
 enum ethtool_tcp_data_split {
   ETHTOOL_TCP_DATA_SPLIT_UNKNOWN,
   ETHTOOL_TCP_DATA_SPLIT_DISABLED,
diff --git a/libc/kernel/uapi/linux/f2fs.h b/libc/kernel/uapi/linux/f2fs.h
index ca250fa..413c90a 100644
--- a/libc/kernel/uapi/linux/f2fs.h
+++ b/libc/kernel/uapi/linux/f2fs.h
@@ -35,6 +35,7 @@
 #define F2FS_IOC_COMPRESS_FILE _IO(F2FS_IOCTL_MAGIC, 24)
 #define F2FS_IOC_START_ATOMIC_REPLACE _IO(F2FS_IOCTL_MAGIC, 25)
 #define F2FS_IOC_GET_DEV_ALIAS_FILE _IOR(F2FS_IOCTL_MAGIC, 26, __u32)
+#define F2FS_IOC_IO_PRIO _IOW(F2FS_IOCTL_MAGIC, 27, __u32)
 #define F2FS_IOC_SHUTDOWN _IOR('X', 125, __u32)
 #define F2FS_GOING_DOWN_FULLSYNC 0x0
 #define F2FS_GOING_DOWN_METASYNC 0x1
@@ -44,6 +45,10 @@
 #define F2FS_TRIM_FILE_DISCARD 0x1
 #define F2FS_TRIM_FILE_ZEROOUT 0x2
 #define F2FS_TRIM_FILE_MASK 0x3
+enum {
+  F2FS_IOPRIO_WRITE = 1,
+  F2FS_IOPRIO_MAX,
+};
 struct f2fs_gc_range {
   __u32 sync;
   __u64 start;
diff --git a/libc/kernel/uapi/linux/fanotify.h b/libc/kernel/uapi/linux/fanotify.h
index cdf1902..29b6526 100644
--- a/libc/kernel/uapi/linux/fanotify.h
+++ b/libc/kernel/uapi/linux/fanotify.h
@@ -26,6 +26,8 @@
 #define FAN_ACCESS_PERM 0x00020000
 #define FAN_OPEN_EXEC_PERM 0x00040000
 #define FAN_PRE_ACCESS 0x00100000
+#define FAN_MNT_ATTACH 0x01000000
+#define FAN_MNT_DETACH 0x02000000
 #define FAN_EVENT_ON_CHILD 0x08000000
 #define FAN_RENAME 0x10000000
 #define FAN_ONDIR 0x40000000
@@ -47,6 +49,7 @@
 #define FAN_REPORT_NAME 0x00000800
 #define FAN_REPORT_TARGET_FID 0x00001000
 #define FAN_REPORT_FD_ERROR 0x00002000
+#define FAN_REPORT_MNT 0x00004000
 #define FAN_REPORT_DFID_NAME (FAN_REPORT_DIR_FID | FAN_REPORT_NAME)
 #define FAN_REPORT_DFID_NAME_TARGET (FAN_REPORT_DFID_NAME | FAN_REPORT_FID | FAN_REPORT_TARGET_FID)
 #define FAN_ALL_INIT_FLAGS (FAN_CLOEXEC | FAN_NONBLOCK | FAN_ALL_CLASS_BITS | FAN_UNLIMITED_QUEUE | FAN_UNLIMITED_MARKS)
@@ -62,6 +65,7 @@
 #define FAN_MARK_INODE 0x00000000
 #define FAN_MARK_MOUNT 0x00000010
 #define FAN_MARK_FILESYSTEM 0x00000100
+#define FAN_MARK_MNTNS 0x00000110
 #define FAN_MARK_IGNORE_SURV (FAN_MARK_IGNORE | FAN_MARK_IGNORED_SURV_MODIFY)
 #define FAN_ALL_MARK_FLAGS (FAN_MARK_ADD | FAN_MARK_REMOVE | FAN_MARK_DONT_FOLLOW | FAN_MARK_ONLYDIR | FAN_MARK_MOUNT | FAN_MARK_IGNORED_MASK | FAN_MARK_IGNORED_SURV_MODIFY | FAN_MARK_FLUSH)
 #define FAN_ALL_EVENTS (FAN_ACCESS | FAN_MODIFY | FAN_CLOSE | FAN_OPEN)
@@ -83,6 +87,7 @@
 #define FAN_EVENT_INFO_TYPE_PIDFD 4
 #define FAN_EVENT_INFO_TYPE_ERROR 5
 #define FAN_EVENT_INFO_TYPE_RANGE 6
+#define FAN_EVENT_INFO_TYPE_MNT 7
 #define FAN_EVENT_INFO_TYPE_OLD_DFID_NAME 10
 #define FAN_EVENT_INFO_TYPE_NEW_DFID_NAME 12
 struct fanotify_event_info_header {
@@ -110,6 +115,10 @@
   __u64 offset;
   __u64 count;
 };
+struct fanotify_event_info_mnt {
+  struct fanotify_event_info_header hdr;
+  __u64 mnt_id;
+};
 #define FAN_RESPONSE_INFO_NONE 0
 #define FAN_RESPONSE_INFO_AUDIT_RULE 1
 struct fanotify_response {
diff --git a/libc/kernel/uapi/linux/fib_rules.h b/libc/kernel/uapi/linux/fib_rules.h
index b33ac01..845e1ed 100644
--- a/libc/kernel/uapi/linux/fib_rules.h
+++ b/libc/kernel/uapi/linux/fib_rules.h
@@ -64,6 +64,9 @@
   FRA_DSCP,
   FRA_FLOWLABEL,
   FRA_FLOWLABEL_MASK,
+  FRA_SPORT_MASK,
+  FRA_DPORT_MASK,
+  FRA_DSCP_MASK,
   __FRA_MAX
 };
 #define FRA_MAX (__FRA_MAX - 1)
diff --git a/libc/kernel/uapi/linux/fuse.h b/libc/kernel/uapi/linux/fuse.h
index ea9b915..ea0e44c 100644
--- a/libc/kernel/uapi/linux/fuse.h
+++ b/libc/kernel/uapi/linux/fuse.h
@@ -8,7 +8,7 @@
 #define _LINUX_FUSE_H
 #include <stdint.h>
 #define FUSE_KERNEL_VERSION 7
-#define FUSE_KERNEL_MINOR_VERSION 42
+#define FUSE_KERNEL_MINOR_VERSION 43
 #define FUSE_ROOT_ID 1
 struct fuse_attr {
   uint64_t ino;
@@ -137,6 +137,7 @@
 #define FUSE_DIRECT_IO_RELAX FUSE_DIRECT_IO_ALLOW_MMAP
 #define FUSE_ALLOW_IDMAP (1ULL << 40)
 #define FUSE_OVER_IO_URING (1ULL << 41)
+#define FUSE_REQUEST_TIMEOUT (1ULL << 42)
 #define CUSE_UNRESTRICTED_IOCTL (1 << 0)
 #define FUSE_RELEASE_FLUSH (1 << 0)
 #define FUSE_RELEASE_FLOCK_UNLOCK (1 << 1)
@@ -430,7 +431,8 @@
   uint16_t map_alignment;
   uint32_t flags2;
   uint32_t max_stack_depth;
-  uint32_t unused[6];
+  uint16_t request_timeout;
+  uint16_t unused[11];
 };
 #define CUSE_INIT_INFO_MAX 4096
 struct cuse_init_in {
diff --git a/libc/kernel/uapi/linux/if_cablemodem.h b/libc/kernel/uapi/linux/if_cablemodem.h
deleted file mode 100644
index 79b3017..0000000
--- a/libc/kernel/uapi/linux/if_cablemodem.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * This file is auto-generated. Modifications will be lost.
- *
- * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
- * for more information.
- */
-#ifndef _LINUX_CABLEMODEM_H_
-#define _LINUX_CABLEMODEM_H_
-#define SIOCGCMSTATS (SIOCDEVPRIVATE + 0)
-#define SIOCGCMFIRMWARE (SIOCDEVPRIVATE + 1)
-#define SIOCGCMFREQUENCY (SIOCDEVPRIVATE + 2)
-#define SIOCSCMFREQUENCY (SIOCDEVPRIVATE + 3)
-#define SIOCGCMPIDS (SIOCDEVPRIVATE + 4)
-#define SIOCSCMPIDS (SIOCDEVPRIVATE + 5)
-#endif
diff --git a/libc/kernel/uapi/linux/if_link.h b/libc/kernel/uapi/linux/if_link.h
index 8e6d03a..6e9c1bb 100644
--- a/libc/kernel/uapi/linux/if_link.h
+++ b/libc/kernel/uapi/linux/if_link.h
@@ -159,6 +159,7 @@
   IFLA_GRO_IPV4_MAX_SIZE,
   IFLA_DPLL_PIN,
   IFLA_MAX_PACING_OFFLOAD_HORIZON,
+  IFLA_NETNS_IMMUTABLE,
   __IFLA_MAX
 };
 #define IFLA_MAX (__IFLA_MAX - 1)
@@ -583,6 +584,7 @@
   IFLA_GENEVE_TTL_INHERIT,
   IFLA_GENEVE_DF,
   IFLA_GENEVE_INNER_PROTO_INHERIT,
+  IFLA_GENEVE_PORT_RANGE,
   __IFLA_GENEVE_MAX
 };
 #define IFLA_GENEVE_MAX (__IFLA_GENEVE_MAX - 1)
@@ -593,6 +595,10 @@
   __GENEVE_DF_END,
   GENEVE_DF_MAX = __GENEVE_DF_END - 1,
 };
+struct ifla_geneve_port_range {
+  __be16 low;
+  __be16 high;
+};
 enum {
   IFLA_BAREUDP_UNSPEC,
   IFLA_BAREUDP_PORT,
diff --git a/libc/kernel/uapi/linux/if_xdp.h b/libc/kernel/uapi/linux/if_xdp.h
index 7201e06..2b6682b 100644
--- a/libc/kernel/uapi/linux/if_xdp.h
+++ b/libc/kernel/uapi/linux/if_xdp.h
@@ -71,12 +71,14 @@
 #define XSK_UNALIGNED_BUF_ADDR_MASK ((1ULL << XSK_UNALIGNED_BUF_OFFSET_SHIFT) - 1)
 #define XDP_TXMD_FLAGS_TIMESTAMP (1 << 0)
 #define XDP_TXMD_FLAGS_CHECKSUM (1 << 1)
+#define XDP_TXMD_FLAGS_LAUNCH_TIME (1 << 2)
 struct xsk_tx_metadata {
   __u64 flags;
   union {
     struct {
       __u16 csum_start;
       __u16 csum_offset;
+      __u64 launch_time;
     } request;
     struct {
       __u64 tx_timestamp;
diff --git a/libc/kernel/uapi/linux/iio/types.h b/libc/kernel/uapi/linux/iio/types.h
index 5e87329..6bff5ec 100644
--- a/libc/kernel/uapi/linux/iio/types.h
+++ b/libc/kernel/uapi/linux/iio/types.h
@@ -112,6 +112,7 @@
   IIO_EV_TYPE_CHANGE,
   IIO_EV_TYPE_MAG_REFERENCED,
   IIO_EV_TYPE_GESTURE,
+  IIO_EV_TYPE_FAULT,
 };
 enum iio_event_direction {
   IIO_EV_DIR_EITHER,
@@ -120,5 +121,6 @@
   IIO_EV_DIR_NONE,
   IIO_EV_DIR_SINGLETAP,
   IIO_EV_DIR_DOUBLETAP,
+  IIO_EV_DIR_FAULT_OPENWIRE,
 };
 #endif
diff --git a/libc/kernel/uapi/linux/io_uring.h b/libc/kernel/uapi/linux/io_uring.h
index 8f699c3..56fb826 100644
--- a/libc/kernel/uapi/linux/io_uring.h
+++ b/libc/kernel/uapi/linux/io_uring.h
@@ -70,6 +70,7 @@
   union {
     __s32 splice_fd_in;
     __u32 file_index;
+    __u32 zcrx_ifq_idx;
     __u32 optlen;
     struct {
       __u16 addr_len;
@@ -192,6 +193,10 @@
   IORING_OP_FTRUNCATE,
   IORING_OP_BIND,
   IORING_OP_LISTEN,
+  IORING_OP_RECV_ZC,
+  IORING_OP_EPOLL_WAIT,
+  IORING_OP_READV_FIXED,
+  IORING_OP_WRITEV_FIXED,
   IORING_OP_LAST,
 };
 #define IORING_URING_CMD_FIXED (1U << 0)
@@ -288,6 +293,7 @@
 #define IORING_ENTER_REGISTERED_RING (1U << 4)
 #define IORING_ENTER_ABS_TIMER (1U << 5)
 #define IORING_ENTER_EXT_ARG_REG (1U << 6)
+#define IORING_ENTER_NO_IOWAIT (1U << 7)
 struct io_uring_params {
   __u32 sq_entries;
   __u32 cq_entries;
@@ -317,6 +323,7 @@
 #define IORING_FEAT_RECVSEND_BUNDLE (1U << 14)
 #define IORING_FEAT_MIN_TIMEOUT (1U << 15)
 #define IORING_FEAT_RW_ATTR (1U << 16)
+#define IORING_FEAT_NO_IOWAIT (1U << 17)
 enum io_uring_register_op {
   IORING_REGISTER_BUFFERS = 0,
   IORING_UNREGISTER_BUFFERS = 1,
@@ -350,6 +357,7 @@
   IORING_REGISTER_CLOCK = 29,
   IORING_REGISTER_CLONE_BUFFERS = 30,
   IORING_REGISTER_SEND_MSG_RING = 31,
+  IORING_REGISTER_ZCRX_IFQ = 32,
   IORING_REGISTER_RESIZE_RINGS = 33,
   IORING_REGISTER_MEM_REGION = 34,
   IORING_REGISTER_LAST,
@@ -547,6 +555,44 @@
   SOCKET_URING_OP_GETSOCKOPT,
   SOCKET_URING_OP_SETSOCKOPT,
 };
+struct io_uring_zcrx_rqe {
+  __u64 off;
+  __u32 len;
+  __u32 __pad;
+};
+struct io_uring_zcrx_cqe {
+  __u64 off;
+  __u64 __pad;
+};
+#define IORING_ZCRX_AREA_SHIFT 48
+#define IORING_ZCRX_AREA_MASK (~(((__u64) 1 << IORING_ZCRX_AREA_SHIFT) - 1))
+struct io_uring_zcrx_offsets {
+  __u32 head;
+  __u32 tail;
+  __u32 rqes;
+  __u32 __resv2;
+  __u64 __resv[2];
+};
+struct io_uring_zcrx_area_reg {
+  __u64 addr;
+  __u64 len;
+  __u64 rq_area_token;
+  __u32 flags;
+  __u32 __resv1;
+  __u64 __resv2[2];
+};
+struct io_uring_zcrx_ifq_reg {
+  __u32 if_idx;
+  __u32 if_rxq;
+  __u32 rq_entries;
+  __u32 flags;
+  __u64 area_ptr;
+  __u64 region_ptr;
+  struct io_uring_zcrx_offsets offsets;
+  __u32 zcrx_id;
+  __u32 __resv2;
+  __u64 __resv[3];
+};
 #ifdef __cplusplus
 }
 #endif
diff --git a/libc/kernel/uapi/linux/iommufd.h b/libc/kernel/uapi/linux/iommufd.h
index 5deb932..7dd1f94 100644
--- a/libc/kernel/uapi/linux/iommufd.h
+++ b/libc/kernel/uapi/linux/iommufd.h
@@ -30,6 +30,7 @@
   IOMMUFD_CMD_VIOMMU_ALLOC = 0x90,
   IOMMUFD_CMD_VDEVICE_ALLOC = 0x91,
   IOMMUFD_CMD_IOAS_CHANGE_PROCESS = 0x92,
+  IOMMUFD_CMD_VEVENTQ_ALLOC = 0x93,
 };
 struct iommu_destroy {
   __u32 size;
@@ -196,6 +197,8 @@
 };
 enum iommufd_hw_capabilities {
   IOMMU_HW_CAP_DIRTY_TRACKING = 1 << 0,
+  IOMMU_HW_CAP_PCI_PASID_EXEC = 1 << 1,
+  IOMMU_HW_CAP_PCI_PASID_PRIV = 1 << 2,
 };
 struct iommu_hw_info {
   __u32 size;
@@ -204,7 +207,8 @@
   __u32 data_len;
   __aligned_u64 data_uptr;
   __u32 out_data_type;
-  __u32 __reserved;
+  __u8 out_max_pasid_log2;
+  __u8 __reserved[3];
   __aligned_u64 out_capabilities;
 };
 #define IOMMU_GET_HW_INFO _IO(IOMMUFD_TYPE, IOMMUFD_CMD_GET_HW_INFO)
@@ -320,4 +324,29 @@
   __u32 __reserved;
 };
 #define IOMMU_IOAS_CHANGE_PROCESS _IO(IOMMUFD_TYPE, IOMMUFD_CMD_IOAS_CHANGE_PROCESS)
+enum iommu_veventq_flag {
+  IOMMU_VEVENTQ_FLAG_LOST_EVENTS = (1U << 0),
+};
+struct iommufd_vevent_header {
+  __u32 flags;
+  __u32 sequence;
+};
+enum iommu_veventq_type {
+  IOMMU_VEVENTQ_TYPE_DEFAULT = 0,
+  IOMMU_VEVENTQ_TYPE_ARM_SMMUV3 = 1,
+};
+struct iommu_vevent_arm_smmuv3 {
+  __aligned_le64 evt[4];
+};
+struct iommu_veventq_alloc {
+  __u32 size;
+  __u32 flags;
+  __u32 viommu_id;
+  __u32 type;
+  __u32 veventq_depth;
+  __u32 out_veventq_id;
+  __u32 out_veventq_fd;
+  __u32 __reserved;
+};
+#define IOMMU_VEVENTQ_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_VEVENTQ_ALLOC)
 #endif
diff --git a/libc/kernel/uapi/linux/kfd_ioctl.h b/libc/kernel/uapi/linux/kfd_ioctl.h
index c56a850..7763573 100644
--- a/libc/kernel/uapi/linux/kfd_ioctl.h
+++ b/libc/kernel/uapi/linux/kfd_ioctl.h
@@ -9,7 +9,7 @@
 #include <drm/drm.h>
 #include <linux/ioctl.h>
 #define KFD_IOCTL_MAJOR_VERSION 1
-#define KFD_IOCTL_MINOR_VERSION 17
+#define KFD_IOCTL_MINOR_VERSION 18
 struct kfd_ioctl_get_version_args {
   __u32 major_version;
   __u32 minor_version;
@@ -21,6 +21,7 @@
 #define KFD_IOC_QUEUE_TYPE_SDMA_BY_ENG_ID 0x4
 #define KFD_MAX_QUEUE_PERCENTAGE 100
 #define KFD_MAX_QUEUE_PRIORITY 15
+#define KFD_MIN_QUEUE_RING_SIZE 1024
 struct kfd_ioctl_create_queue_args {
   __u64 ring_base_address;
   __u64 write_pointer_address;
@@ -95,13 +96,14 @@
 };
 #define KFD_IOC_CACHE_POLICY_COHERENT 0
 #define KFD_IOC_CACHE_POLICY_NONCOHERENT 1
+#define KFD_PROC_FLAG_MFMA_HIGH_PRECISION (1 << 0)
 struct kfd_ioctl_set_memory_policy_args {
   __u64 alternate_aperture_base;
   __u64 alternate_aperture_size;
   __u32 gpu_id;
   __u32 default_policy;
   __u32 alternate_policy;
-  __u32 pad;
+  __u32 misc_process_flag;
 };
 struct kfd_ioctl_get_clock_counters_args {
   __u64 gpu_clock_counter;
diff --git a/libc/kernel/uapi/linux/kfd_sysfs.h b/libc/kernel/uapi/linux/kfd_sysfs.h
index 8541bf7..119a8de 100644
--- a/libc/kernel/uapi/linux/kfd_sysfs.h
+++ b/libc/kernel/uapi/linux/kfd_sysfs.h
@@ -38,6 +38,8 @@
 #define HSA_CAP_TRAP_DEBUG_PRECISE_ALU_OPERATIONS_SUPPORTED 0x40000000
 #define HSA_CAP_PER_QUEUE_RESET_SUPPORTED 0x80000000
 #define HSA_CAP_RESERVED 0x000f8000
+#define HSA_CAP2_PER_SDMA_QUEUE_RESET_SUPPORTED 0x00000001
+#define HSA_CAP2_RESERVED 0xfffffffe
 #define HSA_DBG_WATCH_ADDR_MASK_LO_BIT_MASK 0x0000000f
 #define HSA_DBG_WATCH_ADDR_MASK_LO_BIT_SHIFT 0
 #define HSA_DBG_WATCH_ADDR_MASK_HI_BIT_MASK 0x000003f0
diff --git a/libc/kernel/uapi/linux/kvm.h b/libc/kernel/uapi/linux/kvm.h
index 4775e7e..99b9b99 100644
--- a/libc/kernel/uapi/linux/kvm.h
+++ b/libc/kernel/uapi/linux/kvm.h
@@ -722,6 +722,7 @@
 #define KVM_CAP_PRE_FAULT_MEMORY 236
 #define KVM_CAP_X86_APIC_BUS_CYCLES_NS 237
 #define KVM_CAP_X86_GUEST_MODE 238
+#define KVM_CAP_ARM_WRITABLE_IMP_ID_REGS 239
 struct kvm_irq_routing_irqchip {
   __u32 irqchip;
   __u32 pin;
diff --git a/libc/kernel/uapi/linux/landlock.h b/libc/kernel/uapi/linux/landlock.h
index 8f83780..f99e4ba 100644
--- a/libc/kernel/uapi/linux/landlock.h
+++ b/libc/kernel/uapi/linux/landlock.h
@@ -13,6 +13,10 @@
   __u64 scoped;
 };
 #define LANDLOCK_CREATE_RULESET_VERSION (1U << 0)
+#define LANDLOCK_CREATE_RULESET_ERRATA (1U << 1)
+#define LANDLOCK_RESTRICT_SELF_LOG_SAME_EXEC_OFF (1U << 0)
+#define LANDLOCK_RESTRICT_SELF_LOG_NEW_EXEC_ON (1U << 1)
+#define LANDLOCK_RESTRICT_SELF_LOG_SUBDOMAINS_OFF (1U << 2)
 enum landlock_rule_type {
   LANDLOCK_RULE_PATH_BENEATH = 1,
   LANDLOCK_RULE_NET_PORT,
diff --git a/libc/kernel/uapi/linux/lockd_netlink.h b/libc/kernel/uapi/linux/lockd_netlink.h
new file mode 100644
index 0000000..7510fd3
--- /dev/null
+++ b/libc/kernel/uapi/linux/lockd_netlink.h
@@ -0,0 +1,24 @@
+/*
+ * This file is auto-generated. Modifications will be lost.
+ *
+ * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
+ * for more information.
+ */
+#ifndef _UAPI_LINUX_LOCKD_NETLINK_H
+#define _UAPI_LINUX_LOCKD_NETLINK_H
+#define LOCKD_FAMILY_NAME "lockd"
+#define LOCKD_FAMILY_VERSION 1
+enum {
+  LOCKD_A_SERVER_GRACETIME = 1,
+  LOCKD_A_SERVER_TCP_PORT,
+  LOCKD_A_SERVER_UDP_PORT,
+  __LOCKD_A_SERVER_MAX,
+  LOCKD_A_SERVER_MAX = (__LOCKD_A_SERVER_MAX - 1)
+};
+enum {
+  LOCKD_CMD_SERVER_SET = 1,
+  LOCKD_CMD_SERVER_GET,
+  __LOCKD_CMD_MAX,
+  LOCKD_CMD_MAX = (__LOCKD_CMD_MAX - 1)
+};
+#endif
diff --git a/libc/kernel/uapi/linux/mount.h b/libc/kernel/uapi/linux/mount.h
index b21687e..20b6297 100644
--- a/libc/kernel/uapi/linux/mount.h
+++ b/libc/kernel/uapi/linux/mount.h
@@ -115,7 +115,12 @@
   __u32 opt_array;
   __u32 opt_sec_num;
   __u32 opt_sec_array;
-  __u64 __spare2[46];
+  __u64 supported_mask;
+  __u32 mnt_uidmap_num;
+  __u32 mnt_uidmap;
+  __u32 mnt_gidmap_num;
+  __u32 mnt_gidmap;
+  __u64 __spare2[43];
   char str[];
 };
 struct mnt_id_req {
@@ -139,6 +144,9 @@
 #define STATMOUNT_SB_SOURCE 0x00000200U
 #define STATMOUNT_OPT_ARRAY 0x00000400U
 #define STATMOUNT_OPT_SEC_ARRAY 0x00000800U
+#define STATMOUNT_SUPPORTED_MASK 0x00001000U
+#define STATMOUNT_MNT_UIDMAP 0x00002000U
+#define STATMOUNT_MNT_GIDMAP 0x00004000U
 #define LSMT_ROOT 0xffffffffffffffff
 #define LISTMOUNT_REVERSE (1 << 0)
 #endif
diff --git a/libc/kernel/uapi/linux/mshv.h b/libc/kernel/uapi/linux/mshv.h
new file mode 100644
index 0000000..7bace49
--- /dev/null
+++ b/libc/kernel/uapi/linux/mshv.h
@@ -0,0 +1,147 @@
+/*
+ * This file is auto-generated. Modifications will be lost.
+ *
+ * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
+ * for more information.
+ */
+#ifndef _UAPI_LINUX_MSHV_H
+#define _UAPI_LINUX_MSHV_H
+#include <linux/types.h>
+#define MSHV_IOCTL 0xB8
+enum {
+  MSHV_PT_BIT_LAPIC,
+  MSHV_PT_BIT_X2APIC,
+  MSHV_PT_BIT_GPA_SUPER_PAGES,
+  MSHV_PT_BIT_COUNT,
+};
+#define MSHV_PT_FLAGS_MASK ((1 << MSHV_PT_BIT_COUNT) - 1)
+enum {
+  MSHV_PT_ISOLATION_NONE,
+  MSHV_PT_ISOLATION_COUNT,
+};
+struct mshv_create_partition {
+  __u64 pt_flags;
+  __u64 pt_isolation;
+};
+#define MSHV_CREATE_PARTITION _IOW(MSHV_IOCTL, 0x00, struct mshv_create_partition)
+struct mshv_create_vp {
+  __u32 vp_index;
+};
+enum {
+  MSHV_SET_MEM_BIT_WRITABLE,
+  MSHV_SET_MEM_BIT_EXECUTABLE,
+  MSHV_SET_MEM_BIT_UNMAP,
+  MSHV_SET_MEM_BIT_COUNT
+};
+#define MSHV_SET_MEM_FLAGS_MASK ((1 << MSHV_SET_MEM_BIT_COUNT) - 1)
+#define MSHV_HV_PAGE_SIZE 0x1000
+struct mshv_user_mem_region {
+  __u64 size;
+  __u64 guest_pfn;
+  __u64 userspace_addr;
+  __u8 flags;
+  __u8 rsvd[7];
+};
+enum {
+  MSHV_IRQFD_BIT_DEASSIGN,
+  MSHV_IRQFD_BIT_RESAMPLE,
+  MSHV_IRQFD_BIT_COUNT,
+};
+#define MSHV_IRQFD_FLAGS_MASK ((1 << MSHV_IRQFD_BIT_COUNT) - 1)
+struct mshv_user_irqfd {
+  __s32 fd;
+  __s32 resamplefd;
+  __u32 gsi;
+  __u32 flags;
+};
+enum {
+  MSHV_IOEVENTFD_BIT_DATAMATCH,
+  MSHV_IOEVENTFD_BIT_PIO,
+  MSHV_IOEVENTFD_BIT_DEASSIGN,
+  MSHV_IOEVENTFD_BIT_COUNT,
+};
+#define MSHV_IOEVENTFD_FLAGS_MASK ((1 << MSHV_IOEVENTFD_BIT_COUNT) - 1)
+struct mshv_user_ioeventfd {
+  __u64 datamatch;
+  __u64 addr;
+  __u32 len;
+  __s32 fd;
+  __u32 flags;
+  __u8 rsvd[4];
+};
+struct mshv_user_irq_entry {
+  __u32 gsi;
+  __u32 address_lo;
+  __u32 address_hi;
+  __u32 data;
+};
+struct mshv_user_irq_table {
+  __u32 nr;
+  __u32 rsvd;
+  struct mshv_user_irq_entry entries[];
+};
+enum {
+  MSHV_GPAP_ACCESS_TYPE_ACCESSED,
+  MSHV_GPAP_ACCESS_TYPE_DIRTY,
+  MSHV_GPAP_ACCESS_TYPE_COUNT
+};
+enum {
+  MSHV_GPAP_ACCESS_OP_NOOP,
+  MSHV_GPAP_ACCESS_OP_CLEAR,
+  MSHV_GPAP_ACCESS_OP_SET,
+  MSHV_GPAP_ACCESS_OP_COUNT
+};
+struct mshv_gpap_access_bitmap {
+  __u8 access_type;
+  __u8 access_op;
+  __u8 rsvd[6];
+  __u64 page_count;
+  __u64 gpap_base;
+  __u64 bitmap_ptr;
+};
+struct mshv_root_hvcall {
+  __u16 code;
+  __u16 reps;
+  __u16 in_sz;
+  __u16 out_sz;
+  __u16 status;
+  __u8 rsvd[6];
+  __u64 in_ptr;
+  __u64 out_ptr;
+};
+#define MSHV_INITIALIZE_PARTITION _IO(MSHV_IOCTL, 0x00)
+#define MSHV_CREATE_VP _IOW(MSHV_IOCTL, 0x01, struct mshv_create_vp)
+#define MSHV_SET_GUEST_MEMORY _IOW(MSHV_IOCTL, 0x02, struct mshv_user_mem_region)
+#define MSHV_IRQFD _IOW(MSHV_IOCTL, 0x03, struct mshv_user_irqfd)
+#define MSHV_IOEVENTFD _IOW(MSHV_IOCTL, 0x04, struct mshv_user_ioeventfd)
+#define MSHV_SET_MSI_ROUTING _IOW(MSHV_IOCTL, 0x05, struct mshv_user_irq_table)
+#define MSHV_GET_GPAP_ACCESS_BITMAP _IOWR(MSHV_IOCTL, 0x06, struct mshv_gpap_access_bitmap)
+#define MSHV_ROOT_HVCALL _IOWR(MSHV_IOCTL, 0x07, struct mshv_root_hvcall)
+#define MSHV_RUN_VP_BUF_SZ 256
+enum {
+  MSHV_VP_MMAP_OFFSET_REGISTERS,
+  MSHV_VP_MMAP_OFFSET_INTERCEPT_MESSAGE,
+  MSHV_VP_MMAP_OFFSET_GHCB,
+  MSHV_VP_MMAP_OFFSET_COUNT
+};
+struct mshv_run_vp {
+  __u8 msg_buf[MSHV_RUN_VP_BUF_SZ];
+};
+enum {
+  MSHV_VP_STATE_LAPIC,
+  MSHV_VP_STATE_XSAVE,
+  MSHV_VP_STATE_SIMP,
+  MSHV_VP_STATE_SIEFP,
+  MSHV_VP_STATE_SYNTHETIC_TIMERS,
+  MSHV_VP_STATE_COUNT,
+};
+struct mshv_get_set_vp_state {
+  __u8 type;
+  __u8 rsvd[3];
+  __u32 buf_sz;
+  __u64 buf_ptr;
+};
+#define MSHV_RUN_VP _IOR(MSHV_IOCTL, 0x00, struct mshv_run_vp)
+#define MSHV_GET_VP_STATE _IOWR(MSHV_IOCTL, 0x01, struct mshv_get_set_vp_state)
+#define MSHV_SET_VP_STATE _IOWR(MSHV_IOCTL, 0x02, struct mshv_get_set_vp_state)
+#endif
diff --git a/libc/kernel/uapi/linux/net_tstamp.h b/libc/kernel/uapi/linux/net_tstamp.h
index 3bf8f9a..d4649e7 100644
--- a/libc/kernel/uapi/linux/net_tstamp.h
+++ b/libc/kernel/uapi/linux/net_tstamp.h
@@ -32,10 +32,11 @@
   SOF_TIMESTAMPING_BIND_PHC = (1 << 15),
   SOF_TIMESTAMPING_OPT_ID_TCP = (1 << 16),
   SOF_TIMESTAMPING_OPT_RX_FILTER = (1 << 17),
-  SOF_TIMESTAMPING_LAST = SOF_TIMESTAMPING_OPT_RX_FILTER,
+  SOF_TIMESTAMPING_TX_COMPLETION = (1 << 18),
+  SOF_TIMESTAMPING_LAST = SOF_TIMESTAMPING_TX_COMPLETION,
   SOF_TIMESTAMPING_MASK = (SOF_TIMESTAMPING_LAST - 1) | SOF_TIMESTAMPING_LAST
 };
-#define SOF_TIMESTAMPING_TX_RECORD_MASK (SOF_TIMESTAMPING_TX_HARDWARE | SOF_TIMESTAMPING_TX_SOFTWARE | SOF_TIMESTAMPING_TX_SCHED | SOF_TIMESTAMPING_TX_ACK)
+#define SOF_TIMESTAMPING_TX_RECORD_MASK (SOF_TIMESTAMPING_TX_HARDWARE | SOF_TIMESTAMPING_TX_SOFTWARE | SOF_TIMESTAMPING_TX_SCHED | SOF_TIMESTAMPING_TX_ACK | SOF_TIMESTAMPING_TX_COMPLETION)
 struct so_timestamping {
   int flags;
   int bind_phc;
diff --git a/libc/kernel/uapi/linux/netdev.h b/libc/kernel/uapi/linux/netdev.h
index ad807a3..bf06b42 100644
--- a/libc/kernel/uapi/linux/netdev.h
+++ b/libc/kernel/uapi/linux/netdev.h
@@ -26,6 +26,7 @@
 enum netdev_xsk_flags {
   NETDEV_XSK_FLAGS_TX_TIMESTAMP = 1,
   NETDEV_XSK_FLAGS_TX_CHECKSUM = 2,
+  NETDEV_XSK_FLAGS_TX_LAUNCH_TIME_FIFO = 4,
 };
 enum netdev_queue_type {
   NETDEV_QUEUE_TYPE_RX,
@@ -45,6 +46,10 @@
   NETDEV_A_DEV_MAX = (__NETDEV_A_DEV_MAX - 1)
 };
 enum {
+  __NETDEV_A_IO_URING_PROVIDER_INFO_MAX,
+  NETDEV_A_IO_URING_PROVIDER_INFO_MAX = (__NETDEV_A_IO_URING_PROVIDER_INFO_MAX - 1)
+};
+enum {
   NETDEV_A_PAGE_POOL_ID = 1,
   NETDEV_A_PAGE_POOL_IFINDEX,
   NETDEV_A_PAGE_POOL_NAPI_ID,
@@ -52,6 +57,7 @@
   NETDEV_A_PAGE_POOL_INFLIGHT_MEM,
   NETDEV_A_PAGE_POOL_DETACH_TIME,
   NETDEV_A_PAGE_POOL_DMABUF,
+  NETDEV_A_PAGE_POOL_IO_URING,
   __NETDEV_A_PAGE_POOL_MAX,
   NETDEV_A_PAGE_POOL_MAX = (__NETDEV_A_PAGE_POOL_MAX - 1)
 };
@@ -83,11 +89,17 @@
   NETDEV_A_NAPI_MAX = (__NETDEV_A_NAPI_MAX - 1)
 };
 enum {
+  __NETDEV_A_XSK_INFO_MAX,
+  NETDEV_A_XSK_INFO_MAX = (__NETDEV_A_XSK_INFO_MAX - 1)
+};
+enum {
   NETDEV_A_QUEUE_ID = 1,
   NETDEV_A_QUEUE_IFINDEX,
   NETDEV_A_QUEUE_TYPE,
   NETDEV_A_QUEUE_NAPI_ID,
   NETDEV_A_QUEUE_DMABUF,
+  NETDEV_A_QUEUE_IO_URING,
+  NETDEV_A_QUEUE_XSK,
   __NETDEV_A_QUEUE_MAX,
   NETDEV_A_QUEUE_MAX = (__NETDEV_A_QUEUE_MAX - 1)
 };
diff --git a/libc/kernel/uapi/linux/nilfs2_ondisk.h b/libc/kernel/uapi/linux/nilfs2_ondisk.h
index 9df95cb..9f95142 100644
--- a/libc/kernel/uapi/linux/nilfs2_ondisk.h
+++ b/libc/kernel/uapi/linux/nilfs2_ondisk.h
@@ -91,7 +91,7 @@
   __le16 s_checkpoint_size;
   __le16 s_segment_usage_size;
   __u8 s_uuid[16];
-  char s_volume_name[80];
+  char s_volume_name[80] __kernel_nonstring;
   __le32 s_c_interval;
   __le32 s_c_block_max;
   __le64 s_feature_compat;
diff --git a/libc/kernel/uapi/linux/nl80211.h b/libc/kernel/uapi/linux/nl80211.h
index c952b20..ef1699f 100644
--- a/libc/kernel/uapi/linux/nl80211.h
+++ b/libc/kernel/uapi/linux/nl80211.h
@@ -536,6 +536,7 @@
   NL80211_ATTR_SUPPORTED_SELECTORS,
   NL80211_ATTR_MLO_RECONF_REM_LINKS,
   NL80211_ATTR_EPCS,
+  NL80211_ATTR_ASSOC_MLD_EXT_CAPA_OPS,
   __NL80211_ATTR_AFTER_LAST,
   NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST,
   NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
@@ -888,6 +889,7 @@
   NL80211_FREQUENCY_ATTR_NO_6GHZ_AFC_CLIENT,
   NL80211_FREQUENCY_ATTR_CAN_MONITOR,
   NL80211_FREQUENCY_ATTR_ALLOW_6GHZ_VLP_AP,
+  NL80211_FREQUENCY_ATTR_ALLOW_20MHZ_ACTIVITY,
   __NL80211_FREQUENCY_ATTR_AFTER_LAST,
   NL80211_FREQUENCY_ATTR_MAX = __NL80211_FREQUENCY_ATTR_AFTER_LAST - 1
 };
@@ -966,6 +968,7 @@
   NL80211_RRF_NO_6GHZ_VLP_CLIENT = 1 << 22,
   NL80211_RRF_NO_6GHZ_AFC_CLIENT = 1 << 23,
   NL80211_RRF_ALLOW_6GHZ_VLP_AP = 1 << 24,
+  NL80211_RRF_ALLOW_20MHZ_ACTIVITY = 1 << 25,
 };
 #define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR
 #define NL80211_RRF_NO_IBSS NL80211_RRF_NO_IR
diff --git a/libc/kernel/uapi/linux/pci_regs.h b/libc/kernel/uapi/linux/pci_regs.h
index b134a1e..c46e3d4 100644
--- a/libc/kernel/uapi/linux/pci_regs.h
+++ b/libc/kernel/uapi/linux/pci_regs.h
@@ -383,6 +383,7 @@
 #define PCI_EXP_TYPE_RC_EC 0xa
 #define PCI_EXP_FLAGS_SLOT 0x0100
 #define PCI_EXP_FLAGS_IRQ 0x3e00
+#define PCI_EXP_FLAGS_FLIT 0x8000
 #define PCI_EXP_DEVCAP 0x04
 #define PCI_EXP_DEVCAP_PAYLOAD 0x00000007
 #define PCI_EXP_DEVCAP_PHANTOM 0x00000018
@@ -675,6 +676,8 @@
 #define PCI_ERR_CAP_ECRC_CHKC 0x00000080
 #define PCI_ERR_CAP_ECRC_CHKE 0x00000100
 #define PCI_ERR_CAP_PREFIX_LOG_PRESENT 0x00000800
+#define PCI_ERR_CAP_TLP_LOG_FLIT 0x00040000
+#define PCI_ERR_CAP_TLP_LOG_SIZE 0x00f80000
 #define PCI_ERR_HEADER_LOG 0x1c
 #define PCI_ERR_ROOT_COMMAND 0x2c
 #define PCI_ERR_ROOT_CMD_COR_EN 0x00000001
@@ -858,7 +861,7 @@
 #define PCI_SATA_SIZEOF_SHORT 8
 #define PCI_SATA_SIZEOF_LONG 16
 #define PCI_REBAR_CAP 4
-#define PCI_REBAR_CAP_SIZES 0x00FFFFF0
+#define PCI_REBAR_CAP_SIZES 0xFFFFFFF0
 #define PCI_REBAR_CTRL 8
 #define PCI_REBAR_CTRL_BAR_IDX 0x00000007
 #define PCI_REBAR_CTRL_NBAR_MASK 0x000000E0
@@ -899,6 +902,7 @@
 #define PCI_EXP_DPC_CAP_SW_TRIGGER 0x0080
 #define PCI_EXP_DPC_RP_PIO_LOG_SIZE 0x0F00
 #define PCI_EXP_DPC_CAP_DL_ACTIVE 0x1000
+#define PCI_EXP_DPC_RP_PIO_LOG_SIZE4 0x2000
 #define PCI_EXP_DPC_CTL 0x06
 #define PCI_EXP_DPC_CTL_EN_FATAL 0x0001
 #define PCI_EXP_DPC_CTL_EN_NONFATAL 0x0002
@@ -1013,8 +1017,9 @@
 #define PCI_DOE_DATA_OBJECT_DISC_REQ_3_INDEX 0x000000ff
 #define PCI_DOE_DATA_OBJECT_DISC_REQ_3_VER 0x0000ff00
 #define PCI_DOE_DATA_OBJECT_DISC_RSP_3_VID 0x0000ffff
-#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_PROTOCOL 0x00ff0000
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_TYPE 0x00ff0000
 #define PCI_DOE_DATA_OBJECT_DISC_RSP_3_NEXT_INDEX 0xff000000
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_PROTOCOL PCI_DOE_DATA_OBJECT_DISC_RSP_3_TYPE
 #define PCI_DVSEC_CXL_PORT 3
 #define PCI_DVSEC_CXL_PORT_CTL 0x0c
 #define PCI_DVSEC_CXL_PORT_CTL_UNMASK_SBR 0x00000001
diff --git a/libc/kernel/uapi/linux/pcitest.h b/libc/kernel/uapi/linux/pcitest.h
index 9118ffc..13a3adc 100644
--- a/libc/kernel/uapi/linux/pcitest.h
+++ b/libc/kernel/uapi/linux/pcitest.h
@@ -18,6 +18,11 @@
 #define PCITEST_GET_IRQTYPE _IO('P', 0x9)
 #define PCITEST_BARS _IO('P', 0xa)
 #define PCITEST_CLEAR_IRQ _IO('P', 0x10)
+#define PCITEST_IRQ_TYPE_UNDEFINED - 1
+#define PCITEST_IRQ_TYPE_INTX 0
+#define PCITEST_IRQ_TYPE_MSI 1
+#define PCITEST_IRQ_TYPE_MSIX 2
+#define PCITEST_IRQ_TYPE_AUTO 3
 #define PCITEST_FLAGS_USE_DMA 0x00000001
 struct pci_endpoint_test_xfer_param {
   unsigned long size;
diff --git a/libc/kernel/uapi/linux/pidfd.h b/libc/kernel/uapi/linux/pidfd.h
index 998fe40..50eba08 100644
--- a/libc/kernel/uapi/linux/pidfd.h
+++ b/libc/kernel/uapi/linux/pidfd.h
@@ -17,7 +17,12 @@
 #define PIDFD_INFO_PID (1UL << 0)
 #define PIDFD_INFO_CREDS (1UL << 1)
 #define PIDFD_INFO_CGROUPID (1UL << 2)
+#define PIDFD_INFO_EXIT (1UL << 3)
 #define PIDFD_INFO_SIZE_VER0 64
+#define PIDFD_SELF_THREAD - 10000
+#define PIDFD_SELF_THREAD_GROUP - 20000
+#define PIDFD_SELF PIDFD_SELF_THREAD
+#define PIDFD_SELF_PROCESS PIDFD_SELF_THREAD_GROUP
 struct pidfd_info {
   __u64 mask;
   __u64 cgroupid;
@@ -32,7 +37,7 @@
   __u32 sgid;
   __u32 fsuid;
   __u32 fsgid;
-  __u32 spare0[1];
+  __s32 exit_code;
 };
 #define PIDFS_IOCTL_MAGIC 0xFF
 #define PIDFD_GET_CGROUP_NAMESPACE _IO(PIDFS_IOCTL_MAGIC, 1)
diff --git a/libc/kernel/uapi/linux/prctl.h b/libc/kernel/uapi/linux/prctl.h
index 53f74dd..1cbd3b4 100644
--- a/libc/kernel/uapi/linux/prctl.h
+++ b/libc/kernel/uapi/linux/prctl.h
@@ -215,4 +215,8 @@
 #define PR_SHADOW_STACK_WRITE (1UL << 1)
 #define PR_SHADOW_STACK_PUSH (1UL << 2)
 #define PR_LOCK_SHADOW_STACK_STATUS 76
+#define PR_TIMER_CREATE_RESTORE_IDS 77
+#define PR_TIMER_CREATE_RESTORE_IDS_OFF 0
+#define PR_TIMER_CREATE_RESTORE_IDS_ON 1
+#define PR_TIMER_CREATE_RESTORE_IDS_GET 2
 #endif
diff --git a/libc/kernel/uapi/linux/psp-sev.h b/libc/kernel/uapi/linux/psp-sev.h
index 7274081..24ffb1f 100644
--- a/libc/kernel/uapi/linux/psp-sev.h
+++ b/libc/kernel/uapi/linux/psp-sev.h
@@ -51,13 +51,20 @@
   SEV_RET_INVALID_PARAM,
   SEV_RET_RESOURCE_LIMIT,
   SEV_RET_SECURE_DATA_INVALID,
-  SEV_RET_INVALID_KEY = 0x27,
-  SEV_RET_INVALID_PAGE_SIZE,
-  SEV_RET_INVALID_PAGE_STATE,
-  SEV_RET_INVALID_MDATA_ENTRY,
-  SEV_RET_INVALID_PAGE_OWNER,
-  SEV_RET_INVALID_PAGE_AEAD_OFLOW,
-  SEV_RET_RMP_INIT_REQUIRED,
+  SEV_RET_INVALID_PAGE_SIZE = 0x0019,
+  SEV_RET_INVALID_PAGE_STATE = 0x001A,
+  SEV_RET_INVALID_MDATA_ENTRY = 0x001B,
+  SEV_RET_INVALID_PAGE_OWNER = 0x001C,
+  SEV_RET_AEAD_OFLOW = 0x001D,
+  SEV_RET_EXIT_RING_BUFFER = 0x001F,
+  SEV_RET_RMP_INIT_REQUIRED = 0x0020,
+  SEV_RET_BAD_SVN = 0x0021,
+  SEV_RET_BAD_VERSION = 0x0022,
+  SEV_RET_SHUTDOWN_REQUIRED = 0x0023,
+  SEV_RET_UPDATE_FAILED = 0x0024,
+  SEV_RET_RESTORE_REQUIRED = 0x0025,
+  SEV_RET_RMP_INITIALIZATION_FAILED = 0x0026,
+  SEV_RET_INVALID_KEY = 0x0027,
   SEV_RET_MAX,
 } sev_ret_code;
 struct sev_user_data_status {
diff --git a/libc/kernel/uapi/linux/rtnetlink.h b/libc/kernel/uapi/linux/rtnetlink.h
index 384c032..a534feb 100644
--- a/libc/kernel/uapi/linux/rtnetlink.h
+++ b/libc/kernel/uapi/linux/rtnetlink.h
@@ -229,6 +229,7 @@
 #define RTPROT_MROUTED 17
 #define RTPROT_KEEPALIVED 18
 #define RTPROT_BABEL 42
+#define RTPROT_OVN 84
 #define RTPROT_OPENR 99
 #define RTPROT_BGP 186
 #define RTPROT_ISIS 187
diff --git a/libc/kernel/uapi/linux/snmp.h b/libc/kernel/uapi/linux/snmp.h
index 558359c..bd7bdb4 100644
--- a/libc/kernel/uapi/linux/snmp.h
+++ b/libc/kernel/uapi/linux/snmp.h
@@ -11,9 +11,14 @@
   IPSTATS_MIB_INPKTS,
   IPSTATS_MIB_INOCTETS,
   IPSTATS_MIB_INDELIVERS,
-  IPSTATS_MIB_OUTFORWDATAGRAMS,
+  IPSTATS_MIB_NOECTPKTS,
+  IPSTATS_MIB_ECT1PKTS,
+  IPSTATS_MIB_ECT0PKTS,
+  IPSTATS_MIB_CEPKTS,
   IPSTATS_MIB_OUTREQUESTS,
+  IPSTATS_MIB_OUTPKTS,
   IPSTATS_MIB_OUTOCTETS,
+  IPSTATS_MIB_OUTFORWDATAGRAMS,
   IPSTATS_MIB_INHDRERRORS,
   IPSTATS_MIB_INTOOBIGERRORS,
   IPSTATS_MIB_INNOROUTES,
@@ -39,12 +44,7 @@
   IPSTATS_MIB_INBCASTOCTETS,
   IPSTATS_MIB_OUTBCASTOCTETS,
   IPSTATS_MIB_CSUMERRORS,
-  IPSTATS_MIB_NOECTPKTS,
-  IPSTATS_MIB_ECT1PKTS,
-  IPSTATS_MIB_ECT0PKTS,
-  IPSTATS_MIB_CEPKTS,
   IPSTATS_MIB_REASM_OVERLAPS,
-  IPSTATS_MIB_OUTPKTS,
   __IPSTATS_MIB_MAX
 };
 enum {
@@ -141,6 +141,7 @@
   LINUX_MIB_TIMEWAITKILLED,
   LINUX_MIB_PAWSACTIVEREJECTED,
   LINUX_MIB_PAWSESTABREJECTED,
+  LINUX_MIB_TSECRREJECTED,
   LINUX_MIB_PAWS_OLD_ACK,
   LINUX_MIB_DELAYEDACKS,
   LINUX_MIB_DELAYEDACKLOCKED,
diff --git a/libc/kernel/uapi/linux/stddef.h b/libc/kernel/uapi/linux/stddef.h
index 6b69b9e..2a0e3db 100644
--- a/libc/kernel/uapi/linux/stddef.h
+++ b/libc/kernel/uapi/linux/stddef.h
@@ -30,4 +30,5 @@
 #ifndef __counted_by_be
 #define __counted_by_be(m)
 #endif
+#define __kernel_nonstring
 #endif
diff --git a/libc/kernel/uapi/linux/taskstats.h b/libc/kernel/uapi/linux/taskstats.h
index e98c446..b19c184 100644
--- a/libc/kernel/uapi/linux/taskstats.h
+++ b/libc/kernel/uapi/linux/taskstats.h
@@ -7,7 +7,7 @@
 #ifndef _LINUX_TASKSTATS_H
 #define _LINUX_TASKSTATS_H
 #include <linux/types.h>
-#define TASKSTATS_VERSION 15
+#define TASKSTATS_VERSION 16
 #define TS_COMM_LEN 32
 struct taskstats {
   __u16 version;
@@ -16,16 +16,10 @@
   __u8 ac_nice;
   __u64 cpu_count __attribute__((aligned(8)));
   __u64 cpu_delay_total;
-  __u64 cpu_delay_max;
-  __u64 cpu_delay_min;
   __u64 blkio_count;
   __u64 blkio_delay_total;
-  __u64 blkio_delay_max;
-  __u64 blkio_delay_min;
   __u64 swapin_count;
   __u64 swapin_delay_total;
-  __u64 swapin_delay_max;
-  __u64 swapin_delay_min;
   __u64 cpu_run_real_total;
   __u64 cpu_run_virtual_total;
   char ac_comm[TS_COMM_LEN];
@@ -60,27 +54,33 @@
   __u64 cpu_scaled_run_real_total;
   __u64 freepages_count;
   __u64 freepages_delay_total;
-  __u64 freepages_delay_max;
-  __u64 freepages_delay_min;
   __u64 thrashing_count;
   __u64 thrashing_delay_total;
-  __u64 thrashing_delay_max;
-  __u64 thrashing_delay_min;
   __u64 ac_btime64;
   __u64 compact_count;
   __u64 compact_delay_total;
-  __u64 compact_delay_max;
-  __u64 compact_delay_min;
   __u32 ac_tgid;
   __u64 ac_tgetime __attribute__((aligned(8)));
   __u64 ac_exe_dev;
   __u64 ac_exe_inode;
   __u64 wpcopy_count;
   __u64 wpcopy_delay_total;
-  __u64 wpcopy_delay_max;
-  __u64 wpcopy_delay_min;
   __u64 irq_count;
   __u64 irq_delay_total;
+  __u64 cpu_delay_max;
+  __u64 cpu_delay_min;
+  __u64 blkio_delay_max;
+  __u64 blkio_delay_min;
+  __u64 swapin_delay_max;
+  __u64 swapin_delay_min;
+  __u64 freepages_delay_max;
+  __u64 freepages_delay_min;
+  __u64 thrashing_delay_max;
+  __u64 thrashing_delay_min;
+  __u64 compact_delay_max;
+  __u64 compact_delay_min;
+  __u64 wpcopy_delay_max;
+  __u64 wpcopy_delay_min;
   __u64 irq_delay_max;
   __u64 irq_delay_min;
 };
diff --git a/libc/kernel/uapi/linux/tcp.h b/libc/kernel/uapi/linux/tcp.h
index c71715c..56abed5 100644
--- a/libc/kernel/uapi/linux/tcp.h
+++ b/libc/kernel/uapi/linux/tcp.h
@@ -16,6 +16,7 @@
 };
 #define tcp_flag_word(tp) (((union tcp_word_hdr *) (tp))->words[3])
 enum {
+  TCP_FLAG_AE = __constant_cpu_to_be32(0x01000000),
   TCP_FLAG_CWR = __constant_cpu_to_be32(0x00800000),
   TCP_FLAG_ECE = __constant_cpu_to_be32(0x00400000),
   TCP_FLAG_URG = __constant_cpu_to_be32(0x00200000),
@@ -24,7 +25,7 @@
   TCP_FLAG_RST = __constant_cpu_to_be32(0x00040000),
   TCP_FLAG_SYN = __constant_cpu_to_be32(0x00020000),
   TCP_FLAG_FIN = __constant_cpu_to_be32(0x00010000),
-  TCP_RESERVED_BITS = __constant_cpu_to_be32(0x0F000000),
+  TCP_RESERVED_BITS = __constant_cpu_to_be32(0x0E000000),
   TCP_DATA_OFFSET = __constant_cpu_to_be32(0xF0000000)
 };
 #define TCP_MSS_DEFAULT 536U
@@ -72,6 +73,9 @@
 #define TCP_AO_GET_KEYS 41
 #define TCP_AO_REPAIR 42
 #define TCP_IS_MPTCP 43
+#define TCP_RTO_MAX_MS 44
+#define TCP_RTO_MIN_US 45
+#define TCP_DELACK_MAX_US 46
 #define TCP_REPAIR_ON 1
 #define TCP_REPAIR_OFF 0
 #define TCP_REPAIR_OFF_NO_WP - 1
diff --git a/libc/kernel/uapi/linux/ublk_cmd.h b/libc/kernel/uapi/linux/ublk_cmd.h
index 02c87a1..12453e7 100644
--- a/libc/kernel/uapi/linux/ublk_cmd.h
+++ b/libc/kernel/uapi/linux/ublk_cmd.h
@@ -38,6 +38,8 @@
 #define UBLK_U_IO_FETCH_REQ _IOWR('u', UBLK_IO_FETCH_REQ, struct ublksrv_io_cmd)
 #define UBLK_U_IO_COMMIT_AND_FETCH_REQ _IOWR('u', UBLK_IO_COMMIT_AND_FETCH_REQ, struct ublksrv_io_cmd)
 #define UBLK_U_IO_NEED_GET_DATA _IOWR('u', UBLK_IO_NEED_GET_DATA, struct ublksrv_io_cmd)
+#define UBLK_U_IO_REGISTER_IO_BUF _IOWR('u', 0x23, struct ublksrv_io_cmd)
+#define UBLK_U_IO_UNREGISTER_IO_BUF _IOWR('u', 0x24, struct ublksrv_io_cmd)
 #define UBLK_IO_RES_OK 0
 #define UBLK_IO_RES_NEED_GET_DATA 1
 #define UBLK_IO_RES_ABORT (- ENODEV)
@@ -169,16 +171,31 @@
   __u32 max_zone_append_sectors;
   __u8 reserved[20];
 };
+struct ublk_param_dma_align {
+  __u32 alignment;
+  __u8 pad[4];
+};
+#define UBLK_MIN_SEGMENT_SIZE 4096
+struct ublk_param_segment {
+  __u64 seg_boundary_mask;
+  __u32 max_segment_size;
+  __u16 max_segments;
+  __u8 pad[2];
+};
 struct ublk_params {
   __u32 len;
 #define UBLK_PARAM_TYPE_BASIC (1 << 0)
 #define UBLK_PARAM_TYPE_DISCARD (1 << 1)
 #define UBLK_PARAM_TYPE_DEVT (1 << 2)
 #define UBLK_PARAM_TYPE_ZONED (1 << 3)
+#define UBLK_PARAM_TYPE_DMA_ALIGN (1 << 4)
+#define UBLK_PARAM_TYPE_SEGMENT (1 << 5)
   __u32 types;
   struct ublk_param_basic basic;
   struct ublk_param_discard discard;
   struct ublk_param_devt devt;
   struct ublk_param_zoned zoned;
+  struct ublk_param_dma_align dma;
+  struct ublk_param_segment seg;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/usb/ch9.h b/libc/kernel/uapi/linux/usb/ch9.h
index c1121fb..c1bfc5f 100644
--- a/libc/kernel/uapi/linux/usb/ch9.h
+++ b/libc/kernel/uapi/linux/usb/ch9.h
@@ -118,6 +118,7 @@
 #define USB_DT_BOS 0x0f
 #define USB_DT_DEVICE_CAPABILITY 0x10
 #define USB_DT_WIRELESS_ENDPOINT_COMP 0x11
+#define USB_DT_EUSB2_ISOC_ENDPOINT_COMP 0x12
 #define USB_DT_WIRE_ADAPTER 0x21
 #define USB_DT_DFU_FUNCTIONAL 0x21
 #define USB_DT_RPIPE 0x22
@@ -169,6 +170,7 @@
 #define USB_CLASS_AUDIO_VIDEO 0x10
 #define USB_CLASS_BILLBOARD 0x11
 #define USB_CLASS_USB_TYPE_C_BRIDGE 0x12
+#define USB_CLASS_MCTP 0x14
 #define USB_CLASS_MISC 0xef
 #define USB_CLASS_APP_SPEC 0xfe
 #define USB_SUBCLASS_DFU 0x01
@@ -246,6 +248,13 @@
 #define USB_ENDPOINT_USAGE_DATA 0x00
 #define USB_ENDPOINT_USAGE_FEEDBACK 0x10
 #define USB_ENDPOINT_USAGE_IMPLICIT_FB 0x20
+struct usb_eusb2_isoc_ep_comp_descriptor {
+  __u8 bLength;
+  __u8 bDescriptorType;
+  __le16 wMaxPacketSize;
+  __le32 dwBytesPerInterval;
+} __attribute__((packed));
+#define USB_DT_EUSB2_ISOC_EP_COMP_SIZE 8
 struct usb_ssp_isoc_ep_comp_descriptor {
   __u8 bLength;
   __u8 bDescriptorType;
diff --git a/libc/kernel/uapi/linux/usb/video.h b/libc/kernel/uapi/linux/usb/video.h
index 8eef569..bbbb7ca 100644
--- a/libc/kernel/uapi/linux/usb/video.h
+++ b/libc/kernel/uapi/linux/usb/video.h
@@ -71,6 +71,7 @@
 #define UVC_CT_ROLL_ABSOLUTE_CONTROL 0x0f
 #define UVC_CT_ROLL_RELATIVE_CONTROL 0x10
 #define UVC_CT_PRIVACY_CONTROL 0x11
+#define UVC_CT_REGION_OF_INTEREST_CONTROL 0x14
 #define UVC_PU_CONTROL_UNDEFINED 0x00
 #define UVC_PU_BACKLIGHT_COMPENSATION_CONTROL 0x01
 #define UVC_PU_BRIGHTNESS_CONTROL 0x02
diff --git a/libc/kernel/uapi/linux/uvcvideo.h b/libc/kernel/uapi/linux/uvcvideo.h
index cdaf6a5..c1752df 100644
--- a/libc/kernel/uapi/linux/uvcvideo.h
+++ b/libc/kernel/uapi/linux/uvcvideo.h
@@ -14,6 +14,7 @@
 #define UVC_CTRL_DATA_TYPE_BOOLEAN 3
 #define UVC_CTRL_DATA_TYPE_ENUM 4
 #define UVC_CTRL_DATA_TYPE_BITMASK 5
+#define UVC_CTRL_DATA_TYPE_RECT 6
 #define UVC_CTRL_FLAG_SET_CUR (1 << 0)
 #define UVC_CTRL_FLAG_GET_CUR (1 << 1)
 #define UVC_CTRL_FLAG_GET_MIN (1 << 2)
@@ -25,6 +26,16 @@
 #define UVC_CTRL_FLAG_ASYNCHRONOUS (1 << 8)
 #define UVC_CTRL_FLAG_GET_RANGE (UVC_CTRL_FLAG_GET_CUR | UVC_CTRL_FLAG_GET_MIN | UVC_CTRL_FLAG_GET_MAX | UVC_CTRL_FLAG_GET_RES | UVC_CTRL_FLAG_GET_DEF)
 #define UVC_MENU_NAME_LEN 32
+#define V4L2_CID_UVC_REGION_OF_INTEREST_RECT (V4L2_CID_USER_UVC_BASE + 1)
+#define V4L2_CID_UVC_REGION_OF_INTEREST_AUTO (V4L2_CID_USER_UVC_BASE + 2)
+#define V4L2_UVC_REGION_OF_INTEREST_AUTO_EXPOSURE (1 << 0)
+#define V4L2_UVC_REGION_OF_INTEREST_AUTO_IRIS (1 << 1)
+#define V4L2_UVC_REGION_OF_INTEREST_AUTO_WHITE_BALANCE (1 << 2)
+#define V4L2_UVC_REGION_OF_INTEREST_AUTO_FOCUS (1 << 3)
+#define V4L2_UVC_REGION_OF_INTEREST_AUTO_FACE_DETECT (1 << 4)
+#define V4L2_UVC_REGION_OF_INTEREST_AUTO_DETECT_AND_TRACK (1 << 5)
+#define V4L2_UVC_REGION_OF_INTEREST_AUTO_IMAGE_STABILIZATION (1 << 6)
+#define V4L2_UVC_REGION_OF_INTEREST_AUTO_HIGHER_QUALITY (1 << 7)
 struct uvc_menu_info {
   __u32 value;
   __u8 name[UVC_MENU_NAME_LEN];
diff --git a/libc/kernel/uapi/linux/v4l2-controls.h b/libc/kernel/uapi/linux/v4l2-controls.h
index f6ef26c..b231cab 100644
--- a/libc/kernel/uapi/linux/v4l2-controls.h
+++ b/libc/kernel/uapi/linux/v4l2-controls.h
@@ -112,6 +112,7 @@
 #define V4L2_CID_USER_ASPEED_BASE (V4L2_CID_USER_BASE + 0x11a0)
 #define V4L2_CID_USER_NPCM_BASE (V4L2_CID_USER_BASE + 0x11b0)
 #define V4L2_CID_USER_THP7312_BASE (V4L2_CID_USER_BASE + 0x11c0)
+#define V4L2_CID_USER_UVC_BASE (V4L2_CID_USER_BASE + 0x11e0)
 #define V4L2_CID_CODEC_BASE (V4L2_CTRL_CLASS_CODEC | 0x900)
 #define V4L2_CID_CODEC_CLASS (V4L2_CTRL_CLASS_CODEC | 1)
 #define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_CODEC_BASE + 0)
diff --git a/libc/kernel/uapi/linux/version.h b/libc/kernel/uapi/linux/version.h
index 70598ba..c388606 100644
--- a/libc/kernel/uapi/linux/version.h
+++ b/libc/kernel/uapi/linux/version.h
@@ -4,8 +4,8 @@
  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
  * for more information.
  */
-#define LINUX_VERSION_CODE 396800
+#define LINUX_VERSION_CODE 397056
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + ((c) > 255 ? 255 : (c)))
 #define LINUX_VERSION_MAJOR 6
-#define LINUX_VERSION_PATCHLEVEL 14
+#define LINUX_VERSION_PATCHLEVEL 15
 #define LINUX_VERSION_SUBLEVEL 0
diff --git a/libc/kernel/uapi/linux/vfio.h b/libc/kernel/uapi/linux/vfio.h
index 41690e3..35e954a 100644
--- a/libc/kernel/uapi/linux/vfio.h
+++ b/libc/kernel/uapi/linux/vfio.h
@@ -218,6 +218,7 @@
 };
 enum {
   VFIO_AP_REQ_IRQ_INDEX,
+  VFIO_AP_CFG_CHG_IRQ_INDEX,
   VFIO_AP_NUM_IRQS
 };
 struct vfio_pci_dependent_device {
@@ -306,12 +307,16 @@
 struct vfio_device_attach_iommufd_pt {
   __u32 argsz;
   __u32 flags;
+#define VFIO_DEVICE_ATTACH_PASID (1 << 0)
   __u32 pt_id;
+  __u32 pasid;
 };
 #define VFIO_DEVICE_ATTACH_IOMMUFD_PT _IO(VFIO_TYPE, VFIO_BASE + 19)
 struct vfio_device_detach_iommufd_pt {
   __u32 argsz;
   __u32 flags;
+#define VFIO_DEVICE_DETACH_PASID (1 << 0)
+  __u32 pasid;
 };
 #define VFIO_DEVICE_DETACH_IOMMUFD_PT _IO(VFIO_TYPE, VFIO_BASE + 20)
 #define VFIO_DEVICE_FEATURE_PCI_VF_TOKEN (0)
diff --git a/libc/kernel/uapi/linux/videodev2.h b/libc/kernel/uapi/linux/videodev2.h
index 28c9253..0209e36 100644
--- a/libc/kernel/uapi/linux/videodev2.h
+++ b/libc/kernel/uapi/linux/videodev2.h
@@ -934,6 +934,7 @@
     __s32  * p_s32;
     __s64  * p_s64;
     struct v4l2_area  * p_area;
+    struct v4l2_rect  * p_rect;
     struct v4l2_ctrl_h264_sps  * p_h264_sps;
     struct v4l2_ctrl_h264_pps  * p_h264_pps;
     struct v4l2_ctrl_h264_scaling_matrix  * p_h264_scaling_matrix;
@@ -980,6 +981,8 @@
 #define V4L2_CTRL_WHICH_CUR_VAL 0
 #define V4L2_CTRL_WHICH_DEF_VAL 0x0f000000
 #define V4L2_CTRL_WHICH_REQUEST_VAL 0x0f010000
+#define V4L2_CTRL_WHICH_MIN_VAL 0x0f020000
+#define V4L2_CTRL_WHICH_MAX_VAL 0x0f030000
 enum v4l2_ctrl_type {
   V4L2_CTRL_TYPE_INTEGER = 1,
   V4L2_CTRL_TYPE_BOOLEAN = 2,
@@ -995,6 +998,7 @@
   V4L2_CTRL_TYPE_U16 = 0x0101,
   V4L2_CTRL_TYPE_U32 = 0x0102,
   V4L2_CTRL_TYPE_AREA = 0x0106,
+  V4L2_CTRL_TYPE_RECT = 0x0107,
   V4L2_CTRL_TYPE_HDR10_CLL_INFO = 0x0110,
   V4L2_CTRL_TYPE_HDR10_MASTERING_DISPLAY = 0x0111,
   V4L2_CTRL_TYPE_H264_SPS = 0x0200,
@@ -1067,6 +1071,7 @@
 #define V4L2_CTRL_FLAG_EXECUTE_ON_WRITE 0x0200
 #define V4L2_CTRL_FLAG_MODIFY_LAYOUT 0x0400
 #define V4L2_CTRL_FLAG_DYNAMIC_ARRAY 0x0800
+#define V4L2_CTRL_FLAG_HAS_WHICH_MIN_MAX 0x1000
 #define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
 #define V4L2_CTRL_FLAG_NEXT_COMPOUND 0x40000000
 #define V4L2_CID_MAX_CTRLS 1024
diff --git a/libc/kernel/uapi/linux/virtio_net.h b/libc/kernel/uapi/linux/virtio_net.h
index 26ff301..b9f6957 100644
--- a/libc/kernel/uapi/linux/virtio_net.h
+++ b/libc/kernel/uapi/linux/virtio_net.h
@@ -172,6 +172,17 @@
   __u8 hash_key_length;
   __u8 hash_key_data[];
 };
+struct virtio_net_rss_config_hdr {
+  __le32 hash_types;
+  __le16 indirection_table_mask;
+  __le16 unclassified_queue;
+  __le16 indirection_table[];
+};
+struct virtio_net_rss_config_trailer {
+  __le16 max_tx_vq;
+  __u8 hash_key_length;
+  __u8 hash_key_data[];
+};
 #define VIRTIO_NET_CTRL_MQ_RSS_CONFIG 1
 struct virtio_net_hash_config {
   __le32 hash_types;
diff --git a/libc/kernel/uapi/linux/virtio_pci.h b/libc/kernel/uapi/linux/virtio_pci.h
index 4d1bf90..5249fc0 100644
--- a/libc/kernel/uapi/linux/virtio_pci.h
+++ b/libc/kernel/uapi/linux/virtio_pci.h
@@ -129,6 +129,7 @@
 #define VIRTIO_ADMIN_STATUS_OK 0
 #define VIRTIO_ADMIN_CMD_LIST_QUERY 0x0
 #define VIRTIO_ADMIN_CMD_LIST_USE 0x1
+#define VIRTIO_ADMIN_GROUP_TYPE_SELF 0x0
 #define VIRTIO_ADMIN_GROUP_TYPE_SRIOV 0x1
 #define VIRTIO_ADMIN_CMD_LEGACY_COMMON_CFG_WRITE 0x2
 #define VIRTIO_ADMIN_CMD_LEGACY_COMMON_CFG_READ 0x3
diff --git a/libc/kernel/uapi/linux/xattr.h b/libc/kernel/uapi/linux/xattr.h
index 4f1bad7..3b4084a 100644
--- a/libc/kernel/uapi/linux/xattr.h
+++ b/libc/kernel/uapi/linux/xattr.h
@@ -56,6 +56,9 @@
 #define XATTR_NAME_APPARMOR XATTR_SECURITY_PREFIX XATTR_APPARMOR_SUFFIX
 #define XATTR_CAPS_SUFFIX "capability"
 #define XATTR_NAME_CAPS XATTR_SECURITY_PREFIX XATTR_CAPS_SUFFIX
+#define XATTR_BPF_LSM_SUFFIX "bpf."
+#define XATTR_NAME_BPF_LSM (XATTR_SECURITY_PREFIX XATTR_BPF_LSM_SUFFIX)
+#define XATTR_NAME_BPF_LSM_LEN (sizeof(XATTR_NAME_BPF_LSM) - 1)
 #define XATTR_POSIX_ACL_ACCESS "posix_acl_access"
 #define XATTR_NAME_POSIX_ACL_ACCESS XATTR_SYSTEM_PREFIX XATTR_POSIX_ACL_ACCESS
 #define XATTR_POSIX_ACL_DEFAULT "posix_acl_default"
diff --git a/libc/kernel/uapi/misc/cxl.h b/libc/kernel/uapi/misc/cxl.h
deleted file mode 100644
index d05ef53..0000000
--- a/libc/kernel/uapi/misc/cxl.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * This file is auto-generated. Modifications will be lost.
- *
- * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
- * for more information.
- */
-#ifndef _UAPI_MISC_CXL_H
-#define _UAPI_MISC_CXL_H
-#include <linux/types.h>
-#include <linux/ioctl.h>
-struct cxl_ioctl_start_work {
-  __u64 flags;
-  __u64 work_element_descriptor;
-  __u64 amr;
-  __s16 num_interrupts;
-  __u16 tid;
-  __s32 reserved1;
-  __u64 reserved2;
-  __u64 reserved3;
-  __u64 reserved4;
-  __u64 reserved5;
-};
-#define CXL_START_WORK_AMR 0x0000000000000001ULL
-#define CXL_START_WORK_NUM_IRQS 0x0000000000000002ULL
-#define CXL_START_WORK_ERR_FF 0x0000000000000004ULL
-#define CXL_START_WORK_TID 0x0000000000000008ULL
-#define CXL_START_WORK_ALL (CXL_START_WORK_AMR | CXL_START_WORK_NUM_IRQS | CXL_START_WORK_ERR_FF | CXL_START_WORK_TID)
-#define CXL_MODE_DEDICATED 0x1
-#define CXL_MODE_DIRECTED 0x2
-#define CXL_AFUID_FLAG_SLAVE 0x1
-struct cxl_afu_id {
-  __u64 flags;
-  __u32 card_id;
-  __u32 afu_offset;
-  __u32 afu_mode;
-  __u32 reserved1;
-  __u64 reserved2;
-  __u64 reserved3;
-  __u64 reserved4;
-  __u64 reserved5;
-  __u64 reserved6;
-};
-#define CXL_AI_NEED_HEADER 0x0000000000000001ULL
-#define CXL_AI_ALL CXL_AI_NEED_HEADER
-#define CXL_AI_HEADER_SIZE 128
-#define CXL_AI_BUFFER_SIZE 4096
-#define CXL_AI_MAX_ENTRIES 256
-#define CXL_AI_MAX_CHUNK_SIZE (CXL_AI_BUFFER_SIZE * CXL_AI_MAX_ENTRIES)
-struct cxl_adapter_image {
-  __u64 flags;
-  __u64 data;
-  __u64 len_data;
-  __u64 len_image;
-  __u64 reserved1;
-  __u64 reserved2;
-  __u64 reserved3;
-  __u64 reserved4;
-};
-#define CXL_MAGIC 0xCA
-#define CXL_IOCTL_START_WORK _IOW(CXL_MAGIC, 0x00, struct cxl_ioctl_start_work)
-#define CXL_IOCTL_GET_PROCESS_ELEMENT _IOR(CXL_MAGIC, 0x01, __u32)
-#define CXL_IOCTL_GET_AFU_ID _IOR(CXL_MAGIC, 0x02, struct cxl_afu_id)
-#define CXL_IOCTL_DOWNLOAD_IMAGE _IOW(CXL_MAGIC, 0x0A, struct cxl_adapter_image)
-#define CXL_IOCTL_VALIDATE_IMAGE _IOW(CXL_MAGIC, 0x0B, struct cxl_adapter_image)
-#define CXL_READ_MIN_SIZE 0x1000
-enum cxl_event_type {
-  CXL_EVENT_RESERVED = 0,
-  CXL_EVENT_AFU_INTERRUPT = 1,
-  CXL_EVENT_DATA_STORAGE = 2,
-  CXL_EVENT_AFU_ERROR = 3,
-  CXL_EVENT_AFU_DRIVER = 4,
-};
-struct cxl_event_header {
-  __u16 type;
-  __u16 size;
-  __u16 process_element;
-  __u16 reserved1;
-};
-struct cxl_event_afu_interrupt {
-  __u16 flags;
-  __u16 irq;
-  __u32 reserved1;
-};
-struct cxl_event_data_storage {
-  __u16 flags;
-  __u16 reserved1;
-  __u32 reserved2;
-  __u64 addr;
-  __u64 dsisr;
-  __u64 reserved3;
-};
-struct cxl_event_afu_error {
-  __u16 flags;
-  __u16 reserved1;
-  __u32 reserved2;
-  __u64 error;
-};
-struct cxl_event_afu_driver_reserved {
-  __u32 data_size;
-  __u8 data[];
-};
-struct cxl_event {
-  struct cxl_event_header header;
-  union {
-    struct cxl_event_afu_interrupt irq;
-    struct cxl_event_data_storage fault;
-    struct cxl_event_afu_error afu_error;
-    struct cxl_event_afu_driver_reserved afu_driver_event;
-  };
-};
-#endif
diff --git a/libc/kernel/uapi/rdma/ib_user_ioctl_cmds.h b/libc/kernel/uapi/rdma/ib_user_ioctl_cmds.h
index 5f5c426..b4d4605 100644
--- a/libc/kernel/uapi/rdma/ib_user_ioctl_cmds.h
+++ b/libc/kernel/uapi/rdma/ib_user_ioctl_cmds.h
@@ -54,6 +54,7 @@
 enum uverbs_attrs_get_context_attr_ids {
   UVERBS_ATTR_GET_CONTEXT_NUM_COMP_VECTORS,
   UVERBS_ATTR_GET_CONTEXT_CORE_SUPPORT,
+  UVERBS_ATTR_GET_CONTEXT_FD_ARR,
 };
 enum uverbs_attrs_query_context_attr_ids {
   UVERBS_ATTR_QUERY_CONTEXT_NUM_COMP_VECTORS,
diff --git a/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h b/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
index 2e61c71..119d9d1 100644
--- a/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
+++ b/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
@@ -177,6 +177,7 @@
   MLX5_IB_ATTR_FLOW_MATCHER_MATCH_CRITERIA,
   MLX5_IB_ATTR_FLOW_MATCHER_FLOW_FLAGS,
   MLX5_IB_ATTR_FLOW_MATCHER_FT_TYPE,
+  MLX5_IB_ATTR_FLOW_MATCHER_IB_PORT,
 };
 enum mlx5_ib_flow_matcher_destroy_attrs {
   MLX5_IB_ATTR_FLOW_MATCHER_DESTROY_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
diff --git a/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h b/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
index 3fe3c82..6af77c4 100644
--- a/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
+++ b/libc/kernel/uapi/rdma/mlx5_user_ioctl_verbs.h
@@ -16,6 +16,8 @@
   MLX5_IB_UAPI_FLOW_TABLE_TYPE_FDB = 0x2,
   MLX5_IB_UAPI_FLOW_TABLE_TYPE_RDMA_RX = 0x3,
   MLX5_IB_UAPI_FLOW_TABLE_TYPE_RDMA_TX = 0x4,
+  MLX5_IB_UAPI_FLOW_TABLE_TYPE_RDMA_TRANSPORT_RX = 0x5,
+  MLX5_IB_UAPI_FLOW_TABLE_TYPE_RDMA_TRANSPORT_TX = 0x6,
 };
 enum mlx5_ib_uapi_flow_action_packet_reformat_type {
   MLX5_IB_UAPI_FLOW_ACTION_PACKET_REFORMAT_TYPE_L2_TUNNEL_TO_L2 = 0x0,
diff --git a/libc/kernel/uapi/rdma/rdma_netlink.h b/libc/kernel/uapi/rdma/rdma_netlink.h
index 593d21b..d8d5745 100644
--- a/libc/kernel/uapi/rdma/rdma_netlink.h
+++ b/libc/kernel/uapi/rdma/rdma_netlink.h
@@ -315,6 +315,7 @@
   RDMA_NLDEV_ATTR_NAME_ASSIGN_TYPE,
   RDMA_NLDEV_ATTR_EVENT_TYPE,
   RDMA_NLDEV_SYS_ATTR_MONITOR_MODE,
+  RDMA_NLDEV_ATTR_STAT_OPCOUNTER_ENABLED,
   RDMA_NLDEV_ATTR_MAX
 };
 enum rdma_nl_counter_mode {
diff --git a/libc/kernel/uapi/scsi/cxlflash_ioctl.h b/libc/kernel/uapi/scsi/cxlflash_ioctl.h
deleted file mode 100644
index 008b77c..0000000
--- a/libc/kernel/uapi/scsi/cxlflash_ioctl.h
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * This file is auto-generated. Modifications will be lost.
- *
- * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
- * for more information.
- */
-#ifndef _CXLFLASH_IOCTL_H
-#define _CXLFLASH_IOCTL_H
-#include <linux/types.h>
-#define CXLFLASH_WWID_LEN 16
-#define DK_CXLFLASH_VERSION_0 0
-struct dk_cxlflash_hdr {
-  __u16 version;
-  __u16 rsvd[3];
-  __u64 flags;
-  __u64 return_flags;
-};
-#define DK_CXLFLASH_ALL_PORTS_ACTIVE 0x0000000000000001ULL
-#define DK_CXLFLASH_APP_CLOSE_ADAP_FD 0x0000000000000002ULL
-#define DK_CXLFLASH_CONTEXT_SQ_CMD_MODE 0x0000000000000004ULL
-#define DK_CXLFLASH_ATTACH_REUSE_CONTEXT 0x8000000000000000ULL
-struct dk_cxlflash_attach {
-  struct dk_cxlflash_hdr hdr;
-  __u64 num_interrupts;
-  __u64 context_id;
-  __u64 mmio_size;
-  __u64 block_size;
-  __u64 adap_fd;
-  __u64 last_lba;
-  __u64 max_xfer;
-  __u64 reserved[8];
-};
-struct dk_cxlflash_detach {
-  struct dk_cxlflash_hdr hdr;
-  __u64 context_id;
-  __u64 reserved[8];
-};
-struct dk_cxlflash_udirect {
-  struct dk_cxlflash_hdr hdr;
-  __u64 context_id;
-  __u64 rsrc_handle;
-  __u64 last_lba;
-  __u64 reserved[8];
-};
-#define DK_CXLFLASH_UVIRTUAL_NEED_WRITE_SAME 0x8000000000000000ULL
-struct dk_cxlflash_uvirtual {
-  struct dk_cxlflash_hdr hdr;
-  __u64 context_id;
-  __u64 lun_size;
-  __u64 rsrc_handle;
-  __u64 last_lba;
-  __u64 reserved[8];
-};
-struct dk_cxlflash_release {
-  struct dk_cxlflash_hdr hdr;
-  __u64 context_id;
-  __u64 rsrc_handle;
-  __u64 reserved[8];
-};
-struct dk_cxlflash_resize {
-  struct dk_cxlflash_hdr hdr;
-  __u64 context_id;
-  __u64 rsrc_handle;
-  __u64 req_size;
-  __u64 last_lba;
-  __u64 reserved[8];
-};
-struct dk_cxlflash_clone {
-  struct dk_cxlflash_hdr hdr;
-  __u64 context_id_src;
-  __u64 context_id_dst;
-  __u64 adap_fd_src;
-  __u64 reserved[8];
-};
-#define DK_CXLFLASH_VERIFY_SENSE_LEN 18
-#define DK_CXLFLASH_VERIFY_HINT_SENSE 0x8000000000000000ULL
-struct dk_cxlflash_verify {
-  struct dk_cxlflash_hdr hdr;
-  __u64 context_id;
-  __u64 rsrc_handle;
-  __u64 hint;
-  __u64 last_lba;
-  __u8 sense_data[DK_CXLFLASH_VERIFY_SENSE_LEN];
-  __u8 pad[6];
-  __u64 reserved[8];
-};
-#define DK_CXLFLASH_RECOVER_AFU_CONTEXT_RESET 0x8000000000000000ULL
-struct dk_cxlflash_recover_afu {
-  struct dk_cxlflash_hdr hdr;
-  __u64 reason;
-  __u64 context_id;
-  __u64 mmio_size;
-  __u64 adap_fd;
-  __u64 reserved[8];
-};
-#define DK_CXLFLASH_MANAGE_LUN_WWID_LEN CXLFLASH_WWID_LEN
-#define DK_CXLFLASH_MANAGE_LUN_ENABLE_SUPERPIPE 0x8000000000000000ULL
-#define DK_CXLFLASH_MANAGE_LUN_DISABLE_SUPERPIPE 0x4000000000000000ULL
-#define DK_CXLFLASH_MANAGE_LUN_ALL_PORTS_ACCESSIBLE 0x2000000000000000ULL
-struct dk_cxlflash_manage_lun {
-  struct dk_cxlflash_hdr hdr;
-  __u8 wwid[DK_CXLFLASH_MANAGE_LUN_WWID_LEN];
-  __u64 reserved[8];
-};
-union cxlflash_ioctls {
-  struct dk_cxlflash_attach attach;
-  struct dk_cxlflash_detach detach;
-  struct dk_cxlflash_udirect udirect;
-  struct dk_cxlflash_uvirtual uvirtual;
-  struct dk_cxlflash_release release;
-  struct dk_cxlflash_resize resize;
-  struct dk_cxlflash_clone clone;
-  struct dk_cxlflash_verify verify;
-  struct dk_cxlflash_recover_afu recover_afu;
-  struct dk_cxlflash_manage_lun manage_lun;
-};
-#define MAX_CXLFLASH_IOCTL_SZ (sizeof(union cxlflash_ioctls))
-#define CXL_MAGIC 0xCA
-#define CXL_IOWR(_n,_s) _IOWR(CXL_MAGIC, _n, struct _s)
-#define DK_CXLFLASH_ATTACH CXL_IOWR(0x80, dk_cxlflash_attach)
-#define DK_CXLFLASH_USER_DIRECT CXL_IOWR(0x81, dk_cxlflash_udirect)
-#define DK_CXLFLASH_RELEASE CXL_IOWR(0x82, dk_cxlflash_release)
-#define DK_CXLFLASH_DETACH CXL_IOWR(0x83, dk_cxlflash_detach)
-#define DK_CXLFLASH_VERIFY CXL_IOWR(0x84, dk_cxlflash_verify)
-#define DK_CXLFLASH_RECOVER_AFU CXL_IOWR(0x85, dk_cxlflash_recover_afu)
-#define DK_CXLFLASH_MANAGE_LUN CXL_IOWR(0x86, dk_cxlflash_manage_lun)
-#define DK_CXLFLASH_USER_VIRTUAL CXL_IOWR(0x87, dk_cxlflash_uvirtual)
-#define DK_CXLFLASH_VLUN_RESIZE CXL_IOWR(0x88, dk_cxlflash_resize)
-#define DK_CXLFLASH_VLUN_CLONE CXL_IOWR(0x89, dk_cxlflash_clone)
-#define HT_CXLFLASH_VERSION_0 0
-struct ht_cxlflash_hdr {
-  __u16 version;
-  __u16 subcmd;
-  __u16 rsvd[2];
-  __u64 flags;
-  __u64 return_flags;
-};
-#define HT_CXLFLASH_HOST_READ 0x0000000000000000ULL
-#define HT_CXLFLASH_HOST_WRITE 0x0000000000000001ULL
-#define HT_CXLFLASH_LUN_PROVISION_SUBCMD_CREATE_LUN 0x0001
-#define HT_CXLFLASH_LUN_PROVISION_SUBCMD_DELETE_LUN 0x0002
-#define HT_CXLFLASH_LUN_PROVISION_SUBCMD_QUERY_PORT 0x0003
-struct ht_cxlflash_lun_provision {
-  struct ht_cxlflash_hdr hdr;
-  __u16 port;
-  __u16 reserved16[3];
-  __u64 size;
-  __u64 lun_id;
-  __u8 wwid[CXLFLASH_WWID_LEN];
-  __u64 max_num_luns;
-  __u64 cur_num_luns;
-  __u64 max_cap_port;
-  __u64 cur_cap_port;
-  __u64 reserved[8];
-};
-#define HT_CXLFLASH_AFU_DEBUG_MAX_DATA_LEN 262144
-#define HT_CXLFLASH_AFU_DEBUG_SUBCMD_LEN 12
-struct ht_cxlflash_afu_debug {
-  struct ht_cxlflash_hdr hdr;
-  __u8 reserved8[4];
-  __u8 afu_subcmd[HT_CXLFLASH_AFU_DEBUG_SUBCMD_LEN];
-  __u64 data_ea;
-  __u32 data_len;
-  __u32 reserved32;
-  __u64 reserved[8];
-};
-union cxlflash_ht_ioctls {
-  struct ht_cxlflash_lun_provision lun_provision;
-  struct ht_cxlflash_afu_debug afu_debug;
-};
-#define MAX_HT_CXLFLASH_IOCTL_SZ (sizeof(union cxlflash_ht_ioctls))
-#define HT_CXLFLASH_LUN_PROVISION CXL_IOWR(0xBF, ht_cxlflash_lun_provision)
-#define HT_CXLFLASH_AFU_DEBUG CXL_IOWR(0xBE, ht_cxlflash_afu_debug)
-#endif
diff --git a/libc/kernel/uapi/sound/intel/avs/tokens.h b/libc/kernel/uapi/sound/intel/avs/tokens.h
index 01b20a5..8f3d808 100644
--- a/libc/kernel/uapi/sound/intel/avs/tokens.h
+++ b/libc/kernel/uapi/sound/intel/avs/tokens.h
@@ -65,6 +65,17 @@
   AVS_TKN_MODCFG_UPDOWN_MIX_CHAN_MAP_U32 = 430,
   AVS_TKN_MODCFG_EXT_NUM_INPUT_PINS_U16 = 431,
   AVS_TKN_MODCFG_EXT_NUM_OUTPUT_PINS_U16 = 432,
+  AVS_TKN_MODCFG_WHM_REF_AFMT_ID_U32 = 433,
+  AVS_TKN_MODCFG_WHM_OUT_AFMT_ID_U32 = 434,
+  AVS_TKN_MODCFG_WHM_WAKE_TICK_PERIOD_U32 = 435,
+  AVS_TKN_MODCFG_WHM_VINDEX_U8 = 436,
+  AVS_TKN_MODCFG_WHM_DMA_TYPE_U32 = 437,
+  AVS_TKN_MODCFG_WHM_DMABUFF_SIZE_U32 = 438,
+  AVS_TKN_MODCFG_WHM_BLOB_AFMT_ID_U32 = 439,
+  AVS_TKN_MODCFG_PEAKVOL_VOLUME_U32 = 440,
+  AVS_TKN_MODCFG_PEAKVOL_CHANNEL_ID_U32 = 441,
+  AVS_TKN_MODCFG_PEAKVOL_CURVE_TYPE_U32 = 442,
+  AVS_TKN_MODCFG_PEAKVOL_CURVE_DURATION_U32 = 443,
   AVS_TKN_PPLCFG_ID_U32 = 1401,
   AVS_TKN_PPLCFG_REQ_SIZE_U16 = 1402,
   AVS_TKN_PPLCFG_PRIORITY_U8 = 1403,