Update to kernel headers v4.12.3.

Test: Built angler.
Change-Id: Icbcf4fac2334de8409b049ed7a3b4c24b4e98ce9
diff --git a/libc/include/bits/glibc-syscalls.h b/libc/include/bits/glibc-syscalls.h
index 3191a23..3f99dcb 100644
--- a/libc/include/bits/glibc-syscalls.h
+++ b/libc/include/bits/glibc-syscalls.h
@@ -1063,6 +1063,9 @@
 #if defined(__NR_statfs64)
   #define SYS_statfs64 __NR_statfs64
 #endif
+#if defined(__NR_statx)
+  #define SYS_statx __NR_statx
+#endif
 #if defined(__NR_stime)
   #define SYS_stime __NR_stime
 #endif
diff --git a/libc/kernel/android/scsi/scsi/scsi_proto.h b/libc/kernel/android/scsi/scsi/scsi_proto.h
index 2ebc5be..7f3abd9 100644
--- a/libc/kernel/android/scsi/scsi/scsi_proto.h
+++ b/libc/kernel/android/scsi/scsi/scsi_proto.h
@@ -115,6 +115,7 @@
 #define WRITE_16 0x8a
 #define READ_ATTRIBUTE 0x8c
 #define WRITE_ATTRIBUTE 0x8d
+#define WRITE_VERIFY_16 0x8e
 #define VERIFY_16 0x8f
 #define SYNCHRONIZE_CACHE_16 0x91
 #define WRITE_SAME_16 0x93
diff --git a/libc/kernel/android/scsi/scsi/sg.h b/libc/kernel/android/scsi/scsi/sg.h
index 29ea51e..828b2c6 100644
--- a/libc/kernel/android/scsi/scsi/sg.h
+++ b/libc/kernel/android/scsi/scsi/sg.h
@@ -113,7 +113,6 @@
 #define SG_GET_ACCESS_COUNT 0x2289
 #define SG_SCATTER_SZ (8 * 4096)
 #define SG_DEFAULT_RETRIES 0
-#define SG_DEF_FORCE_LOW_DMA 0
 #define SG_DEF_FORCE_PACK_ID 0
 #define SG_DEF_KEEP_ORPHAN 0
 #define SG_DEF_RESERVED_SIZE SG_SCATTER_SZ
diff --git a/libc/kernel/tools/defaults.py b/libc/kernel/tools/defaults.py
index 9612812..b0fb95f 100644
--- a/libc/kernel/tools/defaults.py
+++ b/libc/kernel/tools/defaults.py
@@ -84,6 +84,8 @@
     "epoll_event": "__kernel_uapi_epoll_event",
     # This causes problems when trying to export the headers for the ndk.
     "__attribute_const__": "__attribute__((__const__))",
+    # There is a mismatch between upstream and our kernels for this structure.
+    "binder_fd_array_object": "__kernel_binder_fd_array_object",
     }
 
 # This is the set of known static inline functions that we want to keep
diff --git a/libc/kernel/uapi/asm-arm/asm/kvm.h b/libc/kernel/uapi/asm-arm/asm/kvm.h
index 1c28bce..c814a09 100644
--- a/libc/kernel/uapi/asm-arm/asm/kvm.h
+++ b/libc/kernel/uapi/asm-arm/asm/kvm.h
@@ -24,6 +24,7 @@
 #define __KVM_HAVE_GUEST_DEBUG
 #define __KVM_HAVE_IRQ_LINE
 #define __KVM_HAVE_READONLY_MEM
+#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
 #define KVM_REG_SIZE(id) (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
 #define KVM_ARM_SVC_sp svc_regs[0]
 #define KVM_ARM_SVC_lr svc_regs[1]
@@ -86,6 +87,7 @@
 struct kvm_debug_exit_arch {
 };
 struct kvm_sync_regs {
+  __u64 device_irq_level;
 };
 struct kvm_arch_memory_slot {
 };
@@ -130,11 +132,25 @@
 #define KVM_DEV_ARM_VGIC_GRP_CPU_REGS 2
 #define KVM_DEV_ARM_VGIC_CPUID_SHIFT 32
 #define KVM_DEV_ARM_VGIC_CPUID_MASK (0xffULL << KVM_DEV_ARM_VGIC_CPUID_SHIFT)
+#define KVM_DEV_ARM_VGIC_V3_MPIDR_SHIFT 32
+#define KVM_DEV_ARM_VGIC_V3_MPIDR_MASK (0xffffffffULL << KVM_DEV_ARM_VGIC_V3_MPIDR_SHIFT)
 #define KVM_DEV_ARM_VGIC_OFFSET_SHIFT 0
 #define KVM_DEV_ARM_VGIC_OFFSET_MASK (0xffffffffULL << KVM_DEV_ARM_VGIC_OFFSET_SHIFT)
+#define KVM_DEV_ARM_VGIC_SYSREG_INSTR_MASK (0xffff)
 #define KVM_DEV_ARM_VGIC_GRP_NR_IRQS 3
 #define KVM_DEV_ARM_VGIC_GRP_CTRL 4
+#define KVM_DEV_ARM_VGIC_GRP_REDIST_REGS 5
+#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_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
+#define VGIC_LEVEL_INFO_LINE_LEVEL 0
 #define KVM_DEV_ARM_VGIC_CTRL_INIT 0
+#define KVM_DEV_ARM_ITS_SAVE_TABLES 1
+#define KVM_DEV_ARM_ITS_RESTORE_TABLES 2
+#define KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES 3
 #define KVM_ARM_IRQ_TYPE_SHIFT 24
 #define KVM_ARM_IRQ_TYPE_MASK 0xff
 #define KVM_ARM_IRQ_VCPU_SHIFT 16
diff --git a/libc/kernel/uapi/asm-arm/asm/unistd-common.h b/libc/kernel/uapi/asm-arm/asm/unistd-common.h
index b2b6e94..c9ee555 100644
--- a/libc/kernel/uapi/asm-arm/asm/unistd-common.h
+++ b/libc/kernel/uapi/asm-arm/asm/unistd-common.h
@@ -370,4 +370,5 @@
 #define __NR_pkey_mprotect (__NR_SYSCALL_BASE + 394)
 #define __NR_pkey_alloc (__NR_SYSCALL_BASE + 395)
 #define __NR_pkey_free (__NR_SYSCALL_BASE + 396)
+#define __NR_statx (__NR_SYSCALL_BASE + 397)
 #endif
diff --git a/libc/kernel/uapi/asm-arm64/asm/hwcap.h b/libc/kernel/uapi/asm-arm64/asm/hwcap.h
index 6696ff0..4ab16ad 100644
--- a/libc/kernel/uapi/asm-arm64/asm/hwcap.h
+++ b/libc/kernel/uapi/asm-arm64/asm/hwcap.h
@@ -29,4 +29,9 @@
 #define HWCAP_ATOMICS (1 << 8)
 #define HWCAP_FPHP (1 << 9)
 #define HWCAP_ASIMDHP (1 << 10)
+#define HWCAP_CPUID (1 << 11)
+#define HWCAP_ASIMDRDM (1 << 12)
+#define HWCAP_JSCVT (1 << 13)
+#define HWCAP_FCMA (1 << 14)
+#define HWCAP_LRCPC (1 << 15)
 #endif
diff --git a/libc/kernel/uapi/asm-arm64/asm/kvm.h b/libc/kernel/uapi/asm-arm64/asm/kvm.h
index 81de8a4..dade888 100644
--- a/libc/kernel/uapi/asm-arm64/asm/kvm.h
+++ b/libc/kernel/uapi/asm-arm64/asm/kvm.h
@@ -32,6 +32,7 @@
 #define __KVM_HAVE_GUEST_DEBUG
 #define __KVM_HAVE_IRQ_LINE
 #define __KVM_HAVE_READONLY_MEM
+#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
 #define KVM_REG_SIZE(id) (1U << (((id) & KVM_REG_SIZE_MASK) >> KVM_REG_SIZE_SHIFT))
 struct kvm_regs {
   struct user_pt_regs regs;
@@ -88,6 +89,7 @@
 #define KVM_GUESTDBG_USE_SW_BP (1 << 16)
 #define KVM_GUESTDBG_USE_HW (1 << 17)
 struct kvm_sync_regs {
+  __u64 device_irq_level;
 };
 struct kvm_arch_memory_slot {
 };
@@ -123,11 +125,25 @@
 #define KVM_DEV_ARM_VGIC_GRP_CPU_REGS 2
 #define KVM_DEV_ARM_VGIC_CPUID_SHIFT 32
 #define KVM_DEV_ARM_VGIC_CPUID_MASK (0xffULL << KVM_DEV_ARM_VGIC_CPUID_SHIFT)
+#define KVM_DEV_ARM_VGIC_V3_MPIDR_SHIFT 32
+#define KVM_DEV_ARM_VGIC_V3_MPIDR_MASK (0xffffffffULL << KVM_DEV_ARM_VGIC_V3_MPIDR_SHIFT)
 #define KVM_DEV_ARM_VGIC_OFFSET_SHIFT 0
 #define KVM_DEV_ARM_VGIC_OFFSET_MASK (0xffffffffULL << KVM_DEV_ARM_VGIC_OFFSET_SHIFT)
+#define KVM_DEV_ARM_VGIC_SYSREG_INSTR_MASK (0xffff)
 #define KVM_DEV_ARM_VGIC_GRP_NR_IRQS 3
 #define KVM_DEV_ARM_VGIC_GRP_CTRL 4
+#define KVM_DEV_ARM_VGIC_GRP_REDIST_REGS 5
+#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_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
+#define VGIC_LEVEL_INFO_LINE_LEVEL 0
 #define KVM_DEV_ARM_VGIC_CTRL_INIT 0
+#define KVM_DEV_ARM_ITS_SAVE_TABLES 1
+#define KVM_DEV_ARM_ITS_RESTORE_TABLES 2
+#define KVM_DEV_ARM_VGIC_SAVE_PENDING_TABLES 3
 #define KVM_ARM_VCPU_PMU_V3_CTRL 0
 #define KVM_ARM_VCPU_PMU_V3_IRQ 0
 #define KVM_ARM_VCPU_PMU_V3_INIT 1
diff --git a/libc/kernel/uapi/asm-generic/socket.h b/libc/kernel/uapi/asm-generic/socket.h
index 2113896..d1dc0099 100644
--- a/libc/kernel/uapi/asm-generic/socket.h
+++ b/libc/kernel/uapi/asm-generic/socket.h
@@ -82,4 +82,7 @@
 #define SO_ATTACH_REUSEPORT_EBPF 52
 #define SO_CNX_ADVICE 53
 #define SCM_TIMESTAMPING_OPT_STATS 54
+#define SO_MEMINFO 55
+#define SO_INCOMING_NAPI_ID 56
+#define SO_COOKIE 57
 #endif
diff --git a/libc/kernel/uapi/asm-generic/unistd.h b/libc/kernel/uapi/asm-generic/unistd.h
index 4c9634f..83c41f9 100644
--- a/libc/kernel/uapi/asm-generic/unistd.h
+++ b/libc/kernel/uapi/asm-generic/unistd.h
@@ -96,7 +96,6 @@
 #define __NR_pipe2 59
 #define __NR_quotactl 60
 #define __NR_getdents64 61
-#define __ARCH_WANT_COMPAT_SYS_GETDENTS64
 #define __NR3264_lseek 62
 #define __NR_read 63
 #define __NR_write 64
@@ -317,8 +316,9 @@
 #define __NR_pkey_mprotect 288
 #define __NR_pkey_alloc 289
 #define __NR_pkey_free 290
+#define __NR_statx 291
 #undef __NR_syscalls
-#define __NR_syscalls 291
+#define __NR_syscalls 292
 #ifdef __ARCH_WANT_SYSCALL_NO_AT
 #define __NR_open 1024
 #define __NR_link 1025
diff --git a/libc/kernel/uapi/asm-mips/asm/inst.h b/libc/kernel/uapi/asm-mips/asm/inst.h
index 6bf1f69..46a65e6 100644
--- a/libc/kernel/uapi/asm-mips/asm/inst.h
+++ b/libc/kernel/uapi/asm-mips/asm/inst.h
@@ -315,6 +315,7 @@
   rfe_op = 0x10,
   eret_op = 0x18,
   wait_op = 0x20,
+  hypcall_op = 0x28
 };
 enum cop0_com_func {
   tlbr1_op = 0x01,
diff --git a/libc/kernel/uapi/asm-mips/asm/kvm.h b/libc/kernel/uapi/asm-mips/asm/kvm.h
index cf4e012..c42ea8d 100644
--- a/libc/kernel/uapi/asm-mips/asm/kvm.h
+++ b/libc/kernel/uapi/asm-mips/asm/kvm.h
@@ -19,6 +19,8 @@
 #ifndef __LINUX_KVM_MIPS_H
 #define __LINUX_KVM_MIPS_H
 #include <linux/types.h>
+#define __KVM_HAVE_READONLY_MEM
+#define KVM_COALESCED_MMIO_PAGE_OFFSET 1
 struct kvm_regs {
   __u64 gpr[32];
   __u64 hi;
@@ -66,6 +68,8 @@
 #define KVM_REG_MIPS_HI (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 32)
 #define KVM_REG_MIPS_LO (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 33)
 #define KVM_REG_MIPS_PC (KVM_REG_MIPS_GP | KVM_REG_SIZE_U64 | 34)
+#define KVM_REG_MIPS_MAAR (KVM_REG_MIPS_CP0 | (1 << 8))
+#define KVM_REG_MIPS_CP0_MAAR(n) (KVM_REG_MIPS_MAAR | KVM_REG_SIZE_U64 | (n))
 #define KVM_REG_MIPS_COUNT_CTL (KVM_REG_MIPS_KVM | KVM_REG_SIZE_U64 | 0)
 #define KVM_REG_MIPS_COUNT_CTL_DC 0x00000001
 #define KVM_REG_MIPS_COUNT_RESUME (KVM_REG_MIPS_KVM | KVM_REG_SIZE_U64 | 1)
diff --git a/libc/kernel/uapi/asm-mips/asm/socket.h b/libc/kernel/uapi/asm-mips/asm/socket.h
index a57a561..e97ae58 100644
--- a/libc/kernel/uapi/asm-mips/asm/socket.h
+++ b/libc/kernel/uapi/asm-mips/asm/socket.h
@@ -81,4 +81,7 @@
 #define SO_ATTACH_REUSEPORT_EBPF 52
 #define SO_CNX_ADVICE 53
 #define SCM_TIMESTAMPING_OPT_STATS 54
+#define SO_MEMINFO 55
+#define SO_INCOMING_NAPI_ID 56
+#define SO_COOKIE 57
 #endif
diff --git a/libc/kernel/uapi/asm-mips/asm/unistd.h b/libc/kernel/uapi/asm-mips/asm/unistd.h
index 11055c3..76d7b81 100644
--- a/libc/kernel/uapi/asm-mips/asm/unistd.h
+++ b/libc/kernel/uapi/asm-mips/asm/unistd.h
@@ -386,10 +386,11 @@
 #define __NR_pkey_mprotect (__NR_Linux + 363)
 #define __NR_pkey_alloc (__NR_Linux + 364)
 #define __NR_pkey_free (__NR_Linux + 365)
-#define __NR_Linux_syscalls 365
+#define __NR_statx (__NR_Linux + 366)
+#define __NR_Linux_syscalls 366
 #endif
 #define __NR_O32_Linux 4000
-#define __NR_O32_Linux_syscalls 365
+#define __NR_O32_Linux_syscalls 366
 #if _MIPS_SIM == _MIPS_SIM_ABI64
 #define __NR_Linux 5000
 #define __NR_read (__NR_Linux + 0)
@@ -717,10 +718,11 @@
 #define __NR_pkey_mprotect (__NR_Linux + 323)
 #define __NR_pkey_alloc (__NR_Linux + 324)
 #define __NR_pkey_free (__NR_Linux + 325)
-#define __NR_Linux_syscalls 325
+#define __NR_statx (__NR_Linux + 326)
+#define __NR_Linux_syscalls 326
 #endif
 #define __NR_64_Linux 5000
-#define __NR_64_Linux_syscalls 325
+#define __NR_64_Linux_syscalls 326
 #if _MIPS_SIM == _MIPS_SIM_NABI32
 #define __NR_Linux 6000
 #define __NR_read (__NR_Linux + 0)
@@ -1052,8 +1054,9 @@
 #define __NR_pkey_mprotect (__NR_Linux + 327)
 #define __NR_pkey_alloc (__NR_Linux + 328)
 #define __NR_pkey_free (__NR_Linux + 329)
-#define __NR_Linux_syscalls 329
+#define __NR_statx (__NR_Linux + 330)
+#define __NR_Linux_syscalls 330
 #endif
 #define __NR_N32_Linux 6000
-#define __NR_N32_Linux_syscalls 329
+#define __NR_N32_Linux_syscalls 330
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/bootparam.h b/libc/kernel/uapi/asm-x86/asm/bootparam.h
index d9421b7..772f552 100644
--- a/libc/kernel/uapi/asm-x86/asm/bootparam.h
+++ b/libc/kernel/uapi/asm-x86/asm/bootparam.h
@@ -42,7 +42,6 @@
 #include <linux/screen_info.h>
 #include <linux/apm_bios.h>
 #include <linux/edd.h>
-#include <asm/e820.h>
 #include <asm/ist.h>
 #include <video/edid.h>
 struct setup_data {
@@ -63,7 +62,7 @@
   __u32 header;
   __u16 version;
   __u32 realmode_swtch;
-  __u16 start_sys;
+  __u16 start_sys_seg;
   __u16 kernel_version;
   __u8 type_of_loader;
   __u8 loadflags;
@@ -111,6 +110,12 @@
   __u32 efi_systab_hi;
   __u32 efi_memmap_hi;
 };
+#define E820_MAX_ENTRIES_ZEROPAGE 128
+struct boot_e820_entry {
+  __u64 addr;
+  __u64 size;
+  __u32 type;
+} __attribute__((packed));
 struct boot_params {
   struct screen_info screen_info;
   struct apm_bios_info apm_bios_info;
@@ -134,13 +139,14 @@
   __u8 eddbuf_entries;
   __u8 edd_mbr_sig_buf_entries;
   __u8 kbd_status;
-  __u8 _pad5[3];
+  __u8 secure_boot;
+  __u8 _pad5[2];
   __u8 sentinel;
   __u8 _pad6[1];
   struct setup_header hdr;
   __u8 _pad7[0x290 - 0x1f1 - sizeof(struct setup_header)];
   __u32 edd_mbr_sig_buffer[EDD_MBR_SIG_MAX];
-  struct e820entry e820_map[E820MAX];
+  struct boot_e820_entry e820_table[E820_MAX_ENTRIES_ZEROPAGE];
   __u8 _pad8[48];
   struct edd_info eddbuf[EDDMAXNR];
   __u8 _pad9[276];
diff --git a/libc/kernel/uapi/linux/ion_test.h b/libc/kernel/uapi/asm-x86/asm/hwcap2.h
similarity index 67%
copy from libc/kernel/uapi/linux/ion_test.h
copy to libc/kernel/uapi/asm-x86/asm/hwcap2.h
index 3064508..9015dee 100644
--- a/libc/kernel/uapi/linux/ion_test.h
+++ b/libc/kernel/uapi/asm-x86/asm/hwcap2.h
@@ -16,19 +16,7 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef _UAPI_LINUX_ION_TEST_H
-#define _UAPI_LINUX_ION_TEST_H
-#include <linux/ioctl.h>
-#include <linux/types.h>
-struct ion_test_rw_data {
-  __u64 ptr;
-  __u64 offset;
-  __u64 size;
-  int write;
-  int __padding;
-};
-#define ION_IOC_MAGIC 'I'
-#define ION_IOC_TEST_SET_FD _IO(ION_IOC_MAGIC, 0xf0)
-#define ION_IOC_TEST_DMA_MAPPING _IOW(ION_IOC_MAGIC, 0xf1, struct ion_test_rw_data)
-#define ION_IOC_TEST_KERNEL_MAPPING _IOW(ION_IOC_MAGIC, 0xf2, struct ion_test_rw_data)
+#ifndef _ASM_X86_HWCAP2_H
+#define _ASM_X86_HWCAP2_H
+#define HWCAP2_RING3MWAIT (1 << 0)
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/hyperv.h b/libc/kernel/uapi/asm-x86/asm/hyperv.h
index 3796533..2d4b97a 100644
--- a/libc/kernel/uapi/asm-x86/asm/hyperv.h
+++ b/libc/kernel/uapi/asm-x86/asm/hyperv.h
@@ -41,6 +41,7 @@
 #define HV_X64_MSR_VP_INDEX_AVAILABLE (1 << 6)
 #define HV_X64_MSR_RESET_AVAILABLE (1 << 7)
 #define HV_X64_MSR_STAT_PAGES_AVAILABLE (1 << 8)
+#define HV_FEATURE_GUEST_CRASH_MSR_AVAILABLE (1 << 10)
 #define HV_X64_CREATE_PARTITIONS (1 << 0)
 #define HV_X64_ACCESS_PARTITION_ID (1 << 1)
 #define HV_X64_ACCESS_MEMORY_POOL (1 << 2)
@@ -60,12 +61,14 @@
 #define HV_X64_HYPERCALL_PARAMS_XMM_AVAILABLE (1 << 4)
 #define HV_X64_GUEST_IDLE_STATE_AVAILABLE (1 << 5)
 #define HV_X64_GUEST_CRASH_MSR_AVAILABLE (1 << 10)
-#define HV_X64_MWAIT_RECOMMENDED (1 << 0)
+#define HV_X64_AS_SWITCH_RECOMMENDED (1 << 0)
 #define HV_X64_LOCAL_TLB_FLUSH_RECOMMENDED (1 << 1)
 #define HV_X64_REMOTE_TLB_FLUSH_RECOMMENDED (1 << 2)
 #define HV_X64_APIC_ACCESS_RECOMMENDED (1 << 3)
 #define HV_X64_SYSTEM_RESET_RECOMMENDED (1 << 4)
 #define HV_X64_RELAXED_TIMING_RECOMMENDED (1 << 5)
+#define HV_X64_DEPRECATING_AEOI_RECOMMENDED (1 << 9)
+#define HV_CRASH_CTL_CRASH_NOTIFY (1ULL << 63)
 #define HV_X64_MSR_GUEST_OS_ID 0x40000000
 #define HV_X64_MSR_HYPERCALL 0x40000001
 #define HV_X64_MSR_VP_INDEX 0x40000002
diff --git a/libc/kernel/uapi/asm-x86/asm/kvm.h b/libc/kernel/uapi/asm-x86/asm/kvm.h
index 75680ee..913d4bc 100644
--- a/libc/kernel/uapi/asm-x86/asm/kvm.h
+++ b/libc/kernel/uapi/asm-x86/asm/kvm.h
@@ -20,6 +20,8 @@
 #define _ASM_X86_KVM_H
 #include <linux/types.h>
 #include <linux/ioctl.h>
+#define KVM_PIO_PAGE_OFFSET 1
+#define KVM_COALESCED_MMIO_PAGE_OFFSET 2
 #define DE_VECTOR 0
 #define DB_VECTOR 1
 #define BP_VECTOR 3
diff --git a/libc/kernel/uapi/asm-x86/asm/kvm_para.h b/libc/kernel/uapi/asm-x86/asm/kvm_para.h
index 19cab4a..78008df 100644
--- a/libc/kernel/uapi/asm-x86/asm/kvm_para.h
+++ b/libc/kernel/uapi/asm-x86/asm/kvm_para.h
@@ -47,6 +47,14 @@
   __u8 u8_pad[3];
   __u32 pad[11];
 };
+#define KVM_CLOCK_PAIRING_WALLCLOCK 0
+struct kvm_clock_pairing {
+  __s64 sec;
+  __s64 nsec;
+  __u64 tsc;
+  __u32 flags;
+  __u32 pad[9];
+};
 #define KVM_STEAL_ALIGNMENT_BITS 5
 #define KVM_STEAL_VALID_BITS ((- 1ULL << (KVM_STEAL_ALIGNMENT_BITS + 1)))
 #define KVM_STEAL_RESERVED_MASK (((1 << KVM_STEAL_ALIGNMENT_BITS) - 1) << 1)
diff --git a/libc/kernel/uapi/asm-x86/asm/prctl.h b/libc/kernel/uapi/asm-x86/asm/prctl.h
index bb68f7e..0e6bed9 100644
--- a/libc/kernel/uapi/asm-x86/asm/prctl.h
+++ b/libc/kernel/uapi/asm-x86/asm/prctl.h
@@ -22,6 +22,8 @@
 #define ARCH_SET_FS 0x1002
 #define ARCH_GET_FS 0x1003
 #define ARCH_GET_GS 0x1004
+#define ARCH_GET_CPUID 0x1011
+#define ARCH_SET_CPUID 0x1012
 #define ARCH_MAP_VDSO_X32 0x2001
 #define ARCH_MAP_VDSO_32 0x2002
 #define ARCH_MAP_VDSO_64 0x2003
diff --git a/libc/kernel/uapi/asm-x86/asm/unistd_32.h b/libc/kernel/uapi/asm-x86/asm/unistd_32.h
index 184c230..0038efb 100644
--- a/libc/kernel/uapi/asm-x86/asm/unistd_32.h
+++ b/libc/kernel/uapi/asm-x86/asm/unistd_32.h
@@ -397,4 +397,6 @@
 #define __NR_pkey_mprotect 380
 #define __NR_pkey_alloc 381
 #define __NR_pkey_free 382
+#define __NR_statx 383
+#define __NR_arch_prctl 384
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/unistd_64.h b/libc/kernel/uapi/asm-x86/asm/unistd_64.h
index c386eaf..3cde166 100644
--- a/libc/kernel/uapi/asm-x86/asm/unistd_64.h
+++ b/libc/kernel/uapi/asm-x86/asm/unistd_64.h
@@ -350,4 +350,5 @@
 #define __NR_pkey_mprotect 329
 #define __NR_pkey_alloc 330
 #define __NR_pkey_free 331
+#define __NR_statx 332
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/unistd_x32.h b/libc/kernel/uapi/asm-x86/asm/unistd_x32.h
index 2995659..e10cc6b 100644
--- a/libc/kernel/uapi/asm-x86/asm/unistd_x32.h
+++ b/libc/kernel/uapi/asm-x86/asm/unistd_x32.h
@@ -303,6 +303,7 @@
 #define __NR_pkey_mprotect (__X32_SYSCALL_BIT + 329)
 #define __NR_pkey_alloc (__X32_SYSCALL_BIT + 330)
 #define __NR_pkey_free (__X32_SYSCALL_BIT + 331)
+#define __NR_statx (__X32_SYSCALL_BIT + 332)
 #define __NR_rt_sigaction (__X32_SYSCALL_BIT + 512)
 #define __NR_rt_sigreturn (__X32_SYSCALL_BIT + 513)
 #define __NR_ioctl (__X32_SYSCALL_BIT + 514)
diff --git a/libc/kernel/uapi/asm-x86/asm/vmx.h b/libc/kernel/uapi/asm-x86/asm/vmx.h
index af2b727..83365f8 100644
--- a/libc/kernel/uapi/asm-x86/asm/vmx.h
+++ b/libc/kernel/uapi/asm-x86/asm/vmx.h
@@ -67,11 +67,15 @@
 #define EXIT_REASON_WBINVD 54
 #define EXIT_REASON_XSETBV 55
 #define EXIT_REASON_APIC_WRITE 56
+#define EXIT_REASON_RDRAND 57
 #define EXIT_REASON_INVPCID 58
+#define EXIT_REASON_VMFUNC 59
+#define EXIT_REASON_ENCLS 60
+#define EXIT_REASON_RDSEED 61
 #define EXIT_REASON_PML_FULL 62
 #define EXIT_REASON_XSAVES 63
 #define EXIT_REASON_XRSTORS 64
-#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_PENDING_INTERRUPT, "PENDING_INTERRUPT" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_INVLPG, "INVLPG" }, { EXIT_REASON_RDPMC, "RDPMC" }, { EXIT_REASON_RDTSC, "RDTSC" }, { EXIT_REASON_VMCALL, "VMCALL" }, { EXIT_REASON_VMCLEAR, "VMCLEAR" }, { EXIT_REASON_VMLAUNCH, "VMLAUNCH" }, { EXIT_REASON_VMPTRLD, "VMPTRLD" }, { EXIT_REASON_VMPTRST, "VMPTRST" }, { EXIT_REASON_VMREAD, "VMREAD" }, { EXIT_REASON_VMRESUME, "VMRESUME" }, { EXIT_REASON_VMWRITE, "VMWRITE" }, { EXIT_REASON_VMOFF, "VMOFF" }, { EXIT_REASON_VMON, "VMON" }, { EXIT_REASON_CR_ACCESS, "CR_ACCESS" }, { EXIT_REASON_DR_ACCESS, "DR_ACCESS" }, { EXIT_REASON_IO_INSTRUCTION, "IO_INSTRUCTION" }, { EXIT_REASON_MSR_READ, "MSR_READ" }, { EXIT_REASON_MSR_WRITE, "MSR_WRITE" }, { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" }, { EXIT_REASON_MONITOR_TRAP_FLAG, "MONITOR_TRAP_FLAG" }, { EXIT_REASON_MONITOR_INSTRUCTION, "MONITOR_INSTRUCTION" }, { EXIT_REASON_PAUSE_INSTRUCTION, "PAUSE_INSTRUCTION" }, { EXIT_REASON_MCE_DURING_VMENTRY, "MCE_DURING_VMENTRY" }, { EXIT_REASON_TPR_BELOW_THRESHOLD, "TPR_BELOW_THRESHOLD" }, { EXIT_REASON_APIC_ACCESS, "APIC_ACCESS" }, { EXIT_REASON_GDTR_IDTR, "GDTR_IDTR" }, { EXIT_REASON_LDTR_TR, "LDTR_TR" }, { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" }, { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" }, { EXIT_REASON_INVEPT, "INVEPT" }, { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" }, { EXIT_REASON_WBINVD, "WBINVD" }, { EXIT_REASON_APIC_WRITE, "APIC_WRITE" }, { EXIT_REASON_EOI_INDUCED, "EOI_INDUCED" }, { EXIT_REASON_INVALID_STATE, "INVALID_STATE" }, { EXIT_REASON_MSR_LOAD_FAIL, "MSR_LOAD_FAIL" }, { EXIT_REASON_INVD, "INVD" }, { EXIT_REASON_INVVPID, "INVVPID" }, { EXIT_REASON_INVPCID, "INVPCID" }, { EXIT_REASON_XSAVES, "XSAVES" }, { EXIT_REASON_XRSTORS, "XRSTORS" }
+#define VMX_EXIT_REASONS { EXIT_REASON_EXCEPTION_NMI, "EXCEPTION_NMI" }, { EXIT_REASON_EXTERNAL_INTERRUPT, "EXTERNAL_INTERRUPT" }, { EXIT_REASON_TRIPLE_FAULT, "TRIPLE_FAULT" }, { EXIT_REASON_PENDING_INTERRUPT, "PENDING_INTERRUPT" }, { EXIT_REASON_NMI_WINDOW, "NMI_WINDOW" }, { EXIT_REASON_TASK_SWITCH, "TASK_SWITCH" }, { EXIT_REASON_CPUID, "CPUID" }, { EXIT_REASON_HLT, "HLT" }, { EXIT_REASON_INVD, "INVD" }, { EXIT_REASON_INVLPG, "INVLPG" }, { EXIT_REASON_RDPMC, "RDPMC" }, { EXIT_REASON_RDTSC, "RDTSC" }, { EXIT_REASON_VMCALL, "VMCALL" }, { EXIT_REASON_VMCLEAR, "VMCLEAR" }, { EXIT_REASON_VMLAUNCH, "VMLAUNCH" }, { EXIT_REASON_VMPTRLD, "VMPTRLD" }, { EXIT_REASON_VMPTRST, "VMPTRST" }, { EXIT_REASON_VMREAD, "VMREAD" }, { EXIT_REASON_VMRESUME, "VMRESUME" }, { EXIT_REASON_VMWRITE, "VMWRITE" }, { EXIT_REASON_VMOFF, "VMOFF" }, { EXIT_REASON_VMON, "VMON" }, { EXIT_REASON_CR_ACCESS, "CR_ACCESS" }, { EXIT_REASON_DR_ACCESS, "DR_ACCESS" }, { EXIT_REASON_IO_INSTRUCTION, "IO_INSTRUCTION" }, { EXIT_REASON_MSR_READ, "MSR_READ" }, { EXIT_REASON_MSR_WRITE, "MSR_WRITE" }, { EXIT_REASON_INVALID_STATE, "INVALID_STATE" }, { EXIT_REASON_MSR_LOAD_FAIL, "MSR_LOAD_FAIL" }, { EXIT_REASON_MWAIT_INSTRUCTION, "MWAIT_INSTRUCTION" }, { EXIT_REASON_MONITOR_TRAP_FLAG, "MONITOR_TRAP_FLAG" }, { EXIT_REASON_MONITOR_INSTRUCTION, "MONITOR_INSTRUCTION" }, { EXIT_REASON_PAUSE_INSTRUCTION, "PAUSE_INSTRUCTION" }, { EXIT_REASON_MCE_DURING_VMENTRY, "MCE_DURING_VMENTRY" }, { EXIT_REASON_TPR_BELOW_THRESHOLD, "TPR_BELOW_THRESHOLD" }, { EXIT_REASON_APIC_ACCESS, "APIC_ACCESS" }, { EXIT_REASON_EOI_INDUCED, "EOI_INDUCED" }, { EXIT_REASON_GDTR_IDTR, "GDTR_IDTR" }, { EXIT_REASON_LDTR_TR, "LDTR_TR" }, { EXIT_REASON_EPT_VIOLATION, "EPT_VIOLATION" }, { EXIT_REASON_EPT_MISCONFIG, "EPT_MISCONFIG" }, { EXIT_REASON_INVEPT, "INVEPT" }, { EXIT_REASON_RDTSCP, "RDTSCP" }, { EXIT_REASON_PREEMPTION_TIMER, "PREEMPTION_TIMER" }, { EXIT_REASON_INVVPID, "INVVPID" }, { EXIT_REASON_WBINVD, "WBINVD" }, { EXIT_REASON_XSETBV, "XSETBV" }, { EXIT_REASON_APIC_WRITE, "APIC_WRITE" }, { EXIT_REASON_RDRAND, "RDRAND" }, { EXIT_REASON_INVPCID, "INVPCID" }, { EXIT_REASON_VMFUNC, "VMFUNC" }, { EXIT_REASON_ENCLS, "ENCLS" }, { EXIT_REASON_RDSEED, "RDSEED" }, { EXIT_REASON_PML_FULL, "PML_FULL" }, { EXIT_REASON_XSAVES, "XSAVES" }, { EXIT_REASON_XRSTORS, "XRSTORS" }
 #define VMX_ABORT_SAVE_GUEST_MSR_FAIL 1
 #define VMX_ABORT_LOAD_HOST_PDPTE_FAIL 2
 #define VMX_ABORT_LOAD_HOST_MSR_FAIL 4
diff --git a/libc/kernel/uapi/drm/amdgpu_drm.h b/libc/kernel/uapi/drm/amdgpu_drm.h
index e1768c6..f5e8b16 100644
--- a/libc/kernel/uapi/drm/amdgpu_drm.h
+++ b/libc/kernel/uapi/drm/amdgpu_drm.h
@@ -149,8 +149,10 @@
 #define AMDGPU_TILING_MACRO_TILE_ASPECT_MASK 0x3
 #define AMDGPU_TILING_NUM_BANKS_SHIFT 21
 #define AMDGPU_TILING_NUM_BANKS_MASK 0x3
-#define AMDGPU_TILING_SET(field,value) (((value) & AMDGPU_TILING_ ##field ##_MASK) << AMDGPU_TILING_ ##field ##_SHIFT)
-#define AMDGPU_TILING_GET(value,field) (((value) >> AMDGPU_TILING_ ##field ##_SHIFT) & AMDGPU_TILING_ ##field ##_MASK)
+#define AMDGPU_TILING_SWIZZLE_MODE_SHIFT 0
+#define AMDGPU_TILING_SWIZZLE_MODE_MASK 0x1f
+#define AMDGPU_TILING_SET(field,value) (((__u64) (value) & AMDGPU_TILING_ ##field ##_MASK) << AMDGPU_TILING_ ##field ##_SHIFT)
+#define AMDGPU_TILING_GET(value,field) (((__u64) (value) >> AMDGPU_TILING_ ##field ##_SHIFT) & AMDGPU_TILING_ ##field ##_MASK)
 #define AMDGPU_GEM_METADATA_OP_SET_METADATA 1
 #define AMDGPU_GEM_METADATA_OP_GET_METADATA 2
 struct drm_amdgpu_gem_metadata {
@@ -232,10 +234,19 @@
 };
 #define AMDGPU_VA_OP_MAP 1
 #define AMDGPU_VA_OP_UNMAP 2
+#define AMDGPU_VA_OP_CLEAR 3
+#define AMDGPU_VA_OP_REPLACE 4
 #define AMDGPU_VM_DELAY_UPDATE (1 << 0)
 #define AMDGPU_VM_PAGE_READABLE (1 << 1)
 #define AMDGPU_VM_PAGE_WRITEABLE (1 << 2)
 #define AMDGPU_VM_PAGE_EXECUTABLE (1 << 3)
+#define AMDGPU_VM_PAGE_PRT (1 << 4)
+#define AMDGPU_VM_MTYPE_MASK (0xf << 5)
+#define AMDGPU_VM_MTYPE_DEFAULT (0 << 5)
+#define AMDGPU_VM_MTYPE_NC (1 << 5)
+#define AMDGPU_VM_MTYPE_WC (2 << 5)
+#define AMDGPU_VM_MTYPE_CC (3 << 5)
+#define AMDGPU_VM_MTYPE_UC (4 << 5)
 struct drm_amdgpu_gem_va {
   __u32 handle;
   __u32 _pad;
@@ -250,7 +261,8 @@
 #define AMDGPU_HW_IP_DMA 2
 #define AMDGPU_HW_IP_UVD 3
 #define AMDGPU_HW_IP_VCE 4
-#define AMDGPU_HW_IP_NUM 5
+#define AMDGPU_HW_IP_UVD_ENC 5
+#define AMDGPU_HW_IP_NUM 6
 #define AMDGPU_HW_IP_INSTANCE_MAX_COUNT 1
 #define AMDGPU_CHUNK_ID_IB 0x01
 #define AMDGPU_CHUNK_ID_FENCE 0x02
@@ -276,6 +288,7 @@
 };
 #define AMDGPU_IB_FLAG_CE (1 << 0)
 #define AMDGPU_IB_FLAG_PREAMBLE (1 << 1)
+#define AMDGPU_IB_FLAG_PREEMPT (1 << 2)
 struct drm_amdgpu_cs_chunk_ib {
   __u32 _pad;
   __u32 flags;
@@ -320,6 +333,8 @@
 #define AMDGPU_INFO_FW_GFX_MEC 0x08
 #define AMDGPU_INFO_FW_SMC 0x0a
 #define AMDGPU_INFO_FW_SDMA 0x0b
+#define AMDGPU_INFO_FW_SOS 0x0c
+#define AMDGPU_INFO_FW_ASD 0x0d
 #define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f
 #define AMDGPU_INFO_VRAM_USAGE 0x10
 #define AMDGPU_INFO_GTT_USAGE 0x11
@@ -334,6 +349,15 @@
 #define AMDGPU_INFO_VBIOS 0x1B
 #define AMDGPU_INFO_VBIOS_SIZE 0x1
 #define AMDGPU_INFO_VBIOS_IMAGE 0x2
+#define AMDGPU_INFO_NUM_HANDLES 0x1C
+#define AMDGPU_INFO_SENSOR 0x1D
+#define AMDGPU_INFO_SENSOR_GFX_SCLK 0x1
+#define AMDGPU_INFO_SENSOR_GFX_MCLK 0x2
+#define AMDGPU_INFO_SENSOR_GPU_TEMP 0x3
+#define AMDGPU_INFO_SENSOR_GPU_LOAD 0x4
+#define AMDGPU_INFO_SENSOR_GPU_AVG_POWER 0x5
+#define AMDGPU_INFO_SENSOR_VDDNB 0x6
+#define AMDGPU_INFO_SENSOR_VDDGFX 0x7
 #define AMDGPU_INFO_MMR_SE_INDEX_SHIFT 0
 #define AMDGPU_INFO_MMR_SE_INDEX_MASK 0xff
 #define AMDGPU_INFO_MMR_SH_INDEX_SHIFT 8
@@ -368,6 +392,9 @@
       __u32 type;
       __u32 offset;
     } vbios_info;
+    struct {
+      __u32 type;
+    } sensor_info;
   };
 };
 struct drm_amdgpu_info_gds {
@@ -436,6 +463,23 @@
   __u32 vram_type;
   __u32 vram_bit_width;
   __u32 vce_harvest_config;
+  __u32 gc_double_offchip_lds_buf;
+  __u64 prim_buf_gpu_addr;
+  __u64 pos_buf_gpu_addr;
+  __u64 cntl_sb_buf_gpu_addr;
+  __u64 param_buf_gpu_addr;
+  __u32 prim_buf_size;
+  __u32 pos_buf_size;
+  __u32 cntl_sb_buf_size;
+  __u32 param_buf_size;
+  __u32 wave_front_size;
+  __u32 num_shader_visible_vgprs;
+  __u32 num_cu_per_sh;
+  __u32 num_tcc_blocks;
+  __u32 gs_vgt_table_depth;
+  __u32 gs_prim_buffer_depth;
+  __u32 max_gs_waves_per_vgt;
+  __u32 _pad1;
 };
 struct drm_amdgpu_info_hw_ip {
   __u32 hw_ip_version_major;
@@ -446,6 +490,10 @@
   __u32 available_rings;
   __u32 _pad;
 };
