Update to v5.5 kernel headers.

Kernel headers coming from:

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

Test: Boots on walleye.
Test: Ran bionic-unit-tests on walleye.
Test: Boots on cuttlefish.
Test: Ran bionic-unit-tests on cuttlefish.
Change-Id: I57387d3c31e0ba5ad125ffe291cecf365c7b374e
Merged-In: I57387d3c31e0ba5ad125ffe291cecf365c7b374e
diff --git a/libc/kernel/tools/defaults.py b/libc/kernel/tools/defaults.py
index e74b346..90b56f5 100644
--- a/libc/kernel/tools/defaults.py
+++ b/libc/kernel/tools/defaults.py
@@ -29,6 +29,10 @@
     "__HAVE_BUILTIN_BSWAP16__": "1",
     "__HAVE_BUILTIN_BSWAP32__": "1",
     "__HAVE_BUILTIN_BSWAP64__": "1",
+    # Use this to remove the struct __kernel_old_timeval definition.
+    # Otherwise, there will be two struct timeval definitions when
+    # __kernel_old_timeval is renamed to timeval.
+    "__kernel_old_timeval": "1",
     }
 
 # define to true if you want to remove all defined(CONFIG_FOO) tests
@@ -76,6 +80,12 @@
     "__attribute_const__": "__attribute__((__const__))",
     # In this case the kernel tries to keep out of our way, but we're happy to use its definition.
     "__kernel_sockaddr_storage": "sockaddr_storage",
+    # The kernel started using struct __kernel_old_timeval in some places,
+    # which is the exact same as struct timeval. Replace that name with
+    # timeval so that kernel structures all use the same named structure.
+    # If struct __kernel_old_timeval and struct timeval become different,
+    # then a different solution needs to be implemented.
+    "__kernel_old_timeval": "timeval",
     }
 
 
diff --git a/libc/kernel/uapi/asm-arm/asm/kvm.h b/libc/kernel/uapi/asm-arm/asm/kvm.h
index 6fdb46c..6a6d963 100644
--- a/libc/kernel/uapi/asm-arm/asm/kvm.h
+++ b/libc/kernel/uapi/asm-arm/asm/kvm.h
@@ -97,7 +97,8 @@
   struct {
     __u8 serror_pending;
     __u8 serror_has_esr;
-    __u8 pad[6];
+    __u8 ext_dabt_pending;
+    __u8 pad[5];
     __u64 serror_esr;
   } exception;
   __u32 reserved[12];
diff --git a/libc/kernel/uapi/asm-arm64/asm/kvm.h b/libc/kernel/uapi/asm-arm64/asm/kvm.h
index 1c7ee65..efe1a9c 100644
--- a/libc/kernel/uapi/asm-arm64/asm/kvm.h
+++ b/libc/kernel/uapi/asm-arm64/asm/kvm.h
@@ -103,7 +103,8 @@
   struct {
     __u8 serror_pending;
     __u8 serror_has_esr;
-    __u8 pad[6];
+    __u8 ext_dabt_pending;
+    __u8 pad[5];
     __u64 serror_esr;
   } exception;
   __u32 reserved[12];
@@ -196,6 +197,8 @@
 #define KVM_ARM_VCPU_TIMER_CTRL 1
 #define KVM_ARM_VCPU_TIMER_IRQ_VTIMER 0
 #define KVM_ARM_VCPU_TIMER_IRQ_PTIMER 1
+#define KVM_ARM_VCPU_PVTIME_CTRL 2
+#define KVM_ARM_VCPU_PVTIME_IPA 0
 #define KVM_ARM_IRQ_VCPU2_SHIFT 28
 #define KVM_ARM_IRQ_VCPU2_MASK 0xf
 #define KVM_ARM_IRQ_TYPE_SHIFT 24
diff --git a/libc/kernel/uapi/asm-arm64/asm/unistd.h b/libc/kernel/uapi/asm-arm64/asm/unistd.h
index 2f7a859..e93f3f1 100644
--- a/libc/kernel/uapi/asm-arm64/asm/unistd.h
+++ b/libc/kernel/uapi/asm-arm64/asm/unistd.h
@@ -20,4 +20,5 @@
 #define __ARCH_WANT_NEW_STAT
 #define __ARCH_WANT_SET_GET_RLIMIT
 #define __ARCH_WANT_TIME32_SYSCALLS
+#define __ARCH_WANT_SYS_CLONE3
 #include <asm-generic/unistd.h>
diff --git a/libc/kernel/uapi/asm-generic/ipcbuf.h b/libc/kernel/uapi/asm-generic/ipcbuf.h
index 4dfb6f7..40c45ab 100644
--- a/libc/kernel/uapi/asm-generic/ipcbuf.h
+++ b/libc/kernel/uapi/asm-generic/ipcbuf.h
@@ -18,6 +18,7 @@
  ****************************************************************************/
 #ifndef __ASM_GENERIC_IPCBUF_H
 #define __ASM_GENERIC_IPCBUF_H