+struct drm_amdgpu_info_num_handles {
+  __u32 uvd_max_handles;
+  __u32 uvd_used_handles;
+};
 #define AMDGPU_VCE_CLOCK_TABLE_ENTRIES 6
 struct drm_amdgpu_info_vce_clock_table_entry {
   __u32 sclk;
@@ -464,6 +512,7 @@
 #define AMDGPU_FAMILY_KV 125
 #define AMDGPU_FAMILY_VI 130
 #define AMDGPU_FAMILY_CZ 135
+#define AMDGPU_FAMILY_AI 141
 #ifdef __cplusplus
 #endif
 #endif
diff --git a/libc/kernel/uapi/drm/drm.h b/libc/kernel/uapi/drm/drm.h
index d28c054..251deeb 100644
--- a/libc/kernel/uapi/drm/drm.h
+++ b/libc/kernel/uapi/drm/drm.h
@@ -360,6 +360,7 @@
 #define DRM_CAP_CURSOR_HEIGHT 0x9
 #define DRM_CAP_ADDFB2_MODIFIERS 0x10
 #define DRM_CAP_PAGE_FLIP_TARGET 0x11
+#define DRM_CAP_CRTC_IN_VBLANK_EVENT 0x12
 struct drm_get_cap {
   __u64 capability;
   __u64 value;
@@ -490,7 +491,7 @@
   __u32 tv_sec;
   __u32 tv_usec;
   __u32 sequence;
-  __u32 reserved;
+  __u32 crtc_id;
 };
 typedef struct drm_clip_rect drm_clip_rect_t;
 typedef struct drm_drawable_info drm_drawable_info_t;
diff --git a/libc/kernel/uapi/drm/drm_fourcc.h b/libc/kernel/uapi/drm/drm_fourcc.h
index 0747742..630ad30 100644
--- a/libc/kernel/uapi/drm/drm_fourcc.h
+++ b/libc/kernel/uapi/drm/drm_fourcc.h
@@ -25,8 +25,11 @@
 #define DRM_FORMAT_BIG_ENDIAN (1 << 31)
 #define DRM_FORMAT_C8 fourcc_code('C', '8', ' ', ' ')
 #define DRM_FORMAT_R8 fourcc_code('R', '8', ' ', ' ')
+#define DRM_FORMAT_R16 fourcc_code('R', '1', '6', ' ')
 #define DRM_FORMAT_RG88 fourcc_code('R', 'G', '8', '8')
 #define DRM_FORMAT_GR88 fourcc_code('G', 'R', '8', '8')
+#define DRM_FORMAT_RG1616 fourcc_code('R', 'G', '3', '2')
+#define DRM_FORMAT_GR1616 fourcc_code('G', 'R', '3', '2')
 #define DRM_FORMAT_RGB332 fourcc_code('R', 'G', 'B', '8')
 #define DRM_FORMAT_BGR233 fourcc_code('B', 'G', 'R', '8')
 #define DRM_FORMAT_XRGB4444 fourcc_code('X', 'R', '1', '2')
@@ -70,6 +73,14 @@
 #define DRM_FORMAT_UYVY fourcc_code('U', 'Y', 'V', 'Y')
 #define DRM_FORMAT_VYUY fourcc_code('V', 'Y', 'U', 'Y')
 #define DRM_FORMAT_AYUV fourcc_code('A', 'Y', 'U', 'V')
+#define DRM_FORMAT_XRGB8888_A8 fourcc_code('X', 'R', 'A', '8')
+#define DRM_FORMAT_XBGR8888_A8 fourcc_code('X', 'B', 'A', '8')
+#define DRM_FORMAT_RGBX8888_A8 fourcc_code('R', 'X', 'A', '8')
+#define DRM_FORMAT_BGRX8888_A8 fourcc_code('B', 'X', 'A', '8')
+#define DRM_FORMAT_RGB888_A8 fourcc_code('R', '8', 'A', '8')
+#define DRM_FORMAT_BGR888_A8 fourcc_code('B', '8', 'A', '8')
+#define DRM_FORMAT_RGB565_A8 fourcc_code('R', '5', 'A', '8')
+#define DRM_FORMAT_BGR565_A8 fourcc_code('B', '5', 'A', '8')
 #define DRM_FORMAT_NV12 fourcc_code('N', 'V', '1', '2')
 #define DRM_FORMAT_NV21 fourcc_code('N', 'V', '2', '1')
 #define DRM_FORMAT_NV16 fourcc_code('N', 'V', '1', '6')
@@ -87,16 +98,29 @@
 #define DRM_FORMAT_YUV444 fourcc_code('Y', 'U', '2', '4')
 #define DRM_FORMAT_YVU444 fourcc_code('Y', 'V', '2', '4')
 #define DRM_FORMAT_MOD_NONE 0
+#define DRM_FORMAT_MOD_VENDOR_NONE 0
 #define DRM_FORMAT_MOD_VENDOR_INTEL 0x01
 #define DRM_FORMAT_MOD_VENDOR_AMD 0x02
 #define DRM_FORMAT_MOD_VENDOR_NV 0x03
 #define DRM_FORMAT_MOD_VENDOR_SAMSUNG 0x04
 #define DRM_FORMAT_MOD_VENDOR_QCOM 0x05
+#define DRM_FORMAT_MOD_VENDOR_VIVANTE 0x06
 #define fourcc_mod_code(vendor,val) ((((__u64) DRM_FORMAT_MOD_VENDOR_ ##vendor) << 56) | (val & 0x00ffffffffffffffULL))
+#define DRM_FORMAT_MOD_LINEAR fourcc_mod_code(NONE, 0)
 #define I915_FORMAT_MOD_X_TILED fourcc_mod_code(INTEL, 1)
 #define I915_FORMAT_MOD_Y_TILED fourcc_mod_code(INTEL, 2)
 #define I915_FORMAT_MOD_Yf_TILED fourcc_mod_code(INTEL, 3)
 #define DRM_FORMAT_MOD_SAMSUNG_64_32_TILE fourcc_mod_code(SAMSUNG, 1)
+#define DRM_FORMAT_MOD_VIVANTE_TILED fourcc_mod_code(VIVANTE, 1)
+#define DRM_FORMAT_MOD_VIVANTE_SUPER_TILED fourcc_mod_code(VIVANTE, 2)
+#define DRM_FORMAT_MOD_VIVANTE_SPLIT_TILED fourcc_mod_code(VIVANTE, 3)
+#define DRM_FORMAT_MOD_VIVANTE_SPLIT_SUPER_TILED fourcc_mod_code(VIVANTE, 4)
+#define __fourcc_mod_tegra_mode_shift 32
+#define fourcc_mod_tegra_code(val,params) fourcc_mod_code(NV, ((((__u64) val) << __fourcc_mod_tegra_mode_shift) | params))
+#define fourcc_mod_tegra_mod(m) (m & ~((1ULL << __fourcc_mod_tegra_mode_shift) - 1))
+#define fourcc_mod_tegra_param(m) (m & ((1ULL << __fourcc_mod_tegra_mode_shift) - 1))
+#define NV_FORMAT_MOD_TEGRA_TILED fourcc_mod_tegra_code(1, 0)
+#define NV_FORMAT_MOD_TEGRA_16BX2_BLOCK(v) fourcc_mod_tegra_code(2, v)
 #ifdef __cplusplus
 #endif
 #endif
diff --git a/libc/kernel/uapi/drm/drm_mode.h b/libc/kernel/uapi/drm/drm_mode.h
index f15f3c6..9e7ee92 100644
--- a/libc/kernel/uapi/drm/drm_mode.h
+++ b/libc/kernel/uapi/drm/drm_mode.h
@@ -77,6 +77,8 @@
 #define DRM_MODE_DIRTY_OFF 0
 #define DRM_MODE_DIRTY_ON 1
 #define DRM_MODE_DIRTY_ANNOTATE 2
+#define DRM_MODE_LINK_STATUS_GOOD 0
+#define DRM_MODE_LINK_STATUS_BAD 1
 struct drm_mode_modeinfo {
   __u32 clock;
   __u16 hdisplay;
diff --git a/libc/kernel/uapi/drm/etnaviv_drm.h b/libc/kernel/uapi/drm/etnaviv_drm.h
index 04a1640..6376e25 100644
--- a/libc/kernel/uapi/drm/etnaviv_drm.h
+++ b/libc/kernel/uapi/drm/etnaviv_drm.h
@@ -91,6 +91,10 @@
   __u32 handle;
   __u64 presumed;
 };
+#define ETNA_SUBMIT_NO_IMPLICIT 0x0001
+#define ETNA_SUBMIT_FENCE_FD_IN 0x0002
+#define ETNA_SUBMIT_FENCE_FD_OUT 0x0004
+#define ETNA_SUBMIT_FLAGS (ETNA_SUBMIT_NO_IMPLICIT | ETNA_SUBMIT_FENCE_FD_IN | ETNA_SUBMIT_FENCE_FD_OUT)
 #define ETNA_PIPE_3D 0x00
 #define ETNA_PIPE_2D 0x01
 #define ETNA_PIPE_VG 0x02
@@ -104,6 +108,8 @@
   __u64 bos;
   __u64 relocs;
   __u64 stream;
+  __u32 flags;
+  __s32 fence_fd;
 };
 #define ETNA_WAIT_NONBLOCK 0x01
 struct drm_etnaviv_wait_fence {
diff --git a/libc/kernel/uapi/drm/i915_drm.h b/libc/kernel/uapi/drm/i915_drm.h
index 3279d26..af6f064 100644
--- a/libc/kernel/uapi/drm/i915_drm.h
+++ b/libc/kernel/uapi/drm/i915_drm.h
@@ -158,6 +158,7 @@
 #define DRM_I915_OVERLAY_PUT_IMAGE 0x27
 #define DRM_I915_OVERLAY_ATTRS 0x28
 #define DRM_I915_GEM_EXECBUFFER2 0x29
+#define DRM_I915_GEM_EXECBUFFER2_WR DRM_I915_GEM_EXECBUFFER2
 #define DRM_I915_GET_SPRITE_COLORKEY 0x2a
 #define DRM_I915_SET_SPRITE_COLORKEY 0x2b
 #define DRM_I915_GEM_WAIT 0x2c
@@ -170,6 +171,7 @@
 #define DRM_I915_GEM_USERPTR 0x33
 #define DRM_I915_GEM_CONTEXT_GETPARAM 0x34
 #define DRM_I915_GEM_CONTEXT_SETPARAM 0x35
+#define DRM_I915_PERF_OPEN 0x36
 #define DRM_IOCTL_I915_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_I915_INIT, drm_i915_init_t)
 #define DRM_IOCTL_I915_FLUSH DRM_IO(DRM_COMMAND_BASE + DRM_I915_FLUSH)
 #define DRM_IOCTL_I915_FLIP DRM_IO(DRM_COMMAND_BASE + DRM_I915_FLIP)
@@ -190,6 +192,7 @@
 #define DRM_IOCTL_I915_GEM_INIT DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_INIT, struct drm_i915_gem_init)
 #define DRM_IOCTL_I915_GEM_EXECBUFFER DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER, struct drm_i915_gem_execbuffer)
 #define DRM_IOCTL_I915_GEM_EXECBUFFER2 DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER2, struct drm_i915_gem_execbuffer2)
+#define DRM_IOCTL_I915_GEM_EXECBUFFER2_WR DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_EXECBUFFER2_WR, struct drm_i915_gem_execbuffer2)
 #define DRM_IOCTL_I915_GEM_PIN DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_PIN, struct drm_i915_gem_pin)
 #define DRM_IOCTL_I915_GEM_UNPIN DRM_IOW(DRM_COMMAND_BASE + DRM_I915_GEM_UNPIN, struct drm_i915_gem_unpin)
 #define DRM_IOCTL_I915_GEM_BUSY DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_BUSY, struct drm_i915_gem_busy)
@@ -222,6 +225,7 @@
 #define DRM_IOCTL_I915_GEM_USERPTR DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_USERPTR, struct drm_i915_gem_userptr)
 #define DRM_IOCTL_I915_GEM_CONTEXT_GETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_GETPARAM, struct drm_i915_gem_context_param)
 #define DRM_IOCTL_I915_GEM_CONTEXT_SETPARAM DRM_IOWR(DRM_COMMAND_BASE + DRM_I915_GEM_CONTEXT_SETPARAM, struct drm_i915_gem_context_param)
+#define DRM_IOCTL_I915_PERF_OPEN DRM_IOW(DRM_COMMAND_BASE + DRM_I915_PERF_OPEN, struct drm_i915_perf_open_param)
 typedef struct drm_i915_batchbuffer {
   int start;
   int used;
@@ -285,6 +289,9 @@
 #define I915_PARAM_MIN_EU_IN_POOL 39
 #define I915_PARAM_MMAP_GTT_VERSION 40
 #define I915_PARAM_HAS_SCHEDULER 41
+#define I915_PARAM_HUC_STATUS 42
+#define I915_PARAM_HAS_EXEC_ASYNC 43
+#define I915_PARAM_HAS_EXEC_FENCE 44
 typedef struct drm_i915_getparam {
   __s32 param;
   int __user * value;
@@ -418,7 +425,8 @@
 #define EXEC_OBJECT_SUPPORTS_48B_ADDRESS (1 << 3)
 #define EXEC_OBJECT_PINNED (1 << 4)
 #define EXEC_OBJECT_PAD_TO_SIZE (1 << 5)
-#define __EXEC_OBJECT_UNKNOWN_FLAGS - (EXEC_OBJECT_PAD_TO_SIZE << 1)
+#define EXEC_OBJECT_ASYNC (1 << 6)
+#define __EXEC_OBJECT_UNKNOWN_FLAGS - (EXEC_OBJECT_ASYNC << 1)
   __u64 flags;
   union {
     __u64 rsvd1;
@@ -460,7 +468,9 @@
 #define I915_EXEC_BSD_RING1 (1 << I915_EXEC_BSD_SHIFT)
 #define I915_EXEC_BSD_RING2 (2 << I915_EXEC_BSD_SHIFT)
 #define I915_EXEC_RESOURCE_STREAMER (1 << 15)
-#define __I915_EXEC_UNKNOWN_FLAGS - (I915_EXEC_RESOURCE_STREAMER << 1)
+#define I915_EXEC_FENCE_IN (1 << 16)
+#define I915_EXEC_FENCE_OUT (1 << 17)
+#define __I915_EXEC_UNKNOWN_FLAGS (- (I915_EXEC_FENCE_OUT << 1))
 #define I915_EXEC_CONTEXT_ID_MASK (0xffffffff)
 #define i915_execbuffer2_set_context_id(eb2,context) (eb2).rsvd1 = context & I915_EXEC_CONTEXT_ID_MASK
 #define i915_execbuffer2_get_context_id(eb2) ((eb2).rsvd1 & I915_EXEC_CONTEXT_ID_MASK)
@@ -629,8 +639,48 @@
 #define I915_CONTEXT_PARAM_NO_ZEROMAP 0x2
 #define I915_CONTEXT_PARAM_GTT_SIZE 0x3
 #define I915_CONTEXT_PARAM_NO_ERROR_CAPTURE 0x4
+#define I915_CONTEXT_PARAM_BANNABLE 0x5
   __u64 value;
 };
+enum drm_i915_oa_format {
+  I915_OA_FORMAT_A13 = 1,
+  I915_OA_FORMAT_A29,
+  I915_OA_FORMAT_A13_B8_C8,
+  I915_OA_FORMAT_B4_C8,
+  I915_OA_FORMAT_A45_B8_C8,
+  I915_OA_FORMAT_B4_C8_A16,
+  I915_OA_FORMAT_C4_B8,
+  I915_OA_FORMAT_MAX
+};
+enum drm_i915_perf_property_id {
+  DRM_I915_PERF_PROP_CTX_HANDLE = 1,
+  DRM_I915_PERF_PROP_SAMPLE_OA,
+  DRM_I915_PERF_PROP_OA_METRICS_SET,
+  DRM_I915_PERF_PROP_OA_FORMAT,
+  DRM_I915_PERF_PROP_OA_EXPONENT,
+  DRM_I915_PERF_PROP_MAX
+};
+struct drm_i915_perf_open_param {
+  __u32 flags;
+#define I915_PERF_FLAG_FD_CLOEXEC (1 << 0)
+#define I915_PERF_FLAG_FD_NONBLOCK (1 << 1)
+#define I915_PERF_FLAG_DISABLED (1 << 2)
+  __u32 num_properties;
+  __u64 properties_ptr;
+};
+#define I915_PERF_IOCTL_ENABLE _IO('i', 0x0)
+#define I915_PERF_IOCTL_DISABLE _IO('i', 0x1)
+struct drm_i915_perf_record_header {
+  __u32 type;
+  __u16 pad;
+  __u16 size;
+};
+enum drm_i915_perf_record_type {
+  DRM_I915_PERF_RECORD_SAMPLE = 1,
+  DRM_I915_PERF_RECORD_OA_REPORT_LOST = 2,
+  DRM_I915_PERF_RECORD_OA_BUFFER_LOST = 3,
+  DRM_I915_PERF_RECORD_MAX
+};
 #ifdef __cplusplus
 #endif
 #endif
diff --git a/libc/kernel/uapi/drm/msm_drm.h b/libc/kernel/uapi/drm/msm_drm.h
index a8e4943..83ad769 100644
--- a/libc/kernel/uapi/drm/msm_drm.h
+++ b/libc/kernel/uapi/drm/msm_drm.h
@@ -37,6 +37,7 @@
 #define MSM_PARAM_CHIP_ID 0x03
 #define MSM_PARAM_MAX_FREQ 0x04
 #define MSM_PARAM_TIMESTAMP 0x05
+#define MSM_PARAM_GMEM_BASE 0x06
 struct drm_msm_param {
   __u32 pipe;
   __u32 param;
diff --git a/libc/kernel/uapi/drm/omap_drm.h b/libc/kernel/uapi/drm/omap_drm.h
index 2da6420..54b539a 100644
--- a/libc/kernel/uapi/drm/omap_drm.h
+++ b/libc/kernel/uapi/drm/omap_drm.h
@@ -23,8 +23,8 @@
 #endif
 #define OMAP_PARAM_CHIPSET_ID 1
 struct drm_omap_param {
-  uint64_t param;
-  uint64_t value;
+  __u64 param;
+  __u64 value;
 };
 #define OMAP_BO_SCANOUT 0x00000001
 #define OMAP_BO_CACHE_MASK 0x00000006
@@ -37,38 +37,38 @@
 #define OMAP_BO_TILED_32 0x00000300
 #define OMAP_BO_TILED (OMAP_BO_TILED_8 | OMAP_BO_TILED_16 | OMAP_BO_TILED_32)
 union omap_gem_size {
-  uint32_t bytes;
+  __u32 bytes;
   struct {
-    uint16_t width;
-    uint16_t height;
+    __u16 width;
+    __u16 height;
   } tiled;
 };
 struct drm_omap_gem_new {
   union omap_gem_size size;
-  uint32_t flags;
-  uint32_t handle;
-  uint32_t __pad;
+  __u32 flags;
+  __u32 handle;
+  __u32 __pad;
 };
 enum omap_gem_op {
   OMAP_GEM_READ = 0x01,
   OMAP_GEM_WRITE = 0x02,
 };
 struct drm_omap_gem_cpu_prep {
-  uint32_t handle;
-  uint32_t op;
+  __u32 handle;
+  __u32 op;
 };
 struct drm_omap_gem_cpu_fini {
-  uint32_t handle;
-  uint32_t op;
-  uint32_t nregions;
-  uint32_t __pad;
+  __u32 handle;
+  __u32 op;
+  __u32 nregions;
+  __u32 __pad;
 };
 struct drm_omap_gem_info {
-  uint32_t handle;
-  uint32_t pad;
-  uint64_t offset;
-  uint32_t size;
-  uint32_t __pad;
+  __u32 handle;
+  __u32 pad;
+  __u64 offset;
+  __u32 size;
+  __u32 __pad;
 };
 #define DRM_OMAP_GET_PARAM 0x00
 #define DRM_OMAP_SET_PARAM 0x01
diff --git a/libc/kernel/uapi/drm/vmwgfx_drm.h b/libc/kernel/uapi/drm/vmwgfx_drm.h
index a9e6952..2b7e0fe 100644
--- a/libc/kernel/uapi/drm/vmwgfx_drm.h
+++ b/libc/kernel/uapi/drm/vmwgfx_drm.h
@@ -26,6 +26,7 @@
 #define DRM_VMW_GET_PARAM 0
 #define DRM_VMW_ALLOC_DMABUF 1
 #define DRM_VMW_UNREF_DMABUF 2
+#define DRM_VMW_HANDLE_CLOSE 2
 #define DRM_VMW_CURSOR_BYPASS 3
 #define DRM_VMW_CONTROL_STREAM 4
 #define DRM_VMW_CLAIM_STREAM 5
@@ -314,6 +315,10 @@
   enum drm_vmw_extended_context req;
   struct drm_vmw_context_arg rep;
 };
+struct drm_vmw_handle_close_arg {
+  __u32 handle;
+  __u32 pad64;
+};
 #ifdef __cplusplus
 #endif
 #endif
diff --git a/libc/kernel/uapi/linux/a.out.h b/libc/kernel/uapi/linux/a.out.h
index a3809b8..8f58c99 100644
--- a/libc/kernel/uapi/linux/a.out.h
+++ b/libc/kernel/uapi/linux/a.out.h
@@ -87,20 +87,6 @@
 #ifndef N_TXTADDR
 #define N_TXTADDR(x) (N_MAGIC(x) == QMAGIC ? PAGE_SIZE : 0)
 #endif
-#if defined(vax) || defined(hp300) || defined(pyr)
-#define SEGMENT_SIZE page_size
-#endif
-#ifdef sony
-#define SEGMENT_SIZE 0x2000
-#endif
-#ifdef is68k
-#define SEGMENT_SIZE 0x20000
-#endif
-#if defined(m68k) && defined(PORTAR)
-#define PAGE_SIZE 0x400
-#define SEGMENT_SIZE PAGE_SIZE
-#endif
-#ifdef linux
 #include <unistd.h>
 #if defined(__i386__) || defined(__mc68000__)
 #define SEGMENT_SIZE 1024
@@ -109,7 +95,6 @@
 #define SEGMENT_SIZE getpagesize()
 #endif
 #endif
-#endif
 #define _N_SEGMENT_ROUND(x) ALIGN(x, SEGMENT_SIZE)
 #define _N_TXTENDADDR(x) (N_TXTADDR(x) + (x).a_text)
 #ifndef N_DATADDR
@@ -171,13 +156,7 @@
   unsigned int r_pcrel : 1;
   unsigned int r_length : 2;
   unsigned int r_extern : 1;
-#ifdef NS32K
-  unsigned r_bsr : 1;
-  unsigned r_disp : 1;
-  unsigned r_pad : 2;
-#else
   unsigned int r_pad : 4;
-#endif
 };
 #endif
 #endif
diff --git a/libc/kernel/uapi/linux/android/binder.h b/libc/kernel/uapi/linux/android/binder.h
index 5a7929f..717826d 100644
--- a/libc/kernel/uapi/linux/android/binder.h
+++ b/libc/kernel/uapi/linux/android/binder.h
@@ -28,6 +28,8 @@
   BINDER_TYPE_HANDLE = B_PACK_CHARS('s', 'h', '*', B_TYPE_LARGE),
   BINDER_TYPE_WEAK_HANDLE = B_PACK_CHARS('w', 'h', '*', B_TYPE_LARGE),
   BINDER_TYPE_FD = B_PACK_CHARS('f', 'd', '*', B_TYPE_LARGE),
+  BINDER_TYPE_FDA = B_PACK_CHARS('f', 'd', 'a', B_TYPE_LARGE),
+  BINDER_TYPE_PTR = B_PACK_CHARS('p', 't', '*', B_TYPE_LARGE),
 };
 enum {
   FLAT_BINDER_FLAG_PRIORITY_MASK = 0xff,
@@ -40,8 +42,11 @@
 typedef __u64 binder_size_t;
 typedef __u64 binder_uintptr_t;
 #endif
-struct flat_binder_object {
+struct binder_object_header {
   __u32 type;
+};
+struct flat_binder_object {
+  struct binder_object_header hdr;
   __u32 flags;
   union {
     binder_uintptr_t binder;
@@ -49,6 +54,32 @@
   };
   binder_uintptr_t cookie;
 };
+struct binder_fd_object {
+  struct binder_object_header hdr;
+  __u32 pad_flags;
+  union {
+    binder_uintptr_t pad_binder;
+    __u32 fd;
+  };
+  binder_uintptr_t cookie;
+};
+struct binder_buffer_object {
+  struct binder_object_header hdr;
+  __u32 flags;
+  binder_uintptr_t buffer;
+  binder_size_t length;
+  binder_size_t parent;
+  binder_size_t parent_offset;
+};
+enum {
+  BINDER_BUFFER_FLAG_HAS_PARENT = 0x01,
+};
+struct __kernel_binder_fd_array_object {
+  struct binder_object_header hdr;
+  binder_size_t num_fds;
+  binder_size_t parent;
+  binder_size_t parent_offset;
+};
 struct binder_write_read {
   binder_size_t write_size;
   binder_size_t write_consumed;
@@ -98,6 +129,10 @@
     __u8 buf[8];
   } data;
 };
+struct binder_transaction_data_sg {
+  struct binder_transaction_data transaction_data;
+  binder_size_t buffers_size;
+};
 struct binder_ptr_cookie {
   binder_uintptr_t ptr;
   binder_uintptr_t cookie;
@@ -153,5 +188,7 @@
   BC_REQUEST_DEATH_NOTIFICATION = _IOW('c', 14, struct binder_handle_cookie),
   BC_CLEAR_DEATH_NOTIFICATION = _IOW('c', 15, struct binder_handle_cookie),
   BC_DEAD_BINDER_DONE = _IOW('c', 16, binder_uintptr_t),
+  BC_TRANSACTION_SG = _IOW('c', 17, struct binder_transaction_data_sg),
+  BC_REPLY_SG = _IOW('c', 18, struct binder_transaction_data_sg),
 };
 #endif
diff --git a/libc/kernel/uapi/linux/ion_test.h b/libc/kernel/uapi/linux/aspeed-lpc-ctrl.h
similarity index 65%
copy from libc/kernel/uapi/linux/ion_test.h
copy to libc/kernel/uapi/linux/aspeed-lpc-ctrl.h
index 3064508..fcde081 100644
--- a/libc/kernel/uapi/linux/ion_test.h
+++ b/libc/kernel/uapi/linux/aspeed-lpc-ctrl.h
@@ -16,19 +16,21 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef _UAPI_LINUX_ION_TEST_H
-#define _UAPI_LINUX_ION_TEST_H
+#ifndef _UAPI_LINUX_ASPEED_LPC_CTRL_H
+#define _UAPI_LINUX_ASPEED_LPC_CTRL_H
 #include <linux/ioctl.h>
 #include <linux/types.h>
-struct ion_test_rw_data {
-  __u64 ptr;
-  __u64 offset;
-  __u64 size;
-  int write;
-  int __padding;
+#define ASPEED_LPC_CTRL_WINDOW_FLASH 1
+#define ASPEED_LPC_CTRL_WINDOW_MEMORY 2
+struct aspeed_lpc_ctrl_mapping {
+  __u8 window_type;
+  __u8 window_id;
+  __u16 flags;
+  __u32 addr;
+  __u32 offset;
+  __u32 size;
 };
-#define ION_IOC_MAGIC 'I'
-#define ION_IOC_TEST_SET_FD _IO(ION_IOC_MAGIC, 0xf0)
-#define ION_IOC_TEST_DMA_MAPPING _IOW(ION_IOC_MAGIC, 0xf1, struct ion_test_rw_data)
-#define ION_IOC_TEST_KERNEL_MAPPING _IOW(ION_IOC_MAGIC, 0xf2, struct ion_test_rw_data)
+#define __ASPEED_LPC_CTRL_IOCTL_MAGIC 0xb2
+#define ASPEED_LPC_CTRL_IOCTL_GET_SIZE _IOWR(__ASPEED_LPC_CTRL_IOCTL_MAGIC, 0x00, struct aspeed_lpc_ctrl_mapping)
+#define ASPEED_LPC_CTRL_IOCTL_MAP _IOW(__ASPEED_LPC_CTRL_IOCTL_MAGIC, 0x01, struct aspeed_lpc_ctrl_mapping)
 #endif
diff --git a/libc/kernel/uapi/linux/audit.h b/libc/kernel/uapi/linux/audit.h
index 3eeda4c..3edd1d4 100644
--- a/libc/kernel/uapi/linux/audit.h
+++ b/libc/kernel/uapi/linux/audit.h
@@ -77,6 +77,7 @@
 #define AUDIT_PROCTITLE 1327
 #define AUDIT_FEATURE_CHANGE 1328
 #define AUDIT_REPLACE 1329
+#define AUDIT_KERN_MODULE 1330
 #define AUDIT_AVC 1400
 #define AUDIT_SELINUX_ERR 1401
 #define AUDIT_AVC_PATH 1402
@@ -234,12 +235,14 @@
 #define AUDIT_STATUS_RATE_LIMIT 0x0008
 #define AUDIT_STATUS_BACKLOG_LIMIT 0x0010
 #define AUDIT_STATUS_BACKLOG_WAIT_TIME 0x0020
+#define AUDIT_STATUS_LOST 0x0040
 #define AUDIT_FEATURE_BITMAP_BACKLOG_LIMIT 0x00000001
 #define AUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME 0x00000002
 #define AUDIT_FEATURE_BITMAP_EXECUTABLE_PATH 0x00000004
 #define AUDIT_FEATURE_BITMAP_EXCLUDE_EXTEND 0x00000008
 #define AUDIT_FEATURE_BITMAP_SESSIONID_FILTER 0x00000010
-#define AUDIT_FEATURE_BITMAP_ALL (AUDIT_FEATURE_BITMAP_BACKLOG_LIMIT | AUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME | AUDIT_FEATURE_BITMAP_EXECUTABLE_PATH | AUDIT_FEATURE_BITMAP_EXCLUDE_EXTEND | AUDIT_FEATURE_BITMAP_SESSIONID_FILTER)
+#define AUDIT_FEATURE_BITMAP_LOST_RESET 0x00000020
+#define AUDIT_FEATURE_BITMAP_ALL (AUDIT_FEATURE_BITMAP_BACKLOG_LIMIT | AUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME | AUDIT_FEATURE_BITMAP_EXECUTABLE_PATH | AUDIT_FEATURE_BITMAP_EXCLUDE_EXTEND | AUDIT_FEATURE_BITMAP_SESSIONID_FILTER | AUDIT_FEATURE_BITMAP_LOST_RESET)
 #define AUDIT_VERSION_LATEST AUDIT_FEATURE_BITMAP_ALL
 #define AUDIT_VERSION_BACKLOG_LIMIT AUDIT_FEATURE_BITMAP_BACKLOG_LIMIT
 #define AUDIT_VERSION_BACKLOG_WAIT_TIME AUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME
diff --git a/libc/kernel/uapi/linux/auto_dev-ioctl.h b/libc/kernel/uapi/linux/auto_dev-ioctl.h
index 7068876..be00b9e 100644
--- a/libc/kernel/uapi/linux/auto_dev-ioctl.h
+++ b/libc/kernel/uapi/linux/auto_dev-ioctl.h
@@ -103,7 +103,6 @@
   AUTOFS_DEV_IOCTL_ASKUMOUNT_CMD,
   AUTOFS_DEV_IOCTL_ISMOUNTPOINT_CMD,
 };
-#define AUTOFS_IOCTL 0x93
 #define AUTOFS_DEV_IOCTL_VERSION _IOWR(AUTOFS_IOCTL, AUTOFS_DEV_IOCTL_VERSION_CMD, struct autofs_dev_ioctl)
 #define AUTOFS_DEV_IOCTL_PROTOVER _IOWR(AUTOFS_IOCTL, AUTOFS_DEV_IOCTL_PROTOVER_CMD, struct autofs_dev_ioctl)
 #define AUTOFS_DEV_IOCTL_PROTOSUBVER _IOWR(AUTOFS_IOCTL, AUTOFS_DEV_IOCTL_PROTOSUBVER_CMD, struct autofs_dev_ioctl)
diff --git a/libc/kernel/uapi/linux/auto_fs.h b/libc/kernel/uapi/linux/auto_fs.h
index 68041c5..93a3724 100644
--- a/libc/kernel/uapi/linux/auto_fs.h
+++ b/libc/kernel/uapi/linux/auto_fs.h
@@ -46,11 +46,20 @@
   int len;
   char name[NAME_MAX + 1];
 };
-#define AUTOFS_IOC_READY _IO(0x93, 0x60)
-#define AUTOFS_IOC_FAIL _IO(0x93, 0x61)
-#define AUTOFS_IOC_CATATONIC _IO(0x93, 0x62)
-#define AUTOFS_IOC_PROTOVER _IOR(0x93, 0x63, int)
-#define AUTOFS_IOC_SETTIMEOUT32 _IOWR(0x93, 0x64, compat_ulong_t)
-#define AUTOFS_IOC_SETTIMEOUT _IOWR(0x93, 0x64, unsigned long)
-#define AUTOFS_IOC_EXPIRE _IOR(0x93, 0x65, struct autofs_packet_expire)
+#define AUTOFS_IOCTL 0x93
+enum {
+  AUTOFS_IOC_READY_CMD = 0x60,
+  AUTOFS_IOC_FAIL_CMD,
+  AUTOFS_IOC_CATATONIC_CMD,
+  AUTOFS_IOC_PROTOVER_CMD,
+  AUTOFS_IOC_SETTIMEOUT_CMD,
+  AUTOFS_IOC_EXPIRE_CMD,
+};
+#define AUTOFS_IOC_READY _IO(AUTOFS_IOCTL, AUTOFS_IOC_READY_CMD)
+#define AUTOFS_IOC_FAIL _IO(AUTOFS_IOCTL, AUTOFS_IOC_FAIL_CMD)
+#define AUTOFS_IOC_CATATONIC _IO(AUTOFS_IOCTL, AUTOFS_IOC_CATATONIC_CMD)
+#define AUTOFS_IOC_PROTOVER _IOR(AUTOFS_IOCTL, AUTOFS_IOC_PROTOVER_CMD, int)
+#define AUTOFS_IOC_SETTIMEOUT32 _IOWR(AUTOFS_IOCTL, AUTOFS_IOC_SETTIMEOUT_CMD, compat_ulong_t)
+#define AUTOFS_IOC_SETTIMEOUT _IOWR(AUTOFS_IOCTL, AUTOFS_IOC_SETTIMEOUT_CMD, unsigned long)
+#define AUTOFS_IOC_EXPIRE _IOR(AUTOFS_IOCTL, AUTOFS_IOC_EXPIRE_CMD, struct autofs_packet_expire)
 #endif
diff --git a/libc/kernel/uapi/linux/auto_fs4.h b/libc/kernel/uapi/linux/auto_fs4.h
index a8d9e42..d09b39b 100644
--- a/libc/kernel/uapi/linux/auto_fs4.h
+++ b/libc/kernel/uapi/linux/auto_fs4.h
@@ -79,9 +79,14 @@
   autofs_packet_missing_direct_t missing_direct;
   autofs_packet_expire_direct_t expire_direct;
 };