+#include <linux/posix_types.h>
 struct ipc64_perm {
   __kernel_key_t key;
   __kernel_uid32_t uid;
diff --git a/libc/kernel/uapi/asm-generic/msgbuf.h b/libc/kernel/uapi/asm-generic/msgbuf.h
index a8af16e..827d050 100644
--- a/libc/kernel/uapi/asm-generic/msgbuf.h
+++ b/libc/kernel/uapi/asm-generic/msgbuf.h
@@ -19,12 +19,13 @@
 #ifndef __ASM_GENERIC_MSGBUF_H
 #define __ASM_GENERIC_MSGBUF_H
 #include <asm/bitsperlong.h>
+#include <asm/ipcbuf.h>
 struct msqid64_ds {
   struct ipc64_perm msg_perm;
 #if __BITS_PER_LONG == 64
-  __kernel_time_t msg_stime;
-  __kernel_time_t msg_rtime;
-  __kernel_time_t msg_ctime;
+  long msg_stime;
+  long msg_rtime;
+  long msg_ctime;
 #else
   unsigned long msg_stime;
   unsigned long msg_stime_high;
diff --git a/libc/kernel/uapi/asm-generic/posix_types.h b/libc/kernel/uapi/asm-generic/posix_types.h
index 5aaa56d..4045127 100644
--- a/libc/kernel/uapi/asm-generic/posix_types.h
+++ b/libc/kernel/uapi/asm-generic/posix_types.h
@@ -74,6 +74,7 @@
 #endif
 typedef __kernel_long_t __kernel_off_t;
 typedef long long __kernel_loff_t;
+typedef __kernel_long_t __kernel_old_time_t;
 typedef __kernel_long_t __kernel_time_t;
 typedef long long __kernel_time64_t;
 typedef __kernel_long_t __kernel_clock_t;
diff --git a/libc/kernel/uapi/asm-generic/sembuf.h b/libc/kernel/uapi/asm-generic/sembuf.h
index c8c1d29..46306f7 100644
--- a/libc/kernel/uapi/asm-generic/sembuf.h
+++ b/libc/kernel/uapi/asm-generic/sembuf.h
@@ -19,11 +19,12 @@
 #ifndef __ASM_GENERIC_SEMBUF_H
 #define __ASM_GENERIC_SEMBUF_H
 #include <asm/bitsperlong.h>
+#include <asm/ipcbuf.h>
 struct semid64_ds {
   struct ipc64_perm sem_perm;
 #if __BITS_PER_LONG == 64
-  __kernel_time_t sem_otime;
-  __kernel_time_t sem_ctime;
+  long sem_otime;
+  long sem_ctime;
 #else
   unsigned long sem_otime;
   unsigned long sem_otime_high;
diff --git a/libc/kernel/uapi/asm-generic/shmbuf.h b/libc/kernel/uapi/asm-generic/shmbuf.h
index 1d003ba..067ffbc 100644
--- a/libc/kernel/uapi/asm-generic/shmbuf.h
+++ b/libc/kernel/uapi/asm-generic/shmbuf.h
@@ -23,9 +23,9 @@
   struct ipc64_perm shm_perm;
   size_t shm_segsz;
 #if __BITS_PER_LONG == 64
-  __kernel_time_t shm_atime;
-  __kernel_time_t shm_dtime;
-  __kernel_time_t shm_ctime;
+  long shm_atime;
+  long shm_dtime;
+  long shm_ctime;
 #else
   unsigned long shm_atime;
   unsigned long shm_atime_high;
diff --git a/libc/kernel/uapi/asm-x86/asm/bootparam.h b/libc/kernel/uapi/asm-x86/asm/bootparam.h
index af66fdb..7401135 100644
--- a/libc/kernel/uapi/asm-x86/asm/bootparam.h
+++ b/libc/kernel/uapi/asm-x86/asm/bootparam.h
@@ -25,6 +25,8 @@
 #define SETUP_EFI 4
 #define SETUP_APPLE_PROPERTIES 5
 #define SETUP_JAILHOUSE 6
+#define SETUP_INDIRECT (1 << 31)
+#define SETUP_TYPE_MAX (SETUP_INDIRECT | SETUP_JAILHOUSE)
 #define RAMDISK_IMAGE_START_MASK 0x07FF
 #define RAMDISK_PROMPT_FLAG 0x8000
 #define RAMDISK_LOAD_FLAG 0x4000
@@ -53,6 +55,12 @@
   __u32 len;
   __u8 data[0];
 };
+struct setup_indirect {
+  __u32 type;
+  __u32 reserved;
+  __u64 len;
+  __u64 addr;
+};
 struct setup_header {
   __u8 setup_sects;
   __u16 root_flags;
@@ -92,6 +100,7 @@
   __u64 pref_address;
   __u32 init_size;
   __u32 handover_offset;
+  __u32 kernel_info_offset;
 } __attribute__((packed));
 struct sys_desc_table {
   __u16 length;
@@ -121,15 +130,22 @@
 } __attribute__((packed));
 #define JAILHOUSE_SETUP_REQUIRED_VERSION 1
 struct jailhouse_setup_data {
-  __u16 version;
-  __u16 compatible_version;
-  __u16 pm_timer_address;
-  __u16 num_cpus;
-  __u64 pci_mmconfig_base;
-  __u32 tsc_khz;
-  __u32 apic_khz;
-  __u8 standard_ioapic;
-  __u8 cpu_ids[255];
+  struct {
+    __u16 version;
+    __u16 compatible_version;
+  } __attribute__((packed)) hdr;
+  struct {
+    __u16 pm_timer_address;
+    __u16 num_cpus;
+    __u64 pci_mmconfig_base;
+    __u32 tsc_khz;
+    __u32 apic_khz;
+    __u8 standard_ioapic;
+    __u8 cpu_ids[255];
+  } __attribute__((packed)) v1;
+  struct {
+    __u32 flags;
+  } __attribute__((packed)) v2;
 } __attribute__((packed));
 struct boot_params {
   struct screen_info screen_info;
diff --git a/libc/kernel/uapi/asm-x86/asm/msgbuf.h b/libc/kernel/uapi/asm-x86/asm/msgbuf.h
index 92ab491..b100b20 100644
--- a/libc/kernel/uapi/asm-x86/asm/msgbuf.h
+++ b/libc/kernel/uapi/asm-x86/asm/msgbuf.h
@@ -21,11 +21,12 @@
 #if !defined(__x86_64__) || !defined(__ILP32__)
 #include <asm-generic/msgbuf.h>
 #else
+#include <asm/ipcbuf.h>
 struct msqid64_ds {
   struct ipc64_perm msg_perm;
-  __kernel_time_t msg_stime;
-  __kernel_time_t msg_rtime;
-  __kernel_time_t msg_ctime;
+  __kernel_long_t msg_stime;
+  __kernel_long_t msg_rtime;
+  __kernel_long_t msg_ctime;
   __kernel_ulong_t msg_cbytes;
   __kernel_ulong_t msg_qnum;
   __kernel_ulong_t msg_qbytes;
diff --git a/libc/kernel/uapi/asm-x86/asm/sembuf.h b/libc/kernel/uapi/asm-x86/asm/sembuf.h
index 9b96722..c633425 100644
--- a/libc/kernel/uapi/asm-x86/asm/sembuf.h
+++ b/libc/kernel/uapi/asm-x86/asm/sembuf.h
@@ -18,6 +18,7 @@
  ****************************************************************************/
 #ifndef _ASM_X86_SEMBUF_H
 #define _ASM_X86_SEMBUF_H
+#include <asm/ipcbuf.h>
 struct semid64_ds {
   struct ipc64_perm sem_perm;
 #ifdef __i386__
@@ -26,9 +27,9 @@
   unsigned long sem_ctime;
   unsigned long sem_ctime_high;
 #else
-  __kernel_time_t sem_otime;
+  __kernel_long_t sem_otime;
   __kernel_ulong_t __unused1;
-  __kernel_time_t sem_ctime;
+  __kernel_long_t sem_ctime;
   __kernel_ulong_t __unused2;
 #endif
   __kernel_ulong_t sem_nsems;
diff --git a/libc/kernel/uapi/asm-x86/asm/shmbuf.h b/libc/kernel/uapi/asm-x86/asm/shmbuf.h
index 4486c7b..03e195e 100644
--- a/libc/kernel/uapi/asm-x86/asm/shmbuf.h
+++ b/libc/kernel/uapi/asm-x86/asm/shmbuf.h
@@ -24,9 +24,9 @@
 struct shmid64_ds {
   struct ipc64_perm shm_perm;
   size_t shm_segsz;
-  __kernel_time_t shm_atime;
-  __kernel_time_t shm_dtime;
-  __kernel_time_t shm_ctime;
+  __kernel_long_t shm_atime;
+  __kernel_long_t shm_dtime;
+  __kernel_long_t shm_ctime;
   __kernel_pid_t shm_cpid;
   __kernel_pid_t shm_lpid;
   __kernel_ulong_t shm_nattch;
diff --git a/libc/kernel/uapi/drm/amdgpu_drm.h b/libc/kernel/uapi/drm/amdgpu_drm.h
index 1d95379..b986d30 100644
--- a/libc/kernel/uapi/drm/amdgpu_drm.h
+++ b/libc/kernel/uapi/drm/amdgpu_drm.h
@@ -301,6 +301,7 @@
 #define AMDGPU_VM_MTYPE_WC (2 << 5)
 #define AMDGPU_VM_MTYPE_CC (3 << 5)
 #define AMDGPU_VM_MTYPE_UC (4 << 5)
+#define AMDGPU_VM_MTYPE_RW (5 << 5)
 struct drm_amdgpu_gem_va {
   __u32 handle;
   __u32 _pad;
diff --git a/libc/kernel/uapi/drm/drm.h b/libc/kernel/uapi/drm/drm.h
index 7c5ffbb..c78966c 100644
--- a/libc/kernel/uapi/drm/drm.h
+++ b/libc/kernel/uapi/drm/drm.h
@@ -435,11 +435,12 @@
   __u32 count_handles;
   __u32 pad;
 };
+#define DRM_SYNCOBJ_QUERY_FLAGS_LAST_SUBMITTED (1 << 0)
 struct drm_syncobj_timeline_array {
   __u64 handles;
   __u64 points;
   __u32 count_handles;
-  __u32 pad;
+  __u32 flags;
 };
 struct drm_crtc_get_sequence {
   __u32 crtc_id;
diff --git a/libc/kernel/uapi/drm/drm_fourcc.h b/libc/kernel/uapi/drm/drm_fourcc.h
index dec9cfa..a316269 100644
--- a/libc/kernel/uapi/drm/drm_fourcc.h
+++ b/libc/kernel/uapi/drm/drm_fourcc.h
@@ -23,7 +23,7 @@
 extern "C" {
 #endif
 #define fourcc_code(a,b,c,d) ((__u32) (a) | ((__u32) (b) << 8) | ((__u32) (c) << 16) | ((__u32) (d) << 24))
-#define DRM_FORMAT_BIG_ENDIAN (1 << 31)
+#define DRM_FORMAT_BIG_ENDIAN (1U << 31)
 #define DRM_FORMAT_INVALID 0
 #define DRM_FORMAT_C8 fourcc_code('C', '8', ' ', ' ')
 #define DRM_FORMAT_R8 fourcc_code('R', '8', ' ', ' ')
@@ -178,7 +178,10 @@
 #define DRM_FORMAT_MOD_BROADCOM_SAND128 DRM_FORMAT_MOD_BROADCOM_SAND128_COL_HEIGHT(0)
 #define DRM_FORMAT_MOD_BROADCOM_SAND256 DRM_FORMAT_MOD_BROADCOM_SAND256_COL_HEIGHT(0)
 #define DRM_FORMAT_MOD_BROADCOM_UIF fourcc_mod_code(BROADCOM, 6)
-#define DRM_FORMAT_MOD_ARM_AFBC(__afbc_mode) fourcc_mod_code(ARM, __afbc_mode)
+#define DRM_FORMAT_MOD_ARM_CODE(__type,__val) fourcc_mod_code(ARM, ((__u64) (__type) << 52) | ((__val) & 0x000fffffffffffffULL))
+#define DRM_FORMAT_MOD_ARM_TYPE_AFBC 0x00
+#define DRM_FORMAT_MOD_ARM_TYPE_MISC 0x01
+#define DRM_FORMAT_MOD_ARM_AFBC(__afbc_mode) DRM_FORMAT_MOD_ARM_CODE(DRM_FORMAT_MOD_ARM_TYPE_AFBC, __afbc_mode)
 #define AFBC_FORMAT_MOD_BLOCK_SIZE_MASK 0xf
 #define AFBC_FORMAT_MOD_BLOCK_SIZE_16x16 (1ULL)
 #define AFBC_FORMAT_MOD_BLOCK_SIZE_32x8 (2ULL)
@@ -192,6 +195,7 @@
 #define AFBC_FORMAT_MOD_SC (1ULL << 9)
 #define AFBC_FORMAT_MOD_DB (1ULL << 10)
 #define AFBC_FORMAT_MOD_BCH (1ULL << 11)
+#define DRM_FORMAT_MOD_ARM_16X16_BLOCK_U_INTERLEAVED DRM_FORMAT_MOD_ARM_CODE(DRM_FORMAT_MOD_ARM_TYPE_MISC, 1ULL)
 #define DRM_FORMAT_MOD_ALLWINNER_TILED fourcc_mod_code(ALLWINNER, 1)
 #ifdef __cplusplus
 }
diff --git a/libc/kernel/uapi/drm/i915_drm.h b/libc/kernel/uapi/drm/i915_drm.h
index 09480c3..2e61275 100644
--- a/libc/kernel/uapi/drm/i915_drm.h
+++ b/libc/kernel/uapi/drm/i915_drm.h
@@ -359,6 +359,7 @@
 #define I915_PARAM_CS_TIMESTAMP_FREQUENCY 51
 #define I915_PARAM_MMAP_GTT_COHERENT 52
 #define I915_PARAM_HAS_EXEC_SUBMIT_FENCE 53
+#define I915_PARAM_PERF_REVISION 54
 typedef struct drm_i915_getparam {
   __s32 param;
   int __user * value;
@@ -711,6 +712,7 @@
 #define I915_CONTEXT_PARAM_RECOVERABLE 0x8
 #define I915_CONTEXT_PARAM_VM 0x9
 #define I915_CONTEXT_PARAM_ENGINES 0xa
+#define I915_CONTEXT_PARAM_PERSISTENCE 0xb
   __u64 value;
 };
 struct drm_i915_gem_context_param_sseu {
@@ -820,6 +822,7 @@
   DRM_I915_PERF_PROP_OA_METRICS_SET,
   DRM_I915_PERF_PROP_OA_FORMAT,
   DRM_I915_PERF_PROP_OA_EXPONENT,
+  DRM_I915_PERF_PROP_HOLD_PREEMPTION,
   DRM_I915_PERF_PROP_MAX
 };
 struct drm_i915_perf_open_param {
@@ -832,6 +835,7 @@
 };
 #define I915_PERF_IOCTL_ENABLE _IO('i', 0x0)
 #define I915_PERF_IOCTL_DISABLE _IO('i', 0x1)
+#define I915_PERF_IOCTL_CONFIG _IO('i', 0x2)
 struct drm_i915_perf_record_header {
   __u32 type;
   __u16 pad;
@@ -856,8 +860,12 @@
   __u64 query_id;
 #define DRM_I915_QUERY_TOPOLOGY_INFO 1
 #define DRM_I915_QUERY_ENGINE_INFO 2
+#define DRM_I915_QUERY_PERF_CONFIG 3
   __s32 length;
   __u32 flags;
+#define DRM_I915_QUERY_PERF_CONFIG_LIST 1
+#define DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_UUID 2
+#define DRM_I915_QUERY_PERF_CONFIG_DATA_FOR_ID 3
   __u64 data_ptr;
 };
 struct drm_i915_query {
@@ -890,6 +898,15 @@
   __u32 rsvd[3];
   struct drm_i915_engine_info engines[];
 };
+struct drm_i915_query_perf_config {
+  union {
+    __u64 n_configs;
+    __u64 config;
+    char uuid[36];
+  };
+  __u32 flags;
+  __u8 data[];
+};
 #ifdef __cplusplus
 }
 #endif
diff --git a/libc/kernel/uapi/drm/omap_drm.h b/libc/kernel/uapi/drm/omap_drm.h
index 3c2fc08..72d949d 100644
--- a/libc/kernel/uapi/drm/omap_drm.h
+++ b/libc/kernel/uapi/drm/omap_drm.h
@@ -28,15 +28,14 @@
   __u64 value;
 };
 #define OMAP_BO_SCANOUT 0x00000001
-#define OMAP_BO_CACHE_MASK 0x00000006
-#define OMAP_BO_TILED_MASK 0x00000f00
 #define OMAP_BO_CACHED 0x00000000
 #define OMAP_BO_WC 0x00000002
 #define OMAP_BO_UNCACHED 0x00000004
+#define OMAP_BO_CACHE_MASK 0x00000006
 #define OMAP_BO_TILED_8 0x00000100
 #define OMAP_BO_TILED_16 0x00000200
 #define OMAP_BO_TILED_32 0x00000300
-#define OMAP_BO_TILED (OMAP_BO_TILED_8 | OMAP_BO_TILED_16 | OMAP_BO_TILED_32)
+#define OMAP_BO_TILED_MASK 0x00000f00
 union omap_gem_size {
   __u32 bytes;
   struct {
diff --git a/libc/kernel/uapi/drm/v3d_drm.h b/libc/kernel/uapi/drm/v3d_drm.h
index 0b6b94f..cdc2cf5 100644
--- a/libc/kernel/uapi/drm/v3d_drm.h
+++ b/libc/kernel/uapi/drm/v3d_drm.h
@@ -38,6 +38,7 @@
 #define DRM_IOCTL_V3D_GET_BO_OFFSET DRM_IOWR(DRM_COMMAND_BASE + DRM_V3D_GET_BO_OFFSET, struct drm_v3d_get_bo_offset)
 #define DRM_IOCTL_V3D_SUBMIT_TFU DRM_IOW(DRM_COMMAND_BASE + DRM_V3D_SUBMIT_TFU, struct drm_v3d_submit_tfu)
 #define DRM_IOCTL_V3D_SUBMIT_CSD DRM_IOW(DRM_COMMAND_BASE + DRM_V3D_SUBMIT_CSD, struct drm_v3d_submit_csd)
+#define DRM_V3D_SUBMIT_CL_FLUSH_CACHE 0x01
 struct drm_v3d_submit_cl {
   __u32 bcl_start;
   __u32 bcl_end;
@@ -51,7 +52,7 @@
   __u32 qts;
   __u64 bo_handles;
   __u32 bo_handle_count;
-  __u32 pad;
+  __u32 flags;
 };
 struct drm_v3d_wait_bo {
   __u32 handle;
@@ -79,6 +80,7 @@
   DRM_V3D_PARAM_V3D_CORE0_IDENT2,
   DRM_V3D_PARAM_SUPPORTS_TFU,
   DRM_V3D_PARAM_SUPPORTS_CSD,
+  DRM_V3D_PARAM_SUPPORTS_CACHE_FLUSH,
 };
 struct drm_v3d_get_param {
   __u32 param;
diff --git a/libc/kernel/uapi/drm/vmwgfx_drm.h b/libc/kernel/uapi/drm/vmwgfx_drm.h
index bb1f36d..753192b 100644
--- a/libc/kernel/uapi/drm/vmwgfx_drm.h
+++ b/libc/kernel/uapi/drm/vmwgfx_drm.h
@@ -266,7 +266,8 @@
 enum drm_vmw_surface_flags {
   drm_vmw_surface_flag_shareable = (1 << 0),
   drm_vmw_surface_flag_scanout = (1 << 1),
-  drm_vmw_surface_flag_create_buffer = (1 << 2)
+  drm_vmw_surface_flag_create_buffer = (1 << 2),
+  drm_vmw_surface_flag_coherent = (1 << 3),
 };
 struct drm_vmw_gb_surface_create_req {
   __u32 svga3d_flags;
diff --git a/libc/kernel/uapi/linux/audit.h b/libc/kernel/uapi/linux/audit.h
index 3f1d8f0..d14f018 100644
--- a/libc/kernel/uapi/linux/audit.h
+++ b/libc/kernel/uapi/linux/audit.h
@@ -106,6 +106,7 @@
 #define AUDIT_ANOM_PROMISCUOUS 1700
 #define AUDIT_ANOM_ABEND 1701
 #define AUDIT_ANOM_LINK 1702
+#define AUDIT_ANOM_CREAT 1703
 #define AUDIT_INTEGRITY_DATA 1800
 #define AUDIT_INTEGRITY_METADATA 1801
 #define AUDIT_INTEGRITY_STATUS 1802
diff --git a/libc/kernel/uapi/linux/blkzoned.h b/libc/kernel/uapi/linux/blkzoned.h
index 62f826f..0b8ddd6 100644
--- a/libc/kernel/uapi/linux/blkzoned.h
+++ b/libc/kernel/uapi/linux/blkzoned.h
@@ -59,4 +59,7 @@
 #define BLKRESETZONE _IOW(0x12, 131, struct blk_zone_range)
 #define BLKGETZONESZ _IOR(0x12, 132, __u32)
 #define BLKGETNRZONES _IOR(0x12, 133, __u32)
+#define BLKOPENZONE _IOW(0x12, 134, struct blk_zone_range)
+#define BLKCLOSEZONE _IOW(0x12, 135, struct blk_zone_range)
+#define BLKFINISHZONE _IOW(0x12, 136, struct blk_zone_range)
 #endif
diff --git a/libc/kernel/uapi/linux/bpf.h b/libc/kernel/uapi/linux/bpf.h
index 39a9ea6..80a9feb 100644
--- a/libc/kernel/uapi/linux/bpf.h
+++ b/libc/kernel/uapi/linux/bpf.h
@@ -151,6 +151,7 @@
   BPF_PROG_TYPE_CGROUP_SYSCTL,
   BPF_PROG_TYPE_RAW_TRACEPOINT_WRITABLE,
   BPF_PROG_TYPE_CGROUP_SOCKOPT,
+  BPF_PROG_TYPE_TRACING,
 };
 enum bpf_attach_type {
   BPF_CGROUP_INET_INGRESS,
@@ -176,6 +177,9 @@
   BPF_CGROUP_UDP6_RECVMSG,
   BPF_CGROUP_GETSOCKOPT,
   BPF_CGROUP_SETSOCKOPT,
+  BPF_TRACE_RAW_TP,
+  BPF_TRACE_FENTRY,
+  BPF_TRACE_FEXIT,
   __MAX_BPF_ATTACH_TYPE
 };
 #define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
@@ -203,6 +207,7 @@
 #define BPF_F_RDONLY_PROG (1U << 7)
 #define BPF_F_WRONLY_PROG (1U << 8)
 #define BPF_F_CLONE (1U << 9)
+#define BPF_F_MMAPABLE (1U << 10)
 #define BPF_F_QUERY_EFFECTIVE (1U << 0)
 enum bpf_stack_build_id_status {
   BPF_STACK_BUILD_ID_EMPTY = 0,
@@ -262,6 +267,8 @@
     __u32 line_info_rec_size;
     __aligned_u64 line_info;
     __u32 line_info_cnt;
+    __u32 attach_btf_id;
+    __u32 attach_prog_fd;
   };
   struct {
     __aligned_u64 pathname;
@@ -334,7 +341,7 @@
     __u64 probe_addr;
   } task_fd_query;
 } __attribute__((aligned(8)));
-#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel), FN(spin_lock), FN(spin_unlock), FN(sk_fullsock), FN(tcp_sock), FN(skb_ecn_set_ce), FN(get_listener_sock), FN(skc_lookup_tcp), FN(tcp_check_syncookie), FN(sysctl_get_name), FN(sysctl_get_current_value), FN(sysctl_get_new_value), FN(sysctl_set_new_value), FN(strtol), FN(strtoul), FN(sk_storage_get), FN(sk_storage_delete), FN(send_signal), FN(tcp_gen_syncookie),
+#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel), FN(spin_lock), FN(spin_unlock), FN(sk_fullsock), FN(tcp_sock), FN(skb_ecn_set_ce), FN(get_listener_sock), FN(skc_lookup_tcp), FN(tcp_check_syncookie), FN(sysctl_get_name), FN(sysctl_get_current_value), FN(sysctl_get_new_value), FN(sysctl_set_new_value), FN(strtol), FN(strtoul), FN(sk_storage_get), FN(sk_storage_delete), FN(send_signal), FN(tcp_gen_syncookie), FN(skb_output), FN(probe_read_user), FN(probe_read_kernel), FN(probe_read_user_str), FN(probe_read_kernel_str),
 #define __BPF_ENUM_FN(x) BPF_FUNC_ ##x
 enum bpf_func_id {
   __BPF_FUNC_MAPPER(__BPF_ENUM_FN) __BPF_FUNC_MAX_ID,
diff --git a/libc/kernel/uapi/linux/btrfs.h b/libc/kernel/uapi/linux/btrfs.h
index a69e089..684b295 100644
--- a/libc/kernel/uapi/linux/btrfs.h
+++ b/libc/kernel/uapi/linux/btrfs.h
@@ -174,6 +174,7 @@
 #define BTRFS_FEATURE_INCOMPAT_SKINNY_METADATA (1ULL << 8)
 #define BTRFS_FEATURE_INCOMPAT_NO_HOLES (1ULL << 9)
 #define BTRFS_FEATURE_INCOMPAT_METADATA_UUID (1ULL << 10)
+#define BTRFS_FEATURE_INCOMPAT_RAID1C34 (1ULL << 11)
 struct btrfs_ioctl_feature_flags {
   __u64 compat_flags;
   __u64 compat_ro_flags;
@@ -452,7 +453,9 @@
   BTRFS_ERROR_DEV_TGT_REPLACE,
   BTRFS_ERROR_DEV_MISSING_NOT_FOUND,
   BTRFS_ERROR_DEV_ONLY_WRITABLE,
-  BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS
+  BTRFS_ERROR_DEV_EXCL_RUN_IN_PROGRESS,
+  BTRFS_ERROR_DEV_RAID1C3_MIN_NOT_MET,
+  BTRFS_ERROR_DEV_RAID1C4_MIN_NOT_MET,
 };
 #define BTRFS_IOC_SNAP_CREATE _IOW(BTRFS_IOCTL_MAGIC, 1, struct btrfs_ioctl_vol_args)
 #define BTRFS_IOC_DEFRAG _IOW(BTRFS_IOCTL_MAGIC, 2, struct btrfs_ioctl_vol_args)
diff --git a/libc/kernel/uapi/linux/btrfs_tree.h b/libc/kernel/uapi/linux/btrfs_tree.h
index 5f58100..50ada36 100644
--- a/libc/kernel/uapi/linux/btrfs_tree.h
+++ b/libc/kernel/uapi/linux/btrfs_tree.h
@@ -94,6 +94,9 @@
 #define BTRFS_CSUM_SIZE 32
 enum btrfs_csum_type {
   BTRFS_CSUM_TYPE_CRC32 = 0,
+  BTRFS_CSUM_TYPE_XXHASH = 1,
+  BTRFS_CSUM_TYPE_SHA256 = 2,
+  BTRFS_CSUM_TYPE_BLAKE2 = 3,
 };
 #define BTRFS_FT_UNKNOWN 0
 #define BTRFS_FT_REG_FILE 1
@@ -322,10 +325,12 @@
   struct btrfs_disk_balance_args sys;
   __le64 unused[4];
 } __attribute__((__packed__));
-#define BTRFS_FILE_EXTENT_INLINE 0
-#define BTRFS_FILE_EXTENT_REG 1
-#define BTRFS_FILE_EXTENT_PREALLOC 2
-#define BTRFS_FILE_EXTENT_TYPES 2
+enum {
+  BTRFS_FILE_EXTENT_INLINE = 0,
+  BTRFS_FILE_EXTENT_REG = 1,
+  BTRFS_FILE_EXTENT_PREALLOC = 2,
+  BTRFS_NR_FILE_EXTENT_TYPES = 3,
+};
 struct btrfs_file_extent_item {
   __le64 generation;
   __le64 ram_bytes;
@@ -366,6 +371,8 @@
 #define BTRFS_BLOCK_GROUP_RAID10 (1ULL << 6)
 #define BTRFS_BLOCK_GROUP_RAID5 (1ULL << 7)
 #define BTRFS_BLOCK_GROUP_RAID6 (1ULL << 8)
+#define BTRFS_BLOCK_GROUP_RAID1C3 (1ULL << 9)
+#define BTRFS_BLOCK_GROUP_RAID1C4 (1ULL << 10)
 #define BTRFS_BLOCK_GROUP_RESERVED (BTRFS_AVAIL_ALLOC_BIT_SINGLE | BTRFS_SPACE_INFO_GLOBAL_RSV)
 enum btrfs_raid_types {
   BTRFS_RAID_RAID10,
@@ -375,12 +382,14 @@
   BTRFS_RAID_SINGLE,
   BTRFS_RAID_RAID5,
   BTRFS_RAID_RAID6,
+  BTRFS_RAID_RAID1C3,
+  BTRFS_RAID_RAID1C4,
   BTRFS_NR_RAID_TYPES
 };
 #define BTRFS_BLOCK_GROUP_TYPE_MASK (BTRFS_BLOCK_GROUP_DATA | BTRFS_BLOCK_GROUP_SYSTEM | BTRFS_BLOCK_GROUP_METADATA)
-#define BTRFS_BLOCK_GROUP_PROFILE_MASK (BTRFS_BLOCK_GROUP_RAID0 | BTRFS_BLOCK_GROUP_RAID1 | BTRFS_BLOCK_GROUP_RAID5 | BTRFS_BLOCK_GROUP_RAID6 | BTRFS_BLOCK_GROUP_DUP | BTRFS_BLOCK_GROUP_RAID10)
+#define BTRFS_BLOCK_GROUP_PROFILE_MASK (BTRFS_BLOCK_GROUP_RAID0 | BTRFS_BLOCK_GROUP_RAID1 | BTRFS_BLOCK_GROUP_RAID1C3 | BTRFS_BLOCK_GROUP_RAID1C4 | BTRFS_BLOCK_GROUP_RAID5 | BTRFS_BLOCK_GROUP_RAID6 | BTRFS_BLOCK_GROUP_DUP | BTRFS_BLOCK_GROUP_RAID10)
 #define BTRFS_BLOCK_GROUP_RAID56_MASK (BTRFS_BLOCK_GROUP_RAID5 | BTRFS_BLOCK_GROUP_RAID6)
-#define BTRFS_BLOCK_GROUP_RAID1_MASK (BTRFS_BLOCK_GROUP_RAID1)
+#define BTRFS_BLOCK_GROUP_RAID1_MASK (BTRFS_BLOCK_GROUP_RAID1 | BTRFS_BLOCK_GROUP_RAID1C3 | BTRFS_BLOCK_GROUP_RAID1C4)
 #define BTRFS_AVAIL_ALLOC_BIT_SINGLE (1ULL << 48)
 #define BTRFS_SPACE_INFO_GLOBAL_RSV (1ULL << 49)
 #define BTRFS_EXTENDED_PROFILE_MASK (BTRFS_BLOCK_GROUP_PROFILE_MASK | BTRFS_AVAIL_ALLOC_BIT_SINGLE)
diff --git a/libc/kernel/uapi/linux/cec.h b/libc/kernel/uapi/linux/cec.h
index a3aa2d6..238fa0a 100644
--- a/libc/kernel/uapi/linux/cec.h
+++ b/libc/kernel/uapi/linux/cec.h
@@ -107,6 +107,7 @@
 #define CEC_CAP_MONITOR_ALL (1 << 5)
 #define CEC_CAP_NEEDS_HPD (1 << 6)
 #define CEC_CAP_MONITOR_PIN (1 << 7)
+#define CEC_CAP_CONNECTOR_INFO (1 << 8)
 struct cec_caps {
   char driver[32];
   char name[32];
@@ -130,6 +131,19 @@
 #define CEC_LOG_ADDRS_FL_ALLOW_UNREG_FALLBACK (1 << 0)
 #define CEC_LOG_ADDRS_FL_ALLOW_RC_PASSTHRU (1 << 1)
 #define CEC_LOG_ADDRS_FL_CDC_ONLY (1 << 2)
+struct cec_drm_connector_info {
+  __u32 card_no;
+  __u32 connector_id;
+};
+#define CEC_CONNECTOR_TYPE_NO_CONNECTOR 0
+#define CEC_CONNECTOR_TYPE_DRM 1
+struct cec_connector_info {
+  __u32 type;
+  union {
+    struct cec_drm_connector_info drm;
+    __u32 raw[16];
+  };
+};
 #define CEC_EVENT_STATE_CHANGE 1
 #define CEC_EVENT_LOST_MSGS 2
 #define CEC_EVENT_PIN_CEC_LOW 3
@@ -143,6 +157,7 @@
 struct cec_event_state_change {
   __u16 phys_addr;
   __u16 log_addr_mask;
+  __u16 have_conn_info;
 };
 struct cec_event_lost_msgs {
   __u32 lost_msgs;
@@ -167,6 +182,7 @@
 #define CEC_DQEVENT _IOWR('a', 7, struct cec_event)
 #define CEC_G_MODE _IOR('a', 8, __u32)
 #define CEC_S_MODE _IOW('a', 9, __u32)
+#define CEC_ADAP_G_CONNECTOR_INFO _IOR('a', 10, struct cec_connector_info)
 #define CEC_MSG_ACTIVE_SOURCE 0x82
 #define CEC_MSG_IMAGE_VIEW_ON 0x04
 #define CEC_MSG_TEXT_VIEW_ON 0x0d
@@ -370,8 +386,8 @@
 #define CEC_MSG_SELECT_ANALOGUE_SERVICE 0x92
 #define CEC_MSG_SELECT_DIGITAL_SERVICE 0x93
 #define CEC_MSG_TUNER_DEVICE_STATUS 0x07
-#define CEC_OP_REC_FLAG_USED 0
-#define CEC_OP_REC_FLAG_NOT_USED 1
+#define CEC_OP_REC_FLAG_NOT_USED 0
+#define CEC_OP_REC_FLAG_USED 1
 #define CEC_OP_TUNER_DISPLAY_INFO_DIGITAL 0
 #define CEC_OP_TUNER_DISPLAY_INFO_NONE 1
 #define CEC_OP_TUNER_DISPLAY_INFO_ANALOGUE 2
@@ -397,6 +413,94 @@
 #define CEC_OP_MENU_STATE_ACTIVATED 0x00
 #define CEC_OP_MENU_STATE_DEACTIVATED 0x01
 #define CEC_MSG_USER_CONTROL_PRESSED 0x44
+#define CEC_OP_UI_CMD_SELECT 0x00
+#define CEC_OP_UI_CMD_UP 0x01
+#define CEC_OP_UI_CMD_DOWN 0x02
+#define CEC_OP_UI_CMD_LEFT 0x03
+#define CEC_OP_UI_CMD_RIGHT 0x04
+#define CEC_OP_UI_CMD_RIGHT_UP 0x05
+#define CEC_OP_UI_CMD_RIGHT_DOWN 0x06
+#define CEC_OP_UI_CMD_LEFT_UP 0x07
+#define CEC_OP_UI_CMD_LEFT_DOWN 0x08
+#define CEC_OP_UI_CMD_DEVICE_ROOT_MENU 0x09
+#define CEC_OP_UI_CMD_DEVICE_SETUP_MENU 0x0a
+#define CEC_OP_UI_CMD_CONTENTS_MENU 0x0b
+#define CEC_OP_UI_CMD_FAVORITE_MENU 0x0c
+#define CEC_OP_UI_CMD_BACK 0x0d
+#define CEC_OP_UI_CMD_MEDIA_TOP_MENU 0x10
+#define CEC_OP_UI_CMD_MEDIA_CONTEXT_SENSITIVE_MENU 0x11
+#define CEC_OP_UI_CMD_NUMBER_ENTRY_MODE 0x1d
+#define CEC_OP_UI_CMD_NUMBER_11 0x1e
+#define CEC_OP_UI_CMD_NUMBER_12 0x1f
+#define CEC_OP_UI_CMD_NUMBER_0_OR_NUMBER_10 0x20
+#define CEC_OP_UI_CMD_NUMBER_1 0x21
+#define CEC_OP_UI_CMD_NUMBER_2 0x22
+#define CEC_OP_UI_CMD_NUMBER_3 0x23
+#define CEC_OP_UI_CMD_NUMBER_4 0x24
+#define CEC_OP_UI_CMD_NUMBER_5 0x25
+#define CEC_OP_UI_CMD_NUMBER_6 0x26
+#define CEC_OP_UI_CMD_NUMBER_7 0x27
+#define CEC_OP_UI_CMD_NUMBER_8 0x28
+#define CEC_OP_UI_CMD_NUMBER_9 0x29
+#define CEC_OP_UI_CMD_DOT 0x2a
+#define CEC_OP_UI_CMD_ENTER 0x2b
+#define CEC_OP_UI_CMD_CLEAR 0x2c
+#define CEC_OP_UI_CMD_NEXT_FAVORITE 0x2f
+#define CEC_OP_UI_CMD_CHANNEL_UP 0x30
+#define CEC_OP_UI_CMD_CHANNEL_DOWN 0x31
+#define CEC_OP_UI_CMD_PREVIOUS_CHANNEL 0x32
+#define CEC_OP_UI_CMD_SOUND_SELECT 0x33
+#define CEC_OP_UI_CMD_INPUT_SELECT 0x34
+#define CEC_OP_UI_CMD_DISPLAY_INFORMATION 0x35
+#define CEC_OP_UI_CMD_HELP 0x36
+#define CEC_OP_UI_CMD_PAGE_UP 0x37
+#define CEC_OP_UI_CMD_PAGE_DOWN 0x38
+#define CEC_OP_UI_CMD_POWER 0x40
+#define CEC_OP_UI_CMD_VOLUME_UP 0x41
+#define CEC_OP_UI_CMD_VOLUME_DOWN 0x42
+#define CEC_OP_UI_CMD_MUTE 0x43
+#define CEC_OP_UI_CMD_PLAY 0x44
+#define CEC_OP_UI_CMD_STOP 0x45
+#define CEC_OP_UI_CMD_PAUSE 0x46
+#define CEC_OP_UI_CMD_RECORD 0x47
+#define CEC_OP_UI_CMD_REWIND 0x48
+#define CEC_OP_UI_CMD_FAST_FORWARD 0x49
+#define CEC_OP_UI_CMD_EJECT 0x4a
+#define CEC_OP_UI_CMD_SKIP_FORWARD 0x4b
+#define CEC_OP_UI_CMD_SKIP_BACKWARD 0x4c
+#define CEC_OP_UI_CMD_STOP_RECORD 0x4d
+#define CEC_OP_UI_CMD_PAUSE_RECORD 0x4e
+#define CEC_OP_UI_CMD_ANGLE 0x50
+#define CEC_OP_UI_CMD_SUB_PICTURE 0x51
+#define CEC_OP_UI_CMD_VIDEO_ON_DEMAND 0x52
+#define CEC_OP_UI_CMD_ELECTRONIC_PROGRAM_GUIDE 0x53
+#define CEC_OP_UI_CMD_TIMER_PROGRAMMING 0x54
+#define CEC_OP_UI_CMD_INITIAL_CONFIGURATION 0x55
+#define CEC_OP_UI_CMD_SELECT_BROADCAST_TYPE 0x56
+#define CEC_OP_UI_CMD_SELECT_SOUND_PRESENTATION 0x57
+#define CEC_OP_UI_CMD_AUDIO_DESCRIPTION 0x58
+#define CEC_OP_UI_CMD_INTERNET 0x59
+#define CEC_OP_UI_CMD_3D_MODE 0x5a
+#define CEC_OP_UI_CMD_PLAY_FUNCTION 0x60
+#define CEC_OP_UI_CMD_PAUSE_PLAY_FUNCTION 0x61
+#define CEC_OP_UI_CMD_RECORD_FUNCTION 0x62
+#define CEC_OP_UI_CMD_PAUSE_RECORD_FUNCTION 0x63
+#define CEC_OP_UI_CMD_STOP_FUNCTION 0x64
+#define CEC_OP_UI_CMD_MUTE_FUNCTION 0x65
+#define CEC_OP_UI_CMD_RESTORE_VOLUME_FUNCTION 0x66
+#define CEC_OP_UI_CMD_TUNE_FUNCTION 0x67
+#define CEC_OP_UI_CMD_SELECT_MEDIA_FUNCTION 0x68
+#define CEC_OP_UI_CMD_SELECT_AV_INPUT_FUNCTION 0x69
+#define CEC_OP_UI_CMD_SELECT_AUDIO_INPUT_FUNCTION 0x6a
+#define CEC_OP_UI_CMD_POWER_TOGGLE_FUNCTION 0x6b
+#define CEC_OP_UI_CMD_POWER_OFF_FUNCTION 0x6c
+#define CEC_OP_UI_CMD_POWER_ON_FUNCTION 0x6d
+#define CEC_OP_UI_CMD_F1_BLUE 0x71
+#define CEC_OP_UI_CMD_F2_RED 0x72
+#define CEC_OP_UI_CMD_F3_GREEN 0x73
+#define CEC_OP_UI_CMD_F4_YELLOW 0x74
+#define CEC_OP_UI_CMD_F5 0x75
+#define CEC_OP_UI_CMD_DATA 0x76
 #define CEC_OP_UI_BCAST_TYPE_TOGGLE_ALL 0x00
 #define CEC_OP_UI_BCAST_TYPE_TOGGLE_DIG_ANA 0x01
 #define CEC_OP_UI_BCAST_TYPE_ANALOGUE 0x10
diff --git a/libc/kernel/uapi/linux/chio.h b/libc/kernel/uapi/linux/chio.h
index 51425fa..725e760 100644
--- a/libc/kernel/uapi/linux/chio.h
+++ b/libc/kernel/uapi/linux/chio.h
@@ -16,6 +16,8 @@
  ***
  ****************************************************************************
  ****************************************************************************/
+#ifndef _UAPI_LINUX_CHIO_H
+#define _UAPI_LINUX_CHIO_H
 #define CHET_MT 0
 #define CHET_ST 1
 #define CHET_IE 2
@@ -116,3 +118,4 @@
 #define CHIOINITELEM _IO('c', 17)
 #define CHIOSVOLTAG _IOW('c', 18, struct changer_set_voltag)
 #define CHIOGVPARAMS _IOR('c', 19, struct changer_vendor_params)
+#endif
diff --git a/libc/kernel/uapi/linux/cyclades.h b/libc/kernel/uapi/linux/cyclades.h
index 50ea706..60bc4af 100644
--- a/libc/kernel/uapi/linux/cyclades.h
+++ b/libc/kernel/uapi/linux/cyclades.h
@@ -26,9 +26,9 @@
   unsigned long char_last;
 };
 struct cyclades_idle_stats {
-  __kernel_time_t in_use;
-  __kernel_time_t recv_idle;
-  __kernel_time_t xmit_idle;
+  __kernel_old_time_t in_use;
+  __kernel_old_time_t recv_idle;
+  __kernel_old_time_t xmit_idle;
   unsigned long recv_bytes;
   unsigned long xmit_bytes;
   unsigned long overruns;
diff --git a/libc/kernel/uapi/linux/devlink.h b/libc/kernel/uapi/linux/devlink.h
index beab9fd..b08fa8a 100644
--- a/libc/kernel/uapi/linux/devlink.h
+++ b/libc/kernel/uapi/linux/devlink.h
@@ -307,6 +307,9 @@
   DEVLINK_ATTR_TRAP_GROUP_NAME,
   DEVLINK_ATTR_RELOAD_FAILED,
   DEVLINK_ATTR_HEALTH_REPORTER_DUMP_TS_NS,
+  DEVLINK_ATTR_NETNS_FD,
+  DEVLINK_ATTR_NETNS_PID,
+  DEVLINK_ATTR_NETNS_ID,
   __DEVLINK_ATTR_MAX,
   DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1
 };
diff --git a/libc/kernel/uapi/linux/ethtool.h b/libc/kernel/uapi/linux/ethtool.h
index 28209e3..cc951d1 100644
--- a/libc/kernel/uapi/linux/ethtool.h
+++ b/libc/kernel/uapi/linux/ethtool.h
@@ -610,6 +610,11 @@
   ETHTOOL_LINK_MODE_200000baseCR4_Full_BIT = 66,
   ETHTOOL_LINK_MODE_100baseT1_Full_BIT = 67,
   ETHTOOL_LINK_MODE_1000baseT1_Full_BIT = 68,
+  ETHTOOL_LINK_MODE_400000baseKR8_Full_BIT = 69,
+  ETHTOOL_LINK_MODE_400000baseSR8_Full_BIT = 70,
+  ETHTOOL_LINK_MODE_400000baseLR8_ER8_FR8_Full_BIT = 71,
+  ETHTOOL_LINK_MODE_400000baseDR8_Full_BIT = 72,
+  ETHTOOL_LINK_MODE_400000baseCR8_Full_BIT = 73,
   __ETHTOOL_LINK_MODE_MASK_NBITS
 };
 #define __ETHTOOL_LINK_MODE_LEGACY_MASK(base_name) (1UL << (ETHTOOL_LINK_MODE_ ##base_name ##_BIT))
@@ -689,6 +694,7 @@
 #define SPEED_56000 56000
 #define SPEED_100000 100000
 #define SPEED_200000 200000
+#define SPEED_400000 400000
 #define SPEED_UNKNOWN - 1
 #define DUPLEX_HALF 0x00
 #define DUPLEX_FULL 0x01
diff --git a/libc/kernel/uapi/linux/fcntl.h b/libc/kernel/uapi/linux/fcntl.h
index e2045c8..d0f19c8 100644
--- a/libc/kernel/uapi/linux/fcntl.h
+++ b/libc/kernel/uapi/linux/fcntl.h
@@ -37,12 +37,13 @@
 #define F_SET_RW_HINT (F_LINUX_SPECIFIC_BASE + 12)
 #define F_GET_FILE_RW_HINT (F_LINUX_SPECIFIC_BASE + 13)
 #define F_SET_FILE_RW_HINT (F_LINUX_SPECIFIC_BASE + 14)
-#define RWF_WRITE_LIFE_NOT_SET 0
+#define RWH_WRITE_LIFE_NOT_SET 0
 #define RWH_WRITE_LIFE_NONE 1
 #define RWH_WRITE_LIFE_SHORT 2
 #define RWH_WRITE_LIFE_MEDIUM 3
 #define RWH_WRITE_LIFE_LONG 4
 #define RWH_WRITE_LIFE_EXTREME 5
+#define RWF_WRITE_LIFE_NOT_SET RWH_WRITE_LIFE_NOT_SET
 #define DN_ACCESS 0x00000001
 #define DN_MODIFY 0x00000002
 #define DN_CREATE 0x00000004
diff --git a/libc/kernel/uapi/linux/fscrypt.h b/libc/kernel/uapi/linux/fscrypt.h
index 75a554e..f91ce85 100644
--- a/libc/kernel/uapi/linux/fscrypt.h
+++ b/libc/kernel/uapi/linux/fscrypt.h
@@ -83,7 +83,9 @@
 struct fscrypt_add_key_arg {
   struct fscrypt_key_specifier key_spec;
   __u32 raw_size;
-  __u32 __reserved[9];
+  __u32 __reserved[8];
+#define __FSCRYPT_ADD_KEY_FLAG_HW_WRAPPED 0x00000001
+  __u32 __flags;
   __u8 raw[];
 };
 struct fscrypt_remove_key_arg {
diff --git a/libc/kernel/uapi/linux/gen_stats.h b/libc/kernel/uapi/linux/gen_stats.h
index 0b6c228..2df6616 100644
--- a/libc/kernel/uapi/linux/gen_stats.h
+++ b/libc/kernel/uapi/linux/gen_stats.h
@@ -28,6 +28,7 @@
   TCA_STATS_RATE_EST64,
   TCA_STATS_PAD,
   TCA_STATS_BASIC_HW,
+  TCA_STATS_PKT64,
   __TCA_STATS_MAX,
 };
 #define TCA_STATS_MAX (__TCA_STATS_MAX - 1)
@@ -35,10 +36,6 @@
   __u64 bytes;
   __u32 packets;
 };
-struct gnet_stats_basic_packed {
-  __u64 bytes;
-  __u32 packets;
-} __attribute__((packed));
 struct gnet_stats_rate_est {
   __u32 bps;
   __u32 pps;
diff --git a/libc/kernel/uapi/linux/gpio.h b/libc/kernel/uapi/linux/gpio.h
index 1e03277..773f409 100644
--- a/libc/kernel/uapi/linux/gpio.h
+++ b/libc/kernel/uapi/linux/gpio.h
@@ -30,6 +30,9 @@
 #define GPIOLINE_FLAG_ACTIVE_LOW (1UL << 2)
 #define GPIOLINE_FLAG_OPEN_DRAIN (1UL << 3)
 #define GPIOLINE_FLAG_OPEN_SOURCE (1UL << 4)
+#define GPIOLINE_FLAG_BIAS_PULL_UP (1UL << 5)
+#define GPIOLINE_FLAG_BIAS_PULL_DOWN (1UL << 6)
+#define GPIOLINE_FLAG_BIAS_DISABLE (1UL << 7)
 struct gpioline_info {
   __u32 line_offset;
   __u32 flags;
@@ -42,6 +45,9 @@
 #define GPIOHANDLE_REQUEST_ACTIVE_LOW (1UL << 2)
 #define GPIOHANDLE_REQUEST_OPEN_DRAIN (1UL << 3)
 #define GPIOHANDLE_REQUEST_OPEN_SOURCE (1UL << 4)
+#define GPIOHANDLE_REQUEST_BIAS_PULL_UP (1UL << 5)
+#define GPIOHANDLE_REQUEST_BIAS_PULL_DOWN (1UL << 6)
+#define GPIOHANDLE_REQUEST_BIAS_DISABLE (1UL << 7)
 struct gpiohandle_request {
   __u32 lineoffsets[GPIOHANDLES_MAX];
   __u32 flags;
@@ -50,6 +56,12 @@
   __u32 lines;
   int fd;
 };
+struct gpiohandle_config {
+  __u32 flags;
+  __u8 default_values[GPIOHANDLES_MAX];
+  __u32 padding[4];
+};
+#define GPIOHANDLE_SET_CONFIG_IOCTL _IOWR(0xB4, 0x0a, struct gpiohandle_config)
 struct gpiohandle_data {
   __u8 values[GPIOHANDLES_MAX];
 };
diff --git a/libc/kernel/uapi/linux/if.h b/libc/kernel/uapi/linux/if.h
index 15de690..12967f7 100644
--- a/libc/kernel/uapi/linux/if.h
+++ b/libc/kernel/uapi/linux/if.h
@@ -27,6 +27,7 @@
 #define IFNAMSIZ 16
 #endif
 #define IFALIASZ 256
+#define ALTIFNAMSIZ 128
 #include <linux/hdlc/ioctl.h>
 #if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO != 0 || __UAPI_DEF_IF_NET_DEVICE_FLAGS != 0
 enum net_device_flags {
diff --git a/libc/kernel/uapi/linux/if_link.h b/libc/kernel/uapi/linux/if_link.h
index 45ef92b..7843fb5 100644
--- a/libc/kernel/uapi/linux/if_link.h
+++ b/libc/kernel/uapi/linux/if_link.h
@@ -144,6 +144,8 @@
   IFLA_NEW_IFINDEX,
   IFLA_MIN_MTU,
   IFLA_MAX_MTU,
+  IFLA_PROP_LIST,
+  IFLA_ALT_IFNAME,
   __IFLA_MAX
 };
 #define IFLA_MAX (__IFLA_MAX - 1)
diff --git a/libc/kernel/uapi/linux/input-event-codes.h b/libc/kernel/uapi/linux/input-event-codes.h
index 0230c11..ee0e92f 100644
--- a/libc/kernel/uapi/linux/input-event-codes.h
+++ b/libc/kernel/uapi/linux/input-event-codes.h
@@ -571,6 +571,48 @@
 #define KEY_SLOWREVERSE 0x276
 #define KEY_DATA 0x277
 #define KEY_ONSCREEN_KEYBOARD 0x278
+#define KEY_PRIVACY_SCREEN_TOGGLE 0x279
+#define KEY_MACRO1 0x290
+#define KEY_MACRO2 0x291
+#define KEY_MACRO3 0x292
+#define KEY_MACRO4 0x293
+#define KEY_MACRO5 0x294
+#define KEY_MACRO6 0x295
+#define KEY_MACRO7 0x296
+#define KEY_MACRO8 0x297
+#define KEY_MACRO9 0x298
+#define KEY_MACRO10 0x299
+#define KEY_MACRO11 0x29a
+#define KEY_MACRO12 0x29b
+#define KEY_MACRO13 0x29c
+#define KEY_MACRO14 0x29d
+#define KEY_MACRO15 0x29e
+#define KEY_MACRO16 0x29f
+#define KEY_MACRO17 0x2a0
+#define KEY_MACRO18 0x2a1
+#define KEY_MACRO19 0x2a2
+#define KEY_MACRO20 0x2a3
+#define KEY_MACRO21 0x2a4
+#define KEY_MACRO22 0x2a5
+#define KEY_MACRO23 0x2a6
+#define KEY_MACRO24 0x2a7
+#define KEY_MACRO25 0x2a8
+#define KEY_MACRO26 0x2a9
+#define KEY_MACRO27 0x2aa
+#define KEY_MACRO28 0x2ab
+#define KEY_MACRO29 0x2ac
+#define KEY_MACRO30 0x2ad
+#define KEY_MACRO_RECORD_START 0x2b0
+#define KEY_MACRO_RECORD_STOP 0x2b1
+#define KEY_MACRO_PRESET_CYCLE 0x2b2
+#define KEY_MACRO_PRESET1 0x2b3
+#define KEY_MACRO_PRESET2 0x2b4
+#define KEY_MACRO_PRESET3 0x2b5
+#define KEY_KBD_LCD_MENU1 0x2b8
+#define KEY_KBD_LCD_MENU2 0x2b9
+#define KEY_KBD_LCD_MENU3 0x2ba
+#define KEY_KBD_LCD_MENU4 0x2bb
+#define KEY_KBD_LCD_MENU5 0x2bc
 #define BTN_TRIGGER_HAPPY 0x2c0
 #define BTN_TRIGGER_HAPPY1 0x2c0
 #define BTN_TRIGGER_HAPPY2 0x2c1
diff --git a/libc/kernel/uapi/linux/input.h b/libc/kernel/uapi/linux/input.h
index f138f64..fe17226 100644
--- a/libc/kernel/uapi/linux/input.h
+++ b/libc/kernel/uapi/linux/input.h
@@ -32,6 +32,7 @@
   __kernel_ulong_t __sec;
 #if defined(__sparc__) && defined(__arch64__)
   unsigned int __usec;
+  unsigned int __pad;
 #else
   __kernel_ulong_t __usec;
 #endif
diff --git a/libc/kernel/uapi/linux/io_uring.h b/libc/kernel/uapi/linux/io_uring.h
index 7ae31df..0639a80 100644
--- a/libc/kernel/uapi/linux/io_uring.h
+++ b/libc/kernel/uapi/linux/io_uring.h
@@ -25,7 +25,10 @@
   __u8 flags;
   __u16 ioprio;
   __s32 fd;
-  __u64 off;
+  union {
+    __u64 off;
+    __u64 addr2;
+  };
   __u64 addr;
   __u32 len;
   union {
@@ -35,6 +38,8 @@
     __u32 sync_range_flags;
     __u32 msg_flags;
     __u32 timeout_flags;
+    __u32 accept_flags;
+    __u32 cancel_flags;
   };
   __u64 user_data;
   union {
@@ -45,22 +50,33 @@
 #define IOSQE_FIXED_FILE (1U << 0)
 #define IOSQE_IO_DRAIN (1U << 1)
 #define IOSQE_IO_LINK (1U << 2)
+#define IOSQE_IO_HARDLINK (1U << 3)
 #define IORING_SETUP_IOPOLL (1U << 0)
 #define IORING_SETUP_SQPOLL (1U << 1)
 #define IORING_SETUP_SQ_AFF (1U << 2)
-#define IORING_OP_NOP 0
-#define IORING_OP_READV 1
-#define IORING_OP_WRITEV 2
-#define IORING_OP_FSYNC 3
-#define IORING_OP_READ_FIXED 4
-#define IORING_OP_WRITE_FIXED 5
-#define IORING_OP_POLL_ADD 6
-#define IORING_OP_POLL_REMOVE 7
-#define IORING_OP_SYNC_FILE_RANGE 8
-#define IORING_OP_SENDMSG 9
-#define IORING_OP_RECVMSG 10
-#define IORING_OP_TIMEOUT 11
+#define IORING_SETUP_CQSIZE (1U << 3)
+enum {
+  IORING_OP_NOP,
+  IORING_OP_READV,
+  IORING_OP_WRITEV,
+  IORING_OP_FSYNC,
+  IORING_OP_READ_FIXED,
+  IORING_OP_WRITE_FIXED,
+  IORING_OP_POLL_ADD,
+  IORING_OP_POLL_REMOVE,
+  IORING_OP_SYNC_FILE_RANGE,
+  IORING_OP_SENDMSG,
+  IORING_OP_RECVMSG,
+  IORING_OP_TIMEOUT,
+  IORING_OP_TIMEOUT_REMOVE,
+  IORING_OP_ACCEPT,
+  IORING_OP_ASYNC_CANCEL,
+  IORING_OP_LINK_TIMEOUT,
+  IORING_OP_CONNECT,
+  IORING_OP_LAST,
+};
 #define IORING_FSYNC_DATASYNC (1U << 0)
+#define IORING_TIMEOUT_ABS (1U << 0)
 struct io_uring_cqe {
   __u64 user_data;
   __s32 res;
@@ -104,10 +120,18 @@
   struct io_cqring_offsets cq_off;
 };
 #define IORING_FEAT_SINGLE_MMAP (1U << 0)
+#define IORING_FEAT_NODROP (1U << 1)
+#define IORING_FEAT_SUBMIT_STABLE (1U << 2)
 #define IORING_REGISTER_BUFFERS 0
 #define IORING_UNREGISTER_BUFFERS 1
 #define IORING_REGISTER_FILES 2
 #define IORING_UNREGISTER_FILES 3
 #define IORING_REGISTER_EVENTFD 4
 #define IORING_UNREGISTER_EVENTFD 5
+#define IORING_REGISTER_FILES_UPDATE 6
+struct io_uring_files_update {
+  __u32 offset;
+  __u32 resv;
+  __aligned_u64 fds;
+};
 #endif
diff --git a/libc/kernel/uapi/linux/iommu.h b/libc/kernel/uapi/linux/iommu.h
index 3c7849a..54452c3 100644
--- a/libc/kernel/uapi/linux/iommu.h
+++ b/libc/kernel/uapi/linux/iommu.h
@@ -83,4 +83,70 @@
   __u32 grpid;
   __u32 code;
 };
+enum iommu_inv_granularity {
+  IOMMU_INV_GRANU_DOMAIN,
+  IOMMU_INV_GRANU_PASID,
+  IOMMU_INV_GRANU_ADDR,
+  IOMMU_INV_GRANU_NR,
+};
+struct iommu_inv_addr_info {
+#define IOMMU_INV_ADDR_FLAGS_PASID (1 << 0)
+#define IOMMU_INV_ADDR_FLAGS_ARCHID (1 << 1)
+#define IOMMU_INV_ADDR_FLAGS_LEAF (1 << 2)
+  __u32 flags;
+  __u32 archid;
+  __u64 pasid;
+  __u64 addr;
+  __u64 granule_size;
+  __u64 nb_granules;
+};
+struct iommu_inv_pasid_info {
+#define IOMMU_INV_PASID_FLAGS_PASID (1 << 0)
+#define IOMMU_INV_PASID_FLAGS_ARCHID (1 << 1)
+  __u32 flags;
+  __u32 archid;
+  __u64 pasid;
+};
+struct iommu_cache_invalidate_info {
+#define IOMMU_CACHE_INVALIDATE_INFO_VERSION_1 1
+  __u32 version;
+#define IOMMU_CACHE_INV_TYPE_IOTLB (1 << 0)
+#define IOMMU_CACHE_INV_TYPE_DEV_IOTLB (1 << 1)
+#define IOMMU_CACHE_INV_TYPE_PASID (1 << 2)
+#define IOMMU_CACHE_INV_TYPE_NR (3)
+  __u8 cache;
+  __u8 granularity;
+  __u8 padding[2];
+  union {
+    struct iommu_inv_pasid_info pasid_info;
+    struct iommu_inv_addr_info addr_info;
+  };
+};
+struct iommu_gpasid_bind_data_vtd {
+#define IOMMU_SVA_VTD_GPASID_SRE (1 << 0)
+#define IOMMU_SVA_VTD_GPASID_EAFE (1 << 1)
+#define IOMMU_SVA_VTD_GPASID_PCD (1 << 2)
+#define IOMMU_SVA_VTD_GPASID_PWT (1 << 3)
+#define IOMMU_SVA_VTD_GPASID_EMTE (1 << 4)
+#define IOMMU_SVA_VTD_GPASID_CD (1 << 5)
+  __u64 flags;
+  __u32 pat;
+  __u32 emt;
+};
+struct iommu_gpasid_bind_data {
+#define IOMMU_GPASID_BIND_VERSION_1 1
+  __u32 version;
+#define IOMMU_PASID_FORMAT_INTEL_VTD 1
+  __u32 format;
+#define IOMMU_SVA_GPASID_VAL (1 << 0)
+  __u64 flags;
+  __u64 gpgd;
+  __u64 hpasid;
+  __u64 gpasid;
+  __u32 addr_width;
+  __u8 padding[12];
+  union {
+    struct iommu_gpasid_bind_data_vtd vtd;
+  };
+};
 #endif
diff --git a/libc/kernel/uapi/linux/kcov.h b/libc/kernel/uapi/linux/kcov.h
index 40f9912..cf2660b 100644
--- a/libc/kernel/uapi/linux/kcov.h
+++ b/libc/kernel/uapi/linux/kcov.h
@@ -19,9 +19,18 @@
 #ifndef _LINUX_KCOV_IOCTLS_H
 #define _LINUX_KCOV_IOCTLS_H
 #include <linux/types.h>
+struct kcov_remote_arg {
+  __u32 trace_mode;
+  __u32 area_size;
+  __u32 num_handles;
+  __aligned_u64 common_handle;
+  __aligned_u64 handles[0];
+};
+#define KCOV_REMOTE_MAX_HANDLES 0x100
 #define KCOV_INIT_TRACE _IOR('c', 1, unsigned long)
 #define KCOV_ENABLE _IO('c', 100)
 #define KCOV_DISABLE _IO('c', 101)
+#define KCOV_REMOTE_ENABLE _IOW('c', 102, struct kcov_remote_arg)
 enum {
   KCOV_TRACE_PC = 0,
   KCOV_TRACE_CMP = 1,
@@ -29,4 +38,8 @@
 #define KCOV_CMP_CONST (1 << 0)
 #define KCOV_CMP_SIZE(n) ((n) << 1)
 #define KCOV_CMP_MASK KCOV_CMP_SIZE(3)
+#define KCOV_SUBSYSTEM_COMMON (0x00ull << 56)
+#define KCOV_SUBSYSTEM_USB (0x01ull << 56)
+#define KCOV_SUBSYSTEM_MASK (0xffull << 56)
+#define KCOV_INSTANCE_MASK (0xffffffffull)
 #endif
diff --git a/libc/kernel/uapi/linux/kvm.h b/libc/kernel/uapi/linux/kvm.h
index 358a168..b865936 100644
--- a/libc/kernel/uapi/linux/kvm.h
+++ b/libc/kernel/uapi/linux/kvm.h
@@ -182,6 +182,7 @@
 #define KVM_EXIT_S390_STSI 25
 #define KVM_EXIT_IOAPIC_EOI 26
 #define KVM_EXIT_HYPERV 27
+#define KVM_EXIT_ARM_NISV 28
 #define KVM_INTERNAL_ERROR_EMULATION 1
 #define KVM_INTERNAL_ERROR_SIMUL_EX 2
 #define KVM_INTERNAL_ERROR_DELIVERY_EV 3
@@ -304,6 +305,10 @@
       __u8 vector;
     } eoi;
     struct kvm_hyperv_exit hyperv;
+    struct {
+      __u64 esr_iss;
+      __u64 fault_ipa;
+    } arm_nisv;
     char padding[256];
   };
 #define SYNC_REGS_SIZE_BYTES 2048
@@ -780,6 +785,9 @@
 #define KVM_CAP_PMU_EVENT_FILTER 173
 #define KVM_CAP_ARM_IRQ_LINE_LAYOUT_2 174
 #define KVM_CAP_HYPERV_DIRECT_TLBFLUSH 175
+#define KVM_CAP_PPC_GUEST_DEBUG_SSTEP 176
+#define KVM_CAP_ARM_NISV_TO_USER 177
+#define KVM_CAP_ARM_INJECT_EXT_DABT 178
 #ifdef KVM_CAP_IRQ_ROUTING
 struct kvm_irq_routing_irqchip {
   __u32 irqchip;
@@ -954,6 +962,8 @@
 #define KVM_DEV_TYPE_ARM_VGIC_ITS KVM_DEV_TYPE_ARM_VGIC_ITS
   KVM_DEV_TYPE_XIVE,
 #define KVM_DEV_TYPE_XIVE KVM_DEV_TYPE_XIVE
+  KVM_DEV_TYPE_ARM_PV_TIME,
+#define KVM_DEV_TYPE_ARM_PV_TIME KVM_DEV_TYPE_ARM_PV_TIME
   KVM_DEV_TYPE_MAX,
 };
 struct kvm_vfio_spapr_tce {
@@ -1024,6 +1034,7 @@
 #define KVM_PPC_GET_RMMU_INFO _IOW(KVMIO, 0xb0, struct kvm_ppc_rmmu_info)
 #define KVM_PPC_GET_CPU_CHAR _IOR(KVMIO, 0xb1, struct kvm_ppc_cpu_char)
 #define KVM_SET_PMU_EVENT_FILTER _IOW(KVMIO, 0xb2, struct kvm_pmu_event_filter)
+#define KVM_PPC_SVM_OFF _IO(KVMIO, 0xb3)
 #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)
diff --git a/libc/kernel/uapi/linux/lwtunnel.h b/libc/kernel/uapi/linux/lwtunnel.h
index 05cc4fd..f1e2ab8 100644
--- a/libc/kernel/uapi/linux/lwtunnel.h
+++ b/libc/kernel/uapi/linux/lwtunnel.h
@@ -40,6 +40,7 @@
   LWTUNNEL_IP_TOS,
   LWTUNNEL_IP_FLAGS,
   LWTUNNEL_IP_PAD,
+  LWTUNNEL_IP_OPTS,
   __LWTUNNEL_IP_MAX,
 };
 #define LWTUNNEL_IP_MAX (__LWTUNNEL_IP_MAX - 1)
@@ -52,10 +53,42 @@
   LWTUNNEL_IP6_TC,
   LWTUNNEL_IP6_FLAGS,
   LWTUNNEL_IP6_PAD,
+  LWTUNNEL_IP6_OPTS,
   __LWTUNNEL_IP6_MAX,
 };
 #define LWTUNNEL_IP6_MAX (__LWTUNNEL_IP6_MAX - 1)
 enum {
+  LWTUNNEL_IP_OPTS_UNSPEC,
+  LWTUNNEL_IP_OPTS_GENEVE,
+  LWTUNNEL_IP_OPTS_VXLAN,
+  LWTUNNEL_IP_OPTS_ERSPAN,
+  __LWTUNNEL_IP_OPTS_MAX,
+};
+#define LWTUNNEL_IP_OPTS_MAX (__LWTUNNEL_IP_OPTS_MAX - 1)
+enum {
+  LWTUNNEL_IP_OPT_GENEVE_UNSPEC,
+  LWTUNNEL_IP_OPT_GENEVE_CLASS,
+  LWTUNNEL_IP_OPT_GENEVE_TYPE,
+  LWTUNNEL_IP_OPT_GENEVE_DATA,
+  __LWTUNNEL_IP_OPT_GENEVE_MAX,
+};
+#define LWTUNNEL_IP_OPT_GENEVE_MAX (__LWTUNNEL_IP_OPT_GENEVE_MAX - 1)
+enum {
+  LWTUNNEL_IP_OPT_VXLAN_UNSPEC,
+  LWTUNNEL_IP_OPT_VXLAN_GBP,
+  __LWTUNNEL_IP_OPT_VXLAN_MAX,
+};
+#define LWTUNNEL_IP_OPT_VXLAN_MAX (__LWTUNNEL_IP_OPT_VXLAN_MAX - 1)
+enum {
+  LWTUNNEL_IP_OPT_ERSPAN_UNSPEC,
+  LWTUNNEL_IP_OPT_ERSPAN_VER,
+  LWTUNNEL_IP_OPT_ERSPAN_INDEX,
+  LWTUNNEL_IP_OPT_ERSPAN_DIR,
+  LWTUNNEL_IP_OPT_ERSPAN_HWID,
+  __LWTUNNEL_IP_OPT_ERSPAN_MAX,
+};
+#define LWTUNNEL_IP_OPT_ERSPAN_MAX (__LWTUNNEL_IP_OPT_ERSPAN_MAX - 1)
+enum {
   LWT_BPF_PROG_UNSPEC,
   LWT_BPF_PROG_FD,
   LWT_BPF_PROG_NAME,
diff --git a/libc/kernel/uapi/linux/magic.h b/libc/kernel/uapi/linux/magic.h
index ebbb58c..ca1daea 100644
--- a/libc/kernel/uapi/linux/magic.h
+++ b/libc/kernel/uapi/linux/magic.h
@@ -98,4 +98,5 @@
 #define ZSMALLOC_MAGIC 0x58295829
 #define DMA_BUF_MAGIC 0x444d4142
 #define Z3FOLD_MAGIC 0x33
+#define PPC_CMM_MAGIC 0xc7571590
 #endif
diff --git a/libc/kernel/uapi/linux/msg.h b/libc/kernel/uapi/linux/msg.h
index 20d8d4f..bb32b93 100644
--- a/libc/kernel/uapi/linux/msg.h
+++ b/libc/kernel/uapi/linux/msg.h
@@ -29,9 +29,9 @@
   struct __kernel_legacy_ipc_perm msg_perm;
   struct msg * msg_first;
   struct msg * msg_last;
-  __kernel_time_t msg_stime;
-  __kernel_time_t msg_rtime;
-  __kernel_time_t msg_ctime;
+  __kernel_old_time_t msg_stime;
+  __kernel_old_time_t msg_rtime;
+  __kernel_old_time_t msg_ctime;
   unsigned long msg_lcbytes;
   unsigned long msg_lqbytes;
   unsigned short msg_cbytes;
diff --git a/libc/kernel/uapi/linux/netfilter/ipset/ip_set.h b/libc/kernel/uapi/linux/netfilter/ipset/ip_set.h
index 2c5aeeb..a6e1bce 100644
--- a/libc/kernel/uapi/linux/netfilter/ipset/ip_set.h
+++ b/libc/kernel/uapi/linux/netfilter/ipset/ip_set.h
@@ -178,6 +178,8 @@
   IPSET_FLAG_WITH_FORCEADD = (1 << IPSET_FLAG_BIT_WITH_FORCEADD),
   IPSET_FLAG_BIT_WITH_SKBINFO = 6,
   IPSET_FLAG_WITH_SKBINFO = (1 << IPSET_FLAG_BIT_WITH_SKBINFO),
+  IPSET_FLAG_BIT_IFACE_WILDCARD = 7,
+  IPSET_FLAG_IFACE_WILDCARD = (1 << IPSET_FLAG_BIT_IFACE_WILDCARD),
   IPSET_FLAG_CADT_MAX = 15,
 };
 enum ipset_create_flags {
diff --git a/libc/kernel/uapi/linux/netfilter/nf_tables.h b/libc/kernel/uapi/linux/netfilter/nf_tables.h
index a0b1a08..2fe11b0 100644
--- a/libc/kernel/uapi/linux/netfilter/nf_tables.h
+++ b/libc/kernel/uapi/linux/netfilter/nf_tables.h
@@ -98,6 +98,7 @@
   NFTA_HOOK_HOOKNUM,
   NFTA_HOOK_PRIORITY,
   NFTA_HOOK_DEV,
+  NFTA_HOOK_DEVS,
   __NFTA_HOOK_MAX
 };
 #define NFTA_HOOK_MAX (__NFTA_HOOK_MAX - 1)
@@ -791,6 +792,7 @@
   NFTA_FLOWTABLE_USE,
   NFTA_FLOWTABLE_HANDLE,
   NFTA_FLOWTABLE_PAD,
+  NFTA_FLOWTABLE_FLAGS,
   __NFTA_FLOWTABLE_MAX
 };
 #define NFTA_FLOWTABLE_MAX (__NFTA_FLOWTABLE_MAX - 1)
diff --git a/libc/kernel/uapi/linux/netfilter/xt_sctp.h b/libc/kernel/uapi/linux/netfilter/xt_sctp.h
index 14adeb0..98dd0d1 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_sctp.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_sctp.h
@@ -43,10 +43,10 @@
   __u32 invflags;
 };
 #define bytes(type) (sizeof(type) * 8)
-#define SCTP_CHUNKMAP_SET(chunkmap,type) do { (chunkmap)[type / bytes(__u32)] |= 1 << (type % bytes(__u32)); } while(0)
-#define SCTP_CHUNKMAP_CLEAR(chunkmap,type) do { (chunkmap)[type / bytes(__u32)] &= ~(1 << (type % bytes(__u32))); } while(0)
+#define SCTP_CHUNKMAP_SET(chunkmap,type) do { (chunkmap)[type / bytes(__u32)] |= 1u << (type % bytes(__u32)); } while(0)
+#define SCTP_CHUNKMAP_CLEAR(chunkmap,type) do { (chunkmap)[type / bytes(__u32)] &= ~(1u << (type % bytes(__u32))); } while(0)
 #define SCTP_CHUNKMAP_IS_SET(chunkmap,type) \
-({ ((chunkmap)[type / bytes(__u32)] & (1 << (type % bytes(__u32)))) ? 1 : 0; \
+({ ((chunkmap)[type / bytes(__u32)] & (1u << (type % bytes(__u32)))) ? 1 : 0; \
 })
 #define SCTP_CHUNKMAP_RESET(chunkmap) memset((chunkmap), 0, sizeof(chunkmap))
 #define SCTP_CHUNKMAP_SET_ALL(chunkmap) memset((chunkmap), ~0U, sizeof(chunkmap))
diff --git a/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h b/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
index a417d9e..033c519 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
@@ -121,6 +121,6 @@
   struct ipt_entry entrytable[0];
 };
 static __inline__ struct xt_entry_target * ipt_get_target(struct ipt_entry * e) {
-  return(void *) e + e->target_offset;
+  return(struct xt_entry_target *) ((char *) e + e->target_offset);
 }
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h b/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
index ee9c542..b3f426d 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
@@ -141,6 +141,6 @@
   struct ip6t_entry entrytable[0];
 };
 static __inline__ struct xt_entry_target * ip6t_get_target(struct ip6t_entry * e) {
-  return(void *) e + e->target_offset;
+  return(struct xt_entry_target *) ((char *) e + e->target_offset);
 }
 #endif
diff --git a/libc/kernel/uapi/linux/nl80211.h b/libc/kernel/uapi/linux/nl80211.h
index fa2c035..9292571 100644
--- a/libc/kernel/uapi/linux/nl80211.h
+++ b/libc/kernel/uapi/linux/nl80211.h
@@ -472,6 +472,7 @@
   NL80211_ATTR_HE_OBSS_PD,
   NL80211_ATTR_WIPHY_EDMG_CHANNELS,
   NL80211_ATTR_WIPHY_EDMG_BW_CONFIG,
+  NL80211_ATTR_VLAN_ID,
   __NL80211_ATTR_AFTER_LAST,
   NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST,
   NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
@@ -1342,6 +1343,8 @@
   NL80211_EXT_FEATURE_EXT_KEY_ID,
   NL80211_EXT_FEATURE_STA_TX_PWR,
   NL80211_EXT_FEATURE_SAE_OFFLOAD,
+  NL80211_EXT_FEATURE_VLAN_OFFLOAD,
+  NL80211_EXT_FEATURE_AQL,
   NUM_NL80211_EXT_FEATURES,
   MAX_NL80211_EXT_FEATURES = NUM_NL80211_EXT_FEATURES - 1
 };
diff --git a/libc/kernel/uapi/linux/openvswitch.h b/libc/kernel/uapi/linux/openvswitch.h
index 581a371..99a987d 100644
--- a/libc/kernel/uapi/linux/openvswitch.h
+++ b/libc/kernel/uapi/linux/openvswitch.h
@@ -92,6 +92,7 @@
   OVS_PACKET_ATTR_PROBE,
   OVS_PACKET_ATTR_MRU,
   OVS_PACKET_ATTR_LEN,
+  OVS_PACKET_ATTR_HASH,
   __OVS_PACKET_ATTR_MAX
 };
 #define OVS_PACKET_ATTR_MAX (__OVS_PACKET_ATTR_MAX - 1)
diff --git a/libc/kernel/uapi/linux/pci_regs.h b/libc/kernel/uapi/linux/pci_regs.h
index a3db220..5501de0 100644
--- a/libc/kernel/uapi/linux/pci_regs.h
+++ b/libc/kernel/uapi/linux/pci_regs.h
@@ -21,6 +21,7 @@
 #define PCI_CFG_SPACE_SIZE 256
 #define PCI_CFG_SPACE_EXP_SIZE 4096
 #define PCI_STD_HEADER_SIZEOF 64
+#define PCI_STD_NUM_BARS 6
 #define PCI_VENDOR_ID 0x00
 #define PCI_DEVICE_ID 0x02
 #define PCI_COMMAND 0x04
@@ -574,6 +575,8 @@
 #define PCI_EXP_LNKCTL2_TLS_8_0GT 0x0003
 #define PCI_EXP_LNKCTL2_TLS_16_0GT 0x0004
 #define PCI_EXP_LNKCTL2_TLS_32_0GT 0x0005
+#define PCI_EXP_LNKCTL2_ENTER_COMP 0x0010
+#define PCI_EXP_LNKCTL2_TX_MARGIN 0x0380
 #define PCI_EXP_LNKSTA2 50
 #define PCI_CAP_EXP_ENDPOINT_SIZEOF_V2 52
 #define PCI_EXP_SLTCAP2 52
diff --git a/libc/kernel/uapi/linux/perf_event.h b/libc/kernel/uapi/linux/perf_event.h
index 229184f..4e9e32c 100644
--- a/libc/kernel/uapi/linux/perf_event.h
+++ b/libc/kernel/uapi/linux/perf_event.h
@@ -99,7 +99,8 @@
   PERF_SAMPLE_TRANSACTION = 1U << 17,
   PERF_SAMPLE_REGS_INTR = 1U << 18,
   PERF_SAMPLE_PHYS_ADDR = 1U << 19,
-  PERF_SAMPLE_MAX = 1U << 20,
+  PERF_SAMPLE_AUX = 1U << 20,
+  PERF_SAMPLE_MAX = 1U << 21,
   __PERF_SAMPLE_CALLCHAIN_EARLY = 1ULL << 63,
 };
 enum perf_branch_sample_type_shift {
@@ -188,6 +189,7 @@
 #define PERF_ATTR_SIZE_VER3 96
 #define PERF_ATTR_SIZE_VER4 104
 #define PERF_ATTR_SIZE_VER5 112
+#define PERF_ATTR_SIZE_VER6 120
 struct perf_event_attr {
   __u32 type;
   __u32 size;
@@ -224,6 +226,8 @@
   __u32 aux_watermark;
   __u16 sample_max_stack;
   __u16 __reserved_2;
+  __u32 aux_sample_size;
+  __u32 __reserved_3;
 };
 struct perf_event_query_bpf {
   __u32 ids_len;
diff --git a/libc/kernel/uapi/linux/pkt_cls.h b/libc/kernel/uapi/linux/pkt_cls.h
index cc5518c..dd096d9 100644
--- a/libc/kernel/uapi/linux/pkt_cls.h
+++ b/libc/kernel/uapi/linux/pkt_cls.h
@@ -29,8 +29,10 @@
   TCA_ACT_STATS,
   TCA_ACT_PAD,
   TCA_ACT_COOKIE,
+  TCA_ACT_FLAGS,
   __TCA_ACT_MAX
 };
+#define TCA_ACT_FLAGS_NO_PERCPU_STATS 1
 #define TCA_ACT_MAX __TCA_ACT_MAX
 #define TCA_OLD_COMPAT (TCA_ACT_MAX + 1)
 #define TCA_ACT_MAX_PRIO 32
@@ -456,6 +458,8 @@
 enum {
   TCA_FLOWER_KEY_ENC_OPTS_UNSPEC,
   TCA_FLOWER_KEY_ENC_OPTS_GENEVE,
+  TCA_FLOWER_KEY_ENC_OPTS_VXLAN,
+  TCA_FLOWER_KEY_ENC_OPTS_ERSPAN,
   __TCA_FLOWER_KEY_ENC_OPTS_MAX,
 };
 #define TCA_FLOWER_KEY_ENC_OPTS_MAX (__TCA_FLOWER_KEY_ENC_OPTS_MAX - 1)
@@ -468,6 +472,21 @@
 };
 #define TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX (__TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX - 1)
 enum {
+  TCA_FLOWER_KEY_ENC_OPT_VXLAN_UNSPEC,
+  TCA_FLOWER_KEY_ENC_OPT_VXLAN_GBP,
+  __TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX,
+};
+#define TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX (__TCA_FLOWER_KEY_ENC_OPT_VXLAN_MAX - 1)
+enum {
+  TCA_FLOWER_KEY_ENC_OPT_ERSPAN_UNSPEC,
+  TCA_FLOWER_KEY_ENC_OPT_ERSPAN_VER,
+  TCA_FLOWER_KEY_ENC_OPT_ERSPAN_INDEX,
+  TCA_FLOWER_KEY_ENC_OPT_ERSPAN_DIR,
+  TCA_FLOWER_KEY_ENC_OPT_ERSPAN_HWID,
+  __TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX,
+};
+#define TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX (__TCA_FLOWER_KEY_ENC_OPT_ERSPAN_MAX - 1)
+enum {
   TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT = (1 << 0),
   TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST = (1 << 1),
 };
diff --git a/libc/kernel/uapi/linux/pkt_sched.h b/libc/kernel/uapi/linux/pkt_sched.h
index c287e8c..c965928 100644
--- a/libc/kernel/uapi/linux/pkt_sched.h
+++ b/libc/kernel/uapi/linux/pkt_sched.h
@@ -710,6 +710,7 @@
   TCA_PIE_BETA,
   TCA_PIE_ECN,
   TCA_PIE_BYTEMODE,
+  TCA_PIE_DQ_RATE_ESTIMATOR,
   __TCA_PIE_MAX
 };
 #define TCA_PIE_MAX (__TCA_PIE_MAX - 1)
@@ -717,6 +718,7 @@
   __u64 prob;
   __u32 delay;
   __u32 avg_dq_rate;
+  __u32 dq_rate_estimating;
   __u32 packets_in;
   __u32 dropped;
   __u32 overlimit;
diff --git a/libc/kernel/uapi/linux/ppp-ioctl.h b/libc/kernel/uapi/linux/ppp-ioctl.h
index b0f893b..f188dff 100644
--- a/libc/kernel/uapi/linux/ppp-ioctl.h
+++ b/libc/kernel/uapi/linux/ppp-ioctl.h
@@ -94,6 +94,8 @@
 #define PPPIOCGDEBUG _IOR('t', 65, int)
 #define PPPIOCSDEBUG _IOW('t', 64, int)
 #define PPPIOCGIDLE _IOR('t', 63, struct ppp_idle)
+#define PPPIOCGIDLE32 _IOR('t', 63, struct ppp_idle32)
+#define PPPIOCGIDLE64 _IOR('t', 63, struct ppp_idle64)
 #define PPPIOCNEWUNIT _IOWR('t', 62, int)
 #define PPPIOCATTACH _IOW('t', 61, int)
 #define PPPIOCDETACH _IOW('t', 60, int)
diff --git a/libc/kernel/uapi/linux/ppp_defs.h b/libc/kernel/uapi/linux/ppp_defs.h
index 9cbcaa1..84c23d9 100644
--- a/libc/kernel/uapi/linux/ppp_defs.h
+++ b/libc/kernel/uapi/linux/ppp_defs.h
@@ -105,7 +105,15 @@
   struct compstat d;
 };
 struct ppp_idle {
-  __kernel_time_t xmit_idle;
-  __kernel_time_t recv_idle;
+  __kernel_old_time_t xmit_idle;
+  __kernel_old_time_t recv_idle;
+};
+struct ppp_idle32 {
+  __s32 xmit_idle;
+  __s32 recv_idle;
+};
+struct ppp_idle64 {
+  __s64 xmit_idle;
+  __s64 recv_idle;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/psp-sev.h b/libc/kernel/uapi/linux/psp-sev.h
index b3f88dc..fcdb102 100644
--- a/libc/kernel/uapi/linux/psp-sev.h
+++ b/libc/kernel/uapi/linux/psp-sev.h
@@ -54,6 +54,9 @@
   SEV_RET_HWSEV_RET_PLATFORM,
   SEV_RET_HWSEV_RET_UNSAFE,
   SEV_RET_UNSUPPORTED,
+  SEV_RET_INVALID_PARAM,
+  SEV_RET_RESOURCE_LIMIT,
+  SEV_RET_SECURE_DATA_INVALID,
   SEV_RET_MAX,
 } sev_ret_code;
 struct sev_user_data_status {
diff --git a/libc/kernel/uapi/linux/rtnetlink.h b/libc/kernel/uapi/linux/rtnetlink.h
index b0feb7e..14366de 100644
--- a/libc/kernel/uapi/linux/rtnetlink.h
+++ b/libc/kernel/uapi/linux/rtnetlink.h
@@ -145,6 +145,12 @@
 #define RTM_DELNEXTHOP RTM_DELNEXTHOP
   RTM_GETNEXTHOP,
 #define RTM_GETNEXTHOP RTM_GETNEXTHOP
+  RTM_NEWLINKPROP = 108,
+#define RTM_NEWLINKPROP RTM_NEWLINKPROP
+  RTM_DELLINKPROP,
+#define RTM_DELLINKPROP RTM_DELLINKPROP
+  RTM_GETLINKPROP,
+#define RTM_GETLINKPROP RTM_GETLINKPROP
   __RTM_MAX,
 #define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
 };
diff --git a/libc/kernel/uapi/linux/scc.h b/libc/kernel/uapi/linux/scc.h
index 60aa05d..a2a5503 100644
--- a/libc/kernel/uapi/linux/scc.h
+++ b/libc/kernel/uapi/linux/scc.h
@@ -18,6 +18,7 @@
  ****************************************************************************/
 #ifndef _UAPI_SCC_H
 #define _UAPI_SCC_H
+#include <linux/sockios.h>
 #define PA0HZP 0x00
 #define EAGLE 0x01
 #define PC100 0x02
diff --git a/libc/kernel/uapi/linux/sched.h b/libc/kernel/uapi/linux/sched.h
index 13a34ce..b8f39dd 100644
--- a/libc/kernel/uapi/linux/sched.h
+++ b/libc/kernel/uapi/linux/sched.h
@@ -44,6 +44,7 @@
 #define CLONE_NEWPID 0x20000000
 #define CLONE_NEWNET 0x40000000
 #define CLONE_IO 0x80000000
+#define CLONE_CLEAR_SIGHAND 0x100000000ULL
 #ifndef __ASSEMBLY__
 struct clone_args {
   __aligned_u64 flags;
@@ -54,9 +55,12 @@
   __aligned_u64 stack;
   __aligned_u64 stack_size;
   __aligned_u64 tls;
+  __aligned_u64 set_tid;
+  __aligned_u64 set_tid_size;
 };
 #endif
 #define CLONE_ARGS_SIZE_VER0 64