-#define AUTOFS_IOC_EXPIRE_MULTI _IOW(0x93, 0x66, int)
+enum {
+  AUTOFS_IOC_EXPIRE_MULTI_CMD = 0x66,
+  AUTOFS_IOC_PROTOSUBVER_CMD,
+  AUTOFS_IOC_ASKUMOUNT_CMD = 0x70,
+};
+#define AUTOFS_IOC_EXPIRE_MULTI _IOW(AUTOFS_IOCTL, AUTOFS_IOC_EXPIRE_MULTI_CMD, int)
 #define AUTOFS_IOC_EXPIRE_INDIRECT AUTOFS_IOC_EXPIRE_MULTI
 #define AUTOFS_IOC_EXPIRE_DIRECT AUTOFS_IOC_EXPIRE_MULTI
-#define AUTOFS_IOC_PROTOSUBVER _IOR(0x93, 0x67, int)
-#define AUTOFS_IOC_ASKUMOUNT _IOR(0x93, 0x70, int)
+#define AUTOFS_IOC_PROTOSUBVER _IOR(AUTOFS_IOCTL, AUTOFS_IOC_PROTOSUBVER_CMD, int)
+#define AUTOFS_IOC_ASKUMOUNT _IOR(AUTOFS_IOCTL, AUTOFS_IOC_ASKUMOUNT_CMD, int)
 #endif
diff --git a/libc/kernel/uapi/linux/bcache.h b/libc/kernel/uapi/linux/bcache.h
index c3b3c8a..0933d51 100644
--- a/libc/kernel/uapi/linux/bcache.h
+++ b/libc/kernel/uapi/linux/bcache.h
@@ -18,7 +18,7 @@
  ****************************************************************************/
 #ifndef _LINUX_BCACHE_H
 #define _LINUX_BCACHE_H
-#include <asm/types.h>
+#include <linux/types.h>
 #define BITMASK(name,type,field,offset,size) static inline __u64 name(const type * k) \
 { return(k->field >> offset) & ~(~0ULL << size); } static inline void SET_ ##name(type * k, __u64 v) \
 { k->field &= ~(~(~0ULL << size) << offset); k->field |= (v & ~(~0ULL << size)) << offset; \
diff --git a/libc/kernel/uapi/linux/bpf.h b/libc/kernel/uapi/linux/bpf.h
index b1a6a92..08c1aba 100644
--- a/libc/kernel/uapi/linux/bpf.h
+++ b/libc/kernel/uapi/linux/bpf.h
@@ -57,6 +57,10 @@
   __s16 off;
   __s32 imm;
 };
+struct bpf_lpm_trie_key {
+  __u32 prefixlen;
+  __u8 data[0];
+};
 enum bpf_cmd {
   BPF_MAP_CREATE,
   BPF_MAP_LOOKUP_ELEM,
@@ -68,6 +72,7 @@
   BPF_OBJ_GET,
   BPF_PROG_ATTACH,
   BPF_PROG_DETACH,
+  BPF_PROG_TEST_RUN,
 };
 enum bpf_map_type {
   BPF_MAP_TYPE_UNSPEC,
@@ -81,6 +86,9 @@
   BPF_MAP_TYPE_CGROUP_ARRAY,
   BPF_MAP_TYPE_LRU_HASH,
   BPF_MAP_TYPE_LRU_PERCPU_HASH,
+  BPF_MAP_TYPE_LPM_TRIE,
+  BPF_MAP_TYPE_ARRAY_OF_MAPS,
+  BPF_MAP_TYPE_HASH_OF_MAPS,
 };
 enum bpf_prog_type {
   BPF_PROG_TYPE_UNSPEC,
@@ -105,6 +113,7 @@
 };
 #define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
 #define BPF_F_ALLOW_OVERRIDE (1U << 0)
+#define BPF_F_STRICT_ALIGNMENT (1U << 0)
 #define BPF_PSEUDO_MAP_FD 1
 #define BPF_ANY 0
 #define BPF_NOEXIST 1
@@ -118,6 +127,7 @@
     __u32 value_size;
     __u32 max_entries;
     __u32 map_flags;
+    __u32 inner_map_fd;
   };
   struct {
     __u32 map_fd;
@@ -137,6 +147,7 @@
     __u32 log_size;
     __aligned_u64 log_buf;
     __u32 kern_version;
+    __u32 prog_flags;
   };
   struct {
     __aligned_u64 pathname;
@@ -148,8 +159,18 @@
     __u32 attach_type;
     __u32 attach_flags;
   };
+  struct {
+    __u32 prog_fd;
+    __u32 retval;
+    __u32 data_size_in;
+    __u32 data_size_out;
+    __aligned_u64 data_in;
+    __aligned_u64 data_out;
+    __u32 repeat;
+    __u32 duration;
+  } test;
 } __attribute__((aligned(8)));
-#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head),
+#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid),
 #define __BPF_ENUM_FN(x) BPF_FUNC_ ##x
 enum bpf_func_id {
   __BPF_FUNC_MAPPER(__BPF_ENUM_FN) __BPF_FUNC_MAX_ID,
@@ -160,6 +181,7 @@
 #define BPF_F_HDR_FIELD_MASK 0xfULL
 #define BPF_F_PSEUDO_HDR (1ULL << 4)
 #define BPF_F_MARK_MANGLED_0 (1ULL << 5)
+#define BPF_F_MARK_ENFORCE (1ULL << 6)
 #define BPF_F_INGRESS (1ULL << 0)
 #define BPF_F_TUNINFO_IPV6 (1ULL << 0)
 #define BPF_F_SKIP_FIELD_MASK 0xffULL
@@ -189,6 +211,7 @@
   __u32 tc_classid;
   __u32 data;
   __u32 data_end;
+  __u32 napi_id;
 };
 struct bpf_tunnel_key {
   __u32 tunnel_id;
diff --git a/libc/kernel/uapi/linux/btrfs.h b/libc/kernel/uapi/linux/btrfs.h
index 8a9dcdc..56e33ae 100644
--- a/libc/kernel/uapi/linux/btrfs.h
+++ b/libc/kernel/uapi/linux/btrfs.h
@@ -183,10 +183,10 @@
 struct btrfs_balance_args {
   __u64 profiles;
   union {
-    __le64 usage;
+    __u64 usage;
     struct {
-      __le32 usage_min;
-      __le32 usage_max;
+      __u32 usage_min;
+      __u32 usage_max;
     };
   };
   __u64 devid;
@@ -203,8 +203,8 @@
       __u32 limit_max;
     };
   };
-  __le32 stripes_min;
-  __le32 stripes_max;
+  __u32 stripes_min;
+  __u32 stripes_max;
   __u64 unused[6];
 } __attribute__((__packed__));
 struct btrfs_balance_progress {
diff --git a/libc/kernel/uapi/linux/btrfs_tree.h b/libc/kernel/uapi/linux/btrfs_tree.h
index 677a580..c75732e 100644
--- a/libc/kernel/uapi/linux/btrfs_tree.h
+++ b/libc/kernel/uapi/linux/btrfs_tree.h
@@ -18,6 +18,8 @@
  ****************************************************************************/
 #ifndef _BTRFS_CTREE_H_
 #define _BTRFS_CTREE_H_
+#include <linux/btrfs.h>
+#include <linux/types.h>
 #define BTRFS_ROOT_TREE_OBJECTID 1ULL
 #define BTRFS_EXTENT_TREE_OBJECTID 2ULL
 #define BTRFS_CHUNK_TREE_OBJECTID 3ULL
diff --git a/libc/kernel/uapi/linux/can/netlink.h b/libc/kernel/uapi/linux/can/netlink.h
index e583976..7df626d 100644
--- a/libc/kernel/uapi/linux/can/netlink.h
+++ b/libc/kernel/uapi/linux/can/netlink.h
@@ -88,7 +88,12 @@
   IFLA_CAN_BERR_COUNTER,
   IFLA_CAN_DATA_BITTIMING,
   IFLA_CAN_DATA_BITTIMING_CONST,
+  IFLA_CAN_TERMINATION,
+  IFLA_CAN_TERMINATION_CONST,
+  IFLA_CAN_BITRATE_CONST,
+  IFLA_CAN_DATA_BITRATE_CONST,
   __IFLA_CAN_MAX
 };
 #define IFLA_CAN_MAX (__IFLA_CAN_MAX - 1)
+#define CAN_TERMINATION_DISABLED 0
 #endif
diff --git a/libc/kernel/uapi/linux/ion_test.h b/libc/kernel/uapi/linux/can/vxcan.h
similarity index 67%
copy from libc/kernel/uapi/linux/ion_test.h
copy to libc/kernel/uapi/linux/can/vxcan.h
index 3064508..950b645 100644
--- a/libc/kernel/uapi/linux/ion_test.h
+++ b/libc/kernel/uapi/linux/can/vxcan.h
@@ -16,19 +16,12 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef _UAPI_LINUX_ION_TEST_H
-#define _UAPI_LINUX_ION_TEST_H
-#include <linux/ioctl.h>
-#include <linux/types.h>
-struct ion_test_rw_data {
-  __u64 ptr;
-  __u64 offset;
-  __u64 size;
-  int write;
-  int __padding;
+#ifndef _UAPI_CAN_VXCAN_H
+#define _UAPI_CAN_VXCAN_H
+enum {
+  VXCAN_INFO_UNSPEC,
+  VXCAN_INFO_PEER,
+  __VXCAN_INFO_MAX
+#define VXCAN_INFO_MAX (__VXCAN_INFO_MAX - 1)
 };
-#define ION_IOC_MAGIC 'I'
-#define ION_IOC_TEST_SET_FD _IO(ION_IOC_MAGIC, 0xf0)
-#define ION_IOC_TEST_DMA_MAPPING _IOW(ION_IOC_MAGIC, 0xf1, struct ion_test_rw_data)
-#define ION_IOC_TEST_KERNEL_MAPPING _IOW(ION_IOC_MAGIC, 0xf2, struct ion_test_rw_data)
 #endif
diff --git a/libc/kernel/uapi/linux/cryptouser.h b/libc/kernel/uapi/linux/cryptouser.h
index c2dbe76..15c46d8 100644
--- a/libc/kernel/uapi/linux/cryptouser.h
+++ b/libc/kernel/uapi/linux/cryptouser.h
@@ -16,6 +16,7 @@
  ***
  ****************************************************************************
  ****************************************************************************/
+#include <linux/types.h>
 enum {
   CRYPTO_MSG_BASE = 0x10,
   CRYPTO_MSG_NEWALG = 0x10,
@@ -27,7 +28,7 @@
 };
 #define CRYPTO_MSG_MAX (__CRYPTO_MSG_MAX - 1)
 #define CRYPTO_NR_MSGTYPES (CRYPTO_MSG_MAX + 1 - CRYPTO_MSG_BASE)
-#define CRYPTO_MAX_NAME CRYPTO_MAX_ALG_NAME
+#define CRYPTO_MAX_NAME 64
 enum crypto_attr_type_t {
   CRYPTOCFGA_UNSPEC,
   CRYPTOCFGA_PRIORITY_VAL,
@@ -45,9 +46,9 @@
 #define CRYPTOCFGA_MAX (__CRYPTOCFGA_MAX - 1)
 };
 struct crypto_user_alg {
-  char cru_name[CRYPTO_MAX_ALG_NAME];
-  char cru_driver_name[CRYPTO_MAX_ALG_NAME];
-  char cru_module_name[CRYPTO_MAX_ALG_NAME];
+  char cru_name[CRYPTO_MAX_NAME];
+  char cru_driver_name[CRYPTO_MAX_NAME];
+  char cru_module_name[CRYPTO_MAX_NAME];
   __u32 cru_type;
   __u32 cru_mask;
   __u32 cru_refcnt;
@@ -62,7 +63,7 @@
   unsigned int digestsize;
 };
 struct crypto_report_cipher {
-  char type[CRYPTO_MAX_ALG_NAME];
+  char type[CRYPTO_MAX_NAME];
   unsigned int blocksize;
   unsigned int min_keysize;
   unsigned int max_keysize;
diff --git a/libc/kernel/uapi/linux/devlink.h b/libc/kernel/uapi/linux/devlink.h
index c51bf77..01f6e74 100644
--- a/libc/kernel/uapi/linux/devlink.h
+++ b/libc/kernel/uapi/linux/devlink.h
@@ -51,8 +51,14 @@
   DEVLINK_CMD_SB_TC_POOL_BIND_DEL,
   DEVLINK_CMD_SB_OCC_SNAPSHOT,
   DEVLINK_CMD_SB_OCC_MAX_CLEAR,
-  DEVLINK_CMD_ESWITCH_MODE_GET,
-  DEVLINK_CMD_ESWITCH_MODE_SET,
+  DEVLINK_CMD_ESWITCH_GET,
+#define DEVLINK_CMD_ESWITCH_MODE_GET DEVLINK_CMD_ESWITCH_GET
+  DEVLINK_CMD_ESWITCH_SET,
+#define DEVLINK_CMD_ESWITCH_MODE_SET DEVLINK_CMD_ESWITCH_SET
+  DEVLINK_CMD_DPIPE_TABLE_GET,
+  DEVLINK_CMD_DPIPE_ENTRIES_GET,
+  DEVLINK_CMD_DPIPE_HEADERS_GET,
+  DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET,
   __DEVLINK_CMD_MAX,
   DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1
 };
@@ -81,6 +87,10 @@
   DEVLINK_ESWITCH_INLINE_MODE_NETWORK,
   DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT,
 };
+enum devlink_eswitch_encap_mode {
+  DEVLINK_ESWITCH_ENCAP_MODE_NONE,
+  DEVLINK_ESWITCH_ENCAP_MODE_BASIC,
+};
 enum devlink_attr {
   DEVLINK_ATTR_UNSPEC,
   DEVLINK_ATTR_BUS_NAME,
@@ -109,7 +119,53 @@
   DEVLINK_ATTR_SB_OCC_MAX,
   DEVLINK_ATTR_ESWITCH_MODE,
   DEVLINK_ATTR_ESWITCH_INLINE_MODE,
+  DEVLINK_ATTR_DPIPE_TABLES,
+  DEVLINK_ATTR_DPIPE_TABLE,
+  DEVLINK_ATTR_DPIPE_TABLE_NAME,
+  DEVLINK_ATTR_DPIPE_TABLE_SIZE,
+  DEVLINK_ATTR_DPIPE_TABLE_MATCHES,
+  DEVLINK_ATTR_DPIPE_TABLE_ACTIONS,
+  DEVLINK_ATTR_DPIPE_TABLE_COUNTERS_ENABLED,
+  DEVLINK_ATTR_DPIPE_ENTRIES,
+  DEVLINK_ATTR_DPIPE_ENTRY,
+  DEVLINK_ATTR_DPIPE_ENTRY_INDEX,
+  DEVLINK_ATTR_DPIPE_ENTRY_MATCH_VALUES,
+  DEVLINK_ATTR_DPIPE_ENTRY_ACTION_VALUES,
+  DEVLINK_ATTR_DPIPE_ENTRY_COUNTER,
+  DEVLINK_ATTR_DPIPE_MATCH,
+  DEVLINK_ATTR_DPIPE_MATCH_VALUE,
+  DEVLINK_ATTR_DPIPE_MATCH_TYPE,
+  DEVLINK_ATTR_DPIPE_ACTION,
+  DEVLINK_ATTR_DPIPE_ACTION_VALUE,
+  DEVLINK_ATTR_DPIPE_ACTION_TYPE,
+  DEVLINK_ATTR_DPIPE_VALUE,
+  DEVLINK_ATTR_DPIPE_VALUE_MASK,
+  DEVLINK_ATTR_DPIPE_VALUE_MAPPING,
+  DEVLINK_ATTR_DPIPE_HEADERS,
+  DEVLINK_ATTR_DPIPE_HEADER,
+  DEVLINK_ATTR_DPIPE_HEADER_NAME,
+  DEVLINK_ATTR_DPIPE_HEADER_ID,
+  DEVLINK_ATTR_DPIPE_HEADER_FIELDS,
+  DEVLINK_ATTR_DPIPE_HEADER_GLOBAL,
+  DEVLINK_ATTR_DPIPE_HEADER_INDEX,
+  DEVLINK_ATTR_DPIPE_FIELD,
+  DEVLINK_ATTR_DPIPE_FIELD_NAME,
+  DEVLINK_ATTR_DPIPE_FIELD_ID,
+  DEVLINK_ATTR_DPIPE_FIELD_BITWIDTH,
+  DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE,
+  DEVLINK_ATTR_PAD,
+  DEVLINK_ATTR_ESWITCH_ENCAP_MODE,
   __DEVLINK_ATTR_MAX,
   DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1
 };
+enum devlink_dpipe_field_mapping_type {
+  DEVLINK_DPIPE_FIELD_MAPPING_TYPE_NONE,
+  DEVLINK_DPIPE_FIELD_MAPPING_TYPE_IFINDEX,
+};
+enum devlink_dpipe_match_type {
+  DEVLINK_DPIPE_MATCH_TYPE_FIELD_EXACT,
+};
+enum devlink_dpipe_action_type {
+  DEVLINK_DPIPE_ACTION_TYPE_FIELD_MODIFY,
+};
 #endif
diff --git a/libc/kernel/uapi/linux/elf-em.h b/libc/kernel/uapi/linux/elf-em.h
index d018ef8..b7c89da 100644
--- a/libc/kernel/uapi/linux/elf-em.h
+++ b/libc/kernel/uapi/linux/elf-em.h
@@ -54,7 +54,6 @@
 #define EM_TILEGX 191
 #define EM_BPF 247
 #define EM_FRV 0x5441
-#define EM_AVR32 0x18ad
 #define EM_ALPHA 0x9026
 #define EM_CYGNUS_M32R 0x9041
 #define EM_S390_OLD 0xA390
diff --git a/libc/kernel/uapi/linux/elf.h b/libc/kernel/uapi/linux/elf.h
index e8f8bb4..8aa1011 100644
--- a/libc/kernel/uapi/linux/elf.h
+++ b/libc/kernel/uapi/linux/elf.h
@@ -345,6 +345,8 @@
 #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_ARM_VFP 0x400
 #define NT_ARM_TLS 0x401
 #define NT_ARM_HW_BREAK 0x402
@@ -353,6 +355,7 @@
 #define NT_METAG_CBUF 0x500
 #define NT_METAG_RPIPE 0x501
 #define NT_METAG_TLS 0x502
+#define NT_ARC_V2 0x600
 typedef struct elf32_note {
   Elf32_Word n_namesz;
   Elf32_Word n_descsz;
diff --git a/libc/kernel/uapi/linux/ethtool.h b/libc/kernel/uapi/linux/ethtool.h
index 2bd4e6c..56df94b 100644
--- a/libc/kernel/uapi/linux/ethtool.h
+++ b/libc/kernel/uapi/linux/ethtool.h
@@ -619,6 +619,7 @@
 #define SPEED_2500 2500
 #define SPEED_5000 5000
 #define SPEED_10000 10000
+#define SPEED_14000 14000
 #define SPEED_20000 20000
 #define SPEED_25000 25000
 #define SPEED_40000 40000
diff --git a/libc/kernel/uapi/linux/eventpoll.h b/libc/kernel/uapi/linux/eventpoll.h
index ff15c61..d0a5f6e 100644
--- a/libc/kernel/uapi/linux/eventpoll.h
+++ b/libc/kernel/uapi/linux/eventpoll.h
@@ -24,10 +24,21 @@
 #define EPOLL_CTL_ADD 1
 #define EPOLL_CTL_DEL 2
 #define EPOLL_CTL_MOD 3
-#define EPOLLEXCLUSIVE (1 << 28)
-#define EPOLLWAKEUP (1 << 29)
-#define EPOLLONESHOT (1 << 30)
-#define EPOLLET (1 << 31)
+#define EPOLLIN 0x00000001
+#define EPOLLPRI 0x00000002
+#define EPOLLOUT 0x00000004
+#define EPOLLERR 0x00000008
+#define EPOLLHUP 0x00000010
+#define EPOLLRDNORM 0x00000040
+#define EPOLLRDBAND 0x00000080
+#define EPOLLWRNORM 0x00000100
+#define EPOLLWRBAND 0x00000200
+#define EPOLLMSG 0x00000400
+#define EPOLLRDHUP 0x00002000
+#define EPOLLEXCLUSIVE (1U << 28)
+#define EPOLLWAKEUP (1U << 29)
+#define EPOLLONESHOT (1U << 30)
+#define EPOLLET (1U << 31)
 #ifdef __x86_64__
 #define EPOLL_PACKED __attribute__((packed))
 #else
diff --git a/libc/kernel/uapi/linux/fcntl.h b/libc/kernel/uapi/linux/fcntl.h
index 9536d66..c4a8314 100644
--- a/libc/kernel/uapi/linux/fcntl.h
+++ b/libc/kernel/uapi/linux/fcntl.h
@@ -45,4 +45,8 @@
 #define AT_SYMLINK_FOLLOW 0x400
 #define AT_NO_AUTOMOUNT 0x800
 #define AT_EMPTY_PATH 0x1000
+#define AT_STATX_SYNC_TYPE 0x6000
+#define AT_STATX_SYNC_AS_STAT 0x0000
+#define AT_STATX_FORCE_SYNC 0x2000
+#define AT_STATX_DONT_SYNC 0x4000
 #endif
diff --git a/libc/kernel/uapi/linux/fs.h b/libc/kernel/uapi/linux/fs.h
index d27c9e8..75c17a4 100644
--- a/libc/kernel/uapi/linux/fs.h
+++ b/libc/kernel/uapi/linux/fs.h
@@ -99,6 +99,7 @@
 #define MS_I_VERSION (1 << 23)
 #define MS_STRICTATIME (1 << 24)
 #define MS_LAZYTIME (1 << 25)
+#define MS_SUBMOUNT (1 << 26)
 #define MS_NOREMOTELOCK (1 << 27)
 #define MS_NOSEC (1 << 28)
 #define MS_BORN (1 << 29)
@@ -198,10 +199,18 @@
   __u8 filenames_encryption_mode;
   __u8 flags;
   __u8 master_key_descriptor[FS_KEY_DESCRIPTOR_SIZE];
-} __packed;
+};
 #define FS_IOC_SET_ENCRYPTION_POLICY _IOR('f', 19, struct fscrypt_policy)
 #define FS_IOC_GET_ENCRYPTION_PWSALT _IOW('f', 20, __u8[16])
 #define FS_IOC_GET_ENCRYPTION_POLICY _IOW('f', 21, struct fscrypt_policy)
+#define FS_KEY_DESC_PREFIX "fscrypt:"
+#define FS_KEY_DESC_PREFIX_SIZE 8
+#define FS_MAX_KEY_SIZE 64
+struct fscrypt_key {
+  __u32 mode;
+  __u8 raw[FS_MAX_KEY_SIZE];
+  __u32 size;
+};
 #define FS_SECRM_FL 0x00000001
 #define FS_UNRM_FL 0x00000002
 #define FS_COMPR_FL 0x00000004
diff --git a/libc/kernel/uapi/linux/fsmap.h b/libc/kernel/uapi/linux/fsmap.h
new file mode 100644
index 0000000..fcfea79
--- /dev/null
+++ b/libc/kernel/uapi/linux/fsmap.h
@@ -0,0 +1,55 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_FSMAP_H
+#define _LINUX_FSMAP_H
+#include <linux/types.h>
+struct fsmap {
+  __u32 fmr_device;
+  __u32 fmr_flags;
+  __u64 fmr_physical;
+  __u64 fmr_owner;
+  __u64 fmr_offset;
+  __u64 fmr_length;
+  __u64 fmr_reserved[3];
+};
+struct fsmap_head {
+  __u32 fmh_iflags;
+  __u32 fmh_oflags;
+  __u32 fmh_count;
+  __u32 fmh_entries;
+  __u64 fmh_reserved[6];
+  struct fsmap fmh_keys[2];
+  struct fsmap fmh_recs[];
+};
+#define FMH_IF_VALID 0
+#define FMH_OF_DEV_T 0x1
+#define FMR_OF_PREALLOC 0x1
+#define FMR_OF_ATTR_FORK 0x2
+#define FMR_OF_EXTENT_MAP 0x4
+#define FMR_OF_SHARED 0x8
+#define FMR_OF_SPECIAL_OWNER 0x10
+#define FMR_OF_LAST 0x20
+#define FMR_OWNER(type,code) (((__u64) type << 32) | ((__u64) code & 0xFFFFFFFFULL))
+#define FMR_OWNER_TYPE(owner) ((__u32) ((__u64) owner >> 32))
+#define FMR_OWNER_CODE(owner) ((__u32) (((__u64) owner & 0xFFFFFFFFULL)))
+#define FMR_OWN_FREE FMR_OWNER(0, 1)
+#define FMR_OWN_UNKNOWN FMR_OWNER(0, 2)
+#define FMR_OWN_METADATA FMR_OWNER(0, 3)
+#define FS_IOC_GETFSMAP _IOWR('X', 59, struct fsmap_head)
+#endif
diff --git a/libc/kernel/uapi/linux/gtp.h b/libc/kernel/uapi/linux/gtp.h
index 780f500..bd2fbcb 100644
--- a/libc/kernel/uapi/linux/gtp.h
+++ b/libc/kernel/uapi/linux/gtp.h
@@ -33,7 +33,8 @@
   GTPA_LINK,
   GTPA_VERSION,
   GTPA_TID,
-  GTPA_SGSN_ADDRESS,
+  GTPA_PEER_ADDRESS,
+#define GTPA_SGSN_ADDRESS GTPA_PEER_ADDRESS
   GTPA_MS_ADDRESS,
   GTPA_FLOW,
   GTPA_NET_NS_FD,
diff --git a/libc/kernel/uapi/linux/if.h b/libc/kernel/uapi/linux/if.h
index 15207e2..d815ef8 100644
--- a/libc/kernel/uapi/linux/if.h
+++ b/libc/kernel/uapi/linux/if.h
@@ -22,6 +22,7 @@
 #include <linux/types.h>
 #include <linux/socket.h>
 #include <linux/compiler.h>
+#include <sys/socket.h>
 #if __UAPI_DEF_IF_IFNAMSIZ
 #define IFNAMSIZ 16
 #endif
diff --git a/libc/kernel/uapi/linux/if_arp.h b/libc/kernel/uapi/linux/if_arp.h
index be3499d..9f056fb 100644
--- a/libc/kernel/uapi/linux/if_arp.h
+++ b/libc/kernel/uapi/linux/if_arp.h
@@ -82,6 +82,7 @@
 #define ARPHRD_IP6GRE 823
 #define ARPHRD_NETLINK 824
 #define ARPHRD_6LOWPAN 825
+#define ARPHRD_VSOCKMON 826
 #define ARPHRD_VOID 0xFFFF
 #define ARPHRD_NONE 0xFFFE
 #define ARPOP_REQUEST 1
diff --git a/libc/kernel/uapi/linux/if_bridge.h b/libc/kernel/uapi/linux/if_bridge.h
index 35c2acd..7e6a72f 100644
--- a/libc/kernel/uapi/linux/if_bridge.h
+++ b/libc/kernel/uapi/linux/if_bridge.h
@@ -105,6 +105,7 @@
   IFLA_BRIDGE_FLAGS,
   IFLA_BRIDGE_MODE,
   IFLA_BRIDGE_VLAN_INFO,
+  IFLA_BRIDGE_VLAN_TUNNEL_INFO,
   __IFLA_BRIDGE_MAX,
 };
 #define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1)
@@ -118,6 +119,14 @@
   __u16 flags;
   __u16 vid;
 };
+enum {
+  IFLA_BRIDGE_VLAN_TUNNEL_UNSPEC,
+  IFLA_BRIDGE_VLAN_TUNNEL_ID,
+  IFLA_BRIDGE_VLAN_TUNNEL_VID,
+  IFLA_BRIDGE_VLAN_TUNNEL_FLAGS,
+  __IFLA_BRIDGE_VLAN_TUNNEL_MAX,
+};
+#define IFLA_BRIDGE_VLAN_TUNNEL_MAX (__IFLA_BRIDGE_VLAN_TUNNEL_MAX - 1)
 struct bridge_vlan_xstats {
   __u64 rx_bytes;
   __u64 rx_packets;
diff --git a/libc/kernel/uapi/linux/if_ether.h b/libc/kernel/uapi/linux/if_ether.h
index 591a5cc..846d238 100644
--- a/libc/kernel/uapi/linux/if_ether.h
+++ b/libc/kernel/uapi/linux/if_ether.h
@@ -75,6 +75,7 @@
 #define ETH_P_NCSI 0x88F8
 #define ETH_P_PRP 0x88FB
 #define ETH_P_FCOE 0x8906
+#define ETH_P_IBOE 0x8915
 #define ETH_P_TDLS 0x890D
 #define ETH_P_FIP 0x8914
 #define ETH_P_80221 0x8917
diff --git a/libc/kernel/uapi/linux/if_link.h b/libc/kernel/uapi/linux/if_link.h
index 1397f5b..8ea790b 100644
--- a/libc/kernel/uapi/linux/if_link.h
+++ b/libc/kernel/uapi/linux/if_link.h
@@ -251,6 +251,9 @@
   IFLA_BRPORT_MULTICAST_ROUTER,
   IFLA_BRPORT_PAD,
   IFLA_BRPORT_MCAST_FLOOD,
+  IFLA_BRPORT_MCAST_TO_UCAST,
+  IFLA_BRPORT_VLAN_TUNNEL,
+  IFLA_BRPORT_BCAST_FLOOD,
   __IFLA_BRPORT_MAX
 };
 #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
@@ -427,11 +430,16 @@
   __IFLA_PPP_MAX
 };
 #define IFLA_PPP_MAX (__IFLA_PPP_MAX - 1)
+enum ifla_gtp_role {
+  GTP_ROLE_GGSN = 0,
+  GTP_ROLE_SGSN,
+};
 enum {
   IFLA_GTP_UNSPEC,
   IFLA_GTP_FD0,
   IFLA_GTP_FD1,
   IFLA_GTP_PDP_HASHSIZE,
+  IFLA_GTP_ROLE,
   __IFLA_GTP_MAX,
 };
 #define IFLA_GTP_MAX (__IFLA_GTP_MAX - 1)
@@ -665,6 +673,7 @@
   IFLA_STATS_LINK_XSTATS,
   IFLA_STATS_LINK_XSTATS_SLAVE,
   IFLA_STATS_LINK_OFFLOAD_XSTATS,
+  IFLA_STATS_AF_SPEC,
   __IFLA_STATS_MAX,
 };
 #define IFLA_STATS_MAX (__IFLA_STATS_MAX - 1)
@@ -682,7 +691,14 @@
 };
 #define IFLA_OFFLOAD_XSTATS_MAX (__IFLA_OFFLOAD_XSTATS_MAX - 1)
 #define XDP_FLAGS_UPDATE_IF_NOEXIST (1U << 0)
-#define XDP_FLAGS_MASK (XDP_FLAGS_UPDATE_IF_NOEXIST)
+#define XDP_FLAGS_SKB_MODE (1U << 1)
+#define XDP_FLAGS_DRV_MODE (1U << 2)
+#define XDP_FLAGS_MASK (XDP_FLAGS_UPDATE_IF_NOEXIST | XDP_FLAGS_SKB_MODE | XDP_FLAGS_DRV_MODE)
+enum {
+  XDP_ATTACHED_NONE = 0,
+  XDP_ATTACHED_DRV,
+  XDP_ATTACHED_SKB,
+};
 enum {
   IFLA_XDP_UNSPEC,
   IFLA_XDP_FD,
diff --git a/libc/kernel/uapi/linux/if_packet.h b/libc/kernel/uapi/linux/if_packet.h
index d800a8f..61d0a3a 100644
--- a/libc/kernel/uapi/linux/if_packet.h
+++ b/libc/kernel/uapi/linux/if_packet.h
@@ -72,6 +72,7 @@
 #define PACKET_FANOUT_CBPF 6
 #define PACKET_FANOUT_EBPF 7
 #define PACKET_FANOUT_FLAG_ROLLOVER 0x1000
+#define PACKET_FANOUT_FLAG_UNIQUEID 0x2000
 #define PACKET_FANOUT_FLAG_DEFRAG 0x8000
 struct tpacket_stats {
   unsigned int tp_packets;
diff --git a/libc/kernel/uapi/linux/if_tunnel.h b/libc/kernel/uapi/linux/if_tunnel.h
index e1d5594..aaad4cb 100644
--- a/libc/kernel/uapi/linux/if_tunnel.h
+++ b/libc/kernel/uapi/linux/if_tunnel.h
@@ -85,6 +85,7 @@
   IFLA_IPTUN_ENCAP_SPORT,
   IFLA_IPTUN_ENCAP_DPORT,
   IFLA_IPTUN_COLLECT_METADATA,
+  IFLA_IPTUN_FWMARK,
   __IFLA_IPTUN_MAX,
 };
 #define IFLA_IPTUN_MAX (__IFLA_IPTUN_MAX - 1)
@@ -132,6 +133,7 @@
   IFLA_GRE_ENCAP_DPORT,
   IFLA_GRE_COLLECT_METADATA,
   IFLA_GRE_IGNORE_DF,
+  IFLA_GRE_FWMARK,
   __IFLA_GRE_MAX,
 };
 #define IFLA_GRE_MAX (__IFLA_GRE_MAX - 1)