+#define CLONE_ARGS_SIZE_VER1 80
 #define SCHED_NORMAL 0
 #define SCHED_FIFO 1
 #define SCHED_RR 2
diff --git a/libc/kernel/uapi/linux/sctp.h b/libc/kernel/uapi/linux/sctp.h
index 9a808ef..e3fc7bf 100644
--- a/libc/kernel/uapi/linux/sctp.h
+++ b/libc/kernel/uapi/linux/sctp.h
@@ -63,6 +63,7 @@
 #define SCTP_DEFAULT_SNDINFO 34
 #define SCTP_AUTH_DEACTIVATE_KEY 35
 #define SCTP_REUSE_PORT 36
+#define SCTP_PEER_ADDR_THLDS_V2 37
 #define SCTP_SOCKOPT_BINDX_ADD 100
 #define SCTP_SOCKOPT_BINDX_REM 101
 #define SCTP_SOCKOPT_PEELOFF 102
@@ -90,6 +91,8 @@
 #define SCTP_ASCONF_SUPPORTED 128
 #define SCTP_AUTH_SUPPORTED 129
 #define SCTP_ECN_SUPPORTED 130
+#define SCTP_EXPOSE_POTENTIALLY_FAILED_STATE 131
+#define SCTP_EXPOSE_PF_STATE SCTP_EXPOSE_POTENTIALLY_FAILED_STATE
 #define SCTP_PR_SCTP_NONE 0x0000
 #define SCTP_PR_SCTP_TTL 0x0010
 #define SCTP_PR_SCTP_RTX 0x0020
@@ -230,6 +233,8 @@
   SCTP_ADDR_ADDED,
   SCTP_ADDR_MADE_PRIM,
   SCTP_ADDR_CONFIRMED,
+  SCTP_ADDR_POTENTIALLY_FAILED,
+#define SCTP_ADDR_PF SCTP_ADDR_POTENTIALLY_FAILED
 };
 struct sctp_remote_error {
   __u16 sre_type;
@@ -248,6 +253,15 @@
   sctp_assoc_t ssf_assoc_id;
   __u8 ssf_data[0];
 };
+struct sctp_send_failed_event {
+  __u16 ssf_type;
+  __u16 ssf_flags;
+  __u32 ssf_length;
+  __u32 ssf_error;
+  struct sctp_sndinfo ssfe_info;
+  sctp_assoc_t ssf_assoc_id;
+  __u8 ssf_data[0];
+};
 enum sctp_ssf_flags {
   SCTP_DATA_UNSENT,
   SCTP_DATA_SENT,
@@ -345,6 +359,7 @@
   __u8 sctp_stream_reset_event;
   __u8 sctp_assoc_reset_event;
   __u8 sctp_stream_change_event;
+  __u8 sctp_send_failure_event_event;
 };
 union sctp_notification {
   struct {
@@ -364,6 +379,7 @@
   struct sctp_stream_reset_event sn_strreset_event;
   struct sctp_assoc_reset_event sn_assocreset_event;
   struct sctp_stream_change_event sn_strchange_event;
+  struct sctp_send_failed_event sn_send_failed_event;
 };
 enum sctp_sn_type {
   SCTP_SN_TYPE_BASE = (1 << 15),
@@ -393,7 +409,9 @@
 #define SCTP_ASSOC_RESET_EVENT SCTP_ASSOC_RESET_EVENT
   SCTP_STREAM_CHANGE_EVENT,
 #define SCTP_STREAM_CHANGE_EVENT SCTP_STREAM_CHANGE_EVENT
-  SCTP_SN_TYPE_MAX = SCTP_STREAM_CHANGE_EVENT,
+  SCTP_SEND_FAILED_EVENT,
+#define SCTP_SEND_FAILED_EVENT SCTP_SEND_FAILED_EVENT
+  SCTP_SN_TYPE_MAX = SCTP_SEND_FAILED_EVENT,
 #define SCTP_SN_TYPE_MAX SCTP_SN_TYPE_MAX
 };
 typedef enum sctp_sn_error {
@@ -505,6 +523,7 @@
 enum sctp_spinfo_state {
   SCTP_INACTIVE,
   SCTP_PF,
+#define SCTP_POTENTIALLY_FAILED SCTP_PF
   SCTP_ACTIVE,
   SCTP_UNCONFIRMED,
   SCTP_UNKNOWN = 0xffff
@@ -586,6 +605,13 @@
   __u16 spt_pathmaxrxt;
   __u16 spt_pathpfthld;
 };
+struct sctp_paddrthlds_v2 {
+  sctp_assoc_t spt_assoc_id;
+  struct sockaddr_storage spt_address;
+  __u16 spt_pathmaxrxt;
+  __u16 spt_pathpfthld;
+  __u16 spt_pathcpthld;
+};
 struct sctp_prstatus {
   sctp_assoc_t sprstat_assoc_id;
   __u16 sprstat_sid;
diff --git a/libc/kernel/uapi/linux/seccomp.h b/libc/kernel/uapi/linux/seccomp.h
index a1e577d..6f7cbbe 100644
--- a/libc/kernel/uapi/linux/seccomp.h
+++ b/libc/kernel/uapi/linux/seccomp.h
@@ -60,6 +60,7 @@
   __u32 flags;
   struct seccomp_data data;
 };
+#define SECCOMP_USER_NOTIF_FLAG_CONTINUE (1UL << 0)
 struct seccomp_notif_resp {
   __u64 id;
   __s64 val;
diff --git a/libc/kernel/uapi/linux/sed-opal.h b/libc/kernel/uapi/linux/sed-opal.h
index fc12509..a20197a 100644
--- a/libc/kernel/uapi/linux/sed-opal.h
+++ b/libc/kernel/uapi/linux/sed-opal.h
@@ -96,6 +96,22 @@
   __u64 offset;
   __u64 size;
 };
+enum opal_table_ops {
+  OPAL_READ_TABLE,
+  OPAL_WRITE_TABLE,
+};
+#define OPAL_UID_LENGTH 8
+struct opal_read_write_table {
+  struct opal_key key;
+  const __u64 data;
+  const __u8 table_uid[OPAL_UID_LENGTH];
+  __u64 offset;
+  __u64 size;
+#define OPAL_TABLE_READ (1 << OPAL_READ_TABLE)
+#define OPAL_TABLE_WRITE (1 << OPAL_WRITE_TABLE)
+  __u64 flags;
+  __u64 priv;
+};
 #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)
@@ -111,4 +127,5 @@
 #define IOC_OPAL_PSID_REVERT_TPR _IOW('p', 232, struct opal_key)
 #define IOC_OPAL_MBR_DONE _IOW('p', 233, struct opal_mbr_done)
 #define IOC_OPAL_WRITE_SHADOW_MBR _IOW('p', 234, struct opal_shadow_mbr)
+#define IOC_OPAL_GENERIC_TABLE_RW _IOW('p', 235, struct opal_read_write_table)
 #endif
diff --git a/libc/kernel/uapi/linux/sem.h b/libc/kernel/uapi/linux/sem.h
index 552be4a..98ed1bf 100644
--- a/libc/kernel/uapi/linux/sem.h
+++ b/libc/kernel/uapi/linux/sem.h
@@ -32,8 +32,8 @@
 #define SEM_STAT_ANY 20
 struct __kernel_legacy_semid_ds {
   struct __kernel_legacy_ipc_perm sem_perm;
-  __kernel_time_t sem_otime;
-  __kernel_time_t sem_ctime;
+  __kernel_old_time_t sem_otime;
+  __kernel_old_time_t sem_ctime;
   struct sem * sem_base;
   struct sem_queue * sem_pending;
   struct sem_queue * * sem_pending_last;
diff --git a/libc/kernel/uapi/linux/shm.h b/libc/kernel/uapi/linux/shm.h
index 57394cb..72ee715 100644
--- a/libc/kernel/uapi/linux/shm.h
+++ b/libc/kernel/uapi/linux/shm.h
@@ -30,9 +30,9 @@
 struct __kernel_legacy_shmid_ds {
   struct __kernel_legacy_ipc_perm shm_perm;
   int shm_segsz;
-  __kernel_time_t shm_atime;
-  __kernel_time_t shm_dtime;
-  __kernel_time_t shm_ctime;
+  __kernel_old_time_t shm_atime;
+  __kernel_old_time_t shm_dtime;
+  __kernel_old_time_t shm_ctime;
   __kernel_ipc_pid_t shm_cpid;
   __kernel_ipc_pid_t shm_lpid;
   unsigned short shm_nattch;
diff --git a/libc/kernel/uapi/linux/snmp.h b/libc/kernel/uapi/linux/snmp.h
index 9f500ca..3ec299a 100644
--- a/libc/kernel/uapi/linux/snmp.h
+++ b/libc/kernel/uapi/linux/snmp.h
@@ -286,4 +286,18 @@
   LINUX_MIB_XFRMACQUIREERROR,
   __LINUX_MIB_XFRMMAX
 };
+enum {
+  LINUX_MIB_TLSNUM = 0,
+  LINUX_MIB_TLSCURRTXSW,
+  LINUX_MIB_TLSCURRRXSW,
+  LINUX_MIB_TLSCURRTXDEVICE,
+  LINUX_MIB_TLSCURRRXDEVICE,
+  LINUX_MIB_TLSTXSW,
+  LINUX_MIB_TLSRXSW,
+  LINUX_MIB_TLSTXDEVICE,
+  LINUX_MIB_TLSRXDEVICE,
+  LINUX_MIB_TLSDECRYPTERROR,
+  LINUX_MIB_TLSRXDEVICERESYNC,
+  __LINUX_MIB_TLSMAX
+};
 #endif
diff --git a/libc/kernel/uapi/linux/stat.h b/libc/kernel/uapi/linux/stat.h
index bf728d0..98fdbea 100644
--- a/libc/kernel/uapi/linux/stat.h
+++ b/libc/kernel/uapi/linux/stat.h
@@ -100,4 +100,5 @@
 #define STATX_ATTR_NODUMP 0x00000040
 #define STATX_ATTR_ENCRYPTED 0x00000800
 #define STATX_ATTR_AUTOMOUNT 0x00001000
+#define STATX_ATTR_VERITY 0x00100000
 #endif
diff --git a/libc/kernel/uapi/linux/tc_act/tc_tunnel_key.h b/libc/kernel/uapi/linux/tc_act/tc_tunnel_key.h
index 4511b18..e137ae8 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_tunnel_key.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_tunnel_key.h
@@ -46,6 +46,8 @@
 enum {
   TCA_TUNNEL_KEY_ENC_OPTS_UNSPEC,
   TCA_TUNNEL_KEY_ENC_OPTS_GENEVE,
+  TCA_TUNNEL_KEY_ENC_OPTS_VXLAN,
+  TCA_TUNNEL_KEY_ENC_OPTS_ERSPAN,
   __TCA_TUNNEL_KEY_ENC_OPTS_MAX,
 };
 #define TCA_TUNNEL_KEY_ENC_OPTS_MAX (__TCA_TUNNEL_KEY_ENC_OPTS_MAX - 1)
@@ -57,4 +59,19 @@
   __TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX,
 };
 #define TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX (__TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX - 1)
+enum {
+  TCA_TUNNEL_KEY_ENC_OPT_VXLAN_UNSPEC,
+  TCA_TUNNEL_KEY_ENC_OPT_VXLAN_GBP,
+  __TCA_TUNNEL_KEY_ENC_OPT_VXLAN_MAX,
+};
+#define TCA_TUNNEL_KEY_ENC_OPT_VXLAN_MAX (__TCA_TUNNEL_KEY_ENC_OPT_VXLAN_MAX - 1)
+enum {
+  TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_UNSPEC,
+  TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_VER,
+  TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_INDEX,
+  TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_DIR,
+  TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_HWID,
+  __TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_MAX,
+};
+#define TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_MAX (__TCA_TUNNEL_KEY_ENC_OPT_ERSPAN_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/tcp.h b/libc/kernel/uapi/linux/tcp.h
index 4cae8d8..823583d 100644
--- a/libc/kernel/uapi/linux/tcp.h
+++ b/libc/kernel/uapi/linux/tcp.h
@@ -113,6 +113,12 @@
   TCP_SEND_QUEUE,
   TCP_QUEUES_NR,
 };
+enum tcp_fastopen_client_fail {
+  TFO_STATUS_UNSPEC,
+  TFO_COOKIE_UNAVAILABLE,
+  TFO_DATA_NOT_ACKED,
+  TFO_SYN_RETRANSMITTED,
+};
 #define TCPI_OPT_TIMESTAMPS 1
 #define TCPI_OPT_SACK 2
 #define TCPI_OPT_WSCALE 4
@@ -139,7 +145,7 @@
   __u8 tcpi_backoff;
   __u8 tcpi_options;
   __u8 tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
-  __u8 tcpi_delivery_rate_app_limited : 1;
+  __u8 tcpi_delivery_rate_app_limited : 1, tcpi_fastopen_client_fail : 2;
   __u32 tcpi_rto;
   __u32 tcpi_ato;
   __u32 tcpi_snd_mss;
diff --git a/libc/kernel/uapi/linux/time.h b/libc/kernel/uapi/linux/time.h
index dbf105b..eed430b 100644
--- a/libc/kernel/uapi/linux/time.h
+++ b/libc/kernel/uapi/linux/time.h
@@ -23,12 +23,12 @@
 #ifndef _STRUCT_TIMESPEC
 #define _STRUCT_TIMESPEC
 struct timespec {
-  __kernel_time_t tv_sec;
+  __kernel_old_time_t tv_sec;
   long tv_nsec;
 };
 #endif
 struct timeval {
-  __kernel_time_t tv_sec;
+  __kernel_old_time_t tv_sec;
   __kernel_suseconds_t tv_usec;
 };
 struct timezone {
diff --git a/libc/kernel/uapi/linux/time_types.h b/libc/kernel/uapi/linux/time_types.h
index 425e6ae..8c70a56 100644
--- a/libc/kernel/uapi/linux/time_types.h
+++ b/libc/kernel/uapi/linux/time_types.h
@@ -27,12 +27,10 @@
   struct __kernel_timespec it_interval;
   struct __kernel_timespec it_value;
 };
-#ifndef __kernel_old_timeval
-struct __kernel_old_timeval {
-  __kernel_long_t tv_sec;
-  __kernel_long_t tv_usec;
+struct __kernel_old_timespec {
+  __kernel_old_time_t tv_sec;
+  long tv_nsec;
 };
-#endif
 struct __kernel_sock_timeval {
   __s64 tv_sec;
   __s64 tv_usec;
diff --git a/libc/kernel/uapi/linux/tipc.h b/libc/kernel/uapi/linux/tipc.h
index b66b340..1d092cc 100644
--- a/libc/kernel/uapi/linux/tipc.h
+++ b/libc/kernel/uapi/linux/tipc.h
@@ -112,6 +112,7 @@
 #define TIPC_GROUP_JOIN 135
 #define TIPC_GROUP_LEAVE 136
 #define TIPC_SOCK_RECVQ_USED 137
+#define TIPC_NODELAY 138
 #define TIPC_GROUP_LOOPBACK 0x1
 #define TIPC_GROUP_MEMBER_EVTS 0x2
 struct tipc_group_req {
@@ -136,6 +137,15 @@
   __u32 peer;
   char node_id[TIPC_NODEID_LEN];
 };
+#define TIPC_AEAD_ALG_NAME (32)
+struct tipc_aead_key {
+  char alg_name[TIPC_AEAD_ALG_NAME];
+  unsigned int keylen;
+  char key[];
+};
+#define TIPC_AEAD_KEYLEN_MIN (16 + 4)
+#define TIPC_AEAD_KEYLEN_MAX (32 + 4)
+#define TIPC_AEAD_KEY_SIZE_MAX (sizeof(struct tipc_aead_key) + TIPC_AEAD_KEYLEN_MAX)
 #define TIPC_CFG_SRV 0
 #define TIPC_ZONE_SCOPE 1
 #define TIPC_ADDR_NAMESEQ 1
diff --git a/libc/kernel/uapi/linux/tipc_netlink.h b/libc/kernel/uapi/linux/tipc_netlink.h
index 3721118..61577fa 100644
--- a/libc/kernel/uapi/linux/tipc_netlink.h
+++ b/libc/kernel/uapi/linux/tipc_netlink.h
@@ -44,6 +44,8 @@
   TIPC_NL_PEER_REMOVE,
   TIPC_NL_BEARER_ADD,
   TIPC_NL_UDP_GET_REMOTEIP,
+  TIPC_NL_KEY_SET,
+  TIPC_NL_KEY_FLUSH,
   __TIPC_NL_CMD_MAX,
   TIPC_NL_CMD_MAX = __TIPC_NL_CMD_MAX - 1
 };
@@ -122,6 +124,8 @@
   TIPC_NLA_NODE_UNSPEC,
   TIPC_NLA_NODE_ADDR,
   TIPC_NLA_NODE_UP,
+  TIPC_NLA_NODE_ID,
+  TIPC_NLA_NODE_KEY,
   __TIPC_NLA_NODE_MAX,
   TIPC_NLA_NODE_MAX = __TIPC_NLA_NODE_MAX - 1
 };
diff --git a/libc/kernel/uapi/linux/utime.h b/libc/kernel/uapi/linux/utime.h
index 937e7c3..8ed98b9 100644
--- a/libc/kernel/uapi/linux/utime.h
+++ b/libc/kernel/uapi/linux/utime.h
@@ -20,7 +20,7 @@
 #define _LINUX_UTIME_H
 #include <linux/types.h>
 struct utimbuf {
-  __kernel_time_t actime;
-  __kernel_time_t modtime;
+  __kernel_old_time_t actime;
+  __kernel_old_time_t modtime;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/v4l2-controls.h b/libc/kernel/uapi/linux/v4l2-controls.h
index 9288710..85f3a8b 100644
--- a/libc/kernel/uapi/linux/v4l2-controls.h
+++ b/libc/kernel/uapi/linux/v4l2-controls.h
@@ -870,6 +870,7 @@
 #define V4L2_CID_TEST_PATTERN_GREENR (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 5)
 #define V4L2_CID_TEST_PATTERN_BLUE (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 6)
 #define V4L2_CID_TEST_PATTERN_GREENB (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 7)
+#define V4L2_CID_UNIT_CELL_SIZE (V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 8)
 #define V4L2_CID_IMAGE_PROC_CLASS_BASE (V4L2_CTRL_CLASS_IMAGE_PROC | 0x900)
 #define V4L2_CID_IMAGE_PROC_CLASS (V4L2_CTRL_CLASS_IMAGE_PROC | 1)
 #define V4L2_CID_LINK_FREQ (V4L2_CID_IMAGE_PROC_CLASS_BASE + 1)
diff --git a/libc/kernel/uapi/linux/version.h b/libc/kernel/uapi/linux/version.h
index 7f3f9af..471dcd7 100644
--- a/libc/kernel/uapi/linux/version.h
+++ b/libc/kernel/uapi/linux/version.h
@@ -16,5 +16,5 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#define LINUX_VERSION_CODE 328704
+#define LINUX_VERSION_CODE 328960
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
diff --git a/libc/kernel/uapi/linux/videodev2.h b/libc/kernel/uapi/linux/videodev2.h
index 3d70691..aaf5a70 100644
--- a/libc/kernel/uapi/linux/videodev2.h
+++ b/libc/kernel/uapi/linux/videodev2.h
@@ -147,6 +147,10 @@
   __u32 numerator;
   __u32 denominator;
 };
+struct v4l2_area {
+  __u32 width;
+  __u32 height;
+};
 struct v4l2_capability {
   __u8 driver[16];
   __u8 card[32];
@@ -402,6 +406,7 @@
 #define V4L2_META_FMT_VSP1_HGT v4l2_fourcc('V', 'S', 'P', 'T')
 #define V4L2_META_FMT_UVC v4l2_fourcc('U', 'V', 'C', 'H')
 #define V4L2_META_FMT_D4XX v4l2_fourcc('D', '4', 'X', 'X')
+#define V4L2_META_FMT_VIVID v4l2_fourcc('V', 'I', 'V', 'D')
 #define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe
 #define V4L2_PIX_FMT_FLAG_PREMUL_ALPHA 0x00000001
 struct v4l2_fmtdesc {
@@ -510,6 +515,7 @@
 #define V4L2_BUF_CAP_SUPPORTS_DMABUF (1 << 2)
 #define V4L2_BUF_CAP_SUPPORTS_REQUESTS (1 << 3)
 #define V4L2_BUF_CAP_SUPPORTS_ORPHANED_BUFS (1 << 4)
+#define V4L2_BUF_CAP_SUPPORTS_M2M_HOLD_CAPTURE_BUF (1 << 5)
 struct v4l2_plane {
   __u32 bytesused;
   __u32 length;
@@ -553,6 +559,7 @@
 #define V4L2_BUF_FLAG_ERROR 0x00000040
 #define V4L2_BUF_FLAG_IN_REQUEST 0x00000080
 #define V4L2_BUF_FLAG_TIMECODE 0x00000100
+#define V4L2_BUF_FLAG_M2M_HOLD_CAPTURE_BUF 0x00000200
 #define V4L2_BUF_FLAG_PREPARED 0x00000400
 #define V4L2_BUF_FLAG_NO_CACHE_INVALIDATE 0x00000800
 #define V4L2_BUF_FLAG_NO_CACHE_CLEAN 0x00001000
@@ -854,6 +861,7 @@
     __u8 __user * p_u8;
     __u16 __user * p_u16;
     __u32 __user * p_u32;
+    struct v4l2_area __user * p_area;
     void __user * ptr;
   };
 } __attribute__((packed));
@@ -890,6 +898,7 @@
   V4L2_CTRL_TYPE_U8 = 0x0100,
   V4L2_CTRL_TYPE_U16 = 0x0101,
   V4L2_CTRL_TYPE_U32 = 0x0102,
+  V4L2_CTRL_TYPE_AREA = 0x0106,
 };
 struct v4l2_queryctrl {
   __u32 id;
@@ -1086,6 +1095,7 @@
 #define V4L2_DEC_CMD_STOP (1)
 #define V4L2_DEC_CMD_PAUSE (2)
 #define V4L2_DEC_CMD_RESUME (3)
+#define V4L2_DEC_CMD_FLUSH (4)
 #define V4L2_DEC_CMD_START_MUTE_AUDIO (1 << 0)
 #define V4L2_DEC_CMD_PAUSE_TO_BLACK (1 << 0)
 #define V4L2_DEC_CMD_STOP_TO_BLACK (1 << 0)
diff --git a/libc/kernel/uapi/misc/fastrpc.h b/libc/kernel/uapi/misc/fastrpc.h
index 6f99e63..762eefc 100644
--- a/libc/kernel/uapi/misc/fastrpc.h
+++ b/libc/kernel/uapi/misc/fastrpc.h
@@ -24,6 +24,8 @@
 #define FASTRPC_IOCTL_INVOKE _IOWR('R', 3, struct fastrpc_invoke)
 #define FASTRPC_IOCTL_INIT_ATTACH _IO('R', 4)
 #define FASTRPC_IOCTL_INIT_CREATE _IOWR('R', 5, struct fastrpc_init_create)
+#define FASTRPC_IOCTL_MMAP _IOWR('R', 6, struct fastrpc_req_mmap)
+#define FASTRPC_IOCTL_MUNMAP _IOWR('R', 7, struct fastrpc_req_munmap)
 struct fastrpc_invoke_args {
   __u64 ptr;
   __u64 length;
@@ -47,4 +49,15 @@
   __u32 flags;
   __u64 size;
 };
+struct fastrpc_req_mmap {
+  __s32 fd;
+  __u32 flags;
+  __u64 vaddrin;
+  __u64 size;
+  __u64 vaddrout;
+};
+struct fastrpc_req_munmap {
+  __u64 vaddrout;
+  __u64 size;
+};
 #endif
diff --git a/libc/kernel/uapi/misc/habanalabs.h b/libc/kernel/uapi/misc/habanalabs.h
index ffc8c9f..91849ec 100644
--- a/libc/kernel/uapi/misc/habanalabs.h
+++ b/libc/kernel/uapi/misc/habanalabs.h
@@ -68,7 +68,10 @@
 #define HL_INFO_DEVICE_STATUS 4
 #define HL_INFO_DEVICE_UTILIZATION 6
 #define HL_INFO_HW_EVENTS_AGGREGATE 7
+#define HL_INFO_CLK_RATE 8
+#define HL_INFO_RESET_COUNT 9
 #define HL_INFO_VERSION_MAX_LEN 128
+#define HL_INFO_CARD_NAME_MAX_LEN 16
 struct hl_info_hw_ip_info {
   __u64 sram_base_address;
   __u64 dram_base_address;
@@ -86,6 +89,7 @@
   __u8 dram_enabled;
   __u8 pad[2];
   __u8 armcp_version[HL_INFO_VERSION_MAX_LEN];
+  __u8 card_name[HL_INFO_CARD_NAME_MAX_LEN];
 };
 struct hl_info_dram_usage {
   __u64 dram_free_mem;
@@ -103,6 +107,14 @@
   __u32 utilization;
   __u32 pad;
 };
+struct hl_info_clk_rate {
+  __u32 cur_clk_rate_mhz;
+  __u32 max_clk_rate_mhz;
+};
+struct hl_info_reset_count {
+  __u32 hard_reset_cnt;
+  __u32 soft_reset_cnt;
+};
 struct hl_info_args {
   __u64 return_pointer;
   __u32 return_size;
@@ -115,6 +127,7 @@
 };
 #define HL_CB_OP_CREATE 0
 #define HL_CB_OP_DESTROY 1
+#define HL_MAX_CB_SIZE 0x200000
 struct hl_cb_in {
   __u64 cb_handle;
   __u32 op;
@@ -138,6 +151,7 @@
 };
 #define HL_CS_FLAGS_FORCE_RESTORE 0x1
 #define HL_CS_STATUS_SUCCESS 0
+#define HL_MAX_JOBS_PER_CS 512
 struct hl_cs_in {
   __u64 chunks_restore;
   __u64 chunks_execute;
diff --git a/libc/kernel/uapi/rdma/cxgb3-abi.h b/libc/kernel/uapi/rdma/cxgb3-abi.h
deleted file mode 100644
index 205d748..0000000
--- a/libc/kernel/uapi/rdma/cxgb3-abi.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- ***   This header was automatically generated from a Linux kernel header
- ***   of the same name, to make information necessary for userspace to
- ***   call into the kernel available to libc.  It contains only constants,
- ***   structures, and macros generated from the original header, and thus,
- ***   contains no copyrightable information.
- ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
- ****************************************************************************
- ****************************************************************************/
-#ifndef CXGB3_ABI_USER_H
-#define CXGB3_ABI_USER_H
-#include <linux/types.h>
-#define IWCH_UVERBS_ABI_VERSION 1
-struct iwch_create_cq_req {
-  __aligned_u64 user_rptr_addr;
-};
-struct iwch_create_cq_resp_v0 {
-  __aligned_u64 key;
-  __u32 cqid;
-  __u32 size_log2;
-};
-struct iwch_create_cq_resp {
-  __aligned_u64 key;
-  __u32 cqid;
-  __u32 size_log2;
-  __u32 memsize;
-  __u32 reserved;
-};
-struct iwch_create_qp_resp {
-  __aligned_u64 key;
-  __aligned_u64 db_key;
-  __u32 qpid;
-  __u32 size_log2;
-  __u32 sq_size_log2;
-  __u32 rq_size_log2;
-};
-struct iwch_reg_user_mr_resp {
-  __u32 pbl_addr;
-};
-struct iwch_alloc_pd_resp {
-  __u32 pdid;
-};
-#endif
diff --git a/libc/kernel/uapi/rdma/efa-abi.h b/libc/kernel/uapi/rdma/efa-abi.h
index 1445c9c..39fd55b 100644
--- a/libc/kernel/uapi/rdma/efa-abi.h
+++ b/libc/kernel/uapi/rdma/efa-abi.h
@@ -78,11 +78,16 @@
   __u16 efa_address_handle;
   __u8 reserved_30[2];
 };
+enum {
+  EFA_QUERY_DEVICE_CAPS_RDMA_READ = 1 << 0,
+};
 struct efa_ibv_ex_query_device_resp {
   __u32 comp_mask;
   __u32 max_sq_wr;
   __u32 max_rq_wr;
   __u16 max_sq_sge;
   __u16 max_rq_sge;
+  __u32 max_rdma_size;
+  __u32 device_caps;
 };
 #endif
diff --git a/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h b/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
index 47a548e..1394ed7 100644
--- a/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
+++ b/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
@@ -125,4 +125,25 @@
   __u16 port_cap_flags2;
   __u8 reserved[6];
 };
+enum rdma_driver_id {
+  RDMA_DRIVER_UNKNOWN,
+  RDMA_DRIVER_MLX5,
+  RDMA_DRIVER_MLX4,
+  RDMA_DRIVER_CXGB3,
+  RDMA_DRIVER_CXGB4,
+  RDMA_DRIVER_MTHCA,
+  RDMA_DRIVER_BNXT_RE,
+  RDMA_DRIVER_OCRDMA,
+  RDMA_DRIVER_NES,
+  RDMA_DRIVER_I40IW,
+  RDMA_DRIVER_VMW_PVRDMA,
+  RDMA_DRIVER_QEDR,
+  RDMA_DRIVER_HNS,
+  RDMA_DRIVER_USNIC,
+  RDMA_DRIVER_RXE,
+  RDMA_DRIVER_HFI1,
+  RDMA_DRIVER_QIB,
+  RDMA_DRIVER_EFA,
+  RDMA_DRIVER_SIW,
+};
 #endif
diff --git a/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h b/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
index dcd281a..1cd3339 100644
--- a/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
+++ b/libc/kernel/uapi/rdma/mlx5_user_ioctl_cmds.h
@@ -154,6 +154,7 @@
   MLX5_IB_ATTR_CREATE_FLOW_ARR_FLOW_ACTIONS,
   MLX5_IB_ATTR_CREATE_FLOW_TAG,
   MLX5_IB_ATTR_CREATE_FLOW_ARR_COUNTERS_DEVX,
+  MLX5_IB_ATTR_CREATE_FLOW_ARR_COUNTERS_DEVX_OFFSET,
 };
 enum mlx5_ib_destoy_flow_attrs {
   MLX5_IB_ATTR_DESTROY_FLOW_HANDLE = (1U << UVERBS_ID_NS_SHIFT),
diff --git a/libc/kernel/uapi/rdma/nes-abi.h b/libc/kernel/uapi/rdma/nes-abi.h
deleted file mode 100644
index 724852e..0000000
--- a/libc/kernel/uapi/rdma/nes-abi.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- ***   This header was automatically generated from a Linux kernel header
- ***   of the same name, to make information necessary for userspace to
- ***   call into the kernel available to libc.  It contains only constants,
- ***   structures, and macros generated from the original header, and thus,
- ***   contains no copyrightable information.
- ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
- ****************************************************************************
- ****************************************************************************/
-#ifndef NES_ABI_USER_H
-#define NES_ABI_USER_H
-#include <linux/types.h>
-#define NES_ABI_USERSPACE_VER 2
-#define NES_ABI_KERNEL_VER 2
-struct nes_alloc_ucontext_req {
-  __u32 reserved32;
-  __u8 userspace_ver;
-  __u8 reserved8[3];
-};
-struct nes_alloc_ucontext_resp {
-  __u32 max_pds;
-  __u32 max_qps;
-  __u32 wq_size;
-  __u8 virtwq;
-  __u8 kernel_ver;
-  __u8 reserved[2];
-};
-struct nes_alloc_pd_resp {
-  __u32 pd_id;
-  __u32 mmap_db_index;
-};
-struct nes_create_cq_req {
-  __aligned_u64 user_cq_buffer;
-  __u32 mcrqf;
-  __u8 reserved[4];
-};
-struct nes_create_qp_req {
-  __aligned_u64 user_wqe_buffers;
-  __aligned_u64 user_qp_buffer;
-};
-enum iwnes_memreg_type {
-  IWNES_MEMREG_TYPE_MEM = 0x0000,
-  IWNES_MEMREG_TYPE_QP = 0x0001,
-  IWNES_MEMREG_TYPE_CQ = 0x0002,
-  IWNES_MEMREG_TYPE_MW = 0x0003,
-  IWNES_MEMREG_TYPE_FMR = 0x0004,
-  IWNES_MEMREG_TYPE_FMEM = 0x0005,
-};
-struct nes_mem_reg_req {
-  __u32 reg_type;
-  __u32 reserved;
-};
-struct nes_create_cq_resp {
-  __u32 cq_id;
-  __u32 cq_size;
-  __u32 mmap_db_index;
-  __u32 reserved;
-};
-struct nes_create_qp_resp {
-  __u32 qp_id;
-  __u32 actual_sq_size;
-  __u32 actual_rq_size;
-  __u32 mmap_sq_db_index;
-  __u32 mmap_rq_db_index;
-  __u32 nes_drv_opt;
-};
-#endif
diff --git a/libc/kernel/uapi/rdma/qedr-abi.h b/libc/kernel/uapi/rdma/qedr-abi.h
index 57ad827..fd96309 100644
--- a/libc/kernel/uapi/rdma/qedr-abi.h
+++ b/libc/kernel/uapi/rdma/qedr-abi.h
@@ -20,6 +20,14 @@
 #define __QEDR_USER_H__
 #include <linux/types.h>
 #define QEDR_ABI_VERSION (8)
+enum qedr_alloc_ucontext_flags {
+  QEDR_ALLOC_UCTX_RESERVED = 1 << 0,
+  QEDR_ALLOC_UCTX_DB_REC = 1 << 1
+};
+struct qedr_alloc_ucontext_req {
+  __u32 context_flags;
+  __u32 reserved;
+};
 struct qedr_alloc_ucontext_resp {
   __aligned_u64 db_pa;
   __u32 db_size;
@@ -50,6 +58,7 @@
   __u32 db_offset;
   __u16 icid;
   __u16 reserved;
+  __aligned_u64 db_rec_addr;
 };
 struct qedr_create_qp_ureq {
   __u32 qp_handle_hi;
@@ -68,6 +77,8 @@
   __u16 rq_icid;
   __u32 rq_db2_offset;
   __u32 reserved;
+  __aligned_u64 sq_db_rec_addr;
+  __aligned_u64 rq_db_rec_addr;
 };
 struct qedr_create_srq_ureq {
   __aligned_u64 prod_pair_addr;
@@ -79,4 +90,7 @@
   __u16 reserved0;
   __u32 reserved1;
 };
+struct qedr_user_db_rec {
+  __aligned_u64 db_data;
+};
 #endif
diff --git a/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h b/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
index b779bc8..22adfaa 100644
--- a/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
+++ b/libc/kernel/uapi/rdma/rdma_user_ioctl_cmds.h
@@ -52,25 +52,4 @@
   __u32 reserved2;
   struct ib_uverbs_attr attrs[0];
 };