@@ -143,6 +145,7 @@
   IFLA_VTI_OKEY,
   IFLA_VTI_LOCAL,
   IFLA_VTI_REMOTE,
+  IFLA_VTI_FWMARK,
   __IFLA_VTI_MAX,
 };
 #define IFLA_VTI_MAX (__IFLA_VTI_MAX - 1)
diff --git a/libc/kernel/uapi/linux/ion_test.h b/libc/kernel/uapi/linux/ife.h
similarity index 68%
copy from libc/kernel/uapi/linux/ion_test.h
copy to libc/kernel/uapi/linux/ife.h
index 3064508..0cfc583 100644
--- a/libc/kernel/uapi/linux/ion_test.h
+++ b/libc/kernel/uapi/linux/ife.h
@@ -16,19 +16,16 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef _UAPI_LINUX_ION_TEST_H
-#define _UAPI_LINUX_ION_TEST_H
-#include <linux/ioctl.h>
-#include <linux/types.h>
-struct ion_test_rw_data {
-  __u64 ptr;
-  __u64 offset;
-  __u64 size;
-  int write;
-  int __padding;
+#ifndef __UAPI_IFE_H
+#define __UAPI_IFE_H
+#define IFE_METAHDRLEN 2
+enum {
+  IFE_META_SKBMARK = 1,
+  IFE_META_HASHID,
+  IFE_META_PRIO,
+  IFE_META_QMAP,
+  IFE_META_TCINDEX,
+  __IFE_META_MAX
 };
-#define ION_IOC_MAGIC 'I'
-#define ION_IOC_TEST_SET_FD _IO(ION_IOC_MAGIC, 0xf0)
-#define ION_IOC_TEST_DMA_MAPPING _IOW(ION_IOC_MAGIC, 0xf1, struct ion_test_rw_data)
-#define ION_IOC_TEST_KERNEL_MAPPING _IOW(ION_IOC_MAGIC, 0xf2, struct ion_test_rw_data)
+#define IFE_META_MAX (__IFE_META_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/igmp.h b/libc/kernel/uapi/linux/igmp.h
index d1ba6b1..f5d1164 100644
--- a/libc/kernel/uapi/linux/igmp.h
+++ b/libc/kernel/uapi/linux/igmp.h
@@ -42,7 +42,7 @@
 struct igmpv3_report {
   __u8 type;
   __u8 resv1;
-  __be16 csum;
+  __sum16 csum;
   __be16 resv2;
   __be16 ngrec;
   struct igmpv3_grec grec[0];
@@ -50,7 +50,7 @@
 struct igmpv3_query {
   __u8 type;
   __u8 code;
-  __be16 csum;
+  __sum16 csum;
   __be32 group;
 #ifdef __LITTLE_ENDIAN_BITFIELD
   __u8 qrv : 3, suppress : 1, resv : 4;
diff --git a/libc/kernel/uapi/linux/iio/types.h b/libc/kernel/uapi/linux/iio/types.h
index ef0401d..3d4769d 100644
--- a/libc/kernel/uapi/linux/iio/types.h
+++ b/libc/kernel/uapi/linux/iio/types.h
@@ -50,6 +50,7 @@
   IIO_ELECTRICALCONDUCTIVITY,
   IIO_COUNT,
   IIO_INDEX,
+  IIO_GRAVITY,
 };
 enum iio_modifier {
   IIO_NO_MOD,
diff --git a/libc/kernel/uapi/linux/input-event-codes.h b/libc/kernel/uapi/linux/input-event-codes.h
index a599b7f..aea69f3 100644
--- a/libc/kernel/uapi/linux/input-event-codes.h
+++ b/libc/kernel/uapi/linux/input-event-codes.h
@@ -564,6 +564,7 @@
 #define KEY_FASTREVERSE 0x275
 #define KEY_SLOWREVERSE 0x276
 #define KEY_DATA 0x277
+#define KEY_ONSCREEN_KEYBOARD 0x278
 #define BTN_TRIGGER_HAPPY 0x2c0
 #define BTN_TRIGGER_HAPPY1 0x2c0
 #define BTN_TRIGGER_HAPPY2 0x2c1
diff --git a/libc/kernel/uapi/linux/ion.h b/libc/kernel/uapi/linux/ion.h
index 7b5b031..4fa9d2d 100644
--- a/libc/kernel/uapi/linux/ion.h
+++ b/libc/kernel/uapi/linux/ion.h
@@ -20,7 +20,6 @@
 #define _UAPI_LINUX_ION_H
 #include <linux/ioctl.h>
 #include <linux/types.h>
-typedef int ion_user_handle_t;
 enum ion_heap_type {
   ION_HEAP_TYPE_SYSTEM,
   ION_HEAP_TYPE_SYSTEM_CONTIG,
@@ -33,22 +32,11 @@
 #define ION_FLAG_CACHED 1
 #define ION_FLAG_CACHED_NEEDS_SYNC 2
 struct ion_allocation_data {
-  size_t len;
-  size_t align;
-  unsigned int heap_id_mask;
-  unsigned int flags;
-  ion_user_handle_t handle;
-};
-struct ion_fd_data {
-  ion_user_handle_t handle;
-  int fd;
-};
-struct ion_handle_data {
-  ion_user_handle_t handle;
-};
-struct ion_custom_data {
-  unsigned int cmd;
-  unsigned long arg;
+  __u64 len;
+  __u32 heap_id_mask;
+  __u32 flags;
+  __u32 fd;
+  __u32 unused;
 };
 #define MAX_HEAP_NAME 32
 struct ion_heap_data {
@@ -68,11 +56,5 @@
 };
 #define ION_IOC_MAGIC 'I'
 #define ION_IOC_ALLOC _IOWR(ION_IOC_MAGIC, 0, struct ion_allocation_data)
-#define ION_IOC_FREE _IOWR(ION_IOC_MAGIC, 1, struct ion_handle_data)
-#define ION_IOC_MAP _IOWR(ION_IOC_MAGIC, 2, struct ion_fd_data)
-#define ION_IOC_SHARE _IOWR(ION_IOC_MAGIC, 4, struct ion_fd_data)
-#define ION_IOC_IMPORT _IOWR(ION_IOC_MAGIC, 5, struct ion_fd_data)
-#define ION_IOC_SYNC _IOWR(ION_IOC_MAGIC, 7, struct ion_fd_data)
-#define ION_IOC_CUSTOM _IOWR(ION_IOC_MAGIC, 6, struct ion_custom_data)
 #define ION_IOC_HEAP_QUERY _IOWR(ION_IOC_MAGIC, 8, struct ion_heap_query)
 #endif
diff --git a/libc/kernel/uapi/linux/ip6_tunnel.h b/libc/kernel/uapi/linux/ip6_tunnel.h
index c3564f3..b7df956 100644
--- a/libc/kernel/uapi/linux/ip6_tunnel.h
+++ b/libc/kernel/uapi/linux/ip6_tunnel.h
@@ -19,6 +19,8 @@
 #ifndef _IP6_TUNNEL_H
 #define _IP6_TUNNEL_H
 #include <linux/types.h>
+#include <linux/if.h>
+#include <linux/in6.h>
 #define IPV6_TLV_TNL_ENCAP_LIMIT 4
 #define IPV6_DEFAULT_TNL_ENCAP_LIMIT 4
 #define IP6_TNL_F_IGN_ENCAP_LIMIT 0x1
diff --git a/libc/kernel/uapi/linux/ipv6.h b/libc/kernel/uapi/linux/ipv6.h
index 125657c..d07fa06 100644
--- a/libc/kernel/uapi/linux/ipv6.h
+++ b/libc/kernel/uapi/linux/ipv6.h
@@ -137,6 +137,9 @@
   DEVCONF_SEG6_ENABLED,
   DEVCONF_SEG6_REQUIRE_HMAC,
   DEVCONF_ENHANCED_DAD,
+  DEVCONF_ADDR_GEN_MODE,
+  DEVCONF_DISABLE_POLICY,
+  DEVCONF_ACCEPT_RA_RT_INFO_MIN_PLEN,
   DEVCONF_MAX
 };
 #endif
diff --git a/libc/kernel/uapi/linux/ipv6_route.h b/libc/kernel/uapi/linux/ipv6_route.h
index 56bc659..b7271a7 100644
--- a/libc/kernel/uapi/linux/ipv6_route.h
+++ b/libc/kernel/uapi/linux/ipv6_route.h
@@ -19,6 +19,7 @@
 #ifndef _UAPI_LINUX_IPV6_ROUTE_H
 #define _UAPI_LINUX_IPV6_ROUTE_H
 #include <linux/types.h>
+#include <linux/in6.h>
 #define RTF_DEFAULT 0x00010000
 #define RTF_ALLONLINK 0x00020000
 #define RTF_ADDRCONF 0x00040000
diff --git a/libc/kernel/uapi/linux/keyctl.h b/libc/kernel/uapi/linux/keyctl.h
index a988f49..0cc7f55 100644
--- a/libc/kernel/uapi/linux/keyctl.h
+++ b/libc/kernel/uapi/linux/keyctl.h
@@ -60,9 +60,16 @@
 #define KEYCTL_INVALIDATE 21
 #define KEYCTL_GET_PERSISTENT 22
 #define KEYCTL_DH_COMPUTE 23
+#define KEYCTL_RESTRICT_KEYRING 29
 struct keyctl_dh_params {
   __s32 __linux_private;
   __s32 prime;
   __s32 base;
 };
+struct keyctl_kdf_params {
+  char __user * hashname;
+  char __user * otherinfo;
+  __u32 otherinfolen;
+  __u32 __spare[8];
+};
 #endif
diff --git a/libc/kernel/uapi/linux/kvm.h b/libc/kernel/uapi/linux/kvm.h
index 01fbc0d..f61a08b 100644
--- a/libc/kernel/uapi/linux/kvm.h
+++ b/libc/kernel/uapi/linux/kvm.h
@@ -176,7 +176,8 @@
 #define KVM_INTERNAL_ERROR_DELIVERY_EV 3
 struct kvm_run {
   __u8 request_interrupt_window;
-  __u8 padding1[7];
+  __u8 immediate_exit;
+  __u8 padding1[6];
   __u32 exit_reason;
   __u8 ready_for_interrupt_injection;
   __u8 if_flag;
@@ -528,10 +529,17 @@
   __u32 pad;
   struct kvm_ppc_one_seg_page_size sps[KVM_PPC_PAGE_SIZES_MAX_SZ];
 };
+struct kvm_ppc_resize_hpt {
+  __u64 flags;
+  __u32 shift;
+  __u32 pad;
+};
 #define KVMIO 0xAE
 #define KVM_VM_S390_UCONTROL 1
 #define KVM_VM_PPC_HV 1
 #define KVM_VM_PPC_PR 2
+#define KVM_VM_MIPS_TE 0
+#define KVM_VM_MIPS_VZ 1
 #define KVM_S390_SIE_PAGE_OFFSET 1
 #define KVM_GET_API_VERSION _IO(KVMIO, 0x00)
 #define KVM_CREATE_VM _IO(KVMIO, 0x01)
@@ -691,6 +699,18 @@
 #define KVM_CAP_S390_USER_INSTR0 130
 #define KVM_CAP_MSI_DEVID 131
 #define KVM_CAP_PPC_HTM 132
+#define KVM_CAP_SPAPR_RESIZE_HPT 133
+#define KVM_CAP_PPC_MMU_RADIX 134
+#define KVM_CAP_PPC_MMU_HASH_V3 135
+#define KVM_CAP_IMMEDIATE_EXIT 136
+#define KVM_CAP_MIPS_VZ 137
+#define KVM_CAP_MIPS_TE 138
+#define KVM_CAP_MIPS_64BIT 139
+#define KVM_CAP_S390_GS 140
+#define KVM_CAP_S390_AIS 141
+#define KVM_CAP_SPAPR_TCE_VFIO 142
+#define KVM_CAP_X86_GUEST_MWAIT 143
+#define KVM_CAP_ARM_USER_IRQ 144
 #ifdef KVM_CAP_IRQ_ROUTING
 struct kvm_irq_routing_irqchip {
   __u32 irqchip;
@@ -843,6 +863,7 @@
 #define KVM_DEV_VFIO_GROUP 1
 #define KVM_DEV_VFIO_GROUP_ADD 1
 #define KVM_DEV_VFIO_GROUP_DEL 2
+#define KVM_DEV_VFIO_GROUP_SET_SPAPR_TCE 3
 enum kvm_device_type {
   KVM_DEV_TYPE_FSL_MPIC_20 = 1,
 #define KVM_DEV_TYPE_FSL_MPIC_20 KVM_DEV_TYPE_FSL_MPIC_20
@@ -862,6 +883,10 @@
 #define KVM_DEV_TYPE_ARM_VGIC_ITS KVM_DEV_TYPE_ARM_VGIC_ITS
   KVM_DEV_TYPE_MAX,
 };
+struct kvm_vfio_spapr_tce {
+  __s32 groupfd;
+  __s32 tablefd;
+};
 #define KVM_SET_MEMORY_REGION _IOW(KVMIO, 0x40, struct kvm_memory_region)
 #define KVM_CREATE_VCPU _IO(KVMIO, 0x41)
 #define KVM_GET_DIRTY_LOG _IOW(KVMIO, 0x42, struct kvm_dirty_log)
@@ -920,6 +945,10 @@
 #define KVM_PPC_GET_HTAB_FD _IOW(KVMIO, 0xaa, struct kvm_get_htab_fd)
 #define KVM_ARM_SET_DEVICE_ADDR _IOW(KVMIO, 0xab, struct kvm_arm_device_addr)
 #define KVM_PPC_RTAS_DEFINE_TOKEN _IOW(KVMIO, 0xac, struct kvm_rtas_token_args)
+#define KVM_PPC_RESIZE_HPT_PREPARE _IOR(KVMIO, 0xad, struct kvm_ppc_resize_hpt)
+#define KVM_PPC_RESIZE_HPT_COMMIT _IOR(KVMIO, 0xae, struct kvm_ppc_resize_hpt)
+#define KVM_PPC_CONFIGURE_V3_MMU _IOW(KVMIO, 0xaf, struct kvm_ppc_mmuv3_cfg)
+#define KVM_PPC_GET_RMMU_INFO _IOW(KVMIO, 0xb0, struct kvm_ppc_rmmu_info)
 #define KVM_CREATE_DEVICE _IOWR(KVMIO, 0xe0, struct kvm_create_device)
 #define KVM_SET_DEVICE_ATTR _IOW(KVMIO, 0xe1, struct kvm_device_attr)
 #define KVM_GET_DEVICE_ATTR _IOW(KVMIO, 0xe2, struct kvm_device_attr)
@@ -1024,4 +1053,7 @@
 };
 #define KVM_X2APIC_API_USE_32BIT_IDS (1ULL << 0)
 #define KVM_X2APIC_API_DISABLE_BROADCAST_QUIRK (1ULL << 1)
+#define KVM_ARM_DEV_EL1_VTIMER (1 << 0)
+#define KVM_ARM_DEV_EL1_PTIMER (1 << 1)
+#define KVM_ARM_DEV_PMU (1 << 2)
 #endif
diff --git a/libc/kernel/uapi/linux/kvm_para.h b/libc/kernel/uapi/linux/kvm_para.h
index 84b31a8..5035c23 100644
--- a/libc/kernel/uapi/linux/kvm_para.h
+++ b/libc/kernel/uapi/linux/kvm_para.h
@@ -22,6 +22,7 @@
 #define KVM_EFAULT EFAULT
 #define KVM_E2BIG E2BIG
 #define KVM_EPERM EPERM
+#define KVM_EOPNOTSUPP 95
 #define KVM_HC_VAPIC_POLL_IRQ 1
 #define KVM_HC_MMU_OP 2
 #define KVM_HC_FEATURES 3
@@ -30,5 +31,6 @@
 #define KVM_HC_MIPS_GET_CLOCK_FREQ 6
 #define KVM_HC_MIPS_EXIT_VM 7
 #define KVM_HC_MIPS_CONSOLE_OUTPUT 8
+#define KVM_HC_CLOCK_PAIRING 9
 #include <asm/kvm_para.h>
 #endif
diff --git a/libc/kernel/uapi/linux/lightnvm.h b/libc/kernel/uapi/linux/lightnvm.h
index f589b1a..996d873 100644
--- a/libc/kernel/uapi/linux/lightnvm.h
+++ b/libc/kernel/uapi/linux/lightnvm.h
@@ -67,6 +67,9 @@
     struct nvm_ioctl_create_simple s;
   };
 };
+enum {
+  NVM_TARGET_FACTORY = 1 << 0,
+};
 struct nvm_ioctl_create {
   char dev[DISK_NAME_LEN];
   char tgttype[NVM_TTYPE_NAME_MAX];
@@ -93,6 +96,42 @@
   char dev[DISK_NAME_LEN];
   __u32 flags;
 };
+struct nvm_user_vio {
+  __u8 opcode;
+  __u8 flags;
+  __u16 control;
+  __u16 nppas;
+  __u16 rsvd;
+  __u64 metadata;
+  __u64 addr;
+  __u64 ppa_list;
+  __u32 metadata_len;
+  __u32 data_len;
+  __u64 status;
+  __u32 result;
+  __u32 rsvd3[3];
+};
+struct nvm_passthru_vio {
+  __u8 opcode;
+  __u8 flags;
+  __u8 rsvd[2];
+  __u32 nsid;
+  __u32 cdw2;
+  __u32 cdw3;
+  __u64 metadata;
+  __u64 addr;
+  __u32 metadata_len;
+  __u32 data_len;
+  __u64 ppa_list;
+  __u16 nppas;
+  __u16 control;
+  __u32 cdw13;
+  __u32 cdw14;
+  __u32 cdw15;
+  __u64 status;
+  __u32 result;
+  __u32 timeout_ms;
+};
 enum {
   NVM_INFO_CMD = 0x20,
   NVM_GET_DEVICES_CMD,
@@ -100,6 +139,9 @@
   NVM_DEV_REMOVE_CMD,
   NVM_DEV_INIT_CMD,
   NVM_DEV_FACTORY_CMD,
+  NVM_DEV_VIO_ADMIN_CMD = 0x41,
+  NVM_DEV_VIO_CMD = 0x42,
+  NVM_DEV_VIO_USER_CMD = 0x43,
 };
 #define NVM_IOCTL 'L'
 #define NVM_INFO _IOWR(NVM_IOCTL, NVM_INFO_CMD, struct nvm_ioctl_info)
@@ -108,6 +150,9 @@
 #define NVM_DEV_REMOVE _IOW(NVM_IOCTL, NVM_DEV_REMOVE_CMD, struct nvm_ioctl_remove)
 #define NVM_DEV_INIT _IOW(NVM_IOCTL, NVM_DEV_INIT_CMD, struct nvm_ioctl_dev_init)
 #define NVM_DEV_FACTORY _IOW(NVM_IOCTL, NVM_DEV_FACTORY_CMD, struct nvm_ioctl_dev_factory)
+#define NVME_NVM_IOCTL_IO_VIO _IOWR(NVM_IOCTL, NVM_DEV_VIO_USER_CMD, struct nvm_passthru_vio)
+#define NVME_NVM_IOCTL_ADMIN_VIO _IOWR(NVM_IOCTL, NVM_DEV_VIO_ADMIN_CMD, struct nvm_passthru_vio)
+#define NVME_NVM_IOCTL_SUBMIT_VIO _IOWR(NVM_IOCTL, NVM_DEV_VIO_CMD, struct nvm_user_vio)
 #define NVM_VERSION_MAJOR 1
 #define NVM_VERSION_MINOR 0
 #define NVM_VERSION_PATCHLEVEL 0
diff --git a/libc/kernel/uapi/linux/llc.h b/libc/kernel/uapi/linux/llc.h
index 41c4d84..e6f778f 100644
--- a/libc/kernel/uapi/linux/llc.h
+++ b/libc/kernel/uapi/linux/llc.h
@@ -19,6 +19,7 @@
 #ifndef _UAPI__LINUX_LLC_H
 #define _UAPI__LINUX_LLC_H
 #include <linux/socket.h>
+#include <linux/if.h>
 #define __LLC_SOCK_SIZE__ 16
 struct sockaddr_llc {
   __kernel_sa_family_t sllc_family;
diff --git a/libc/kernel/uapi/linux/media-bus-format.h b/libc/kernel/uapi/linux/media-bus-format.h
index b288c02..dd7fcc7 100644
--- a/libc/kernel/uapi/linux/media-bus-format.h
+++ b/libc/kernel/uapi/linux/media-bus-format.h
@@ -42,6 +42,9 @@
 #define MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA 0x1012
 #define MEDIA_BUS_FMT_ARGB8888_1X32 0x100d
 #define MEDIA_BUS_FMT_RGB888_1X32_PADHI 0x100f
+#define MEDIA_BUS_FMT_RGB101010_1X30 0x1018
+#define MEDIA_BUS_FMT_RGB121212_1X36 0x1019
+#define MEDIA_BUS_FMT_RGB161616_1X48 0x101a
 #define MEDIA_BUS_FMT_Y8_1X8 0x2001
 #define MEDIA_BUS_FMT_UV8_1X8 0x2015
 #define MEDIA_BUS_FMT_UYVY8_1_5X8 0x2002
@@ -73,12 +76,18 @@
 #define MEDIA_BUS_FMT_YVYU10_1X20 0x200e
 #define MEDIA_BUS_FMT_VUY8_1X24 0x2024
 #define MEDIA_BUS_FMT_YUV8_1X24 0x2025
+#define MEDIA_BUS_FMT_UYYVYY8_0_5X24 0x2026
 #define MEDIA_BUS_FMT_UYVY12_1X24 0x2020
 #define MEDIA_BUS_FMT_VYUY12_1X24 0x2021
 #define MEDIA_BUS_FMT_YUYV12_1X24 0x2022
 #define MEDIA_BUS_FMT_YVYU12_1X24 0x2023
 #define MEDIA_BUS_FMT_YUV10_1X30 0x2016
+#define MEDIA_BUS_FMT_UYYVYY10_0_5X30 0x2027
 #define MEDIA_BUS_FMT_AYUV8_1X32 0x2017
+#define MEDIA_BUS_FMT_UYYVYY12_0_5X36 0x2028
+#define MEDIA_BUS_FMT_YUV12_1X36 0x2029
+#define MEDIA_BUS_FMT_YUV16_1X48 0x202a
+#define MEDIA_BUS_FMT_UYYVYY16_0_5X48 0x202b
 #define MEDIA_BUS_FMT_SBGGR8_1X8 0x3001
 #define MEDIA_BUS_FMT_SGBRG8_1X8 0x3013
 #define MEDIA_BUS_FMT_SGRBG8_1X8 0x3002
diff --git a/libc/kernel/uapi/linux/mpls.h b/libc/kernel/uapi/linux/mpls.h
index 4938f42..86d8e07 100644
--- a/libc/kernel/uapi/linux/mpls.h
+++ b/libc/kernel/uapi/linux/mpls.h
@@ -40,4 +40,21 @@
 #define MPLS_LABEL_OAMALERT 14
 #define MPLS_LABEL_EXTENSION 15
 #define MPLS_LABEL_FIRST_UNRESERVED 16
+enum {
+  MPLS_STATS_UNSPEC,
+  MPLS_STATS_LINK,
+  __MPLS_STATS_MAX,
+};
+#define MPLS_STATS_MAX (__MPLS_STATS_MAX - 1)
+struct mpls_link_stats {
+  __u64 rx_packets;
+  __u64 tx_packets;
+  __u64 rx_bytes;
+  __u64 tx_bytes;
+  __u64 rx_errors;
+  __u64 tx_errors;
+  __u64 rx_dropped;
+  __u64 tx_dropped;
+  __u64 rx_noroute;
+};
 #endif
diff --git a/libc/kernel/uapi/linux/mpls_iptunnel.h b/libc/kernel/uapi/linux/mpls_iptunnel.h
index 773a49f..473cb0d 100644
--- a/libc/kernel/uapi/linux/mpls_iptunnel.h
+++ b/libc/kernel/uapi/linux/mpls_iptunnel.h
@@ -21,6 +21,7 @@
 enum {
   MPLS_IPTUNNEL_UNSPEC,
   MPLS_IPTUNNEL_DST,
+  MPLS_IPTUNNEL_TTL,
   __MPLS_IPTUNNEL_MAX,
 };
 #define MPLS_IPTUNNEL_MAX (__MPLS_IPTUNNEL_MAX - 1)
diff --git a/libc/kernel/uapi/linux/mqueue.h b/libc/kernel/uapi/linux/mqueue.h
index dbd862f..a540830 100644
--- a/libc/kernel/uapi/linux/mqueue.h
+++ b/libc/kernel/uapi/linux/mqueue.h
@@ -18,6 +18,7 @@
  ****************************************************************************/
 #ifndef _LINUX_MQUEUE_H
 #define _LINUX_MQUEUE_H
+#include <linux/types.h>
 #define MQ_PRIO_MAX 32768
 #define MQ_BYTES_MAX 819200
 struct mq_attr {
diff --git a/libc/kernel/uapi/linux/mroute.h b/libc/kernel/uapi/linux/mroute.h
index 5a09edd..9f4c937 100644
--- a/libc/kernel/uapi/linux/mroute.h
+++ b/libc/kernel/uapi/linux/mroute.h
@@ -20,6 +20,7 @@
 #define _UAPI__LINUX_MROUTE_H
 #include <linux/sockios.h>
 #include <linux/types.h>
+#include <linux/in.h>
 #define MRT_BASE 200
 #define MRT_INIT (MRT_BASE)
 #define MRT_DONE (MRT_BASE + 1)
diff --git a/libc/kernel/uapi/linux/mroute6.h b/libc/kernel/uapi/linux/mroute6.h
index 88b8ff7..d9c86bf 100644
--- a/libc/kernel/uapi/linux/mroute6.h
+++ b/libc/kernel/uapi/linux/mroute6.h
@@ -21,6 +21,7 @@
 #include <linux/kernel.h>
 #include <linux/types.h>
 #include <linux/sockios.h>
+#include <linux/in6.h>
 #define MRT6_BASE 200
 #define MRT6_INIT (MRT6_BASE)
 #define MRT6_DONE (MRT6_BASE + 1)
diff --git a/libc/kernel/uapi/linux/nbd-netlink.h b/libc/kernel/uapi/linux/nbd-netlink.h
new file mode 100644
index 0000000..9faf689
--- /dev/null
+++ b/libc/kernel/uapi/linux/nbd-netlink.h
@@ -0,0 +1,73 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPILINUX_NBD_NETLINK_H
+#define _UAPILINUX_NBD_NETLINK_H
+#define NBD_GENL_FAMILY_NAME "nbd"
+#define NBD_GENL_VERSION 0x1
+#define NBD_GENL_MCAST_GROUP_NAME "nbd_mc_group"
+enum {
+  NBD_ATTR_UNSPEC,
+  NBD_ATTR_INDEX,
+  NBD_ATTR_SIZE_BYTES,
+  NBD_ATTR_BLOCK_SIZE_BYTES,
+  NBD_ATTR_TIMEOUT,
+  NBD_ATTR_SERVER_FLAGS,
+  NBD_ATTR_CLIENT_FLAGS,
+  NBD_ATTR_SOCKETS,
+  NBD_ATTR_DEAD_CONN_TIMEOUT,
+  NBD_ATTR_DEVICE_LIST,
+  __NBD_ATTR_MAX,
+};
+#define NBD_ATTR_MAX (__NBD_ATTR_MAX - 1)
+enum {
+  NBD_DEVICE_ITEM_UNSPEC,
+  NBD_DEVICE_ITEM,
+  __NBD_DEVICE_ITEM_MAX,
+};
+#define NBD_DEVICE_ITEM_MAX (__NBD_DEVICE_ITEM_MAX - 1)
+enum {
+  NBD_DEVICE_UNSPEC,
+  NBD_DEVICE_INDEX,
+  NBD_DEVICE_CONNECTED,
+  __NBD_DEVICE_MAX,
+};
+#define NBD_DEVICE_ATTR_MAX (__NBD_DEVICE_MAX - 1)
+enum {
+  NBD_SOCK_ITEM_UNSPEC,
+  NBD_SOCK_ITEM,
+  __NBD_SOCK_ITEM_MAX,
+};
+#define NBD_SOCK_ITEM_MAX (__NBD_SOCK_ITEM_MAX - 1)
+enum {
+  NBD_SOCK_UNSPEC,
+  NBD_SOCK_FD,
+  __NBD_SOCK_MAX,
+};
+#define NBD_SOCK_MAX (__NBD_SOCK_MAX - 1)
+enum {
+  NBD_CMD_UNSPEC,
+  NBD_CMD_CONNECT,
+  NBD_CMD_DISCONNECT,
+  NBD_CMD_RECONFIGURE,
+  NBD_CMD_LINK_DEAD,
+  NBD_CMD_STATUS,
+  __NBD_CMD_MAX,
+};
+#define NBD_CMD_MAX (__NBD_CMD_MAX - 1)
+#endif
diff --git a/libc/kernel/uapi/linux/nbd.h b/libc/kernel/uapi/linux/nbd.h
index e8fc47c..50079fa 100644
--- a/libc/kernel/uapi/linux/nbd.h
+++ b/libc/kernel/uapi/linux/nbd.h
@@ -42,6 +42,7 @@
 #define NBD_FLAG_SEND_FLUSH (1 << 2)
 #define NBD_FLAG_SEND_TRIM (1 << 5)
 #define NBD_FLAG_CAN_MULTI_CONN (1 << 8)
+#define NBD_CFLAG_DESTROY_ON_DISCONNECT (1 << 0)
 #define NBD_REQUEST_MAGIC 0x25609513
 #define NBD_REPLY_MAGIC 0x67446698
 struct nbd_request {
diff --git a/libc/kernel/uapi/linux/ndctl.h b/libc/kernel/uapi/linux/ndctl.h
index bb51eea..cfe5c9c 100644
--- a/libc/kernel/uapi/linux/ndctl.h
+++ b/libc/kernel/uapi/linux/ndctl.h
@@ -153,6 +153,7 @@
 enum {
   ND_ARS_VOLATILE = 1,
   ND_ARS_PERSISTENT = 2,
+  ND_CONFIG_LOCKED = 1,
 };
 #define ND_IOCTL 'N'
 #define ND_IOCTL_SMART _IOWR(ND_IOCTL, ND_CMD_SMART, struct nd_cmd_smart)
diff --git a/libc/kernel/uapi/linux/neighbour.h b/libc/kernel/uapi/linux/neighbour.h
index d239e72..1a322de 100644
--- a/libc/kernel/uapi/linux/neighbour.h
+++ b/libc/kernel/uapi/linux/neighbour.h
@@ -41,6 +41,7 @@
   NDA_IFINDEX,
   NDA_MASTER,
   NDA_LINK_NETNSID,
+  NDA_SRC_VNI,
   __NDA_MAX
 };
 #define NDA_MAX (__NDA_MAX - 1)
diff --git a/libc/kernel/uapi/linux/netconf.h b/libc/kernel/uapi/linux/netconf.h
index 981badd..4f86757 100644
--- a/libc/kernel/uapi/linux/netconf.h
+++ b/libc/kernel/uapi/linux/netconf.h
@@ -31,6 +31,7 @@
   NETCONFA_MC_FORWARDING,
   NETCONFA_PROXY_NEIGH,
   NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN,
+  NETCONFA_INPUT,
   __NETCONFA_MAX
 };
 #define NETCONFA_MAX (__NETCONFA_MAX - 1)
diff --git a/libc/kernel/uapi/linux/netfilter.h b/libc/kernel/uapi/linux/netfilter.h
index 6f6b998..5538869 100644
--- a/libc/kernel/uapi/linux/netfilter.h
+++ b/libc/kernel/uapi/linux/netfilter.h
@@ -20,7 +20,6 @@
 #define _UAPI__LINUX_NETFILTER_H
 #include <linux/types.h>
 #include <linux/compiler.h>
-#include <linux/sysctl.h>
 #include <linux/in.h>
 #include <linux/in6.h>
 #define NF_DROP 0
diff --git a/libc/kernel/uapi/linux/netfilter/nf_conntrack_common.h b/libc/kernel/uapi/linux/netfilter/nf_conntrack_common.h
index e08769c..5192a54 100644
--- a/libc/kernel/uapi/linux/netfilter/nf_conntrack_common.h
+++ b/libc/kernel/uapi/linux/netfilter/nf_conntrack_common.h
@@ -30,7 +30,7 @@
 };
 #define NF_CT_STATE_INVALID_BIT (1 << 0)
 #define NF_CT_STATE_BIT(ctinfo) (1 << ((ctinfo) % IP_CT_IS_REPLY + 1))
-#define NF_CT_STATE_UNTRACKED_BIT (1 << (IP_CT_NUMBER + 1))
+#define NF_CT_STATE_UNTRACKED_BIT (1 << (IP_CT_UNTRACKED + 1))
 enum ip_conntrack_status {
   IPS_EXPECTED_BIT = 0,
   IPS_EXPECTED = (1 << IPS_EXPECTED_BIT),
@@ -62,6 +62,8 @@
   IPS_UNTRACKED = (1 << IPS_UNTRACKED_BIT),
   IPS_HELPER_BIT = 13,
   IPS_HELPER = (1 << IPS_HELPER_BIT),
+  IPS_UNCHANGEABLE_MASK = (IPS_NAT_DONE_MASK | IPS_NAT_MASK | IPS_EXPECTED | IPS_CONFIRMED | IPS_DYING | IPS_SEQ_ADJUST | IPS_TEMPLATE),
+  __IPS_MAX_BIT = 14,
 };
 enum ip_conntrack_events {
   IPCT_NEW,
diff --git a/libc/kernel/uapi/linux/netfilter/nf_tables.h b/libc/kernel/uapi/linux/netfilter/nf_tables.h
index 7cadf61..c090f94 100644
--- a/libc/kernel/uapi/linux/netfilter/nf_tables.h
+++ b/libc/kernel/uapi/linux/netfilter/nf_tables.h
@@ -131,6 +131,7 @@
   NFTA_RULE_POSITION,
   NFTA_RULE_USERDATA,
   NFTA_RULE_PAD,
+  NFTA_RULE_ID,
   __NFTA_RULE_MAX
 };
 #define NFTA_RULE_MAX (__NFTA_RULE_MAX - 1)
@@ -356,12 +357,23 @@
   __NFTA_PAYLOAD_MAX
 };
 #define NFTA_PAYLOAD_MAX (__NFTA_PAYLOAD_MAX - 1)
+enum nft_exthdr_flags {
+  NFT_EXTHDR_F_PRESENT = (1 << 0),
+};
+enum nft_exthdr_op {
+  NFT_EXTHDR_OP_IPV6,
+  NFT_EXTHDR_OP_TCPOPT,
+  __NFT_EXTHDR_OP_MAX
+};
+#define NFT_EXTHDR_OP_MAX (__NFT_EXTHDR_OP_MAX - 1)
 enum nft_exthdr_attributes {
   NFTA_EXTHDR_UNSPEC,
   NFTA_EXTHDR_DREG,
   NFTA_EXTHDR_TYPE,
   NFTA_EXTHDR_OFFSET,
   NFTA_EXTHDR_LEN,
+  NFTA_EXTHDR_FLAGS,
+  NFTA_EXTHDR_OP,
   __NFTA_EXTHDR_MAX
 };
 #define NFTA_EXTHDR_MAX (__NFTA_EXTHDR_MAX - 1)
@@ -397,6 +409,10 @@
   NFT_RT_NEXTHOP4,
   NFT_RT_NEXTHOP6,
 };
+enum nft_hash_types {
+  NFT_HASH_JENKINS,
+  NFT_HASH_SYM,
+};
 enum nft_hash_attributes {
   NFTA_HASH_UNSPEC,
   NFTA_HASH_SREG,
@@ -405,6 +421,7 @@
   NFTA_HASH_MODULUS,
   NFTA_HASH_SEED,
   NFTA_HASH_OFFSET,
+  NFTA_HASH_TYPE,
   __NFTA_HASH_MAX,
 };
 #define NFTA_HASH_MAX (__NFTA_HASH_MAX - 1)