-enum rdma_driver_id {
-  RDMA_DRIVER_UNKNOWN,
-  RDMA_DRIVER_MLX5,
-  RDMA_DRIVER_MLX4,
-  RDMA_DRIVER_CXGB3,
-  RDMA_DRIVER_CXGB4,
-  RDMA_DRIVER_MTHCA,
-  RDMA_DRIVER_BNXT_RE,
-  RDMA_DRIVER_OCRDMA,
-  RDMA_DRIVER_NES,
-  RDMA_DRIVER_I40IW,
-  RDMA_DRIVER_VMW_PVRDMA,
-  RDMA_DRIVER_QEDR,
-  RDMA_DRIVER_HNS,
-  RDMA_DRIVER_USNIC,
-  RDMA_DRIVER_RXE,
-  RDMA_DRIVER_HFI1,
-  RDMA_DRIVER_QIB,
-  RDMA_DRIVER_EFA,
-  RDMA_DRIVER_SIW,
-};
 #endif
diff --git a/libc/kernel/uapi/rdma/vmw_pvrdma-abi.h b/libc/kernel/uapi/rdma/vmw_pvrdma-abi.h
index fc86778..3b86798 100644
--- a/libc/kernel/uapi/rdma/vmw_pvrdma-abi.h
+++ b/libc/kernel/uapi/rdma/vmw_pvrdma-abi.h
@@ -136,6 +136,10 @@
   __u32 sbuf_size;
   __aligned_u64 qp_addr;
 };
+struct pvrdma_create_qp_resp {
+  __u32 qpn;
+  __u32 qp_handle;
+};
 struct pvrdma_ex_cmp_swap {
   __aligned_u64 swap_val;
   __aligned_u64 compare_val;
diff --git a/libc/kernel/uapi/sound/compress_params.h b/libc/kernel/uapi/sound/compress_params.h
index f5f7e8f..f49b45f 100644
--- a/libc/kernel/uapi/sound/compress_params.h
+++ b/libc/kernel/uapi/sound/compress_params.h
@@ -163,12 +163,21 @@
   __u32 bw;
   __s32 reserved[15];
 } __attribute__((packed, aligned(4)));
+struct snd_dec_flac {
+  __u16 sample_size;
+  __u16 min_blk_size;
+  __u16 max_blk_size;
+  __u16 min_frame_size;
+  __u16 max_frame_size;
+  __u16 reserved;
+} __attribute__((packed, aligned(4)));
 union snd_codec_options {
   struct snd_enc_wma wma;
   struct snd_enc_vorbis vorbis;
   struct snd_enc_real real;
   struct snd_enc_flac flac;
   struct snd_enc_generic generic;
+  struct snd_dec_flac flac_d;
 } __attribute__((packed, aligned(4)));
 struct snd_codec_desc {
   __u32 max_ch;
diff --git a/libc/kernel/uapi/sound/sof/abi.h b/libc/kernel/uapi/sound/sof/abi.h
index f69ebae..f19e4e9 100644
--- a/libc/kernel/uapi/sound/sof/abi.h
+++ b/libc/kernel/uapi/sound/sof/abi.h
@@ -19,7 +19,7 @@
 #ifndef __INCLUDE_UAPI_SOUND_SOF_ABI_H__
 #define __INCLUDE_UAPI_SOUND_SOF_ABI_H__
 #define SOF_ABI_MAJOR 3
-#define SOF_ABI_MINOR 10
+#define SOF_ABI_MINOR 11
 #define SOF_ABI_PATCH 0
 #define SOF_ABI_MAJOR_SHIFT 24
 #define SOF_ABI_MAJOR_MASK 0xff
diff --git a/libc/kernel/uapi/sound/sof/tokens.h b/libc/kernel/uapi/sound/sof/tokens.h
index b4af004..6d8561f 100644
--- a/libc/kernel/uapi/sound/sof/tokens.h
+++ b/libc/kernel/uapi/sound/sof/tokens.h
@@ -68,5 +68,9 @@
 #define SOF_TKN_PROCESS_TYPE 900
 #define SOF_TKN_EFFECT_TYPE SOF_TKN_PROCESS_TYPE
 #define SOF_TKN_IMX_SAI_FIRST_TOKEN 1000
-#define SOF_TKN_IMX_ESAI_FIRST_TOKEN 1100
+#define SOF_TKN_IMX_ESAI_MCLK_ID 1100
+#define SOF_TKN_STREAM_PLAYBACK_COMPATIBLE_D0I3 1200
+#define SOF_TKN_STREAM_CAPTURE_COMPATIBLE_D0I3 1201
+#define SOF_TKN_MUTE_LED_USE 1300
+#define SOF_TKN_MUTE_LED_DIRECTION 1301
 #endif