@@ -440,6 +457,9 @@
   NFT_CT_LABELS,
   NFT_CT_PKTS,
   NFT_CT_BYTES,
+  NFT_CT_AVGPKT,
+  NFT_CT_ZONE,
+  NFT_CT_EVENTMASK,
 };
 enum nft_ct_attributes {
   NFTA_CT_UNSPEC,
@@ -615,11 +635,21 @@
   NFTA_FIB_F_MARK = 1 << 2,
   NFTA_FIB_F_IIF = 1 << 3,
   NFTA_FIB_F_OIF = 1 << 4,
+  NFTA_FIB_F_PRESENT = 1 << 5,
 };
+enum nft_ct_helper_attributes {
+  NFTA_CT_HELPER_UNSPEC,
+  NFTA_CT_HELPER_NAME,
+  NFTA_CT_HELPER_L3PROTO,
+  NFTA_CT_HELPER_L4PROTO,
+  __NFTA_CT_HELPER_MAX,
+};
+#define NFTA_CT_HELPER_MAX (__NFTA_CT_HELPER_MAX - 1)
 #define NFT_OBJECT_UNSPEC 0
 #define NFT_OBJECT_COUNTER 1
 #define NFT_OBJECT_QUOTA 2
-#define __NFT_OBJECT_MAX 3
+#define NFT_OBJECT_CT_HELPER 3
+#define __NFT_OBJECT_MAX 4
 #define NFT_OBJECT_MAX (__NFT_OBJECT_MAX - 1)
 enum nft_object_attributes {
   NFTA_OBJ_UNSPEC,
diff --git a/libc/kernel/uapi/linux/netfilter/nfnetlink.h b/libc/kernel/uapi/linux/netfilter/nfnetlink.h
index 8dffa49..9145552 100644
--- a/libc/kernel/uapi/linux/netfilter/nfnetlink.h
+++ b/libc/kernel/uapi/linux/netfilter/nfnetlink.h
@@ -67,4 +67,10 @@
 #define NFNL_SUBSYS_COUNT 12
 #define NFNL_MSG_BATCH_BEGIN NLMSG_MIN_TYPE
 #define NFNL_MSG_BATCH_END NLMSG_MIN_TYPE + 1
+enum nfnl_batch_attributes {
+  NFNL_BATCH_UNSPEC,
+  NFNL_BATCH_GENID,
+  __NFNL_BATCH_MAX
+};
+#define NFNL_BATCH_MAX (__NFNL_BATCH_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h b/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h
index b3ebb3b..75fa359 100644
--- a/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h
+++ b/libc/kernel/uapi/linux/netfilter/nfnetlink_queue.h
@@ -47,7 +47,7 @@
   NFQA_VLAN_TCI,
   __NFQA_VLAN_MAX,
 };
-#define NFQA_VLAN_MAX (__NFQA_VLAN_MAX + 1)
+#define NFQA_VLAN_MAX (__NFQA_VLAN_MAX - 1)
 enum nfqnl_attr_type {
   NFQA_UNSPEC,
   NFQA_PACKET_HDR,
diff --git a/libc/kernel/uapi/linux/netfilter/xt_hashlimit.h b/libc/kernel/uapi/linux/netfilter/xt_hashlimit.h
index 0f4e931..c9d62f3 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_hashlimit.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_hashlimit.h
@@ -19,6 +19,7 @@
 #ifndef _UAPI_XT_HASHLIMIT_H
 #define _UAPI_XT_HASHLIMIT_H
 #include <linux/types.h>
+#include <linux/limits.h>
 #include <linux/if.h>
 #define XT_HASHLIMIT_SCALE 10000
 #define XT_HASHLIMIT_SCALE_v2 1000000llu
diff --git a/libc/kernel/uapi/linux/netlink.h b/libc/kernel/uapi/linux/netlink.h
index 1352326..4eb428a 100644
--- a/libc/kernel/uapi/linux/netlink.h
+++ b/libc/kernel/uapi/linux/netlink.h
@@ -42,6 +42,7 @@
 #define NETLINK_ECRYPTFS 19
 #define NETLINK_RDMA 20
 #define NETLINK_CRYPTO 21
+#define NETLINK_SMC 22
 #define NETLINK_INET_DIAG NETLINK_SOCK_DIAG
 #define MAX_LINKS 32
 struct sockaddr_nl {
@@ -57,12 +58,12 @@
   __u32 nlmsg_seq;
   __u32 nlmsg_pid;
 };
-#define NLM_F_REQUEST 1
-#define NLM_F_MULTI 2
-#define NLM_F_ACK 4
-#define NLM_F_ECHO 8
-#define NLM_F_DUMP_INTR 16
-#define NLM_F_DUMP_FILTERED 32
+#define NLM_F_REQUEST 0x01
+#define NLM_F_MULTI 0x02
+#define NLM_F_ACK 0x04
+#define NLM_F_ECHO 0x08
+#define NLM_F_DUMP_INTR 0x10
+#define NLM_F_DUMP_FILTERED 0x20
 #define NLM_F_ROOT 0x100
 #define NLM_F_MATCH 0x200
 #define NLM_F_ATOMIC 0x400
@@ -71,6 +72,8 @@
 #define NLM_F_EXCL 0x200
 #define NLM_F_CREATE 0x400
 #define NLM_F_APPEND 0x800
+#define NLM_F_CAPPED 0x100
+#define NLM_F_ACK_TLVS 0x200
 #define NLMSG_ALIGNTO 4U
 #define NLMSG_ALIGN(len) (((len) + NLMSG_ALIGNTO - 1) & ~(NLMSG_ALIGNTO - 1))
 #define NLMSG_HDRLEN ((int) NLMSG_ALIGN(sizeof(struct nlmsghdr)))
@@ -89,6 +92,14 @@
   int error;
   struct nlmsghdr msg;
 };
+enum nlmsgerr_attrs {
+  NLMSGERR_ATTR_UNUSED,
+  NLMSGERR_ATTR_MSG,
+  NLMSGERR_ATTR_OFFS,
+  NLMSGERR_ATTR_COOKIE,
+  __NLMSGERR_ATTR_MAX,
+  NLMSGERR_ATTR_MAX = __NLMSGERR_ATTR_MAX - 1
+};
 #define NETLINK_ADD_MEMBERSHIP 1
 #define NETLINK_DROP_MEMBERSHIP 2
 #define NETLINK_PKTINFO 3
@@ -99,6 +110,7 @@
 #define NETLINK_LISTEN_ALL_NSID 8
 #define NETLINK_LIST_MEMBERSHIPS 9
 #define NETLINK_CAP_ACK 10
+#define NETLINK_EXT_ACK 11
 struct nl_pktinfo {
   __u32 group;
 };
diff --git a/libc/kernel/uapi/linux/netlink_diag.h b/libc/kernel/uapi/linux/netlink_diag.h
index 7a91ee4..afe1521 100644
--- a/libc/kernel/uapi/linux/netlink_diag.h
+++ b/libc/kernel/uapi/linux/netlink_diag.h
@@ -49,6 +49,7 @@
   NETLINK_DIAG_GROUPS,
   NETLINK_DIAG_RX_RING,
   NETLINK_DIAG_TX_RING,
+  NETLINK_DIAG_FLAGS,
   __NETLINK_DIAG_MAX,
 };
 #define NETLINK_DIAG_MAX (__NETLINK_DIAG_MAX - 1)
@@ -56,4 +57,11 @@
 #define NDIAG_SHOW_MEMINFO 0x00000001
 #define NDIAG_SHOW_GROUPS 0x00000002
 #define NDIAG_SHOW_RING_CFG 0x00000004
+#define NDIAG_SHOW_FLAGS 0x00000008
+#define NDIAG_FLAG_CB_RUNNING 0x00000001
+#define NDIAG_FLAG_PKTINFO 0x00000002
+#define NDIAG_FLAG_BROADCAST_ERROR 0x00000004
+#define NDIAG_FLAG_NO_ENOBUFS 0x00000008
+#define NDIAG_FLAG_LISTEN_ALL_NSID 0x00000010
+#define NDIAG_FLAG_CAP_ACK 0x00000020
 #endif
diff --git a/libc/kernel/uapi/linux/nfsd/cld.h b/libc/kernel/uapi/linux/nfsd/cld.h
index bcabb31..82651d1 100644
--- a/libc/kernel/uapi/linux/nfsd/cld.h
+++ b/libc/kernel/uapi/linux/nfsd/cld.h
@@ -18,6 +18,7 @@
  ****************************************************************************/
 #ifndef _NFSD_CLD_H
 #define _NFSD_CLD_H
+#include <linux/types.h>
 #define CLD_UPCALL_VERSION 1
 #define NFS4_OPAQUE_LIMIT 1024
 enum cld_command {
@@ -27,16 +28,16 @@
   Cld_GraceDone,
 };
 struct cld_name {
-  uint16_t cn_len;
+  __u16 cn_len;
   unsigned char cn_id[NFS4_OPAQUE_LIMIT];
 } __attribute__((packed));
 struct cld_msg {
-  uint8_t cm_vers;
-  uint8_t cm_cmd;
-  int16_t cm_status;
-  uint32_t cm_xid;
+  __u8 cm_vers;
+  __u8 cm_cmd;
+  __s16 cm_status;
+  __u32 cm_xid;
   union {
-    int64_t cm_gracetime;
+    __s64 cm_gracetime;
     struct cld_name cm_name;
   } __attribute__((packed)) cm_u;
 } __attribute__((packed));
diff --git a/libc/kernel/uapi/linux/nfsd/export.h b/libc/kernel/uapi/linux/nfsd/export.h
index 2779e97..4716fb1 100644
--- a/libc/kernel/uapi/linux/nfsd/export.h
+++ b/libc/kernel/uapi/linux/nfsd/export.h
@@ -29,6 +29,7 @@
 #define NFSEXP_ASYNC 0x0010
 #define NFSEXP_GATHERED_WRITES 0x0020
 #define NFSEXP_NOREADDIRPLUS 0x0040
+#define NFSEXP_SECURITY_LABEL 0x0080
 #define NFSEXP_NOHIDE 0x0200
 #define NFSEXP_NOSUBTREECHECK 0x0400
 #define NFSEXP_NOAUTHNLM 0x0800
@@ -38,6 +39,6 @@
 #define NFSEXP_NOACL 0x8000
 #define NFSEXP_V4ROOT 0x10000
 #define NFSEXP_PNFS 0x20000
-#define NFSEXP_ALLFLAGS 0x3FE7F
+#define NFSEXP_ALLFLAGS 0x3FEFF
 #define NFSEXP_SECINFO_FLAGS (NFSEXP_READONLY | NFSEXP_ROOTSQUASH | NFSEXP_ALLSQUASH | NFSEXP_INSECURE_PORT)
 #endif
diff --git a/libc/kernel/uapi/linux/nl80211.h b/libc/kernel/uapi/linux/nl80211.h
index 562e429..103b9da 100644
--- a/libc/kernel/uapi/linux/nl80211.h
+++ b/libc/kernel/uapi/linux/nl80211.h
@@ -411,13 +411,24 @@
   NL80211_ATTR_MEASUREMENT_DURATION_MANDATORY,
   NL80211_ATTR_MESH_PEER_AID,
   NL80211_ATTR_NAN_MASTER_PREF,
-  NL80211_ATTR_NAN_DUAL,
+  NL80211_ATTR_BANDS,
   NL80211_ATTR_NAN_FUNC,
   NL80211_ATTR_NAN_MATCH,
   NL80211_ATTR_FILS_KEK,
   NL80211_ATTR_FILS_NONCES,
   NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED,
   NL80211_ATTR_BSSID,
+  NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI,
+  NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST,
+  NL80211_ATTR_TIMEOUT_REASON,
+  NL80211_ATTR_FILS_ERP_USERNAME,
+  NL80211_ATTR_FILS_ERP_REALM,
+  NL80211_ATTR_FILS_ERP_NEXT_SEQ_NUM,
+  NL80211_ATTR_FILS_ERP_RRK,
+  NL80211_ATTR_FILS_CACHE_ID,
+  NL80211_ATTR_PMK,
+  NL80211_ATTR_SCHED_SCAN_MULTI,
+  NL80211_ATTR_SCHED_SCAN_MAX_REQS,
   __NL80211_ATTR_AFTER_LAST,
   NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST,
   NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
@@ -669,6 +680,9 @@
   __NL80211_SCHED_SCAN_MATCH_ATTR_INVALID,
   NL80211_SCHED_SCAN_MATCH_ATTR_SSID,
   NL80211_SCHED_SCAN_MATCH_ATTR_RSSI,
+  NL80211_SCHED_SCAN_MATCH_ATTR_RELATIVE_RSSI,
+  NL80211_SCHED_SCAN_MATCH_ATTR_RSSI_ADJUST,
+  NL80211_SCHED_SCAN_MATCH_ATTR_BSSID,
   __NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST,
   NL80211_SCHED_SCAN_MATCH_ATTR_MAX = __NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST - 1
 };
@@ -948,6 +962,7 @@
   NL80211_ATTR_CQM_TXE_PKTS,
   NL80211_ATTR_CQM_TXE_INTVL,
   NL80211_ATTR_CQM_BEACON_LOSS_EVENT,
+  NL80211_ATTR_CQM_RSSI_LEVEL,
   __NL80211_ATTR_CQM_AFTER_LAST,
   NL80211_ATTR_CQM_MAX = __NL80211_ATTR_CQM_AFTER_LAST - 1
 };
@@ -1167,6 +1182,11 @@
   NL80211_EXT_FEATURE_BEACON_RATE_HT,
   NL80211_EXT_FEATURE_BEACON_RATE_VHT,
   NL80211_EXT_FEATURE_FILS_STA,
+  NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA,
+  NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA_CONNECTED,
+  NL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI,
+  NL80211_EXT_FEATURE_CQM_RSSI_LIST,
+  NL80211_EXT_FEATURE_FILS_SK_OFFLOAD,
   NUM_NL80211_EXT_FEATURES,
   MAX_NL80211_EXT_FEATURES = NUM_NL80211_EXT_FEATURES - 1
 };
@@ -1180,6 +1200,12 @@
   NL80211_CONN_FAIL_MAX_CLIENTS,
   NL80211_CONN_FAIL_BLOCKED_CLIENT,
 };
+enum nl80211_timeout_reason {
+  NL80211_TIMEOUT_UNSPECIFIED,
+  NL80211_TIMEOUT_SCAN,
+  NL80211_TIMEOUT_AUTH,
+  NL80211_TIMEOUT_ASSOC,
+};
 enum nl80211_scan_flags {
   NL80211_SCAN_FLAG_LOW_PRIORITY = 1 << 0,
   NL80211_SCAN_FLAG_FLUSH = 1 << 1,
@@ -1202,6 +1228,7 @@
   NL80211_RADAR_CAC_FINISHED,
   NL80211_RADAR_CAC_ABORTED,
   NL80211_RADAR_NOP_FINISHED,
+  NL80211_RADAR_PRE_CAC_EXPIRED,
 };
 enum nl80211_dfs_state {
   NL80211_DFS_USABLE,
@@ -1251,11 +1278,6 @@
   __NL80211_BSS_SELECT_ATTR_AFTER_LAST,
   NL80211_BSS_SELECT_ATTR_MAX = __NL80211_BSS_SELECT_ATTR_AFTER_LAST - 1
 };
-enum nl80211_nan_dual_band_conf {
-  NL80211_NAN_BAND_DEFAULT = 1 << 0,
-  NL80211_NAN_BAND_2GHZ = 1 << 1,
-  NL80211_NAN_BAND_5GHZ = 1 << 2,
-};
 enum nl80211_nan_function_type {
   NL80211_NAN_FUNC_PUBLISH,
   NL80211_NAN_FUNC_SUBSCRIBE,
diff --git a/libc/kernel/uapi/linux/nsfs.h b/libc/kernel/uapi/linux/nsfs.h
index 0a35074..d32d31c 100644
--- a/libc/kernel/uapi/linux/nsfs.h
+++ b/libc/kernel/uapi/linux/nsfs.h
@@ -22,4 +22,6 @@
 #define NSIO 0xb7
 #define NS_GET_USERNS _IO(NSIO, 0x1)
 #define NS_GET_PARENT _IO(NSIO, 0x2)
+#define NS_GET_NSTYPE _IO(NSIO, 0x3)
+#define NS_GET_OWNER_UID _IO(NSIO, 0x4)
 #endif
diff --git a/libc/kernel/uapi/linux/nubus.h b/libc/kernel/uapi/linux/nubus.h
index 5c80c81..530005b 100644
--- a/libc/kernel/uapi/linux/nubus.h
+++ b/libc/kernel/uapi/linux/nubus.h
@@ -64,13 +64,15 @@
   NUBUS_DRHW_SIGMA_CLRMAX = 0x0007,
   NUBUS_DRHW_APPLE_SE30 = 0x0009,
   NUBUS_DRHW_APPLE_HRVC = 0x0013,
+  NUBUS_DRHW_APPLE_MVC = 0x0014,
   NUBUS_DRHW_APPLE_PVC = 0x0017,
   NUBUS_DRHW_APPLE_RBV1 = 0x0018,
   NUBUS_DRHW_APPLE_MDC = 0x0019,
+  NUBUS_DRHW_APPLE_VSC = 0x0020,
   NUBUS_DRHW_APPLE_SONORA = 0x0022,
+  NUBUS_DRHW_APPLE_JET = 0x0029,
   NUBUS_DRHW_APPLE_24AC = 0x002b,
   NUBUS_DRHW_APPLE_VALKYRIE = 0x002e,
-  NUBUS_DRHW_APPLE_JET = 0x0029,
   NUBUS_DRHW_SMAC_GFX = 0x0105,
   NUBUS_DRHW_RASTER_CB264 = 0x013B,
   NUBUS_DRHW_MICRON_XCEED = 0x0146,
diff --git a/libc/kernel/uapi/linux/openvswitch.h b/libc/kernel/uapi/linux/openvswitch.h
index 54c76d7..7247171 100644
--- a/libc/kernel/uapi/linux/openvswitch.h
+++ b/libc/kernel/uapi/linux/openvswitch.h
@@ -180,6 +180,8 @@
   OVS_KEY_ATTR_CT_ZONE,
   OVS_KEY_ATTR_CT_MARK,
   OVS_KEY_ATTR_CT_LABELS,
+  OVS_KEY_ATTR_CT_ORIG_TUPLE_IPV4,
+  OVS_KEY_ATTR_CT_ORIG_TUPLE_IPV6,
   __OVS_KEY_ATTR_MAX
 };
 #define OVS_KEY_ATTR_MAX (__OVS_KEY_ATTR_MAX - 1)
@@ -265,9 +267,13 @@
   __u8 nd_sll[ETH_ALEN];
   __u8 nd_tll[ETH_ALEN];
 };
-#define OVS_CT_LABELS_LEN 16
+#define OVS_CT_LABELS_LEN_32 4
+#define OVS_CT_LABELS_LEN (OVS_CT_LABELS_LEN_32 * sizeof(__u32))
 struct ovs_key_ct_labels {
-  __u8 ct_labels[OVS_CT_LABELS_LEN];
+  union {
+    __u8 ct_labels[OVS_CT_LABELS_LEN];
+    __u32 ct_labels_32[OVS_CT_LABELS_LEN_32];
+  };
 };
 #define OVS_CS_F_NEW 0x01
 #define OVS_CS_F_ESTABLISHED 0x02
@@ -278,6 +284,20 @@
 #define OVS_CS_F_SRC_NAT 0x40
 #define OVS_CS_F_DST_NAT 0x80
 #define OVS_CS_F_NAT_MASK (OVS_CS_F_SRC_NAT | OVS_CS_F_DST_NAT)
+struct ovs_key_ct_tuple_ipv4 {
+  __be32 ipv4_src;
+  __be32 ipv4_dst;
+  __be16 src_port;
+  __be16 dst_port;
+  __u8 ipv4_proto;
+};
+struct ovs_key_ct_tuple_ipv6 {
+  __be32 ipv6_src[4];
+  __be32 ipv6_dst[4];
+  __be16 src_port;
+  __be16 dst_port;
+  __u8 ipv6_proto;
+};
 enum ovs_flow_attr {
   OVS_FLOW_ATTR_UNSPEC,
   OVS_FLOW_ATTR_KEY,
@@ -339,6 +359,8 @@
   OVS_CT_ATTR_LABELS,
   OVS_CT_ATTR_HELPER,
   OVS_CT_ATTR_NAT,
+  OVS_CT_ATTR_FORCE_COMMIT,
+  OVS_CT_ATTR_EVENTMASK,
   __OVS_CT_ATTR_MAX
 };
 #define OVS_CT_ATTR_MAX (__OVS_CT_ATTR_MAX - 1)
diff --git a/libc/kernel/uapi/linux/packet_diag.h b/libc/kernel/uapi/linux/packet_diag.h
index f0b7525..35d5413 100644
--- a/libc/kernel/uapi/linux/packet_diag.h
+++ b/libc/kernel/uapi/linux/packet_diag.h
@@ -70,7 +70,7 @@
   __u32 pdmc_count;
   __u16 pdmc_type;
   __u16 pdmc_alen;
-  __u8 pdmc_addr[MAX_ADDR_LEN];
+  __u8 pdmc_addr[32];
 };
 struct packet_diag_ring {
   __u32 pdr_block_size;
diff --git a/libc/kernel/uapi/linux/pci_regs.h b/libc/kernel/uapi/linux/pci_regs.h
index d56b310..baa9421 100644
--- a/libc/kernel/uapi/linux/pci_regs.h
+++ b/libc/kernel/uapi/linux/pci_regs.h
@@ -86,7 +86,7 @@
 #define PCI_SUBSYSTEM_ID 0x2e
 #define PCI_ROM_ADDRESS 0x30
 #define PCI_ROM_ADDRESS_ENABLE 0x01
-#define PCI_ROM_ADDRESS_MASK (~0x7ffUL)
+#define PCI_ROM_ADDRESS_MASK (~0x7ffU)
 #define PCI_CAPABILITY_LIST 0x34
 #define PCI_INTERRUPT_LINE 0x3c
 #define PCI_INTERRUPT_PIN 0x3d
@@ -533,6 +533,7 @@
 #define PCI_EXP_DEVCTL2_COMP_TIMEOUT 0x000f
 #define PCI_EXP_DEVCTL2_ARI 0x0020
 #define PCI_EXP_DEVCTL2_ATOMIC_REQ 0x0040
+#define PCI_EXP_DEVCTL2_ATOMIC_EGRESS_BLOCK 0x0080
 #define PCI_EXP_DEVCTL2_IDO_REQ_EN 0x0100
 #define PCI_EXP_DEVCTL2_IDO_CMP_EN 0x0200
 #define PCI_EXP_DEVCTL2_LTR_EN 0x0400
@@ -582,6 +583,7 @@
 #define PCI_EXT_CAP_ID_PMUX 0x1A
 #define PCI_EXT_CAP_ID_PASID 0x1B
 #define PCI_EXT_CAP_ID_DPC 0x1D
+#define PCI_EXT_CAP_ID_L1SS 0x1E
 #define PCI_EXT_CAP_ID_PTM 0x1F
 #define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_PTM
 #define PCI_EXT_CAP_DSN_SIZEOF 12
@@ -819,6 +821,7 @@
 #define PCI_EXP_DPC_STATUS 8
 #define PCI_EXP_DPC_STATUS_TRIGGER 0x01
 #define PCI_EXP_DPC_STATUS_INTERRUPT 0x08
+#define PCI_EXP_DPC_RP_BUSY 0x10
 #define PCI_EXP_DPC_SOURCE_ID 10
 #define PCI_PTM_CAP 0x04
 #define PCI_PTM_CAP_REQ 0x00000001
@@ -827,4 +830,17 @@
 #define PCI_PTM_CTRL 0x08
 #define PCI_PTM_CTRL_ENABLE 0x00000001
 #define PCI_PTM_CTRL_ROOT 0x00000002
+#define PCI_L1SS_CAP 4
+#define PCI_L1SS_CAP_PCIPM_L1_2 1
+#define PCI_L1SS_CAP_PCIPM_L1_1 2
+#define PCI_L1SS_CAP_ASPM_L1_2 4
+#define PCI_L1SS_CAP_ASPM_L1_1 8
+#define PCI_L1SS_CAP_L1_PM_SS 16
+#define PCI_L1SS_CTL1 8
+#define PCI_L1SS_CTL1_PCIPM_L1_2 1
+#define PCI_L1SS_CTL1_PCIPM_L1_1 2
+#define PCI_L1SS_CTL1_ASPM_L1_2 4
+#define PCI_L1SS_CTL1_ASPM_L1_1 8
+#define PCI_L1SS_CTL1_L1SS_MASK 0x0000000F
+#define PCI_L1SS_CTL2 0xC
 #endif
diff --git a/libc/kernel/uapi/linux/ion_test.h b/libc/kernel/uapi/linux/pcitest.h
similarity index 68%
copy from libc/kernel/uapi/linux/ion_test.h
copy to libc/kernel/uapi/linux/pcitest.h
index 3064508..e6c0264 100644
--- a/libc/kernel/uapi/linux/ion_test.h
+++ b/libc/kernel/uapi/linux/pcitest.h
@@ -16,19 +16,12 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef _UAPI_LINUX_ION_TEST_H
-#define _UAPI_LINUX_ION_TEST_H
-#include <linux/ioctl.h>
-#include <linux/types.h>
-struct ion_test_rw_data {
-  __u64 ptr;
-  __u64 offset;
-  __u64 size;
-  int write;
-  int __padding;
-};
-#define ION_IOC_MAGIC 'I'
-#define ION_IOC_TEST_SET_FD _IO(ION_IOC_MAGIC, 0xf0)
-#define ION_IOC_TEST_DMA_MAPPING _IOW(ION_IOC_MAGIC, 0xf1, struct ion_test_rw_data)
-#define ION_IOC_TEST_KERNEL_MAPPING _IOW(ION_IOC_MAGIC, 0xf2, struct ion_test_rw_data)
+#ifndef __UAPI_LINUX_PCITEST_H
+#define __UAPI_LINUX_PCITEST_H
+#define PCITEST_BAR _IO('P', 0x1)
+#define PCITEST_LEGACY_IRQ _IO('P', 0x2)
+#define PCITEST_MSI _IOW('P', 0x3, int)
+#define PCITEST_WRITE _IOW('P', 0x4, unsigned long)
+#define PCITEST_READ _IOW('P', 0x5, unsigned long)
+#define PCITEST_COPY _IOW('P', 0x6, unsigned long)
 #endif
diff --git a/libc/kernel/uapi/linux/perf_event.h b/libc/kernel/uapi/linux/perf_event.h
index dedb9e5..8adad9c 100644
--- a/libc/kernel/uapi/linux/perf_event.h
+++ b/libc/kernel/uapi/linux/perf_event.h
@@ -180,7 +180,7 @@
   };
   __u64 sample_type;
   __u64 read_format;
-  __u64 disabled : 1, inherit : 1, pinned : 1, exclusive : 1, exclude_user : 1, exclude_kernel : 1, exclude_hv : 1, exclude_idle : 1, mmap : 1, comm : 1, freq : 1, inherit_stat : 1, enable_on_exec : 1, task : 1, watermark : 1, precise_ip : 2, mmap_data : 1, sample_id_all : 1, exclude_host : 1, exclude_guest : 1, exclude_callchain_kernel : 1, exclude_callchain_user : 1, mmap2 : 1, comm_exec : 1, use_clockid : 1, context_switch : 1, write_backward : 1, __reserved_1 : 36;
+  __u64 disabled : 1, inherit : 1, pinned : 1, exclusive : 1, exclude_user : 1, exclude_kernel : 1, exclude_hv : 1, exclude_idle : 1, mmap : 1, comm : 1, freq : 1, inherit_stat : 1, enable_on_exec : 1, task : 1, watermark : 1, precise_ip : 2, mmap_data : 1, sample_id_all : 1, exclude_host : 1, exclude_guest : 1, exclude_callchain_kernel : 1, exclude_callchain_user : 1, mmap2 : 1, comm_exec : 1, use_clockid : 1, context_switch : 1, write_backward : 1, namespaces : 1, __reserved_1 : 35;
   union {
     __u32 wakeup_events;
     __u32 wakeup_watermark;
@@ -265,6 +265,20 @@
   __u16 misc;
   __u16 size;
 };
+struct perf_ns_link_info {
+  __u64 dev;
+  __u64 ino;
+};
+enum {
+  NET_NS_INDEX = 0,
+  UTS_NS_INDEX = 1,
+  IPC_NS_INDEX = 2,
+  PID_NS_INDEX = 3,
+  USER_NS_INDEX = 4,
+  MNT_NS_INDEX = 5,
+  CGROUP_NS_INDEX = 6,
+  NR_NAMESPACES,
+};
 enum perf_event_type {
   PERF_RECORD_MMAP = 1,
   PERF_RECORD_LOST = 2,
@@ -281,6 +295,7 @@
   PERF_RECORD_LOST_SAMPLES = 13,
   PERF_RECORD_SWITCH = 14,
   PERF_RECORD_SWITCH_CPU_WIDE = 15,
+  PERF_RECORD_NAMESPACES = 16,
   PERF_RECORD_MAX,
 };
 #define PERF_MAX_STACK_DEPTH 127
@@ -296,16 +311,28 @@
 };
 #define PERF_AUX_FLAG_TRUNCATED 0x01
 #define PERF_AUX_FLAG_OVERWRITE 0x02
+#define PERF_AUX_FLAG_PARTIAL 0x04
 #define PERF_FLAG_FD_NO_GROUP (1UL << 0)
 #define PERF_FLAG_FD_OUTPUT (1UL << 1)
 #define PERF_FLAG_PID_CGROUP (1UL << 2)
 #define PERF_FLAG_FD_CLOEXEC (1UL << 3)
+#ifdef __LITTLE_ENDIAN_BITFIELD
 union perf_mem_data_src {
   __u64 val;
   struct {
     __u64 mem_op : 5, mem_lvl : 14, mem_snoop : 5, mem_lock : 2, mem_dtlb : 7, mem_rsvd : 31;
   };
 };
+#elif defined(__BIG_ENDIAN_BITFIELD)
+union perf_mem_data_src {
+  __u64 val;
+  struct {
+    __u64 mem_rsvd : 31, mem_dtlb : 7, mem_lock : 2, mem_snoop : 5, mem_lvl : 14, mem_op : 5;
+  };
+};
+#else
+#error "Unknown endianness"
+#endif
 #define PERF_MEM_OP_NA 0x01
 #define PERF_MEM_OP_LOAD 0x02
 #define PERF_MEM_OP_STORE 0x04
diff --git a/libc/kernel/uapi/linux/pkt_cls.h b/libc/kernel/uapi/linux/pkt_cls.h
index fb85294..af251c0 100644
--- a/libc/kernel/uapi/linux/pkt_cls.h
+++ b/libc/kernel/uapi/linux/pkt_cls.h
@@ -20,6 +20,7 @@
 #define __LINUX_PKT_CLS_H
 #include <linux/types.h>
 #include <linux/pkt_sched.h>
+#define TC_COOKIE_MAX_SIZE 16
 enum {
   TCA_ACT_UNSPEC,
   TCA_ACT_KIND,
@@ -27,6 +28,7 @@
   TCA_ACT_INDEX,
   TCA_ACT_STATS,
   TCA_ACT_PAD,
+  TCA_ACT_COOKIE,
   __TCA_ACT_MAX
 };
 #define TCA_ACT_MAX __TCA_ACT_MAX
@@ -47,7 +49,11 @@
 #define TC_ACT_QUEUED 5
 #define TC_ACT_REPEAT 6
 #define TC_ACT_REDIRECT 7
-#define TC_ACT_JUMP 0x10000000
+#define __TC_ACT_EXT_SHIFT 28
+#define __TC_ACT_EXT(local) ((local) << __TC_ACT_EXT_SHIFT)
+#define TC_ACT_EXT_VAL_MASK ((1 << __TC_ACT_EXT_SHIFT) - 1)
+#define TC_ACT_EXT_CMP(combined,opcode) (((combined) & (~TC_ACT_EXT_VAL_MASK)) == opcode)
+#define TC_ACT_JUMP __TC_ACT_EXT(1)
 enum {
   TCA_ID_UNSPEC = 0,
   TCA_ID_POLICE = 1,
@@ -97,6 +103,8 @@
 #define TCA_POLICE_MAX (__TCA_POLICE_MAX - 1)
 #define TCA_CLS_FLAGS_SKIP_HW (1 << 0)
 #define TCA_CLS_FLAGS_SKIP_SW (1 << 1)
+#define TCA_CLS_FLAGS_IN_HW (1 << 2)
+#define TCA_CLS_FLAGS_NOT_IN_HW (1 << 3)
 #define TC_U32_HTID(h) ((h) & 0xFFF00000)
 #define TC_U32_USERHTID(h) (TC_U32_HTID(h) >> 20)
 #define TC_U32_HASH(h) (((h) >> 12) & 0xFF)
@@ -344,6 +352,20 @@
   TCA_FLOWER_KEY_ICMPV6_CODE_MASK,
   TCA_FLOWER_KEY_ICMPV6_TYPE,
   TCA_FLOWER_KEY_ICMPV6_TYPE_MASK,
+  TCA_FLOWER_KEY_ARP_SIP,
+  TCA_FLOWER_KEY_ARP_SIP_MASK,
+  TCA_FLOWER_KEY_ARP_TIP,
+  TCA_FLOWER_KEY_ARP_TIP_MASK,
+  TCA_FLOWER_KEY_ARP_OP,
+  TCA_FLOWER_KEY_ARP_OP_MASK,
+  TCA_FLOWER_KEY_ARP_SHA,
+  TCA_FLOWER_KEY_ARP_SHA_MASK,
+  TCA_FLOWER_KEY_ARP_THA,
+  TCA_FLOWER_KEY_ARP_THA_MASK,
+  TCA_FLOWER_KEY_MPLS_TTL,
+  TCA_FLOWER_KEY_MPLS_BOS,
+  TCA_FLOWER_KEY_MPLS_TC,
+  TCA_FLOWER_KEY_MPLS_LABEL,
   __TCA_FLOWER_MAX,
 };
 #define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1)
diff --git a/libc/kernel/uapi/linux/pkt_sched.h b/libc/kernel/uapi/linux/pkt_sched.h
index 42cdceb..7d3ff96 100644
--- a/libc/kernel/uapi/linux/pkt_sched.h
+++ b/libc/kernel/uapi/linux/pkt_sched.h
@@ -466,6 +466,12 @@
 };
 #define TC_QOPT_BITMASK 15
 #define TC_QOPT_MAX_QUEUE 16
+enum {
+  TC_MQPRIO_HW_OFFLOAD_NONE,
+  TC_MQPRIO_HW_OFFLOAD_TCS,
+  __TC_MQPRIO_HW_OFFLOAD_MAX
+};
+#define TC_MQPRIO_HW_OFFLOAD_MAX (__TC_MQPRIO_HW_OFFLOAD_MAX - 1)
 struct tc_mqprio_qopt {
   __u8 num_tc;
   __u8 prio_tc_map[TC_QOPT_BITMASK + 1];
diff --git a/libc/kernel/uapi/linux/pps.h b/libc/kernel/uapi/linux/pps.h
index 9db9242..4bfe30d 100644
--- a/libc/kernel/uapi/linux/pps.h
+++ b/libc/kernel/uapi/linux/pps.h
@@ -29,6 +29,11 @@
   __s32 nsec;
   __u32 flags;
 };
+struct pps_ktime_compat {
+  __s64 sec;
+  __s32 nsec;
+  __u32 flags;
+} __attribute__((packed, aligned(4)));
 #define PPS_TIME_INVALID (1 << 0)
 struct pps_kinfo {
   __u32 assert_sequence;
@@ -37,6 +42,13 @@
   struct pps_ktime clear_tu;
   int current_mode;
 };
+struct pps_kinfo_compat {
+  __u32 assert_sequence;
+  __u32 clear_sequence;
+  struct pps_ktime_compat assert_tu;
+  struct pps_ktime_compat clear_tu;
+  int current_mode;
+};
 struct pps_kparams {
   int api_version;
   int mode;
@@ -61,6 +73,10 @@
   struct pps_kinfo info;
   struct pps_ktime timeout;
 };
+struct pps_fdata_compat {
+  struct pps_kinfo_compat info;
+  struct pps_ktime_compat timeout;
+};
 struct pps_bind_args {
   int tsformat;
   int edge;
diff --git a/libc/kernel/uapi/linux/pr.h b/libc/kernel/uapi/linux/pr.h
index 7ce7390..7a7b8b1 100644
--- a/libc/kernel/uapi/linux/pr.h
+++ b/libc/kernel/uapi/linux/pr.h
@@ -18,6 +18,7 @@
  ****************************************************************************/
 #ifndef _UAPI_PR_H
 #define _UAPI_PR_H
+#include <linux/types.h>
 enum pr_type {
   PR_WRITE_EXCLUSIVE = 1,
   PR_EXCLUSIVE_ACCESS = 2,
diff --git a/libc/kernel/uapi/linux/ion_test.h b/libc/kernel/uapi/linux/psample.h
similarity index 61%
copy from libc/kernel/uapi/linux/ion_test.h
copy to libc/kernel/uapi/linux/psample.h
index 3064508..d90956b 100644
--- a/libc/kernel/uapi/linux/ion_test.h
+++ b/libc/kernel/uapi/linux/psample.h
@@ -16,19 +16,28 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef _UAPI_LINUX_ION_TEST_H
-#define _UAPI_LINUX_ION_TEST_H
-#include <linux/ioctl.h>
-#include <linux/types.h>
-struct ion_test_rw_data {
-  __u64 ptr;
-  __u64 offset;
-  __u64 size;
-  int write;
-  int __padding;
+#ifndef __UAPI_PSAMPLE_H
+#define __UAPI_PSAMPLE_H
+enum {
+  PSAMPLE_ATTR_IIFINDEX,
+  PSAMPLE_ATTR_OIFINDEX,
+  PSAMPLE_ATTR_ORIGSIZE,
+  PSAMPLE_ATTR_SAMPLE_GROUP,
+  PSAMPLE_ATTR_GROUP_SEQ,
+  PSAMPLE_ATTR_SAMPLE_RATE,
+  PSAMPLE_ATTR_DATA,
+  PSAMPLE_ATTR_GROUP_REFCOUNT,
+  __PSAMPLE_ATTR_MAX
 };
-#define ION_IOC_MAGIC 'I'
-#define ION_IOC_TEST_SET_FD _IO(ION_IOC_MAGIC, 0xf0)
-#define ION_IOC_TEST_DMA_MAPPING _IOW(ION_IOC_MAGIC, 0xf1, struct ion_test_rw_data)
-#define ION_IOC_TEST_KERNEL_MAPPING _IOW(ION_IOC_MAGIC, 0xf2, struct ion_test_rw_data)
+enum psample_command {
+  PSAMPLE_CMD_SAMPLE,
+  PSAMPLE_CMD_GET_GROUP,
+  PSAMPLE_CMD_NEW_GROUP,
+  PSAMPLE_CMD_DEL_GROUP,
+};
+#define PSAMPLE_ATTR_MAX (__PSAMPLE_ATTR_MAX - 1)
+#define PSAMPLE_NL_MCGRP_CONFIG_NAME "config"
+#define PSAMPLE_NL_MCGRP_SAMPLE_NAME "packets"
+#define PSAMPLE_GENL_NAME "psample"
+#define PSAMPLE_GENL_VERSION 1
 #endif
diff --git a/libc/kernel/uapi/linux/qrtr.h b/libc/kernel/uapi/linux/qrtr.h
index bae498f..4040b4c 100644
--- a/libc/kernel/uapi/linux/qrtr.h
+++ b/libc/kernel/uapi/linux/qrtr.h
@@ -19,6 +19,7 @@
 #ifndef _LINUX_QRTR_H
 #define _LINUX_QRTR_H
 #include <linux/socket.h>
+#include <linux/types.h>
 struct sockaddr_qrtr {
   __kernel_sa_family_t sq_family;
   __u32 sq_node;
diff --git a/libc/kernel/uapi/linux/raid/md_p.h b/libc/kernel/uapi/linux/raid/md_p.h
index 661f856..ea54bdb 100644
--- a/libc/kernel/uapi/linux/raid/md_p.h
+++ b/libc/kernel/uapi/linux/raid/md_p.h
@@ -133,7 +133,13 @@
   __le64 size;
   __le32 chunksize;
   __le32 raid_disks;
-  __le32 bitmap_offset;
+  union {
+    __le32 bitmap_offset;
+    struct {
+      __le16 offset;
+      __le16 size;
+    } ppl;
+  };
   __le32 new_level;
   __le64 reshape_position;
   __le32 delta_disks;
@@ -174,7 +180,8 @@
 #define MD_FEATURE_RECOVERY_BITMAP 128
 #define MD_FEATURE_CLUSTERED 256
 #define MD_FEATURE_JOURNAL 512
-#define MD_FEATURE_ALL (MD_FEATURE_BITMAP_OFFSET | MD_FEATURE_RECOVERY_OFFSET | MD_FEATURE_RESHAPE_ACTIVE | MD_FEATURE_BAD_BLOCKS | MD_FEATURE_REPLACEMENT | MD_FEATURE_RESHAPE_BACKWARDS | MD_FEATURE_NEW_OFFSET | MD_FEATURE_RECOVERY_BITMAP | MD_FEATURE_CLUSTERED | MD_FEATURE_JOURNAL)
+#define MD_FEATURE_PPL 1024
+#define MD_FEATURE_ALL (MD_FEATURE_BITMAP_OFFSET | MD_FEATURE_RECOVERY_OFFSET | MD_FEATURE_RESHAPE_ACTIVE | MD_FEATURE_BAD_BLOCKS | MD_FEATURE_REPLACEMENT | MD_FEATURE_RESHAPE_BACKWARDS | MD_FEATURE_NEW_OFFSET | MD_FEATURE_RECOVERY_BITMAP | MD_FEATURE_CLUSTERED | MD_FEATURE_JOURNAL | MD_FEATURE_PPL)
 struct r5l_payload_header {
   __le16 type;
   __le16 flags;
@@ -216,4 +223,24 @@
 } __attribute__((__packed__));
 #define R5LOG_VERSION 0x1
 #define R5LOG_MAGIC 0x6433c509
+struct ppl_header_entry {
+  __le64 data_sector;
+  __le32 pp_size;
+  __le32 data_size;
+  __le32 parity_disk;
+  __le32 checksum;
+} __attribute__((__packed__));
+#define PPL_HEADER_SIZE 4096
+#define PPL_HDR_RESERVED 512
+#define PPL_HDR_ENTRY_SPACE (PPL_HEADER_SIZE - PPL_HDR_RESERVED - 4 * sizeof(__le32) - sizeof(__le64))
+#define PPL_HDR_MAX_ENTRIES (PPL_HDR_ENTRY_SPACE / sizeof(struct ppl_header_entry))
+struct ppl_header {
+  __u8 reserved[PPL_HDR_RESERVED];
+  __le32 signature;
+  __le32 padding;
+  __le64 generation;
+  __le32 entries_count;
+  __le32 checksum;
+  struct ppl_header_entry entries[PPL_HDR_MAX_ENTRIES];
+} __attribute__((__packed__));
 #endif
diff --git a/libc/kernel/uapi/linux/rds.h b/libc/kernel/uapi/linux/rds.h
index eef0d70..ccb3f54 100644
--- a/libc/kernel/uapi/linux/rds.h
+++ b/libc/kernel/uapi/linux/rds.h
@@ -19,6 +19,7 @@
 #ifndef _LINUX_RDS_H
 #define _LINUX_RDS_H
 #include <linux/types.h>
+#include <linux/socket.h>
 #define RDS_IB_ABI_VERSION 0x301
 #define SOL_RDS 276
 #define RDS_CANCEL_SENT_TO 1
@@ -28,6 +29,7 @@
 #define RDS_CONG_MONITOR 6
 #define RDS_GET_MR_FOR_DEST 7
 #define SO_RDS_TRANSPORT 8
+#define SO_RDS_MSG_RXPATH_LATENCY 10
 #define RDS_TRANS_IB 0
 #define RDS_TRANS_IWARP 1
 #define RDS_TRANS_TCP 2
@@ -42,6 +44,7 @@
 #define RDS_CMSG_ATOMIC_CSWP 7
 #define RDS_CMSG_MASKED_ATOMIC_FADD 8
 #define RDS_CMSG_MASKED_ATOMIC_CSWP 9
+#define RDS_CMSG_RXPATH_LATENCY 11
 #define RDS_INFO_FIRST 10000
 #define RDS_INFO_COUNTERS 10000
 #define RDS_INFO_CONNECTIONS 10001
@@ -55,124 +58,139 @@
 #define RDS_INFO_IWARP_CONNECTIONS 10010
 #define RDS_INFO_LAST 10010
 struct rds_info_counter {
-  uint8_t name[32];
-  uint64_t value;
+  __u8 name[32];
+  __u64 value;
 } __attribute__((packed));
 #define RDS_INFO_CONNECTION_FLAG_SENDING 0x01
 #define RDS_INFO_CONNECTION_FLAG_CONNECTING 0x02
 #define RDS_INFO_CONNECTION_FLAG_CONNECTED 0x04
 #define TRANSNAMSIZ 16
 struct rds_info_connection {
-  uint64_t next_tx_seq;
-  uint64_t next_rx_seq;
+  __u64 next_tx_seq;
+  __u64 next_rx_seq;
   __be32 laddr;
   __be32 faddr;
-  uint8_t transport[TRANSNAMSIZ];
-  uint8_t flags;
+  __u8 transport[TRANSNAMSIZ];
+  __u8 flags;
 } __attribute__((packed));
 #define RDS_INFO_MESSAGE_FLAG_ACK 0x01
 #define RDS_INFO_MESSAGE_FLAG_FAST_ACK 0x02
 struct rds_info_message {
-  uint64_t seq;
-  uint32_t len;
+  __u64 seq;
+  __u32 len;
   __be32 laddr;
   __be32 faddr;
   __be16 lport;
   __be16 fport;
-  uint8_t flags;
+  __u8 flags;
 } __attribute__((packed));
 struct rds_info_socket {
-  uint32_t sndbuf;
+  __u32 sndbuf;
   __be32 bound_addr;
   __be32 connected_addr;
   __be16 bound_port;
   __be16 connected_port;
-  uint32_t rcvbuf;
-  uint64_t inum;
+  __u32 rcvbuf;
+  __u64 inum;
 } __attribute__((packed));
 struct rds_info_tcp_socket {
   __be32 local_addr;
   __be16 local_port;
   __be32 peer_addr;
   __be16 peer_port;
-  uint64_t hdr_rem;
-  uint64_t data_rem;
-  uint32_t last_sent_nxt;
-  uint32_t last_expected_una;
-  uint32_t last_seen_una;
+  __u64 hdr_rem;
+  __u64 data_rem;
+  __u32 last_sent_nxt;
+  __u32 last_expected_una;
+  __u32 last_seen_una;
 } __attribute__((packed));
 #define RDS_IB_GID_LEN 16
 struct rds_info_rdma_connection {
   __be32 src_addr;
   __be32 dst_addr;
-  uint8_t src_gid[RDS_IB_GID_LEN];
-  uint8_t dst_gid[RDS_IB_GID_LEN];
-  uint32_t max_send_wr;
-  uint32_t max_recv_wr;
-  uint32_t max_send_sge;
-  uint32_t rdma_mr_max;
-  uint32_t rdma_mr_size;
+  __u8 src_gid[RDS_IB_GID_LEN];
+  __u8 dst_gid[RDS_IB_GID_LEN];
+  __u32 max_send_wr;
+  __u32 max_recv_wr;
+  __u32 max_send_sge;
+  __u32 rdma_mr_max;
+  __u32 rdma_mr_size;
+};
+enum rds_message_rxpath_latency {
+  RDS_MSG_RX_HDR_TO_DGRAM_START = 0,
+  RDS_MSG_RX_DGRAM_REASSEMBLE,
+  RDS_MSG_RX_DGRAM_DELIVERED,
+  RDS_MSG_RX_DGRAM_TRACE_MAX
+};
+struct rds_rx_trace_so {
+  __u8 rx_traces;
+  __u8 rx_trace_pos[RDS_MSG_RX_DGRAM_TRACE_MAX];
+};
+struct rds_cmsg_rx_trace {
+  __u8 rx_traces;
+  __u8 rx_trace_pos[RDS_MSG_RX_DGRAM_TRACE_MAX];
+  __u64 rx_trace[RDS_MSG_RX_DGRAM_TRACE_MAX];
 };
 #define RDS_CONG_MONITOR_SIZE 64
 #define RDS_CONG_MONITOR_BIT(port) (((unsigned int) port) % RDS_CONG_MONITOR_SIZE)
 #define RDS_CONG_MONITOR_MASK(port) (1ULL << RDS_CONG_MONITOR_BIT(port))
-typedef uint64_t rds_rdma_cookie_t;
+typedef __u64 rds_rdma_cookie_t;
 struct rds_iovec {
-  uint64_t addr;
-  uint64_t bytes;
+  __u64 addr;
+  __u64 bytes;
 };
 struct rds_get_mr_args {
   struct rds_iovec vec;
-  uint64_t cookie_addr;
-  uint64_t flags;
+  __u64 cookie_addr;
+  __u64 flags;
 };
 struct rds_get_mr_for_dest_args {
-  struct sockaddr_storage dest_addr;
+  struct __kernel_sockaddr_storage dest_addr;
   struct rds_iovec vec;
-  uint64_t cookie_addr;
-  uint64_t flags;
+  __u64 cookie_addr;
+  __u64 flags;
 };
 struct rds_free_mr_args {
   rds_rdma_cookie_t cookie;
-  uint64_t flags;
+  __u64 flags;
 };
 struct rds_rdma_args {
   rds_rdma_cookie_t cookie;
   struct rds_iovec remote_vec;
-  uint64_t local_vec_addr;
-  uint64_t nr_local;
-  uint64_t flags;
-  uint64_t user_token;
+  __u64 local_vec_addr;
+  __u64 nr_local;
+  __u64 flags;
+  __u64 user_token;
 };
 struct rds_atomic_args {
   rds_rdma_cookie_t cookie;
-  uint64_t local_addr;
-  uint64_t remote_addr;
+  __u64 local_addr;
+  __u64 remote_addr;
   union {
     struct {
-      uint64_t compare;
-      uint64_t swap;
+      __u64 compare;
+      __u64 swap;
     } cswp;
     struct {
-      uint64_t add;
+      __u64 add;
     } fadd;
     struct {
-      uint64_t compare;
-      uint64_t swap;
-      uint64_t compare_mask;
-      uint64_t swap_mask;
+      __u64 compare;
+      __u64 swap;
+      __u64 compare_mask;
+      __u64 swap_mask;
     } m_cswp;
     struct {
-      uint64_t add;
-      uint64_t nocarry_mask;
+      __u64 add;
+      __u64 nocarry_mask;
     } m_fadd;
   };
-  uint64_t flags;
-  uint64_t user_token;
+  __u64 flags;
+  __u64 user_token;
 };
 struct rds_rdma_notify {
-  uint64_t user_token;
-  int32_t status;
+  __u64 user_token;
+  __s32 status;
 };
 #define RDS_RDMA_SUCCESS 0
 #define RDS_RDMA_REMOTE_ERROR 1
diff --git a/libc/kernel/uapi/linux/ion_test.h b/libc/kernel/uapi/linux/rpmsg.h
similarity index 71%
rename from libc/kernel/uapi/linux/ion_test.h
rename to libc/kernel/uapi/linux/rpmsg.h
index 3064508..77f05e6 100644
--- a/libc/kernel/uapi/linux/ion_test.h
+++ b/libc/kernel/uapi/linux/rpmsg.h
@@ -16,19 +16,15 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef _UAPI_LINUX_ION_TEST_H
-#define _UAPI_LINUX_ION_TEST_H
+#ifndef _UAPI_RPMSG_H_
+#define _UAPI_RPMSG_H_
 #include <linux/ioctl.h>
 #include <linux/types.h>
-struct ion_test_rw_data {
-  __u64 ptr;
-  __u64 offset;
-  __u64 size;
-  int write;
-  int __padding;
+struct rpmsg_endpoint_info {
+  char name[32];
+  __u32 src;
+  __u32 dst;
 };
-#define ION_IOC_MAGIC 'I'
-#define ION_IOC_TEST_SET_FD _IO(ION_IOC_MAGIC, 0xf0)
-#define ION_IOC_TEST_DMA_MAPPING _IOW(ION_IOC_MAGIC, 0xf1, struct ion_test_rw_data)
-#define ION_IOC_TEST_KERNEL_MAPPING _IOW(ION_IOC_MAGIC, 0xf2, struct ion_test_rw_data)
+#define RPMSG_CREATE_EPT_IOCTL _IOW(0xb5, 0x1, struct rpmsg_endpoint_info)
+#define RPMSG_DESTROY_EPT_IOCTL _IO(0xb5, 0x2)
 #endif
diff --git a/libc/kernel/uapi/linux/rtnetlink.h b/libc/kernel/uapi/linux/rtnetlink.h
index 103ff5d..d094068 100644
--- a/libc/kernel/uapi/linux/rtnetlink.h
+++ b/libc/kernel/uapi/linux/rtnetlink.h
@@ -111,6 +111,8 @@
 #define RTM_SETDCB RTM_SETDCB
   RTM_NEWNETCONF = 80,
 #define RTM_NEWNETCONF RTM_NEWNETCONF
+  RTM_DELNETCONF,
+#define RTM_DELNETCONF RTM_DELNETCONF
   RTM_GETNETCONF = 82,
 #define RTM_GETNETCONF RTM_GETNETCONF
   RTM_NEWMDB = 84,
@@ -237,6 +239,7 @@
   RTA_EXPIRES,
   RTA_PAD,
   RTA_UID,
+  RTA_TTL_PROPAGATE,
   __RTA_MAX
 };
 #define RTA_MAX (__RTA_MAX - 1)
@@ -253,6 +256,7 @@
 #define RTNH_F_ONLINK 4
 #define RTNH_F_OFFLOAD 8
 #define RTNH_F_LINKDOWN 16
+#define RTNH_F_UNRESOLVED 32
 #define RTNH_COMPARE_MASK (RTNH_F_DEAD | RTNH_F_LINKDOWN | RTNH_F_OFFLOAD)
 #define RTNH_ALIGNTO 4
 #define RTNH_ALIGN(len) (((len) + RTNH_ALIGNTO - 1) & ~(RTNH_ALIGNTO - 1))
@@ -393,6 +397,7 @@
   TCA_STATS2,
   TCA_STAB,
   TCA_PAD,
+  TCA_DUMP_INVISIBLE,
   __TCA_MAX
 };
 #define TCA_MAX (__TCA_MAX - 1)
@@ -486,6 +491,8 @@
 #define RTNLGRP_MPLS_ROUTE RTNLGRP_MPLS_ROUTE
   RTNLGRP_NSID,
 #define RTNLGRP_NSID RTNLGRP_NSID
+  RTNLGRP_MPLS_NETCONF,
+#define RTNLGRP_MPLS_NETCONF RTNLGRP_MPLS_NETCONF
   __RTNLGRP_MAX
 };
 #define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
diff --git a/libc/kernel/uapi/linux/ion_test.h b/libc/kernel/uapi/linux/sched/types.h
similarity index 69%
copy from libc/kernel/uapi/linux/ion_test.h
copy to libc/kernel/uapi/linux/sched/types.h
index 3064508..cf6f1c7 100644
--- a/libc/kernel/uapi/linux/ion_test.h
+++ b/libc/kernel/uapi/linux/sched/types.h
@@ -16,19 +16,21 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef _UAPI_LINUX_ION_TEST_H
-#define _UAPI_LINUX_ION_TEST_H
-#include <linux/ioctl.h>
+#ifndef _UAPI_LINUX_SCHED_TYPES_H
+#define _UAPI_LINUX_SCHED_TYPES_H
 #include <linux/types.h>
-struct ion_test_rw_data {
-  __u64 ptr;
-  __u64 offset;
-  __u64 size;
-  int write;
-  int __padding;
+struct sched_param {
+  int sched_priority;
 };
-#define ION_IOC_MAGIC 'I'
-#define ION_IOC_TEST_SET_FD _IO(ION_IOC_MAGIC, 0xf0)
-#define ION_IOC_TEST_DMA_MAPPING _IOW(ION_IOC_MAGIC, 0xf1, struct ion_test_rw_data)
-#define ION_IOC_TEST_KERNEL_MAPPING _IOW(ION_IOC_MAGIC, 0xf2, struct ion_test_rw_data)
+#define SCHED_ATTR_SIZE_VER0 48
+struct sched_attr {
+  __u32 size;
+  __u32 sched_policy;
+  __u64 sched_flags;
+  __s32 sched_nice;
+  __u32 sched_priority;
+  __u64 sched_runtime;
+  __u64 sched_deadline;
+  __u64 sched_period;
+};
 #endif
diff --git a/libc/kernel/uapi/linux/sctp.h b/libc/kernel/uapi/linux/sctp.h
index ba48874..a5cef43 100644
--- a/libc/kernel/uapi/linux/sctp.h
+++ b/libc/kernel/uapi/linux/sctp.h
@@ -70,6 +70,12 @@
 #define SCTP_PR_SUPPORTED 113
 #define SCTP_DEFAULT_PRINFO 114
 #define SCTP_PR_ASSOC_STATUS 115
+#define SCTP_PR_STREAM_STATUS 116
+#define SCTP_RECONFIG_SUPPORTED 117
+#define SCTP_ENABLE_STREAM_RESET 118
+#define SCTP_RESET_STREAMS 119
+#define SCTP_RESET_ASSOC 120
+#define SCTP_ADD_STREAMS 121
 #define SCTP_PR_SCTP_NONE 0x0000
 #define SCTP_PR_SCTP_TTL 0x0010
 #define SCTP_PR_SCTP_RTX 0x0020
@@ -83,6 +89,12 @@
 #define SCTP_PR_TTL_ENABLED(x) (SCTP_PR_POLICY(x) == SCTP_PR_SCTP_TTL)
 #define SCTP_PR_RTX_ENABLED(x) (SCTP_PR_POLICY(x) == SCTP_PR_SCTP_RTX)
 #define SCTP_PR_PRIO_ENABLED(x) (SCTP_PR_POLICY(x) == SCTP_PR_SCTP_PRIO)
+#define SCTP_ENABLE_RESET_STREAM_REQ 0x01
+#define SCTP_ENABLE_RESET_ASSOC_REQ 0x02
+#define SCTP_ENABLE_CHANGE_ASSOC_REQ 0x04
+#define SCTP_ENABLE_STRRESET_MASK 0x07
+#define SCTP_STREAM_RESET_INCOMING 0x01
+#define SCTP_STREAM_RESET_OUTGOING 0x02
 enum sctp_msg_flags {
   MSG_NOTIFICATION = 0x8000,
 #define MSG_NOTIFICATION MSG_NOTIFICATION
@@ -250,6 +262,37 @@
   __u32 sender_dry_length;
   sctp_assoc_t sender_dry_assoc_id;
 };
+#define SCTP_STREAM_RESET_INCOMING_SSN 0x0001
+#define SCTP_STREAM_RESET_OUTGOING_SSN 0x0002
+#define SCTP_STREAM_RESET_DENIED 0x0004
+#define SCTP_STREAM_RESET_FAILED 0x0008
+struct sctp_stream_reset_event {
+  __u16 strreset_type;
+  __u16 strreset_flags;
+  __u32 strreset_length;
+  sctp_assoc_t strreset_assoc_id;
+  __u16 strreset_stream_list[];
+};
+#define SCTP_ASSOC_RESET_DENIED 0x0004
+#define SCTP_ASSOC_RESET_FAILED 0x0008
+struct sctp_assoc_reset_event {
+  __u16 assocreset_type;
+  __u16 assocreset_flags;
+  __u32 assocreset_length;
+  sctp_assoc_t assocreset_assoc_id;
+  __u32 assocreset_local_tsn;
+  __u32 assocreset_remote_tsn;
+};
+#define SCTP_ASSOC_CHANGE_DENIED 0x0004
+#define SCTP_ASSOC_CHANGE_FAILED 0x0008
+struct sctp_stream_change_event {
+  __u16 strchange_type;
+  __u16 strchange_flags;
+  __u32 strchange_length;
+  sctp_assoc_t strchange_assoc_id;
+  __u16 strchange_instrms;
+  __u16 strchange_outstrms;
+};
 struct sctp_event_subscribe {
   __u8 sctp_data_io_event;
   __u8 sctp_association_event;
@@ -261,6 +304,9 @@
   __u8 sctp_adaptation_layer_event;
   __u8 sctp_authentication_event;
   __u8 sctp_sender_dry_event;
+  __u8 sctp_stream_reset_event;
+  __u8 sctp_assoc_reset_event;
+  __u8 sctp_stream_change_event;
 };
 union sctp_notification {
   struct {
@@ -277,6 +323,9 @@
   struct sctp_pdapi_event sn_pdapi_event;
   struct sctp_authkey_event sn_authkey_event;
   struct sctp_sender_dry_event sn_sender_dry_event;
+  struct sctp_stream_reset_event sn_strreset_event;
+  struct sctp_assoc_reset_event sn_assocreset_event;
+  struct sctp_stream_change_event sn_strchange_event;
 };
 enum sctp_sn_type {
   SCTP_SN_TYPE_BASE = (1 << 15),
@@ -298,6 +347,12 @@
 #define SCTP_AUTHENTICATION_INDICATION SCTP_AUTHENTICATION_EVENT
   SCTP_SENDER_DRY_EVENT,
 #define SCTP_SENDER_DRY_EVENT SCTP_SENDER_DRY_EVENT
+  SCTP_STREAM_RESET_EVENT,
+#define SCTP_STREAM_RESET_EVENT SCTP_STREAM_RESET_EVENT
+  SCTP_ASSOC_RESET_EVENT,
+#define SCTP_ASSOC_RESET_EVENT SCTP_ASSOC_RESET_EVENT
+  SCTP_STREAM_CHANGE_EVENT,
+#define SCTP_STREAM_CHANGE_EVENT SCTP_STREAM_CHANGE_EVENT
 };
 typedef enum sctp_sn_error {
   SCTP_FAILED_THRESHOLD,
@@ -545,4 +600,15 @@
   __u32 sctpi_s_type;
   __u32 __reserved3;
 };
+struct sctp_reset_streams {
+  sctp_assoc_t srs_assoc_id;
+  uint16_t srs_flags;
+  uint16_t srs_number_streams;
+  uint16_t srs_stream_list[];
+};
+struct sctp_add_streams {
+  sctp_assoc_t sas_assoc_id;
+  uint16_t sas_instrms;
+  uint16_t sas_outstrms;
+};
 #endif
diff --git a/libc/kernel/uapi/linux/sed-opal.h b/libc/kernel/uapi/linux/sed-opal.h
new file mode 100644
index 0000000..a532073
--- /dev/null
+++ b/libc/kernel/uapi/linux/sed-opal.h
@@ -0,0 +1,96 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_SED_OPAL_H
+#define _UAPI_SED_OPAL_H
+#include <linux/types.h>
+#define OPAL_KEY_MAX 256
+#define OPAL_MAX_LRS 9
+enum opal_mbr {
+  OPAL_MBR_ENABLE = 0x0,
+  OPAL_MBR_DISABLE = 0x01,
+};
+enum opal_user {
+  OPAL_ADMIN1 = 0x0,
+  OPAL_USER1 = 0x01,
+  OPAL_USER2 = 0x02,
+  OPAL_USER3 = 0x03,
+  OPAL_USER4 = 0x04,
+  OPAL_USER5 = 0x05,
+  OPAL_USER6 = 0x06,
+  OPAL_USER7 = 0x07,
+  OPAL_USER8 = 0x08,
+  OPAL_USER9 = 0x09,
+};
+enum opal_lock_state {
+  OPAL_RO = 0x01,
+  OPAL_RW = 0x02,
+  OPAL_LK = 0x04,
+};
+struct opal_key {
+  __u8 lr;
+  __u8 key_len;
+  __u8 __align[6];
+  __u8 key[OPAL_KEY_MAX];
+};
+struct opal_lr_act {
+  struct opal_key key;
+  __u32 sum;
+  __u8 num_lrs;
+  __u8 lr[OPAL_MAX_LRS];
+  __u8 align[2];
+};
+struct opal_session_info {
+  __u32 sum;
+  __u32 who;
+  struct opal_key opal_key;
+};
+struct opal_user_lr_setup {
+  __u64 range_start;
+  __u64 range_length;
+  __u32 RLE;
+  __u32 WLE;
+  struct opal_session_info session;
+};
+struct opal_lock_unlock {
+  struct opal_session_info session;
+  __u32 l_state;
+  __u8 __align[4];
+};
+struct opal_new_pw {
+  struct opal_session_info session;
+  struct opal_session_info new_user_pw;
+};
+struct opal_mbr_data {
+  struct opal_key key;
+  __u8 enable_disable;
+  __u8 __align[7];
+};
+#define IOC_OPAL_SAVE _IOW('p', 220, struct opal_lock_unlock)
+#define IOC_OPAL_LOCK_UNLOCK _IOW('p', 221, struct opal_lock_unlock)
+#define IOC_OPAL_TAKE_OWNERSHIP _IOW('p', 222, struct opal_key)
+#define IOC_OPAL_ACTIVATE_LSP _IOW('p', 223, struct opal_lr_act)
+#define IOC_OPAL_SET_PW _IOW('p', 224, struct opal_new_pw)
+#define IOC_OPAL_ACTIVATE_USR _IOW('p', 225, struct opal_session_info)
+#define IOC_OPAL_REVERT_TPR _IOW('p', 226, struct opal_key)
+#define IOC_OPAL_LR_SETUP _IOW('p', 227, struct opal_user_lr_setup)
+#define IOC_OPAL_ADD_USR_TO_LR _IOW('p', 228, struct opal_lock_unlock)
+#define IOC_OPAL_ENABLE_DISABLE_MBR _IOW('p', 229, struct opal_mbr_data)
+#define IOC_OPAL_ERASE_LR _IOW('p', 230, struct opal_session_info)
+#define IOC_OPAL_SECURE_ERASE_LR _IOW('p', 231, struct opal_session_info)
+#endif
diff --git a/libc/kernel/uapi/linux/seg6.h b/libc/kernel/uapi/linux/seg6.h
index 43a1c3b..6f7b8dd 100644
--- a/libc/kernel/uapi/linux/seg6.h
+++ b/libc/kernel/uapi/linux/seg6.h
@@ -18,6 +18,8 @@
  ****************************************************************************/
 #ifndef _UAPI_LINUX_SEG6_H
 #define _UAPI_LINUX_SEG6_H
+#include <linux/types.h>
+#include <linux/in6.h>
 struct ipv6_sr_hdr {
   __u8 nexthdr;
   __u8 hdrlen;
diff --git a/libc/kernel/uapi/linux/seg6_hmac.h b/libc/kernel/uapi/linux/seg6_hmac.h
index 14a838b..d5ef671 100644
--- a/libc/kernel/uapi/linux/seg6_hmac.h
+++ b/libc/kernel/uapi/linux/seg6_hmac.h
@@ -18,6 +18,7 @@
  ****************************************************************************/
 #ifndef _UAPI_LINUX_SEG6_HMAC_H
 #define _UAPI_LINUX_SEG6_HMAC_H
+#include <linux/types.h>
 #include <linux/seg6.h>
 #define SEG6_HMAC_SECRET_LEN 64
 #define SEG6_HMAC_FIELD_LEN 32
diff --git a/libc/kernel/uapi/linux/seg6_iptunnel.h b/libc/kernel/uapi/linux/seg6_iptunnel.h
index fdd4705..747fa09 100644
--- a/libc/kernel/uapi/linux/seg6_iptunnel.h
+++ b/libc/kernel/uapi/linux/seg6_iptunnel.h
@@ -18,6 +18,7 @@
  ****************************************************************************/
 #ifndef _UAPI_LINUX_SEG6_IPTUNNEL_H
 #define _UAPI_LINUX_SEG6_IPTUNNEL_H
+#include <linux/seg6.h>
 enum {
   SEG6_IPTUNNEL_UNSPEC,
   SEG6_IPTUNNEL_SRH,
diff --git a/libc/kernel/uapi/linux/serial_core.h b/libc/kernel/uapi/linux/serial_core.h
index f51ee71..af349c2 100644
--- a/libc/kernel/uapi/linux/serial_core.h
+++ b/libc/kernel/uapi/linux/serial_core.h
@@ -50,7 +50,8 @@
 #define PORT_ALTR_16550_F128 28
 #define PORT_RT2880 29
 #define PORT_16550A_FSL64 30
-#define PORT_MAX_8250 30
+#define PORT_DA830 31
+#define PORT_MAX_8250 31
 #define PORT_PXA 31
 #define PORT_AMBA 32
 #define PORT_CLPS711X 33
diff --git a/libc/kernel/uapi/linux/serial_reg.h b/libc/kernel/uapi/linux/serial_reg.h
index 7bb7414..95c9956 100644
--- a/libc/kernel/uapi/linux/serial_reg.h
+++ b/libc/kernel/uapi/linux/serial_reg.h
@@ -213,6 +213,10 @@
 #define UART_RSA_TCR_SWITCH (1 << 0)
 #define SERIAL_RSA_BAUD_BASE (921600)
 #define SERIAL_RSA_BAUD_BASE_LO (SERIAL_RSA_BAUD_BASE / 8)
+#define UART_DA830_PWREMU_MGMT 12
+#define UART_DA830_PWREMU_MGMT_FREE (1 << 0)
+#define UART_DA830_PWREMU_MGMT_URRST (1 << 13)
+#define UART_DA830_PWREMU_MGMT_UTRST (1 << 14)
 #define OMAP1_UART1_BASE 0xfffb0000
 #define OMAP1_UART2_BASE 0xfffb0800
 #define OMAP1_UART3_BASE 0xfffb9800
@@ -235,18 +239,6 @@
 #define UART_OMAP_MDR1_FIR_MODE 0x05
 #define UART_OMAP_MDR1_CIR_MODE 0x06
 #define UART_OMAP_MDR1_DISABLE 0x07
-#define UART_EXAR_8XMODE 0x88
-#define UART_EXAR_SLEEP 0x8b
-#define UART_EXAR_DVID 0x8d
-#define UART_EXAR_FCTR 0x08
-#define UART_FCTR_EXAR_IRDA 0x08
-#define UART_FCTR_EXAR_485 0x10
-#define UART_FCTR_EXAR_TRGA 0x00
-#define UART_FCTR_EXAR_TRGB 0x60
-#define UART_FCTR_EXAR_TRGC 0x80
-#define UART_FCTR_EXAR_TRGD 0xc0
-#define UART_EXAR_TXTRG 0x0a
-#define UART_EXAR_RXTRG 0x0b
 #define UART_ALTR_AFR 0x40
 #define UART_ALTR_EN_TXFIFO_LW 0x01
 #define UART_ALTR_TX_LOW 0x41
diff --git a/libc/kernel/uapi/linux/serio.h b/libc/kernel/uapi/linux/serio.h
index 2544d0a..72149ee 100644
--- a/libc/kernel/uapi/linux/serio.h
+++ b/libc/kernel/uapi/linux/serio.h
@@ -20,9 +20,10 @@
 #define _UAPI_SERIO_H
 #include <linux/ioctl.h>
 #define SPIOCSTYPE _IOW('q', 0x01, unsigned long)
-#define SERIO_TIMEOUT 1
-#define SERIO_PARITY 2
-#define SERIO_FRAME 4
+#define SERIO_TIMEOUT BIT(0)
+#define SERIO_PARITY BIT(1)
+#define SERIO_FRAME BIT(2)
+#define SERIO_OOB_DATA BIT(3)
 #define SERIO_XT 0x00
 #define SERIO_8042 0x01
 #define SERIO_RS232 0x02
@@ -74,4 +75,5 @@
 #define SERIO_WACOM_IV 0x3e
 #define SERIO_EGALAX 0x3f
 #define SERIO_PULSE8_CEC 0x40
+#define SERIO_RAINSHADOW_CEC 0x41
 #endif
diff --git a/libc/kernel/uapi/linux/ion_test.h b/libc/kernel/uapi/linux/smc.h
similarity index 68%
copy from libc/kernel/uapi/linux/ion_test.h
copy to libc/kernel/uapi/linux/smc.h
index 3064508..824a29d 100644
--- a/libc/kernel/uapi/linux/ion_test.h
+++ b/libc/kernel/uapi/linux/smc.h
@@ -16,19 +16,23 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef _UAPI_LINUX_ION_TEST_H
-#define _UAPI_LINUX_ION_TEST_H
-#include <linux/ioctl.h>
-#include <linux/types.h>
-struct ion_test_rw_data {
-  __u64 ptr;
-  __u64 offset;
-  __u64 size;
-  int write;
-  int __padding;
+#ifndef _UAPI_LINUX_SMC_H_
+#define _UAPI_LINUX_SMC_H_
+enum {
+  SMC_PNETID_UNSPEC,
+  SMC_PNETID_NAME,
+  SMC_PNETID_ETHNAME,
+  SMC_PNETID_IBNAME,
+  SMC_PNETID_IBPORT,
+  __SMC_PNETID_MAX,
+  SMC_PNETID_MAX = __SMC_PNETID_MAX - 1
 };
-#define ION_IOC_MAGIC 'I'
-#define ION_IOC_TEST_SET_FD _IO(ION_IOC_MAGIC, 0xf0)
-#define ION_IOC_TEST_DMA_MAPPING _IOW(ION_IOC_MAGIC, 0xf1, struct ion_test_rw_data)
-#define ION_IOC_TEST_KERNEL_MAPPING _IOW(ION_IOC_MAGIC, 0xf2, struct ion_test_rw_data)
+enum {
+  SMC_PNETID_GET = 1,
+  SMC_PNETID_ADD,
+  SMC_PNETID_DEL,
+  SMC_PNETID_FLUSH
+};
+#define SMCR_GENL_FAMILY_NAME "SMC_PNETID"
+#define SMCR_GENL_FAMILY_VERSION 1
 #endif
diff --git a/libc/kernel/uapi/linux/smc_diag.h b/libc/kernel/uapi/linux/smc_diag.h
new file mode 100644
index 0000000..66f93f0
--- /dev/null
+++ b/libc/kernel/uapi/linux/smc_diag.h
@@ -0,0 +1,80 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_SMC_DIAG_H_
+#define _UAPI_SMC_DIAG_H_
+#include <linux/types.h>
+#include <linux/inet_diag.h>
+#include <rdma/ib_user_verbs.h>
+struct smc_diag_req {
+  __u8 diag_family;
+  __u8 pad[2];
+  __u8 diag_ext;
+  struct inet_diag_sockid id;
+};
+struct smc_diag_msg {
+  __u8 diag_family;
+  __u8 diag_state;
+  __u8 diag_fallback;
+  __u8 diag_shutdown;
+  struct inet_diag_sockid id;
+  __u32 diag_uid;
+  __u64 diag_inode;
+};
+enum {
+  SMC_DIAG_NONE,
+  SMC_DIAG_CONNINFO,
+  SMC_DIAG_LGRINFO,
+  SMC_DIAG_SHUTDOWN,
+  __SMC_DIAG_MAX,
+};
+#define SMC_DIAG_MAX (__SMC_DIAG_MAX - 1)
+struct smc_diag_cursor {
+  __u16 reserved;
+  __u16 wrap;
+  __u32 count;
+};
+struct smc_diag_conninfo {
+  __u32 token;
+  __u32 sndbuf_size;
+  __u32 rmbe_size;
+  __u32 peer_rmbe_size;
+  struct smc_diag_cursor rx_prod;
+  struct smc_diag_cursor rx_cons;
+  struct smc_diag_cursor tx_prod;
+  struct smc_diag_cursor tx_cons;
+  __u8 rx_prod_flags;
+  __u8 rx_conn_state_flags;
+  __u8 tx_prod_flags;
+  __u8 tx_conn_state_flags;
+  struct smc_diag_cursor tx_prep;
+  struct smc_diag_cursor tx_sent;
+  struct smc_diag_cursor tx_fin;
+};
+struct smc_diag_linkinfo {
+  __u8 link_id;
+  __u8 ibname[IB_DEVICE_NAME_MAX];
+  __u8 ibport;
+  __u8 gid[40];
+  __u8 peer_gid[40];
+};
+struct smc_diag_lgrinfo {
+  struct smc_diag_linkinfo lnk[1];
+  __u8 role;
+};
+#endif
diff --git a/libc/kernel/uapi/linux/snmp.h b/libc/kernel/uapi/linux/snmp.h
index 04a4603..91d693f 100644
--- a/libc/kernel/uapi/linux/snmp.h
+++ b/libc/kernel/uapi/linux/snmp.h
@@ -145,7 +145,6 @@
   LINUX_MIB_TIMEWAITED,
   LINUX_MIB_TIMEWAITRECYCLED,
   LINUX_MIB_TIMEWAITKILLED,
-  LINUX_MIB_PAWSPASSIVEREJECTED,
   LINUX_MIB_PAWSACTIVEREJECTED,
   LINUX_MIB_PAWSESTABREJECTED,
   LINUX_MIB_DELAYEDACKS,
@@ -208,6 +207,7 @@
   LINUX_MIB_SACKMERGED,
   LINUX_MIB_SACKSHIFTFALLBACK,
   LINUX_MIB_TCPBACKLOGDROP,
+  LINUX_MIB_PFMEMALLOCDROP,
   LINUX_MIB_TCPMINTTLDROP,
   LINUX_MIB_TCPDEFERACCEPTDROP,
   LINUX_MIB_IPRPFILTER,
@@ -227,6 +227,7 @@
   LINUX_MIB_TCPFASTOPENPASSIVEFAIL,
   LINUX_MIB_TCPFASTOPENLISTENOVERFLOW,
   LINUX_MIB_TCPFASTOPENCOOKIEREQD,
+  LINUX_MIB_TCPFASTOPENBLACKHOLE,
   LINUX_MIB_TCPSPURIOUS_RTX_HOSTQUEUES,
   LINUX_MIB_BUSYPOLLRXPACKETS,
   LINUX_MIB_TCPAUTOCORKING,
diff --git a/libc/kernel/uapi/linux/stat.h b/libc/kernel/uapi/linux/stat.h
index d81758a..bf728d0 100644
--- a/libc/kernel/uapi/linux/stat.h
+++ b/libc/kernel/uapi/linux/stat.h
@@ -18,6 +18,7 @@
  ****************************************************************************/
 #ifndef _UAPI_LINUX_STAT_H
 #define _UAPI_LINUX_STAT_H
+#include <linux/types.h>
 #if !defined(__GLIBC__) || __GLIBC__ < 2
 #define S_IFMT 00170000
 #define S_IFSOCK 0140000
@@ -50,4 +51,53 @@
 #define S_IWOTH 00002
 #define S_IXOTH 00001
 #endif
+struct statx_timestamp {
+  __s64 tv_sec;
+  __u32 tv_nsec;
+  __s32 __reserved;
+};
+struct statx {
+  __u32 stx_mask;
+  __u32 stx_blksize;
+  __u64 stx_attributes;
+  __u32 stx_nlink;
+  __u32 stx_uid;
+  __u32 stx_gid;
+  __u16 stx_mode;
+  __u16 __spare0[1];
+  __u64 stx_ino;
+  __u64 stx_size;
+  __u64 stx_blocks;
+  __u64 stx_attributes_mask;
+  struct statx_timestamp stx_atime;
+  struct statx_timestamp stx_btime;
+  struct statx_timestamp stx_ctime;
+  struct statx_timestamp stx_mtime;
+  __u32 stx_rdev_major;
+  __u32 stx_rdev_minor;
+  __u32 stx_dev_major;
+  __u32 stx_dev_minor;
+  __u64 __spare2[14];
+};
+#define STATX_TYPE 0x00000001U
+#define STATX_MODE 0x00000002U
+#define STATX_NLINK 0x00000004U
+#define STATX_UID 0x00000008U
+#define STATX_GID 0x00000010U
+#define STATX_ATIME 0x00000020U
+#define STATX_MTIME 0x00000040U
+#define STATX_CTIME 0x00000080U
+#define STATX_INO 0x00000100U
+#define STATX_SIZE 0x00000200U
+#define STATX_BLOCKS 0x00000400U
+#define STATX_BASIC_STATS 0x000007ffU
+#define STATX_BTIME 0x00000800U
+#define STATX_ALL 0x00000fffU
+#define STATX__RESERVED 0x80000000U
+#define STATX_ATTR_COMPRESSED 0x00000004
+#define STATX_ATTR_IMMUTABLE 0x00000010
+#define STATX_ATTR_APPEND 0x00000020
+#define STATX_ATTR_NODUMP 0x00000040
+#define STATX_ATTR_ENCRYPTED 0x00000800
+#define STATX_ATTR_AUTOMOUNT 0x00001000
 #endif
diff --git a/libc/kernel/uapi/linux/switchtec_ioctl.h b/libc/kernel/uapi/linux/switchtec_ioctl.h
new file mode 100644
index 0000000..a0341a8
--- /dev/null
+++ b/libc/kernel/uapi/linux/switchtec_ioctl.h
@@ -0,0 +1,117 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_SWITCHTEC_IOCTL_H
+#define _UAPI_LINUX_SWITCHTEC_IOCTL_H
+#include <linux/types.h>
+#define SWITCHTEC_IOCTL_PART_CFG0 0
+#define SWITCHTEC_IOCTL_PART_CFG1 1
+#define SWITCHTEC_IOCTL_PART_IMG0 2
+#define SWITCHTEC_IOCTL_PART_IMG1 3
+#define SWITCHTEC_IOCTL_PART_NVLOG 4
+#define SWITCHTEC_IOCTL_PART_VENDOR0 5
+#define SWITCHTEC_IOCTL_PART_VENDOR1 6
+#define SWITCHTEC_IOCTL_PART_VENDOR2 7
+#define SWITCHTEC_IOCTL_PART_VENDOR3 8
+#define SWITCHTEC_IOCTL_PART_VENDOR4 9
+#define SWITCHTEC_IOCTL_PART_VENDOR5 10
+#define SWITCHTEC_IOCTL_PART_VENDOR6 11
+#define SWITCHTEC_IOCTL_PART_VENDOR7 12
+#define SWITCHTEC_IOCTL_NUM_PARTITIONS 13
+struct switchtec_ioctl_flash_info {
+  __u64 flash_length;
+  __u32 num_partitions;
+  __u32 padding;
+};
+struct switchtec_ioctl_flash_part_info {
+  __u32 flash_partition;
+  __u32 address;
+  __u32 length;
+  __u32 active;
+};
+struct switchtec_ioctl_event_summary {
+  __u64 global;
+  __u64 part_bitmap;
+  __u32 local_part;
+  __u32 padding;
+  __u32 part[48];
+  __u32 pff[48];
+};
+#define SWITCHTEC_IOCTL_EVENT_STACK_ERROR 0
+#define SWITCHTEC_IOCTL_EVENT_PPU_ERROR 1
+#define SWITCHTEC_IOCTL_EVENT_ISP_ERROR 2
+#define SWITCHTEC_IOCTL_EVENT_SYS_RESET 3
+#define SWITCHTEC_IOCTL_EVENT_FW_EXC 4
+#define SWITCHTEC_IOCTL_EVENT_FW_NMI 5
+#define SWITCHTEC_IOCTL_EVENT_FW_NON_FATAL 6
+#define SWITCHTEC_IOCTL_EVENT_FW_FATAL 7
+#define SWITCHTEC_IOCTL_EVENT_TWI_MRPC_COMP 8
+#define SWITCHTEC_IOCTL_EVENT_TWI_MRPC_COMP_ASYNC 9
+#define SWITCHTEC_IOCTL_EVENT_CLI_MRPC_COMP 10
+#define SWITCHTEC_IOCTL_EVENT_CLI_MRPC_COMP_ASYNC 11
+#define SWITCHTEC_IOCTL_EVENT_GPIO_INT 12
+#define SWITCHTEC_IOCTL_EVENT_PART_RESET 13
+#define SWITCHTEC_IOCTL_EVENT_MRPC_COMP 14
+#define SWITCHTEC_IOCTL_EVENT_MRPC_COMP_ASYNC 15
+#define SWITCHTEC_IOCTL_EVENT_DYN_PART_BIND_COMP 16
+#define SWITCHTEC_IOCTL_EVENT_AER_IN_P2P 17
+#define SWITCHTEC_IOCTL_EVENT_AER_IN_VEP 18
+#define SWITCHTEC_IOCTL_EVENT_DPC 19
+#define SWITCHTEC_IOCTL_EVENT_CTS 20
+#define SWITCHTEC_IOCTL_EVENT_HOTPLUG 21
+#define SWITCHTEC_IOCTL_EVENT_IER 22
+#define SWITCHTEC_IOCTL_EVENT_THRESH 23
+#define SWITCHTEC_IOCTL_EVENT_POWER_MGMT 24
+#define SWITCHTEC_IOCTL_EVENT_TLP_THROTTLING 25
+#define SWITCHTEC_IOCTL_EVENT_FORCE_SPEED 26
+#define SWITCHTEC_IOCTL_EVENT_CREDIT_TIMEOUT 27
+#define SWITCHTEC_IOCTL_EVENT_LINK_STATE 28
+#define SWITCHTEC_IOCTL_MAX_EVENTS 29
+#define SWITCHTEC_IOCTL_EVENT_LOCAL_PART_IDX - 1
+#define SWITCHTEC_IOCTL_EVENT_IDX_ALL - 2
+#define SWITCHTEC_IOCTL_EVENT_FLAG_CLEAR (1 << 0)
+#define SWITCHTEC_IOCTL_EVENT_FLAG_EN_POLL (1 << 1)
+#define SWITCHTEC_IOCTL_EVENT_FLAG_EN_LOG (1 << 2)
+#define SWITCHTEC_IOCTL_EVENT_FLAG_EN_CLI (1 << 3)
+#define SWITCHTEC_IOCTL_EVENT_FLAG_EN_FATAL (1 << 4)
+#define SWITCHTEC_IOCTL_EVENT_FLAG_DIS_POLL (1 << 5)
+#define SWITCHTEC_IOCTL_EVENT_FLAG_DIS_LOG (1 << 6)
+#define SWITCHTEC_IOCTL_EVENT_FLAG_DIS_CLI (1 << 7)
+#define SWITCHTEC_IOCTL_EVENT_FLAG_DIS_FATAL (1 << 8)
+#define SWITCHTEC_IOCTL_EVENT_FLAG_UNUSED (~0x1ff)
+struct switchtec_ioctl_event_ctl {
+  __u32 event_id;
+  __s32 index;
+  __u32 flags;
+  __u32 occurred;
+  __u32 count;
+  __u32 data[5];
+};
+#define SWITCHTEC_IOCTL_PFF_VEP 100
+struct switchtec_ioctl_pff_port {
+  __u32 pff;
+  __u32 partition;
+  __u32 port;
+};
+#define SWITCHTEC_IOCTL_FLASH_INFO _IOR('W', 0x40, struct switchtec_ioctl_flash_info)
+#define SWITCHTEC_IOCTL_FLASH_PART_INFO _IOWR('W', 0x41, struct switchtec_ioctl_flash_part_info)
+#define SWITCHTEC_IOCTL_EVENT_SUMMARY _IOR('W', 0x42, struct switchtec_ioctl_event_summary)
+#define SWITCHTEC_IOCTL_EVENT_CTL _IOWR('W', 0x43, struct switchtec_ioctl_event_ctl)
+#define SWITCHTEC_IOCTL_PFF_TO_PORT _IOWR('W', 0x44, struct switchtec_ioctl_pff_port)
+#define SWITCHTEC_IOCTL_PORT_TO_PFF _IOWR('W', 0x45, struct switchtec_ioctl_pff_port)
+#endif
diff --git a/libc/kernel/uapi/linux/sysctl.h b/libc/kernel/uapi/linux/sysctl.h
index 5389d61..47c39fc 100644
--- a/libc/kernel/uapi/linux/sysctl.h
+++ b/libc/kernel/uapi/linux/sysctl.h
@@ -487,6 +487,7 @@
   NET_IPV6_PROXY_NDP = 23,
   NET_IPV6_ACCEPT_SOURCE_ROUTE = 25,
   NET_IPV6_ACCEPT_RA_FROM_LOCAL = 26,
+  NET_IPV6_ACCEPT_RA_RT_INFO_MIN_PLEN = 27,
   __NET_IPV6_MAX
 };
 enum {
diff --git a/libc/kernel/uapi/linux/target_core_user.h b/libc/kernel/uapi/linux/target_core_user.h
index 8af4766..640e9c7 100644
--- a/libc/kernel/uapi/linux/target_core_user.h
+++ b/libc/kernel/uapi/linux/target_core_user.h
@@ -49,24 +49,24 @@
   struct tcmu_cmd_entry_hdr hdr;
   union {
     struct {
-      uint32_t iov_cnt;
-      uint32_t iov_bidi_cnt;
-      uint32_t iov_dif_cnt;
-      uint64_t cdb_off;
-      uint64_t __pad1;
-      uint64_t __pad2;
+      __u32 iov_cnt;
+      __u32 iov_bidi_cnt;
+      __u32 iov_dif_cnt;
+      __u64 cdb_off;
+      __u64 __pad1;
+      __u64 __pad2;
       struct iovec iov[0];
     } req;
     struct {
-      uint8_t scsi_status;
-      uint8_t __pad1;
-      uint16_t __pad2;
-      uint32_t __pad3;
+      __u8 scsi_status;
+      __u8 __pad1;
+      __u16 __pad2;
+      __u32 __pad3;
       char sense_buffer[TCMU_SENSE_BUFFERSIZE];
     } rsp;
   };
 } __packed;
-#define TCMU_OP_ALIGN_SIZE sizeof(uint64_t)
+#define TCMU_OP_ALIGN_SIZE sizeof(__u64)
 enum tcmu_genl_cmd {
   TCMU_CMD_UNSPEC,
   TCMU_CMD_ADDED_DEVICE,
diff --git a/libc/kernel/uapi/linux/tc_act/tc_csum.h b/libc/kernel/uapi/linux/tc_act/tc_csum.h
index 5771b29..7de4019 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_csum.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_csum.h
@@ -35,7 +35,8 @@
   TCA_CSUM_UPDATE_FLAG_IGMP = 4,
   TCA_CSUM_UPDATE_FLAG_TCP = 8,
   TCA_CSUM_UPDATE_FLAG_UDP = 16,
-  TCA_CSUM_UPDATE_FLAG_UDPLITE = 32
+  TCA_CSUM_UPDATE_FLAG_UDPLITE = 32,
+  TCA_CSUM_UPDATE_FLAG_SCTP = 64,
 };
 struct tc_csum {
   tc_gen;
diff --git a/libc/kernel/uapi/linux/tc_act/tc_ife.h b/libc/kernel/uapi/linux/tc_act/tc_ife.h
index 1079d9d..3193be0 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_ife.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_ife.h
@@ -20,6 +20,7 @@
 #define __UAPI_TC_IFE_H
 #include <linux/types.h>
 #include <linux/pkt_cls.h>
+#include <linux/ife.h>
 #define TCA_ACT_IFE 25
 #define IFE_ENCODE 1
 #define IFE_DECODE 0
@@ -39,11 +40,4 @@
   __TCA_IFE_MAX
 };
 #define TCA_IFE_MAX (__TCA_IFE_MAX - 1)
-#define IFE_META_SKBMARK 1
-#define IFE_META_HASHID 2
-#define IFE_META_PRIO 3
-#define IFE_META_QMAP 4
-#define IFE_META_TCINDEX 5
-#define __IFE_META_MAX 6
-#define IFE_META_MAX (__IFE_META_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/tc_act/tc_pedit.h b/libc/kernel/uapi/linux/tc_act/tc_pedit.h
index 02c9fdb..93eb1dc 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_pedit.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_pedit.h
@@ -26,9 +26,34 @@
   TCA_PEDIT_TM,
   TCA_PEDIT_PARMS,
   TCA_PEDIT_PAD,
+  TCA_PEDIT_PARMS_EX,
+  TCA_PEDIT_KEYS_EX,
+  TCA_PEDIT_KEY_EX,
   __TCA_PEDIT_MAX
 };
 #define TCA_PEDIT_MAX (__TCA_PEDIT_MAX - 1)
+enum {
+  TCA_PEDIT_KEY_EX_HTYPE = 1,
+  TCA_PEDIT_KEY_EX_CMD = 2,
+  __TCA_PEDIT_KEY_EX_MAX
+};
+#define TCA_PEDIT_KEY_EX_MAX (__TCA_PEDIT_KEY_EX_MAX - 1)
+enum pedit_header_type {
+  TCA_PEDIT_KEY_EX_HDR_TYPE_NETWORK = 0,
+  TCA_PEDIT_KEY_EX_HDR_TYPE_ETH = 1,
+  TCA_PEDIT_KEY_EX_HDR_TYPE_IP4 = 2,
+  TCA_PEDIT_KEY_EX_HDR_TYPE_IP6 = 3,
+  TCA_PEDIT_KEY_EX_HDR_TYPE_TCP = 4,
+  TCA_PEDIT_KEY_EX_HDR_TYPE_UDP = 5,
+  __PEDIT_HDR_TYPE_MAX,
+};
+#define TCA_PEDIT_HDR_TYPE_MAX (__PEDIT_HDR_TYPE_MAX - 1)
+enum pedit_cmd {
+  TCA_PEDIT_KEY_EX_CMD_SET = 0,
+  TCA_PEDIT_KEY_EX_CMD_ADD = 1,
+  __PEDIT_CMD_MAX,
+};
+#define TCA_PEDIT_CMD_MAX (__PEDIT_CMD_MAX - 1)
 struct tc_pedit_key {
   __u32 mask;
   __u32 val;
diff --git a/libc/kernel/uapi/linux/ion_test.h b/libc/kernel/uapi/linux/tc_act/tc_sample.h
similarity index 69%
copy from libc/kernel/uapi/linux/ion_test.h
copy to libc/kernel/uapi/linux/tc_act/tc_sample.h
index 3064508..64f5d08 100644
--- a/libc/kernel/uapi/linux/ion_test.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_sample.h
@@ -16,19 +16,24 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef _UAPI_LINUX_ION_TEST_H
-#define _UAPI_LINUX_ION_TEST_H
-#include <linux/ioctl.h>
+#ifndef __LINUX_TC_SAMPLE_H
+#define __LINUX_TC_SAMPLE_H
 #include <linux/types.h>
-struct ion_test_rw_data {
-  __u64 ptr;
-  __u64 offset;
-  __u64 size;
-  int write;
-  int __padding;
+#include <linux/pkt_cls.h>
+#include <linux/if_ether.h>
+#define TCA_ACT_SAMPLE 26
+struct tc_sample {
+  tc_gen;
 };
-#define ION_IOC_MAGIC 'I'
-#define ION_IOC_TEST_SET_FD _IO(ION_IOC_MAGIC, 0xf0)
-#define ION_IOC_TEST_DMA_MAPPING _IOW(ION_IOC_MAGIC, 0xf1, struct ion_test_rw_data)
-#define ION_IOC_TEST_KERNEL_MAPPING _IOW(ION_IOC_MAGIC, 0xf2, struct ion_test_rw_data)
+enum {
+  TCA_SAMPLE_UNSPEC,
+  TCA_SAMPLE_TM,
+  TCA_SAMPLE_PARMS,
+  TCA_SAMPLE_RATE,
+  TCA_SAMPLE_TRUNC_SIZE,
+  TCA_SAMPLE_PSAMPLE_GROUP,
+  TCA_SAMPLE_PAD,
+  __TCA_SAMPLE_MAX
+};
+#define TCA_SAMPLE_MAX (__TCA_SAMPLE_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/tcp.h b/libc/kernel/uapi/linux/tcp.h
index c388761..9c3a90d 100644
--- a/libc/kernel/uapi/linux/tcp.h
+++ b/libc/kernel/uapi/linux/tcp.h
@@ -84,6 +84,7 @@
 #define TCP_SAVE_SYN 27
 #define TCP_SAVED_SYN 28
 #define TCP_REPAIR_WINDOW 29
+#define TCP_FASTOPEN_CONNECT 30
 struct tcp_repair_opt {
   __u32 opt_code;
   __u32 opt_val;
@@ -172,6 +173,8 @@
   TCP_NLA_BUSY,
   TCP_NLA_RWND_LIMITED,
   TCP_NLA_SNDBUF_LIMITED,
+  TCP_NLA_DATA_SEGS_OUT,
+  TCP_NLA_TOTAL_RETRANS,
 };
 #define TCP_MD5SIG_MAXKEYLEN 80
 struct tcp_md5sig {
diff --git a/libc/kernel/uapi/linux/tee.h b/libc/kernel/uapi/linux/tee.h
new file mode 100644
index 0000000..9a42337
--- /dev/null
+++ b/libc/kernel/uapi/linux/tee.h
@@ -0,0 +1,111 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __TEE_H
+#define __TEE_H
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#define TEE_IOC_MAGIC 0xa4
+#define TEE_IOC_BASE 0
+#define TEE_IOCTL_SHM_MAPPED 0x1
+#define TEE_IOCTL_SHM_DMA_BUF 0x2
+#define TEE_MAX_ARG_SIZE 1024
+#define TEE_GEN_CAP_GP (1 << 0)
+#define TEE_IMPL_ID_OPTEE 1
+#define TEE_OPTEE_CAP_TZ (1 << 0)
+struct tee_ioctl_version_data {
+  __u32 impl_id;
+  __u32 impl_caps;
+  __u32 gen_caps;
+};
+#define TEE_IOC_VERSION _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 0, struct tee_ioctl_version_data)
+struct tee_ioctl_shm_alloc_data {
+  __u64 size;
+  __u32 flags;
+  __s32 id;
+};
+#define TEE_IOC_SHM_ALLOC _IOWR(TEE_IOC_MAGIC, TEE_IOC_BASE + 1, struct tee_ioctl_shm_alloc_data)
+struct tee_ioctl_buf_data {
+  __u64 buf_ptr;
+  __u64 buf_len;
+};
+#define TEE_IOCTL_PARAM_ATTR_TYPE_NONE 0
+#define TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INPUT 1
+#define TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_OUTPUT 2
+#define TEE_IOCTL_PARAM_ATTR_TYPE_VALUE_INOUT 3
+#define TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INPUT 5
+#define TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT 6
+#define TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT 7
+#define TEE_IOCTL_PARAM_ATTR_TYPE_MASK 0xff
+#define TEE_IOCTL_LOGIN_PUBLIC 0
+#define TEE_IOCTL_LOGIN_USER 1
+#define TEE_IOCTL_LOGIN_GROUP 2
+#define TEE_IOCTL_LOGIN_APPLICATION 4
+#define TEE_IOCTL_LOGIN_USER_APPLICATION 5
+#define TEE_IOCTL_LOGIN_GROUP_APPLICATION 6
+struct tee_ioctl_param {
+  __u64 attr;
+  __u64 a;
+  __u64 b;
+  __u64 c;
+};
+#define TEE_IOCTL_UUID_LEN 16
+struct tee_ioctl_open_session_arg {
+  __u8 uuid[TEE_IOCTL_UUID_LEN];
+  __u8 clnt_uuid[TEE_IOCTL_UUID_LEN];
+  __u32 clnt_login;
+  __u32 cancel_id;
+  __u32 session;
+  __u32 ret;
+  __u32 ret_origin;
+  __u32 num_params;
+  struct tee_ioctl_param params[];
+};
+#define TEE_IOC_OPEN_SESSION _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 2, struct tee_ioctl_buf_data)
+struct tee_ioctl_invoke_arg {
+  __u32 func;
+  __u32 session;
+  __u32 cancel_id;
+  __u32 ret;
+  __u32 ret_origin;
+  __u32 num_params;
+  struct tee_ioctl_param params[];
+};
+#define TEE_IOC_INVOKE _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 3, struct tee_ioctl_buf_data)
+struct tee_ioctl_cancel_arg {
+  __u32 cancel_id;
+  __u32 session;
+};
+#define TEE_IOC_CANCEL _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 4, struct tee_ioctl_cancel_arg)
+struct tee_ioctl_close_session_arg {
+  __u32 session;
+};
+#define TEE_IOC_CLOSE_SESSION _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 5, struct tee_ioctl_close_session_arg)
+struct tee_iocl_supp_recv_arg {
+  __u32 func;
+  __u32 num_params;
+  struct tee_ioctl_param params[];
+};
+#define TEE_IOC_SUPPL_RECV _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 6, struct tee_ioctl_buf_data)
+struct tee_iocl_supp_send_arg {
+  __u32 ret;
+  __u32 num_params;
+  struct tee_ioctl_param params[];
+};
+#define TEE_IOC_SUPPL_SEND _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 7, struct tee_ioctl_buf_data)
+#endif
diff --git a/libc/kernel/uapi/linux/tipc.h b/libc/kernel/uapi/linux/tipc.h
index a7b18db..cf16725 100644
--- a/libc/kernel/uapi/linux/tipc.h
+++ b/libc/kernel/uapi/linux/tipc.h
@@ -119,6 +119,8 @@
 #define TIPC_CONN_TIMEOUT 130
 #define TIPC_NODE_RECVQ_DEPTH 131
 #define TIPC_SOCK_RECVQ_DEPTH 132
+#define TIPC_MCAST_BROADCAST 133
+#define TIPC_MCAST_REPLICAST 134
 #define TIPC_MAX_MEDIA_NAME 16
 #define TIPC_MAX_IF_NAME 16
 #define TIPC_MAX_BEARER_NAME 32
diff --git a/libc/kernel/uapi/linux/un.h b/libc/kernel/uapi/linux/un.h
index f735c74..fefbf5b 100644
--- a/libc/kernel/uapi/linux/un.h
+++ b/libc/kernel/uapi/linux/un.h
@@ -24,4 +24,5 @@
   __kernel_sa_family_t sun_family;
   char sun_path[UNIX_PATH_MAX];
 };
+#define SIOCUNIXFILE (SIOCPROTOPRIVATE + 0)
 #endif
diff --git a/libc/kernel/uapi/linux/usb/ch11.h b/libc/kernel/uapi/linux/usb/ch11.h
index 41fc972..e31c37b 100644
--- a/libc/kernel/uapi/linux/usb/ch11.h
+++ b/libc/kernel/uapi/linux/usb/ch11.h
@@ -20,6 +20,7 @@
 #define __LINUX_CH11_H
 #include <linux/types.h>
 #define USB_MAXCHILDREN 31
+#define USB_SS_MAXPORTS 15
 #define USB_RT_HUB (USB_TYPE_CLASS | USB_RECIP_DEVICE)
 #define USB_RT_PORT (USB_TYPE_CLASS | USB_RECIP_OTHER)
 #define HUB_PORT_STATUS 0
diff --git a/libc/kernel/uapi/linux/userfaultfd.h b/libc/kernel/uapi/linux/userfaultfd.h
index 4c4b356..caa1eb4 100644
--- a/libc/kernel/uapi/linux/userfaultfd.h
+++ b/libc/kernel/uapi/linux/userfaultfd.h
@@ -20,9 +20,10 @@
 #define _LINUX_USERFAULTFD_H
 #include <linux/types.h>
 #define UFFD_API ((__u64) 0xAA)
-#define UFFD_API_FEATURES (0)
+#define UFFD_API_FEATURES (UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM)
 #define UFFD_API_IOCTLS ((__u64) 1 << _UFFDIO_REGISTER | (__u64) 1 << _UFFDIO_UNREGISTER | (__u64) 1 << _UFFDIO_API)
 #define UFFD_API_RANGE_IOCTLS ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_ZEROPAGE)
+#define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY)
 #define _UFFDIO_REGISTER (0x00)
 #define _UFFDIO_UNREGISTER (0x01)
 #define _UFFDIO_WAKE (0x02)
@@ -47,6 +48,18 @@
       __u64 address;
     } pagefault;
     struct {
+      __u32 ufd;
+    } fork;
+    struct {
+      __u64 from;
+      __u64 to;
+      __u64 len;
+    } remap;
+    struct {
+      __u64 start;
+      __u64 end;
+    } remove;
+    struct {
       __u64 reserved1;
       __u64 reserved2;
       __u64 reserved3;
@@ -54,10 +67,21 @@
   } arg;
 } __packed;
 #define UFFD_EVENT_PAGEFAULT 0x12
+#define UFFD_EVENT_FORK 0x13
+#define UFFD_EVENT_REMAP 0x14
+#define UFFD_EVENT_REMOVE 0x15
+#define UFFD_EVENT_UNMAP 0x16
 #define UFFD_PAGEFAULT_FLAG_WRITE (1 << 0)
 #define UFFD_PAGEFAULT_FLAG_WP (1 << 1)
 struct uffdio_api {
   __u64 api;
+#define UFFD_FEATURE_PAGEFAULT_FLAG_WP (1 << 0)
+#define UFFD_FEATURE_EVENT_FORK (1 << 1)
+#define UFFD_FEATURE_EVENT_REMAP (1 << 2)
+#define UFFD_FEATURE_EVENT_REMOVE (1 << 3)
+#define UFFD_FEATURE_MISSING_HUGETLBFS (1 << 4)
+#define UFFD_FEATURE_MISSING_SHMEM (1 << 5)
+#define UFFD_FEATURE_EVENT_UNMAP (1 << 6)
   __u64 features;
   __u64 ioctls;
 };
diff --git a/libc/kernel/uapi/linux/version.h b/libc/kernel/uapi/linux/version.h
index 8b3dd99..73eb988 100644
--- a/libc/kernel/uapi/linux/version.h
+++ b/libc/kernel/uapi/linux/version.h
@@ -16,5 +16,5 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#define LINUX_VERSION_CODE 264704
+#define LINUX_VERSION_CODE 265219
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
diff --git a/libc/kernel/uapi/linux/vfio.h b/libc/kernel/uapi/linux/vfio.h
index 61e8be4..4e3fdb7 100644
--- a/libc/kernel/uapi/linux/vfio.h
+++ b/libc/kernel/uapi/linux/vfio.h
@@ -56,6 +56,7 @@
 #define VFIO_DEVICE_FLAGS_PCI (1 << 1)
 #define VFIO_DEVICE_FLAGS_PLATFORM (1 << 2)
 #define VFIO_DEVICE_FLAGS_AMBA (1 << 3)
+#define VFIO_DEVICE_FLAGS_CCW (1 << 4)
   __u32 num_regions;
   __u32 num_irqs;
 };
@@ -63,6 +64,7 @@
 #define VFIO_DEVICE_API_PCI_STRING "vfio-pci"
 #define VFIO_DEVICE_API_PLATFORM_STRING "vfio-platform"
 #define VFIO_DEVICE_API_AMBA_STRING "vfio-amba"
+#define VFIO_DEVICE_API_CCW_STRING "vfio-ccw"
 struct vfio_region_info {
   __u32 argsz;
   __u32 flags;
@@ -147,6 +149,14 @@
   VFIO_PCI_REQ_IRQ_INDEX,
   VFIO_PCI_NUM_IRQS
 };
+enum {
+  VFIO_CCW_CONFIG_REGION_INDEX,
+  VFIO_CCW_NUM_REGIONS
+};
+enum {
+  VFIO_CCW_IO_IRQ_INDEX,
+  VFIO_CCW_NUM_IRQS
+};
 struct vfio_pci_dependent_device {
   __u32 group_id;
   __u16 segment;
diff --git a/libc/kernel/uapi/linux/ion_test.h b/libc/kernel/uapi/linux/vfio_ccw.h
similarity index 69%
copy from libc/kernel/uapi/linux/ion_test.h
copy to libc/kernel/uapi/linux/vfio_ccw.h
index 3064508..047862f 100644
--- a/libc/kernel/uapi/linux/ion_test.h
+++ b/libc/kernel/uapi/linux/vfio_ccw.h
@@ -16,19 +16,16 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef _UAPI_LINUX_ION_TEST_H
-#define _UAPI_LINUX_ION_TEST_H
-#include <linux/ioctl.h>
+#ifndef _VFIO_CCW_H_
+#define _VFIO_CCW_H_
 #include <linux/types.h>
-struct ion_test_rw_data {
-  __u64 ptr;
-  __u64 offset;
-  __u64 size;
-  int write;
-  int __padding;
-};
-#define ION_IOC_MAGIC 'I'
-#define ION_IOC_TEST_SET_FD _IO(ION_IOC_MAGIC, 0xf0)
-#define ION_IOC_TEST_DMA_MAPPING _IOW(ION_IOC_MAGIC, 0xf1, struct ion_test_rw_data)
-#define ION_IOC_TEST_KERNEL_MAPPING _IOW(ION_IOC_MAGIC, 0xf2, struct ion_test_rw_data)
+struct ccw_io_region {
+#define ORB_AREA_SIZE 12
+  __u8 orb_area[ORB_AREA_SIZE];
+#define SCSW_AREA_SIZE 12
+  __u8 scsw_area[SCSW_AREA_SIZE];
+#define IRB_AREA_SIZE 96
+  __u8 irb_area[IRB_AREA_SIZE];
+  __u32 ret_code;
+} __packed;
 #endif
diff --git a/libc/kernel/uapi/linux/videodev2.h b/libc/kernel/uapi/linux/videodev2.h
index 47b47ae..25e2fe8 100644
--- a/libc/kernel/uapi/linux/videodev2.h
+++ b/libc/kernel/uapi/linux/videodev2.h
@@ -57,6 +57,7 @@
   V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE = 10,
   V4L2_BUF_TYPE_SDR_CAPTURE = 11,
   V4L2_BUF_TYPE_SDR_OUTPUT = 12,
+  V4L2_BUF_TYPE_META_CAPTURE = 13,
   V4L2_BUF_TYPE_PRIVATE = 0x80,
 };
 #define V4L2_TYPE_IS_MULTIPLANAR(type) ((type) == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
@@ -123,7 +124,7 @@
   V4L2_QUANTIZATION_FULL_RANGE = 1,
   V4L2_QUANTIZATION_LIM_RANGE = 2,
 };
-#define V4L2_MAP_QUANTIZATION_DEFAULT(is_rgb_or_hsv,colsp,ycbcr_enc) (((is_rgb_or_hsv) && (colsp) == V4L2_COLORSPACE_BT2020) ? V4L2_QUANTIZATION_LIM_RANGE : (((is_rgb_or_hsv) || (ycbcr_enc) == V4L2_YCBCR_ENC_XV601 || (ycbcr_enc) == V4L2_YCBCR_ENC_XV709 || (colsp) == V4L2_COLORSPACE_JPEG) ? V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE))
+#define V4L2_MAP_QUANTIZATION_DEFAULT(is_rgb_or_hsv,colsp,ycbcr_enc) (((is_rgb_or_hsv) && (colsp) == V4L2_COLORSPACE_BT2020) ? V4L2_QUANTIZATION_LIM_RANGE : (((is_rgb_or_hsv) || (colsp) == V4L2_COLORSPACE_JPEG) ? V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE))
 enum v4l2_priority {
   V4L2_PRIORITY_UNSET = 0,
   V4L2_PRIORITY_BACKGROUND = 1,
@@ -172,6 +173,7 @@
 #define V4L2_CAP_SDR_CAPTURE 0x00100000
 #define V4L2_CAP_EXT_PIX_FORMAT 0x00200000
 #define V4L2_CAP_SDR_OUTPUT 0x00400000
+#define V4L2_CAP_META_CAPTURE 0x00800000
 #define V4L2_CAP_READWRITE 0x01000000
 #define V4L2_CAP_ASYNCIO 0x02000000
 #define V4L2_CAP_STREAMING 0x04000000
@@ -338,6 +340,7 @@
 #define V4L2_PIX_FMT_Y12I v4l2_fourcc('Y', '1', '2', 'I')
 #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ')
 #define V4L2_PIX_FMT_MT21C v4l2_fourcc('M', 'T', '2', '1')
+#define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I')
 #define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8')
 #define V4L2_SDR_FMT_CU16LE v4l2_fourcc('C', 'U', '1', '6')
 #define V4L2_SDR_FMT_CS8 v4l2_fourcc('C', 'S', '0', '8')
@@ -347,6 +350,8 @@
 #define V4L2_TCH_FMT_DELTA_TD08 v4l2_fourcc('T', 'D', '0', '8')
 #define V4L2_TCH_FMT_TU16 v4l2_fourcc('T', 'U', '1', '6')
 #define V4L2_TCH_FMT_TU08 v4l2_fourcc('T', 'U', '0', '8')
+#define V4L2_META_FMT_VSP1_HGO v4l2_fourcc('V', 'S', 'P', 'H')
+#define V4L2_META_FMT_VSP1_HGT v4l2_fourcc('V', 'S', 'P', 'T')
 #define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe
 #define V4L2_PIX_FMT_FLAG_PREMUL_ALPHA 0x00000001
 struct v4l2_fmtdesc {
@@ -865,6 +870,7 @@
 #define V4L2_CTRL_FLAG_VOLATILE 0x0080
 #define V4L2_CTRL_FLAG_HAS_PAYLOAD 0x0100
 #define V4L2_CTRL_FLAG_EXECUTE_ON_WRITE 0x0200
+#define V4L2_CTRL_FLAG_MODIFY_LAYOUT 0x0400
 #define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
 #define V4L2_CTRL_FLAG_NEXT_COMPOUND 0x40000000
 #define V4L2_CID_MAX_CTRLS 1024
@@ -1128,6 +1134,10 @@
   __u32 buffersize;
   __u8 reserved[24];
 } __attribute__((packed));
+struct v4l2_meta_format {
+  __u32 dataformat;
+  __u32 buffersize;
+} __attribute__((packed));
 struct v4l2_format {
   __u32 type;
   union {
@@ -1137,6 +1147,7 @@
     struct v4l2_vbi_format vbi;
     struct v4l2_sliced_vbi_format sliced;
     struct v4l2_sdr_format sdr;
+    struct v4l2_meta_format meta;
     __u8 raw_data[200];
   } fmt;
 };
diff --git a/libc/kernel/uapi/linux/virtio_mmio.h b/libc/kernel/uapi/linux/virtio_mmio.h
new file mode 100644
index 0000000..a11de1c
--- /dev/null
+++ b/libc/kernel/uapi/linux/virtio_mmio.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_VIRTIO_MMIO_H
+#define _LINUX_VIRTIO_MMIO_H
+#define VIRTIO_MMIO_MAGIC_VALUE 0x000
+#define VIRTIO_MMIO_VERSION 0x004
+#define VIRTIO_MMIO_DEVICE_ID 0x008
+#define VIRTIO_MMIO_VENDOR_ID 0x00c
+#define VIRTIO_MMIO_DEVICE_FEATURES 0x010
+#define VIRTIO_MMIO_DEVICE_FEATURES_SEL 0x014
+#define VIRTIO_MMIO_DRIVER_FEATURES 0x020
+#define VIRTIO_MMIO_DRIVER_FEATURES_SEL 0x024
+#ifndef VIRTIO_MMIO_NO_LEGACY
+#define VIRTIO_MMIO_GUEST_PAGE_SIZE 0x028
+#endif
+#define VIRTIO_MMIO_QUEUE_SEL 0x030
+#define VIRTIO_MMIO_QUEUE_NUM_MAX 0x034
+#define VIRTIO_MMIO_QUEUE_NUM 0x038
+#ifndef VIRTIO_MMIO_NO_LEGACY
+#define VIRTIO_MMIO_QUEUE_ALIGN 0x03c
+#define VIRTIO_MMIO_QUEUE_PFN 0x040
+#endif
+#define VIRTIO_MMIO_QUEUE_READY 0x044
+#define VIRTIO_MMIO_QUEUE_NOTIFY 0x050
+#define VIRTIO_MMIO_INTERRUPT_STATUS 0x060
+#define VIRTIO_MMIO_INTERRUPT_ACK 0x064
+#define VIRTIO_MMIO_STATUS 0x070
+#define VIRTIO_MMIO_QUEUE_DESC_LOW 0x080
+#define VIRTIO_MMIO_QUEUE_DESC_HIGH 0x084
+#define VIRTIO_MMIO_QUEUE_AVAIL_LOW 0x090
+#define VIRTIO_MMIO_QUEUE_AVAIL_HIGH 0x094
+#define VIRTIO_MMIO_QUEUE_USED_LOW 0x0a0
+#define VIRTIO_MMIO_QUEUE_USED_HIGH 0x0a4
+#define VIRTIO_MMIO_CONFIG_GENERATION 0x0fc
+#define VIRTIO_MMIO_CONFIG 0x100
+#define VIRTIO_MMIO_INT_VRING (1 << 0)
+#define VIRTIO_MMIO_INT_CONFIG (1 << 1)
+#endif
diff --git a/libc/kernel/uapi/linux/ion_test.h b/libc/kernel/uapi/linux/vsockmon.h
similarity index 64%
copy from libc/kernel/uapi/linux/ion_test.h
copy to libc/kernel/uapi/linux/vsockmon.h
index 3064508..6435b5a 100644
--- a/libc/kernel/uapi/linux/ion_test.h
+++ b/libc/kernel/uapi/linux/vsockmon.h
@@ -16,19 +16,29 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef _UAPI_LINUX_ION_TEST_H
-#define _UAPI_LINUX_ION_TEST_H
-#include <linux/ioctl.h>
-#include <linux/types.h>
-struct ion_test_rw_data {
-  __u64 ptr;
-  __u64 offset;
-  __u64 size;
-  int write;
-  int __padding;
+#ifndef _UAPI_VSOCKMON_H
+#define _UAPI_VSOCKMON_H
+#include <linux/virtio_vsock.h>
+struct af_vsockmon_hdr {
+  __le64 src_cid;
+  __le64 dst_cid;
+  __le32 src_port;
+  __le32 dst_port;
+  __le16 op;
+  __le16 transport;
+  __le16 len;
+  __u8 reserved[2];
 };
-#define ION_IOC_MAGIC 'I'
-#define ION_IOC_TEST_SET_FD _IO(ION_IOC_MAGIC, 0xf0)
-#define ION_IOC_TEST_DMA_MAPPING _IOW(ION_IOC_MAGIC, 0xf1, struct ion_test_rw_data)
-#define ION_IOC_TEST_KERNEL_MAPPING _IOW(ION_IOC_MAGIC, 0xf2, struct ion_test_rw_data)
+enum af_vsockmon_op {
+  AF_VSOCK_OP_UNKNOWN = 0,
+  AF_VSOCK_OP_CONNECT = 1,
+  AF_VSOCK_OP_DISCONNECT = 2,
+  AF_VSOCK_OP_CONTROL = 3,
+  AF_VSOCK_OP_PAYLOAD = 4,
+};
+enum af_vsockmon_transport {
+  AF_VSOCK_TRANSPORT_UNKNOWN = 0,
+  AF_VSOCK_TRANSPORT_NO_INFO = 1,
+  AF_VSOCK_TRANSPORT_VIRTIO = 2,
+};
 #endif
diff --git a/libc/kernel/uapi/linux/xfrm.h b/libc/kernel/uapi/linux/xfrm.h
index 69a8538..4ff9bea 100644
--- a/libc/kernel/uapi/linux/xfrm.h
+++ b/libc/kernel/uapi/linux/xfrm.h
@@ -257,6 +257,7 @@
   XFRMA_PROTO,
   XFRMA_ADDRESS_FILTER,
   XFRMA_PAD,
+  XFRMA_OFFLOAD_DEV,
   __XFRMA_MAX
 #define XFRMA_MAX (__XFRMA_MAX - 1)
 };
@@ -418,6 +419,12 @@
   __u8 splen;
   __u8 dplen;
 };
+struct xfrm_user_offload {
+  int ifindex;
+  __u8 flags;
+};
+#define XFRM_OFFLOAD_IPV6 1
+#define XFRM_OFFLOAD_INBOUND 2
 #define XFRMGRP_ACQUIRE 1
 #define XFRMGRP_EXPIRE 2
 #define XFRMGRP_SA 4
diff --git a/libc/kernel/uapi/rdma/bnxt_re-abi.h b/libc/kernel/uapi/rdma/bnxt_re-abi.h
new file mode 100644
index 0000000..873c466
--- /dev/null
+++ b/libc/kernel/uapi/rdma/bnxt_re-abi.h
@@ -0,0 +1,61 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __BNXT_RE_UVERBS_ABI_H__
+#define __BNXT_RE_UVERBS_ABI_H__
+#include <linux/types.h>
+#define BNXT_RE_ABI_VERSION 1
+struct bnxt_re_uctx_resp {
+  __u32 dev_id;
+  __u32 max_qp;
+  __u32 pg_size;
+  __u32 cqe_sz;
+  __u32 max_cqd;
+  __u32 rsvd;
+};
+struct bnxt_re_pd_resp {
+  __u32 pdid;
+  __u32 dpi;
+  __u64 dbr;
+};
+struct bnxt_re_cq_req {
+  __u64 cq_va;
+  __u64 cq_handle;
+};
+struct bnxt_re_cq_resp {
+  __u32 cqid;
+  __u32 tail;
+  __u32 phase;
+  __u32 rsvd;
+};
+struct bnxt_re_qp_req {
+  __u64 qpsva;
+  __u64 qprva;
+  __u64 qp_handle;
+};
+struct bnxt_re_qp_resp {
+  __u32 qpid;
+  __u32 rsvd;
+};
+enum bnxt_re_shpg_offt {
+  BNXT_RE_BEG_RESV_OFFT = 0x00,
+  BNXT_RE_AVID_OFFT = 0x10,
+  BNXT_RE_AVID_SIZE = 0x04,
+  BNXT_RE_END_RESV_OFFT = 0xFF0
+};
+#endif
diff --git a/libc/kernel/uapi/rdma/hfi/hfi1_ioctl.h b/libc/kernel/uapi/rdma/hfi/hfi1_ioctl.h
new file mode 100644
index 0000000..ea828fb
--- /dev/null
+++ b/libc/kernel/uapi/rdma/hfi/hfi1_ioctl.h
@@ -0,0 +1,72 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX__HFI1_IOCTL_H
+#define _LINUX__HFI1_IOCTL_H
+#include <linux/types.h>
+struct hfi1_user_info {
+  __u32 userversion;
+  __u32 pad;
+  __u16 subctxt_cnt;
+  __u16 subctxt_id;
+  __u8 uuid[16];
+};
+struct hfi1_ctxt_info {
+  __u64 runtime_flags;
+  __u32 rcvegr_size;
+  __u16 num_active;
+  __u16 unit;
+  __u16 ctxt;
+  __u16 subctxt;
+  __u16 rcvtids;
+  __u16 credits;
+  __u16 numa_node;
+  __u16 rec_cpu;
+  __u16 send_ctxt;
+  __u16 egrtids;
+  __u16 rcvhdrq_cnt;
+  __u16 rcvhdrq_entsize;
+  __u16 sdma_ring_size;
+};
+struct hfi1_tid_info {
+  __u64 vaddr;
+  __u64 tidlist;
+  __u32 tidcnt;
+  __u32 length;
+};
+struct hfi1_base_info {
+  __u32 hw_version;
+  __u32 sw_version;
+  __u16 jkey;
+  __u16 padding1;
+  __u32 bthqp;
+  __u64 sc_credits_addr;
+  __u64 pio_bufbase_sop;
+  __u64 pio_bufbase;
+  __u64 rcvhdr_bufbase;
+  __u64 rcvegr_bufbase;
+  __u64 sdma_comp_bufbase;
+  __u64 user_regbase;
+  __u64 events_bufbase;
+  __u64 status_bufbase;
+  __u64 rcvhdrtail_base;
+  __u64 subctxt_uregbase;
+  __u64 subctxt_rcvegrbuf;
+  __u64 subctxt_rcvhdrbuf;
+};
+#endif
diff --git a/libc/kernel/uapi/rdma/hfi/hfi1_user.h b/libc/kernel/uapi/rdma/hfi/hfi1_user.h
index b45506d..0d840e9 100644
--- a/libc/kernel/uapi/rdma/hfi/hfi1_user.h
+++ b/libc/kernel/uapi/rdma/hfi/hfi1_user.h
@@ -19,6 +19,7 @@
 #ifndef _LINUX__HFI1_USER_H
 #define _LINUX__HFI1_USER_H
 #include <linux/types.h>
+#include <rdma/rdma_user_ioctl.h>
 #define HFI1_USER_SWMAJOR 6
 #define HFI1_USER_SWMINOR 3
 #define HFI1_SWMAJOR_SHIFT 16
@@ -42,35 +43,6 @@
 #define HFI1_RCVHDR_ENTSIZE_2 (1UL << 0)
 #define HFI1_RCVHDR_ENTSIZE_16 (1UL << 1)
 #define HFI1_RCVDHR_ENTSIZE_32 (1UL << 2)
-#define HFI1_CMD_ASSIGN_CTXT 1
-#define HFI1_CMD_CTXT_INFO 2
-#define HFI1_CMD_USER_INFO 3
-#define HFI1_CMD_TID_UPDATE 4
-#define HFI1_CMD_TID_FREE 5
-#define HFI1_CMD_CREDIT_UPD 6
-#define HFI1_CMD_RECV_CTRL 8
-#define HFI1_CMD_POLL_TYPE 9
-#define HFI1_CMD_ACK_EVENT 10
-#define HFI1_CMD_SET_PKEY 11
-#define HFI1_CMD_CTXT_RESET 12
-#define HFI1_CMD_TID_INVAL_READ 13
-#define HFI1_CMD_GET_VERS 14
-#define IB_IOCTL_MAGIC 0x1b
-#define __NUM(cmd) (HFI1_CMD_ ##cmd + 0xe0)
-struct hfi1_cmd;
-#define HFI1_IOCTL_ASSIGN_CTXT _IOWR(IB_IOCTL_MAGIC, __NUM(ASSIGN_CTXT), struct hfi1_user_info)
-#define HFI1_IOCTL_CTXT_INFO _IOW(IB_IOCTL_MAGIC, __NUM(CTXT_INFO), struct hfi1_ctxt_info)
-#define HFI1_IOCTL_USER_INFO _IOW(IB_IOCTL_MAGIC, __NUM(USER_INFO), struct hfi1_base_info)
-#define HFI1_IOCTL_TID_UPDATE _IOWR(IB_IOCTL_MAGIC, __NUM(TID_UPDATE), struct hfi1_tid_info)
-#define HFI1_IOCTL_TID_FREE _IOWR(IB_IOCTL_MAGIC, __NUM(TID_FREE), struct hfi1_tid_info)
-#define HFI1_IOCTL_CREDIT_UPD _IO(IB_IOCTL_MAGIC, __NUM(CREDIT_UPD))
-#define HFI1_IOCTL_RECV_CTRL _IOW(IB_IOCTL_MAGIC, __NUM(RECV_CTRL), int)
-#define HFI1_IOCTL_POLL_TYPE _IOW(IB_IOCTL_MAGIC, __NUM(POLL_TYPE), int)
-#define HFI1_IOCTL_ACK_EVENT _IOW(IB_IOCTL_MAGIC, __NUM(ACK_EVENT), unsigned long)
-#define HFI1_IOCTL_SET_PKEY _IOW(IB_IOCTL_MAGIC, __NUM(SET_PKEY), __u16)
-#define HFI1_IOCTL_CTXT_RESET _IO(IB_IOCTL_MAGIC, __NUM(CTXT_RESET))
-#define HFI1_IOCTL_TID_INVAL_READ _IOWR(IB_IOCTL_MAGIC, __NUM(TID_INVAL_READ), struct hfi1_tid_info)
-#define HFI1_IOCTL_GET_VERS _IOR(IB_IOCTL_MAGIC, __NUM(GET_VERS), int)
 #define _HFI1_EVENT_FROZEN_BIT 0
 #define _HFI1_EVENT_LINKDOWN_BIT 1
 #define _HFI1_EVENT_LID_CHANGE_BIT 2
@@ -92,36 +64,6 @@
 #define HFI1_MAX_SHARED_CTXTS 8
 #define HFI1_POLL_TYPE_ANYRCV 0x0
 #define HFI1_POLL_TYPE_URGENT 0x1
-struct hfi1_user_info {
-  __u32 userversion;
-  __u32 pad;
-  __u16 subctxt_cnt;
-  __u16 subctxt_id;
-  __u8 uuid[16];
-};
-struct hfi1_ctxt_info {
-  __u64 runtime_flags;
-  __u32 rcvegr_size;
-  __u16 num_active;
-  __u16 unit;
-  __u16 ctxt;
-  __u16 subctxt;
-  __u16 rcvtids;
-  __u16 credits;
-  __u16 numa_node;
-  __u16 rec_cpu;
-  __u16 send_ctxt;
-  __u16 egrtids;
-  __u16 rcvhdrq_cnt;
-  __u16 rcvhdrq_entsize;
-  __u16 sdma_ring_size;
-};
-struct hfi1_tid_info {
-  __u64 vaddr;
-  __u64 tidlist;
-  __u32 tidcnt;
-  __u32 length;
-};
 enum hfi1_sdma_comp_state {
   FREE = 0,
   QUEUED,
@@ -137,26 +79,6 @@
   __u64 port;
   char freezemsg[0];
 };
-struct hfi1_base_info {
-  __u32 hw_version;
-  __u32 sw_version;
-  __u16 jkey;
-  __u16 padding1;
-  __u32 bthqp;
-  __u64 sc_credits_addr;
-  __u64 pio_bufbase_sop;
-  __u64 pio_bufbase;
-  __u64 rcvhdr_bufbase;
-  __u64 rcvegr_bufbase;
-  __u64 sdma_comp_bufbase;
-  __u64 user_regbase;
-  __u64 events_bufbase;
-  __u64 status_bufbase;
-  __u64 rcvhdrtail_base;
-  __u64 subctxt_uregbase;
-  __u64 subctxt_rcvegrbuf;
-  __u64 subctxt_rcvhdrbuf;
-};
 enum sdma_req_opcode {
   EXPECTED = 0,
   EAGER
diff --git a/libc/kernel/uapi/rdma/ib_user_mad.h b/libc/kernel/uapi/rdma/ib_user_mad.h
index 2aacb5c..cd723bb 100644
--- a/libc/kernel/uapi/rdma/ib_user_mad.h
+++ b/libc/kernel/uapi/rdma/ib_user_mad.h
@@ -19,7 +19,7 @@
 #ifndef IB_USER_MAD_H
 #define IB_USER_MAD_H
 #include <linux/types.h>
-#include <linux/ioctl.h>
+#include <rdma/rdma_user_ioctl.h>
 #define IB_USER_MAD_ABI_VERSION 5
 struct ib_user_mad_hdr_old {
   __u32 id;
@@ -90,9 +90,4 @@
   __u8 rmpp_version;
   __u8 reserved[3];
 };
-#define IB_IOCTL_MAGIC 0x1b
-#define IB_USER_MAD_REGISTER_AGENT _IOWR(IB_IOCTL_MAGIC, 1, struct ib_user_mad_reg_req)
-#define IB_USER_MAD_UNREGISTER_AGENT _IOW(IB_IOCTL_MAGIC, 2, __u32)
-#define IB_USER_MAD_ENABLE_PKEY _IO(IB_IOCTL_MAGIC, 3)
-#define IB_USER_MAD_REGISTER_AGENT2 _IOWR(IB_IOCTL_MAGIC, 4, struct ib_user_mad_reg_req2)
 #endif
diff --git a/libc/kernel/uapi/rdma/ib_user_verbs.h b/libc/kernel/uapi/rdma/ib_user_verbs.h
index c914006..4feb031 100644
--- a/libc/kernel/uapi/rdma/ib_user_verbs.h
+++ b/libc/kernel/uapi/rdma/ib_user_verbs.h
@@ -184,7 +184,7 @@
   __u64 device_cap_flags_ex;
   struct ib_uverbs_rss_caps rss_caps;
   __u32 max_wq_type_rq;
-  __u32 reserved;
+  __u32 raw_packet_caps;
 };
 struct ib_uverbs_query_port {
   __u64 response;
@@ -775,6 +775,28 @@
   struct ib_uverbs_flow_ipv6_filter val;
   struct ib_uverbs_flow_ipv6_filter mask;
 };
+struct ib_uverbs_flow_spec_action_tag {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+  __u32 tag_id;
+  __u32 reserved1;
+};
+struct ib_uverbs_flow_spec_action_drop {
+  union {
+    struct ib_uverbs_flow_spec_hdr hdr;
+    struct {
+      __u32 type;
+      __u16 size;
+      __u16 reserved;
+    };
+  };
+};
 struct ib_uverbs_flow_tunnel_filter {
   __be32 tunnel_id;
 };
@@ -876,6 +898,8 @@
   __u32 cq_handle;
   __u32 max_wr;
   __u32 max_sge;
+  __u32 create_flags;
+  __u32 reserved;
 };
 struct ib_uverbs_ex_create_wq_resp {
   __u32 comp_mask;
@@ -900,6 +924,8 @@
   __u32 wq_handle;
   __u32 wq_state;
   __u32 curr_wq_state;
+  __u32 flags;
+  __u32 flags_mask;
 };
 #define IB_USER_VERBS_MAX_LOG_IND_TBL_SIZE 0x0d
 struct ib_uverbs_ex_create_rwq_ind_table {
@@ -917,4 +943,5 @@
   __u32 comp_mask;
   __u32 ind_tbl_handle;
 };
+#define IB_DEVICE_NAME_MAX 64
 #endif
diff --git a/libc/kernel/uapi/rdma/mlx5-abi.h b/libc/kernel/uapi/rdma/mlx5-abi.h
index 1a8eb0d..6e76a3d 100644
--- a/libc/kernel/uapi/rdma/mlx5-abi.h
+++ b/libc/kernel/uapi/rdma/mlx5-abi.h
@@ -19,6 +19,7 @@
 #ifndef MLX5_ABI_USER_H
 #define MLX5_ABI_USER_H
 #include <linux/types.h>
+#include <linux/if_ether.h>
 enum {
   MLX5_QP_FLAG_SIGNATURE = 1 << 0,
   MLX5_QP_FLAG_SCATTER_CQE = 1 << 1,
@@ -31,18 +32,22 @@
 };
 #define MLX5_IB_UVERBS_ABI_VERSION 1
 struct mlx5_ib_alloc_ucontext_req {
-  __u32 total_num_uuars;
-  __u32 num_low_latency_uuars;
+  __u32 total_num_bfregs;
+  __u32 num_low_latency_bfregs;
+};
+enum mlx5_lib_caps {
+  MLX5_LIB_CAP_4K_UAR = (__u64) 1 << 0,
 };
 struct mlx5_ib_alloc_ucontext_req_v2 {
-  __u32 total_num_uuars;
-  __u32 num_low_latency_uuars;
+  __u32 total_num_bfregs;
+  __u32 num_low_latency_bfregs;
   __u32 flags;
   __u32 comp_mask;
   __u8 max_cqe_version;
   __u8 reserved0;
   __u16 reserved1;
   __u32 reserved2;
+  __u64 lib_caps;
 };
 enum mlx5_ib_alloc_ucontext_resp_mask {
   MLX5_IB_ALLOC_UCONTEXT_RESP_MASK_CORE_CLOCK_OFFSET = 1UL << 0,
@@ -51,10 +56,17 @@
   MLX5_USER_CMDS_SUPP_UHW_QUERY_DEVICE = 1 << 0,
   MLX5_USER_CMDS_SUPP_UHW_CREATE_AH = 1 << 1,
 };
+enum mlx5_user_inline_mode {
+  MLX5_USER_INLINE_MODE_NA,
+  MLX5_USER_INLINE_MODE_NONE,
+  MLX5_USER_INLINE_MODE_L2,
+  MLX5_USER_INLINE_MODE_IP,
+  MLX5_USER_INLINE_MODE_TCP_UDP,
+};
 struct mlx5_ib_alloc_ucontext_resp {
   __u32 qp_tab_size;
   __u32 bf_reg_size;
-  __u32 tot_uuars;
+  __u32 tot_bfregs;
   __u32 cache_line_size;
   __u16 max_sq_desc_sz;
   __u16 max_rq_desc_sz;
@@ -67,8 +79,11 @@
   __u32 response_length;
   __u8 cqe_version;
   __u8 cmds_supp_uhw;
-  __u16 reserved2;
+  __u8 eth_min_inline;
+  __u8 reserved2;
   __u64 hca_core_clock_offset;
+  __u32 log_uar_size;
+  __u32 num_uars_per_page;
 };
 struct mlx5_ib_alloc_pd_resp {
   __u32 pdn;
@@ -171,7 +186,7 @@
   __u32 reserved1;
 };
 struct mlx5_ib_create_qp_resp {
-  __u32 uuar_index;
+  __u32 bfreg_index;
 };
 struct mlx5_ib_alloc_mw {
   __u32 comp_mask;
diff --git a/libc/kernel/uapi/rdma/rdma_user_ioctl.h b/libc/kernel/uapi/rdma/rdma_user_ioctl.h
new file mode 100644
index 0000000..bb65c5d
--- /dev/null
+++ b/libc/kernel/uapi/rdma/rdma_user_ioctl.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef RDMA_USER_IOCTL_H
+#define RDMA_USER_IOCTL_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#include <rdma/ib_user_mad.h>
+#include <rdma/hfi/hfi1_ioctl.h>
+#define RDMA_IOCTL_MAGIC 0x1b
+#define IB_IOCTL_MAGIC RDMA_IOCTL_MAGIC
+#define IB_USER_MAD_REGISTER_AGENT _IOWR(RDMA_IOCTL_MAGIC, 0x01, struct ib_user_mad_reg_req)
+#define IB_USER_MAD_UNREGISTER_AGENT _IOW(RDMA_IOCTL_MAGIC, 0x02, __u32)
+#define IB_USER_MAD_ENABLE_PKEY _IO(RDMA_IOCTL_MAGIC, 0x03)
+#define IB_USER_MAD_REGISTER_AGENT2 _IOWR(RDMA_IOCTL_MAGIC, 0x04, struct ib_user_mad_reg_req2)
+#define HFI1_IOCTL_ASSIGN_CTXT _IOWR(RDMA_IOCTL_MAGIC, 0xE1, struct hfi1_user_info)
+#define HFI1_IOCTL_CTXT_INFO _IOW(RDMA_IOCTL_MAGIC, 0xE2, struct hfi1_ctxt_info)
+#define HFI1_IOCTL_USER_INFO _IOW(RDMA_IOCTL_MAGIC, 0xE3, struct hfi1_base_info)
+#define HFI1_IOCTL_TID_UPDATE _IOWR(RDMA_IOCTL_MAGIC, 0xE4, struct hfi1_tid_info)
+#define HFI1_IOCTL_TID_FREE _IOWR(RDMA_IOCTL_MAGIC, 0xE5, struct hfi1_tid_info)
+#define HFI1_IOCTL_CREDIT_UPD _IO(RDMA_IOCTL_MAGIC, 0xE6)
+#define HFI1_IOCTL_RECV_CTRL _IOW(RDMA_IOCTL_MAGIC, 0xE8, int)
+#define HFI1_IOCTL_POLL_TYPE _IOW(RDMA_IOCTL_MAGIC, 0xE9, int)
+#define HFI1_IOCTL_ACK_EVENT _IOW(RDMA_IOCTL_MAGIC, 0xEA, unsigned long)
+#define HFI1_IOCTL_SET_PKEY _IOW(RDMA_IOCTL_MAGIC, 0xEB, __u16)
+#define HFI1_IOCTL_CTXT_RESET _IO(RDMA_IOCTL_MAGIC, 0xEC)
+#define HFI1_IOCTL_TID_INVAL_READ _IOWR(RDMA_IOCTL_MAGIC, 0xED, struct hfi1_tid_info)
+#define HFI1_IOCTL_GET_VERS _IOR(RDMA_IOCTL_MAGIC, 0xEE, int)
+#endif
diff --git a/libc/kernel/uapi/rdma/vmw_pvrdma-abi.h b/libc/kernel/uapi/rdma/vmw_pvrdma-abi.h
index ab734f9..3666815 100644
--- a/libc/kernel/uapi/rdma/vmw_pvrdma-abi.h
+++ b/libc/kernel/uapi/rdma/vmw_pvrdma-abi.h
@@ -168,7 +168,7 @@
   __u32 opcode;
   __u32 send_flags;
   union {
-    __u32 imm_data;
+    __be32 imm_data;
     __u32 invalidate_rkey;
   } ex;
   __u32 reserved;
@@ -216,7 +216,7 @@
   __u32 opcode;
   __u32 status;
   __u32 byte_len;
-  __u32 imm_data;
+  __be32 imm_data;
   __u32 src_qp;
   __u32 wc_flags;
   __u32 vendor_err;
diff --git a/libc/kernel/uapi/scsi/cxlflash_ioctl.h b/libc/kernel/uapi/scsi/cxlflash_ioctl.h
index 9cde93a..91ffe62 100644
--- a/libc/kernel/uapi/scsi/cxlflash_ioctl.h
+++ b/libc/kernel/uapi/scsi/cxlflash_ioctl.h
@@ -28,6 +28,7 @@
 };
 #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;
diff --git a/libc/kernel/uapi/sound/asound.h b/libc/kernel/uapi/sound/asound.h
index 8466ea1..e3041ce 100644
--- a/libc/kernel/uapi/sound/asound.h
+++ b/libc/kernel/uapi/sound/asound.h
@@ -69,7 +69,9 @@
   SNDRV_HWDEP_IFACE_FW_DIGI00X,
   SNDRV_HWDEP_IFACE_FW_TASCAM,
   SNDRV_HWDEP_IFACE_LINE6,
-  SNDRV_HWDEP_IFACE_LAST = SNDRV_HWDEP_IFACE_LINE6
+  SNDRV_HWDEP_IFACE_FW_MOTU,
+  SNDRV_HWDEP_IFACE_FW_FIREFACE,
+  SNDRV_HWDEP_IFACE_LAST = SNDRV_HWDEP_IFACE_FW_FIREFACE
 };
 struct snd_hwdep_info {
   unsigned int device;
diff --git a/libc/kernel/uapi/sound/firewire.h b/libc/kernel/uapi/sound/firewire.h
index fc478f8..91289c0 100644
--- a/libc/kernel/uapi/sound/firewire.h
+++ b/libc/kernel/uapi/sound/firewire.h
@@ -24,6 +24,7 @@
 #define SNDRV_FIREWIRE_EVENT_DICE_NOTIFICATION 0xd1ce004e
 #define SNDRV_FIREWIRE_EVENT_EFW_RESPONSE 0x4e617475
 #define SNDRV_FIREWIRE_EVENT_DIGI00X_MESSAGE 0x746e736c
+#define SNDRV_FIREWIRE_EVENT_MOTU_NOTIFICATION 0x64776479
 struct snd_firewire_event_common {
   unsigned int type;
 };
@@ -53,12 +54,17 @@
   unsigned int type;
   __u32 message;
 };
+struct snd_firewire_event_motu_notification {
+  unsigned int type;
+  __u32 message;
+};
 union snd_firewire_event {
   struct snd_firewire_event_common common;
   struct snd_firewire_event_lock_status lock_status;
   struct snd_firewire_event_dice_notification dice_notification;
   struct snd_firewire_event_efw_response efw_response;
   struct snd_firewire_event_digi00x_message digi00x_message;
+  struct snd_firewire_event_motu_notification motu_notification;
 };
 #define SNDRV_FIREWIRE_IOCTL_GET_INFO _IOR('H', 0xf8, struct snd_firewire_get_info)
 #define SNDRV_FIREWIRE_IOCTL_LOCK _IO('H', 0xf9)
@@ -69,6 +75,8 @@
 #define SNDRV_FIREWIRE_TYPE_OXFW 4
 #define SNDRV_FIREWIRE_TYPE_DIGI00X 5
 #define SNDRV_FIREWIRE_TYPE_TASCAM 6
+#define SNDRV_FIREWIRE_TYPE_MOTU 7
+#define SNDRV_FIREWIRE_TYPE_FIREFACE 8
 struct snd_firewire_get_info {
   unsigned int type;
   unsigned int card;
diff --git a/libc/kernel/uapi/xen/privcmd.h b/libc/kernel/uapi/xen/privcmd.h
index b251e73..210a75e 100644
--- a/libc/kernel/uapi/xen/privcmd.h
+++ b/libc/kernel/uapi/xen/privcmd.h
@@ -50,8 +50,19 @@
   const xen_pfn_t __user * arr;
   int __user * err;
 };
+struct privcmd_dm_op_buf {
+  void __user * uptr;
+  size_t size;
+};
+struct privcmd_dm_op {
+  domid_t dom;
+  __u16 num;
+  const struct privcmd_dm_op_buf __user * ubufs;
+};
 #define IOCTL_PRIVCMD_HYPERCALL _IOC(_IOC_NONE, 'P', 0, sizeof(struct privcmd_hypercall))
 #define IOCTL_PRIVCMD_MMAP _IOC(_IOC_NONE, 'P', 2, sizeof(struct privcmd_mmap))
 #define IOCTL_PRIVCMD_MMAPBATCH _IOC(_IOC_NONE, 'P', 3, sizeof(struct privcmd_mmapbatch))
 #define IOCTL_PRIVCMD_MMAPBATCH_V2 _IOC(_IOC_NONE, 'P', 4, sizeof(struct privcmd_mmapbatch_v2))
+#define IOCTL_PRIVCMD_DM_OP _IOC(_IOC_NONE, 'P', 5, sizeof(struct privcmd_dm_op))
+#define IOCTL_PRIVCMD_RESTRICT _IOC(_IOC_NONE, 'P', 6, sizeof(domid_t))
 #endif