Merge "Remove ODR violation with arm64 memrchr." into main
diff --git a/libc/include/bits/glibc-syscalls.h b/libc/include/bits/glibc-syscalls.h
index ccccf46..83fb257 100644
--- a/libc/include/bits/glibc-syscalls.h
+++ b/libc/include/bits/glibc-syscalls.h
@@ -306,12 +306,21 @@
 #if defined(__NR_futex)
   #define SYS_futex __NR_futex
 #endif
+#if defined(__NR_futex_requeue)
+  #define SYS_futex_requeue __NR_futex_requeue
+#endif
 #if defined(__NR_futex_time64)
   #define SYS_futex_time64 __NR_futex_time64
 #endif
+#if defined(__NR_futex_wait)
+  #define SYS_futex_wait __NR_futex_wait
+#endif
 #if defined(__NR_futex_waitv)
   #define SYS_futex_waitv __NR_futex_waitv
 #endif
+#if defined(__NR_futex_wake)
+  #define SYS_futex_wake __NR_futex_wake
+#endif
 #if defined(__NR_futimesat)
   #define SYS_futimesat __NR_futimesat
 #endif
diff --git a/libc/kernel/uapi/asm-arm/asm/unistd-eabi.h b/libc/kernel/uapi/asm-arm/asm/unistd-eabi.h
index 671bf4e..482b9cb 100644
--- a/libc/kernel/uapi/asm-arm/asm/unistd-eabi.h
+++ b/libc/kernel/uapi/asm-arm/asm/unistd-eabi.h
@@ -411,4 +411,8 @@
 #define __NR_set_mempolicy_home_node (__NR_SYSCALL_BASE + 450)
 #define __NR_cachestat (__NR_SYSCALL_BASE + 451)
 #define __NR_fchmodat2 (__NR_SYSCALL_BASE + 452)
+#define __NR_map_shadow_stack (__NR_SYSCALL_BASE + 453)
+#define __NR_futex_wake (__NR_SYSCALL_BASE + 454)
+#define __NR_futex_wait (__NR_SYSCALL_BASE + 455)
+#define __NR_futex_requeue (__NR_SYSCALL_BASE + 456)
 #endif
diff --git a/libc/kernel/uapi/asm-arm/asm/unistd-oabi.h b/libc/kernel/uapi/asm-arm/asm/unistd-oabi.h
index be358a6..5126831 100644
--- a/libc/kernel/uapi/asm-arm/asm/unistd-oabi.h
+++ b/libc/kernel/uapi/asm-arm/asm/unistd-oabi.h
@@ -423,4 +423,8 @@
 #define __NR_set_mempolicy_home_node (__NR_SYSCALL_BASE + 450)
 #define __NR_cachestat (__NR_SYSCALL_BASE + 451)
 #define __NR_fchmodat2 (__NR_SYSCALL_BASE + 452)
+#define __NR_map_shadow_stack (__NR_SYSCALL_BASE + 453)
+#define __NR_futex_wake (__NR_SYSCALL_BASE + 454)
+#define __NR_futex_wait (__NR_SYSCALL_BASE + 455)
+#define __NR_futex_requeue (__NR_SYSCALL_BASE + 456)
 #endif
diff --git a/libc/kernel/uapi/asm-arm64/asm/hwcap.h b/libc/kernel/uapi/asm-arm64/asm/hwcap.h
index 11946f1..5abff63 100644
--- a/libc/kernel/uapi/asm-arm64/asm/hwcap.h
+++ b/libc/kernel/uapi/asm-arm64/asm/hwcap.h
@@ -83,4 +83,7 @@
 #define HWCAP2_SME_F16F16 (1UL << 42)
 #define HWCAP2_MOPS (1UL << 43)
 #define HWCAP2_HBC (1UL << 44)
+#define HWCAP2_SVE_B16B16 (1UL << 45)
+#define HWCAP2_LRCPC3 (1UL << 46)
+#define HWCAP2_LSE128 (1UL << 47)
 #endif
diff --git a/libc/kernel/uapi/asm-arm64/asm/kvm.h b/libc/kernel/uapi/asm-arm64/asm/kvm.h
index edac456..5ad9021 100644
--- a/libc/kernel/uapi/asm-arm64/asm/kvm.h
+++ b/libc/kernel/uapi/asm-arm64/asm/kvm.h
@@ -275,5 +275,13 @@
 };
 #define KVM_HYPERCALL_EXIT_SMC (1U << 0)
 #define KVM_HYPERCALL_EXIT_16BIT (1U << 1)
+#define KVM_ARM_FEATURE_ID_RANGE_IDX(op0,op1,crn,crm,op2) ({ __u64 __op1 = (op1) & 3; __op1 -= (__op1 == 3); (__op1 << 6 | ((crm) & 7) << 3 | (op2)); })
+#define KVM_ARM_FEATURE_ID_RANGE 0
+#define KVM_ARM_FEATURE_ID_RANGE_SIZE (3 * 8 * 8)
+struct reg_mask_range {
+  __u64 addr;
+  __u32 range;
+  __u32 reserved[13];
+};
 #endif
 #endif
diff --git a/libc/kernel/uapi/asm-generic/siginfo.h b/libc/kernel/uapi/asm-generic/siginfo.h
index b8476e8..2124bfb 100644
--- a/libc/kernel/uapi/asm-generic/siginfo.h
+++ b/libc/kernel/uapi/asm-generic/siginfo.h
@@ -47,11 +47,6 @@
   } _sigchld;
   struct {
     void  * _addr;
-#ifdef __ia64__
-    int _imm;
-    unsigned int _flags;
-    unsigned long _isr;
-#endif
 #define __ADDR_BND_PKEY_PAD (__alignof__(void *) < sizeof(short) ? sizeof(short) : __alignof__(void *))
     union {
       int _trapno;
diff --git a/libc/kernel/uapi/asm-generic/unistd.h b/libc/kernel/uapi/asm-generic/unistd.h
index fddbee7..717a098 100644
--- a/libc/kernel/uapi/asm-generic/unistd.h
+++ b/libc/kernel/uapi/asm-generic/unistd.h
@@ -403,8 +403,12 @@
 #define __NR_set_mempolicy_home_node 450
 #define __NR_cachestat 451
 #define __NR_fchmodat2 452
+#define __NR_map_shadow_stack 453
+#define __NR_futex_wake 454
+#define __NR_futex_wait 455
+#define __NR_futex_requeue 456
 #undef __NR_syscalls
-#define __NR_syscalls 453
+#define __NR_syscalls 457
 #if __BITS_PER_LONG == 64 && !defined(__SYSCALL_COMPAT)
 #define __NR_fcntl __NR3264_fcntl
 #define __NR_statfs __NR3264_statfs
diff --git a/libc/kernel/uapi/asm-riscv/asm/elf.h b/libc/kernel/uapi/asm-riscv/asm/elf.h
index 11abe46..df15148 100644
--- a/libc/kernel/uapi/asm-riscv/asm/elf.h
+++ b/libc/kernel/uapi/asm-riscv/asm/elf.h
@@ -32,6 +32,7 @@
 #define R_RISCV_TLS_DTPREL64 9
 #define R_RISCV_TLS_TPREL32 10
 #define R_RISCV_TLS_TPREL64 11
+#define R_RISCV_IRELATIVE 58
 #define R_RISCV_BRANCH 16
 #define R_RISCV_JAL 17
 #define R_RISCV_CALL 18
@@ -62,7 +63,6 @@
 #define R_RISCV_ALIGN 43
 #define R_RISCV_RVC_BRANCH 44
 #define R_RISCV_RVC_JUMP 45
-#define R_RISCV_LUI 46
 #define R_RISCV_GPREL_I 47
 #define R_RISCV_GPREL_S 48
 #define R_RISCV_TPREL_I 49
@@ -74,4 +74,7 @@
 #define R_RISCV_SET16 55
 #define R_RISCV_SET32 56
 #define R_RISCV_32_PCREL 57
+#define R_RISCV_PLT32 59
+#define R_RISCV_SET_ULEB128 60
+#define R_RISCV_SUB_ULEB128 61
 #endif
diff --git a/libc/kernel/uapi/asm-riscv/asm/hwprobe.h b/libc/kernel/uapi/asm-riscv/asm/hwprobe.h
index 7571e3f..a18b020 100644
--- a/libc/kernel/uapi/asm-riscv/asm/hwprobe.h
+++ b/libc/kernel/uapi/asm-riscv/asm/hwprobe.h
@@ -23,6 +23,7 @@
 #define RISCV_HWPROBE_EXT_ZBA (1 << 3)
 #define RISCV_HWPROBE_EXT_ZBB (1 << 4)
 #define RISCV_HWPROBE_EXT_ZBS (1 << 5)
+#define RISCV_HWPROBE_EXT_ZICBOZ (1 << 6)
 #define RISCV_HWPROBE_KEY_CPUPERF_0 5
 #define RISCV_HWPROBE_MISALIGNED_UNKNOWN (0 << 0)
 #define RISCV_HWPROBE_MISALIGNED_EMULATED (1 << 0)
@@ -30,4 +31,5 @@
 #define RISCV_HWPROBE_MISALIGNED_FAST (3 << 0)
 #define RISCV_HWPROBE_MISALIGNED_UNSUPPORTED (4 << 0)
 #define RISCV_HWPROBE_MISALIGNED_MASK (7 << 0)
+#define RISCV_HWPROBE_KEY_ZICBOZ_BLOCK_SIZE 6
 #endif
diff --git a/libc/kernel/uapi/asm-riscv/asm/kvm.h b/libc/kernel/uapi/asm-riscv/asm/kvm.h
index 2a3424e..470d581 100644
--- a/libc/kernel/uapi/asm-riscv/asm/kvm.h
+++ b/libc/kernel/uapi/asm-riscv/asm/kvm.h
@@ -53,6 +53,7 @@
   unsigned long sip;
   unsigned long satp;
   unsigned long scounteren;
+  unsigned long senvcfg;
 };
 struct kvm_riscv_aia_csr {
   unsigned long siselect;
@@ -63,6 +64,9 @@
   unsigned long iprio1h;
   unsigned long iprio2h;
 };
+struct kvm_riscv_smstateen_csr {
+  unsigned long sstateen0;
+};
 struct kvm_riscv_timer {
   __u64 frequency;
   __u64 time;
@@ -93,6 +97,8 @@
   KVM_RISCV_ISA_EXT_ZICSR,
   KVM_RISCV_ISA_EXT_ZIFENCEI,
   KVM_RISCV_ISA_EXT_ZIHPM,
+  KVM_RISCV_ISA_EXT_SMSTATEEN,
+  KVM_RISCV_ISA_EXT_ZICOND,
   KVM_RISCV_ISA_EXT_MAX,
 };
 enum KVM_RISCV_SBI_EXT_ID {
@@ -105,6 +111,7 @@
   KVM_RISCV_SBI_EXT_PMU,
   KVM_RISCV_SBI_EXT_EXPERIMENTAL,
   KVM_RISCV_SBI_EXT_VENDOR,
+  KVM_RISCV_SBI_EXT_DBCN,
   KVM_RISCV_SBI_EXT_MAX,
 };
 #define KVM_RISCV_TIMER_STATE_OFF 0
@@ -121,8 +128,10 @@
 #define KVM_REG_RISCV_CSR (0x03 << KVM_REG_RISCV_TYPE_SHIFT)
 #define KVM_REG_RISCV_CSR_GENERAL (0x0 << KVM_REG_RISCV_SUBTYPE_SHIFT)
 #define KVM_REG_RISCV_CSR_AIA (0x1 << KVM_REG_RISCV_SUBTYPE_SHIFT)
+#define KVM_REG_RISCV_CSR_SMSTATEEN (0x2 << KVM_REG_RISCV_SUBTYPE_SHIFT)
 #define KVM_REG_RISCV_CSR_REG(name) (offsetof(struct kvm_riscv_csr, name) / sizeof(unsigned long))
 #define KVM_REG_RISCV_CSR_AIA_REG(name) (offsetof(struct kvm_riscv_aia_csr, name) / sizeof(unsigned long))
+#define KVM_REG_RISCV_CSR_SMSTATEEN_REG(name) (offsetof(struct kvm_riscv_smstateen_csr, name) / sizeof(unsigned long))
 #define KVM_REG_RISCV_TIMER (0x04 << KVM_REG_RISCV_TYPE_SHIFT)
 #define KVM_REG_RISCV_TIMER_REG(name) (offsetof(struct kvm_riscv_timer, name) / sizeof(__u64))
 #define KVM_REG_RISCV_FP_F (0x05 << KVM_REG_RISCV_TYPE_SHIFT)
diff --git a/libc/kernel/uapi/asm-x86/asm/amd_hsmp.h b/libc/kernel/uapi/asm-x86/asm/amd_hsmp.h
index 70296f7..0d630bf 100644
--- a/libc/kernel/uapi/asm-x86/asm/amd_hsmp.h
+++ b/libc/kernel/uapi/asm-x86/asm/amd_hsmp.h
@@ -44,6 +44,9 @@
   HSMP_SET_PCI_RATE,
   HSMP_SET_POWER_MODE,
   HSMP_SET_PSTATE_MAX_MIN,
+  HSMP_GET_METRIC_TABLE_VER,
+  HSMP_GET_METRIC_TABLE,
+  HSMP_GET_METRIC_TABLE_DRAM_ADDR,
   HSMP_MSG_ID_MAX,
 };
 struct hsmp_message {
@@ -58,6 +61,13 @@
   HSMP_SET = 0,
   HSMP_GET = 1,
 };
+enum hsmp_proto_versions {
+  HSMP_PROTO_VER2 = 2,
+  HSMP_PROTO_VER3,
+  HSMP_PROTO_VER4,
+  HSMP_PROTO_VER5,
+  HSMP_PROTO_VER6
+};
 struct hsmp_msg_desc {
   int num_args;
   int response_sz;
@@ -169,8 +179,77 @@
  , {
     1, 0, HSMP_SET
   }
+ , {
+    0, 1, HSMP_GET
+  }
+ , {
+    0, 0, HSMP_GET
+  }
+ , {
+    0, 2, HSMP_GET
+  }
  ,
 };
+struct hsmp_metric_table {
+  __u32 accumulation_counter;
+  __u32 max_socket_temperature;
+  __u32 max_vr_temperature;
+  __u32 max_hbm_temperature;
+  __u64 max_socket_temperature_acc;
+  __u64 max_vr_temperature_acc;
+  __u64 max_hbm_temperature_acc;
+  __u32 socket_power_limit;
+  __u32 max_socket_power_limit;
+  __u32 socket_power;
+  __u64 timestamp;
+  __u64 socket_energy_acc;
+  __u64 ccd_energy_acc;
+  __u64 xcd_energy_acc;
+  __u64 aid_energy_acc;
+  __u64 hbm_energy_acc;
+  __u32 cclk_frequency_limit;
+  __u32 gfxclk_frequency_limit;
+  __u32 fclk_frequency;
+  __u32 uclk_frequency;
+  __u32 socclk_frequency[4];
+  __u32 vclk_frequency[4];
+  __u32 dclk_frequency[4];
+  __u32 lclk_frequency[4];
+  __u64 gfxclk_frequency_acc[8];
+  __u64 cclk_frequency_acc[96];
+  __u32 max_cclk_frequency;
+  __u32 min_cclk_frequency;
+  __u32 max_gfxclk_frequency;
+  __u32 min_gfxclk_frequency;
+  __u32 fclk_frequency_table[4];
+  __u32 uclk_frequency_table[4];
+  __u32 socclk_frequency_table[4];
+  __u32 vclk_frequency_table[4];
+  __u32 dclk_frequency_table[4];
+  __u32 lclk_frequency_table[4];
+  __u32 max_lclk_dpm_range;
+  __u32 min_lclk_dpm_range;
+  __u32 xgmi_width;
+  __u32 xgmi_bitrate;
+  __u64 xgmi_read_bandwidth_acc[8];
+  __u64 xgmi_write_bandwidth_acc[8];
+  __u32 socket_c0_residency;
+  __u32 socket_gfx_busy;
+  __u32 dram_bandwidth_utilization;
+  __u64 socket_c0_residency_acc;
+  __u64 socket_gfx_busy_acc;
+  __u64 dram_bandwidth_acc;
+  __u32 max_dram_bandwidth;
+  __u64 dram_bandwidth_utilization_acc;
+  __u64 pcie_bandwidth_acc[4];
+  __u32 prochot_residency_acc;
+  __u32 ppt_residency_acc;
+  __u32 socket_thm_residency_acc;
+  __u32 vr_thm_residency_acc;
+  __u32 hbm_thm_residency_acc;
+  __u32 spare;
+  __u32 gfxclk_frequency[8];
+};
 #pragma pack()
 #define HSMP_BASE_IOCTL_NR 0xF8
 #define HSMP_IOCTL_CMD _IOWR(HSMP_BASE_IOCTL_NR, 0, struct hsmp_message)
diff --git a/libc/kernel/uapi/asm-x86/asm/unistd_32.h b/libc/kernel/uapi/asm-x86/asm/unistd_32.h
index 93a8f19..e82b988 100644
--- a/libc/kernel/uapi/asm-x86/asm/unistd_32.h
+++ b/libc/kernel/uapi/asm-x86/asm/unistd_32.h
@@ -448,4 +448,8 @@
 #define __NR_set_mempolicy_home_node 450
 #define __NR_cachestat 451
 #define __NR_fchmodat2 452
+#define __NR_map_shadow_stack 453
+#define __NR_futex_wake 454
+#define __NR_futex_wait 455
+#define __NR_futex_requeue 456
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/unistd_64.h b/libc/kernel/uapi/asm-x86/asm/unistd_64.h
index 34a978d..10d6e96 100644
--- a/libc/kernel/uapi/asm-x86/asm/unistd_64.h
+++ b/libc/kernel/uapi/asm-x86/asm/unistd_64.h
@@ -371,4 +371,7 @@
 #define __NR_cachestat 451
 #define __NR_fchmodat2 452
 #define __NR_map_shadow_stack 453
+#define __NR_futex_wake 454
+#define __NR_futex_wait 455
+#define __NR_futex_requeue 456
 #endif
diff --git a/libc/kernel/uapi/asm-x86/asm/unistd_x32.h b/libc/kernel/uapi/asm-x86/asm/unistd_x32.h
index 87fc7b0..7fbbe11 100644
--- a/libc/kernel/uapi/asm-x86/asm/unistd_x32.h
+++ b/libc/kernel/uapi/asm-x86/asm/unistd_x32.h
@@ -323,6 +323,9 @@
 #define __NR_set_mempolicy_home_node (__X32_SYSCALL_BIT + 450)
 #define __NR_cachestat (__X32_SYSCALL_BIT + 451)
 #define __NR_fchmodat2 (__X32_SYSCALL_BIT + 452)
+#define __NR_futex_wake (__X32_SYSCALL_BIT + 454)
+#define __NR_futex_wait (__X32_SYSCALL_BIT + 455)
+#define __NR_futex_requeue (__X32_SYSCALL_BIT + 456)
 #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/drm/amdgpu_drm.h b/libc/kernel/uapi/drm/amdgpu_drm.h
index aa3f30f..1e5b8e3 100644
--- a/libc/kernel/uapi/drm/amdgpu_drm.h
+++ b/libc/kernel/uapi/drm/amdgpu_drm.h
@@ -64,6 +64,7 @@
 #define AMDGPU_GEM_CREATE_DISCARDABLE (1 << 12)
 #define AMDGPU_GEM_CREATE_COHERENT (1 << 13)
 #define AMDGPU_GEM_CREATE_UNCACHED (1 << 14)
+#define AMDGPU_GEM_CREATE_EXT_COHERENT (1 << 15)
 struct drm_amdgpu_gem_create_in {
   __u64 bo_size;
   __u64 alignment;
@@ -331,7 +332,8 @@
 #define AMDGPU_HW_IP_VCN_DEC 6
 #define AMDGPU_HW_IP_VCN_ENC 7
 #define AMDGPU_HW_IP_VCN_JPEG 8
-#define AMDGPU_HW_IP_NUM 9
+#define AMDGPU_HW_IP_VPE 9
+#define AMDGPU_HW_IP_NUM 10
 #define AMDGPU_HW_IP_INSTANCE_MAX_COUNT 1
 #define AMDGPU_CHUNK_ID_IB 0x01
 #define AMDGPU_CHUNK_ID_FENCE 0x02
@@ -459,6 +461,7 @@
 #define AMDGPU_INFO_FW_MES_KIQ 0x19
 #define AMDGPU_INFO_FW_MES 0x1a
 #define AMDGPU_INFO_FW_IMU 0x1b
+#define AMDGPU_INFO_FW_VPE 0x1c
 #define AMDGPU_INFO_NUM_BYTES_MOVED 0x0f
 #define AMDGPU_INFO_VRAM_USAGE 0x10
 #define AMDGPU_INFO_GTT_USAGE 0x11
@@ -508,6 +511,7 @@
 #define AMDGPU_INFO_VIDEO_CAPS_DECODE 0
 #define AMDGPU_INFO_VIDEO_CAPS_ENCODE 1
 #define AMDGPU_INFO_MAX_IBS 0x22
+#define AMDGPU_INFO_GPUVM_FAULT 0x23
 #define AMDGPU_INFO_MMR_SE_INDEX_SHIFT 0
 #define AMDGPU_INFO_MMR_SE_INDEX_MASK 0xff
 #define AMDGPU_INFO_MMR_SH_INDEX_SHIFT 8
@@ -711,6 +715,18 @@
 struct drm_amdgpu_info_video_caps {
   struct drm_amdgpu_info_video_codec_info codec_info[AMDGPU_INFO_VIDEO_CAPS_CODEC_IDX_COUNT];
 };
+#define AMDGPU_VMHUB_TYPE_MASK 0xff
+#define AMDGPU_VMHUB_TYPE_SHIFT 0
+#define AMDGPU_VMHUB_TYPE_GFX 0
+#define AMDGPU_VMHUB_TYPE_MM0 1
+#define AMDGPU_VMHUB_TYPE_MM1 2
+#define AMDGPU_VMHUB_IDX_MASK 0xff00
+#define AMDGPU_VMHUB_IDX_SHIFT 8
+struct drm_amdgpu_info_gpuvm_fault {
+  __u64 addr;
+  __u32 status;
+  __u32 vmhub;
+};
 #define AMDGPU_FAMILY_UNKNOWN 0
 #define AMDGPU_FAMILY_SI 110
 #define AMDGPU_FAMILY_CI 120
@@ -726,6 +742,7 @@
 #define AMDGPU_FAMILY_GC_11_0_1 148
 #define AMDGPU_FAMILY_GC_10_3_6 149
 #define AMDGPU_FAMILY_GC_10_3_7 151
+#define AMDGPU_FAMILY_GC_11_5_0 150
 #ifdef __cplusplus
 }
 #endif
diff --git a/libc/kernel/uapi/drm/drm_fourcc.h b/libc/kernel/uapi/drm/drm_fourcc.h
index 8190325..6fd2eb8 100644
--- a/libc/kernel/uapi/drm/drm_fourcc.h
+++ b/libc/kernel/uapi/drm/drm_fourcc.h
@@ -119,6 +119,8 @@
 #define DRM_FORMAT_NV24 fourcc_code('N', 'V', '2', '4')
 #define DRM_FORMAT_NV42 fourcc_code('N', 'V', '4', '2')
 #define DRM_FORMAT_NV15 fourcc_code('N', 'V', '1', '5')
+#define DRM_FORMAT_NV20 fourcc_code('N', 'V', '2', '0')
+#define DRM_FORMAT_NV30 fourcc_code('N', 'V', '3', '0')
 #define DRM_FORMAT_P210 fourcc_code('P', '2', '1', '0')
 #define DRM_FORMAT_P010 fourcc_code('P', '0', '1', '0')
 #define DRM_FORMAT_P012 fourcc_code('P', '0', '1', '2')
diff --git a/libc/kernel/uapi/drm/habanalabs_accel.h b/libc/kernel/uapi/drm/habanalabs_accel.h
index 44fd8c8..158e937 100644
--- a/libc/kernel/uapi/drm/habanalabs_accel.h
+++ b/libc/kernel/uapi/drm/habanalabs_accel.h
@@ -6,8 +6,7 @@
  */
 #ifndef HABANALABS_H_
 #define HABANALABS_H_
-#include <linux/types.h>
-#include <linux/ioctl.h>
+#include <drm/drm.h>
 #define GOYA_KMD_SRAM_RESERVED_SIZE_FROM_START 0x8000
 #define GAUDI_DRIVER_SRAM_RESERVED_SIZE_FROM_START 0x80
 #define GAUDI_FIRST_AVAILABLE_W_S_SYNC_OBJECT 144
@@ -656,6 +655,7 @@
 #define HL_INFO_FW_GENERIC_REQ 35
 #define HL_INFO_HW_ERR_EVENT 36
 #define HL_INFO_FW_ERR_EVENT 37
+#define HL_INFO_USER_ENGINE_ERR_EVENT 38
 #define HL_INFO_VERSION_MAX_LEN 128
 #define HL_INFO_CARD_NAME_MAX_LEN 16
 #define HL_ENGINES_DATA_MAX_SIZE SZ_1M
@@ -729,6 +729,7 @@
 struct hl_info_time_sync {
   __u64 device_time;
   __u64 host_time;
+  __u64 tsc_time;
 };
 struct hl_info_pci_counters {
   __u64 rx_throughput;
@@ -834,6 +835,12 @@
   __u16 event_id;
   __u32 pad;
 };
+struct hl_info_engine_err_event {
+  __s64 timestamp;
+  __u16 engine_id;
+  __u16 error_count;
+  __u32 pad;
+};
 struct hl_info_dev_memalloc_page_sizes {
   __u64 page_order_bitmask;
 };
@@ -1183,12 +1190,18 @@
   __u32 enable;
   __u32 ctx_id;
 };
-#define HL_IOCTL_INFO _IOWR('H', 0x01, struct hl_info_args)
-#define HL_IOCTL_CB _IOWR('H', 0x02, union hl_cb_args)
-#define HL_IOCTL_CS _IOWR('H', 0x03, union hl_cs_args)
-#define HL_IOCTL_WAIT_CS _IOWR('H', 0x04, union hl_wait_cs_args)
-#define HL_IOCTL_MEMORY _IOWR('H', 0x05, union hl_mem_args)
-#define HL_IOCTL_DEBUG _IOWR('H', 0x06, struct hl_debug_args)
-#define HL_COMMAND_START 0x01
-#define HL_COMMAND_END 0x07
+#define HL_IOCTL_INFO 0x00
+#define HL_IOCTL_CB 0x01
+#define HL_IOCTL_CS 0x02
+#define HL_IOCTL_WAIT_CS 0x03
+#define HL_IOCTL_MEMORY 0x04
+#define HL_IOCTL_DEBUG 0x05
+#define DRM_IOCTL_HL_INFO DRM_IOWR(DRM_COMMAND_BASE + HL_IOCTL_INFO, struct hl_info_args)
+#define DRM_IOCTL_HL_CB DRM_IOWR(DRM_COMMAND_BASE + HL_IOCTL_CB, union hl_cb_args)
+#define DRM_IOCTL_HL_CS DRM_IOWR(DRM_COMMAND_BASE + HL_IOCTL_CS, union hl_cs_args)
+#define DRM_IOCTL_HL_WAIT_CS DRM_IOWR(DRM_COMMAND_BASE + HL_IOCTL_WAIT_CS, union hl_wait_cs_args)
+#define DRM_IOCTL_HL_MEMORY DRM_IOWR(DRM_COMMAND_BASE + HL_IOCTL_MEMORY, union hl_mem_args)
+#define DRM_IOCTL_HL_DEBUG DRM_IOWR(DRM_COMMAND_BASE + HL_IOCTL_DEBUG, struct hl_debug_args)
+#define HL_COMMAND_START (DRM_COMMAND_BASE + HL_IOCTL_INFO)
+#define HL_COMMAND_END (DRM_COMMAND_BASE + HL_IOCTL_DEBUG + 1)
 #endif
diff --git a/libc/kernel/uapi/drm/qaic_accel.h b/libc/kernel/uapi/drm/qaic_accel.h
index 3e6bb2a..9e50aec 100644
--- a/libc/kernel/uapi/drm/qaic_accel.h
+++ b/libc/kernel/uapi/drm/qaic_accel.h
@@ -170,6 +170,10 @@
   __u32 device_latency_us;
   __u32 pad;
 };
+struct qaic_detach_slice {
+  __u32 handle;
+  __u32 pad;
+};
 #define DRM_QAIC_MANAGE 0x00
 #define DRM_QAIC_CREATE_BO 0x01
 #define DRM_QAIC_MMAP_BO 0x02
@@ -178,6 +182,7 @@
 #define DRM_QAIC_PARTIAL_EXECUTE_BO 0x05
 #define DRM_QAIC_WAIT_BO 0x06
 #define DRM_QAIC_PERF_STATS_BO 0x07
+#define DRM_QAIC_DETACH_SLICE_BO 0x08
 #define DRM_IOCTL_QAIC_MANAGE DRM_IOWR(DRM_COMMAND_BASE + DRM_QAIC_MANAGE, struct qaic_manage_msg)
 #define DRM_IOCTL_QAIC_CREATE_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_QAIC_CREATE_BO, struct qaic_create_bo)
 #define DRM_IOCTL_QAIC_MMAP_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_QAIC_MMAP_BO, struct qaic_mmap_bo)
@@ -186,6 +191,7 @@
 #define DRM_IOCTL_QAIC_PARTIAL_EXECUTE_BO DRM_IOW(DRM_COMMAND_BASE + DRM_QAIC_PARTIAL_EXECUTE_BO, struct qaic_execute)
 #define DRM_IOCTL_QAIC_WAIT_BO DRM_IOW(DRM_COMMAND_BASE + DRM_QAIC_WAIT_BO, struct qaic_wait)
 #define DRM_IOCTL_QAIC_PERF_STATS_BO DRM_IOWR(DRM_COMMAND_BASE + DRM_QAIC_PERF_STATS_BO, struct qaic_perf_stats)
+#define DRM_IOCTL_QAIC_DETACH_SLICE_BO DRM_IOW(DRM_COMMAND_BASE + DRM_QAIC_DETACH_SLICE_BO, struct qaic_detach_slice)
 #ifdef __cplusplus
 }
 #endif
diff --git a/libc/kernel/uapi/linux/bpf.h b/libc/kernel/uapi/linux/bpf.h
index 5d0cfba..25e8ad7 100644
--- a/libc/kernel/uapi/linux/bpf.h
+++ b/libc/kernel/uapi/linux/bpf.h
@@ -147,7 +147,8 @@
   BPF_MAP_TYPE_CGROUP_STORAGE_DEPRECATED,
   BPF_MAP_TYPE_CGROUP_STORAGE = BPF_MAP_TYPE_CGROUP_STORAGE_DEPRECATED,
   BPF_MAP_TYPE_REUSEPORT_SOCKARRAY,
-  BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE,
+  BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE_DEPRECATED,
+  BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE = BPF_MAP_TYPE_PERCPU_CGROUP_STORAGE_DEPRECATED,
   BPF_MAP_TYPE_QUEUE,
   BPF_MAP_TYPE_STACK,
   BPF_MAP_TYPE_SK_STORAGE,
@@ -245,6 +246,13 @@
   BPF_TCX_INGRESS,
   BPF_TCX_EGRESS,
   BPF_TRACE_UPROBE_MULTI,
+  BPF_CGROUP_UNIX_CONNECT,
+  BPF_CGROUP_UNIX_SENDMSG,
+  BPF_CGROUP_UNIX_RECVMSG,
+  BPF_CGROUP_UNIX_GETPEERNAME,
+  BPF_CGROUP_UNIX_GETSOCKNAME,
+  BPF_NETKIT_PRIMARY,
+  BPF_NETKIT_PEER,
   __MAX_BPF_ATTACH_TYPE
 };
 #define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
@@ -262,6 +270,7 @@
   BPF_LINK_TYPE_NETFILTER = 10,
   BPF_LINK_TYPE_TCX = 11,
   BPF_LINK_TYPE_UPROBE_MULTI = 12,
+  BPF_LINK_TYPE_NETKIT = 13,
   MAX_BPF_LINK_TYPE,
 };
 enum bpf_perf_event_type {
@@ -562,6 +571,13 @@
         __u32 flags;
         __u32 pid;
       } uprobe_multi;
+      struct {
+        union {
+          __u32 relative_fd;
+          __u32 relative_id;
+        };
+        __u64 expected_revision;
+      } netkit;
     };
   } link_create;
   struct {
@@ -1044,6 +1060,7 @@
       __aligned_u64 addrs;
       __u32 count;
       __u32 flags;
+      __u64 missed;
     } kprobe_multi;
     struct {
       __u32 type;
@@ -1059,6 +1076,7 @@
           __u32 name_len;
           __u32 offset;
           __u64 addr;
+          __u64 missed;
         } kprobe;
         struct {
           __aligned_u64 tp_name;
@@ -1074,6 +1092,10 @@
       __u32 ifindex;
       __u32 attach_type;
     } tcx;
+    struct {
+      __u32 ifindex;
+      __u32 attach_type;
+    } netkit;
   };
 } __attribute__((aligned(8)));
 struct bpf_sock_addr {
@@ -1221,6 +1243,7 @@
   BPF_FIB_LOOKUP_OUTPUT = (1U << 1),
   BPF_FIB_LOOKUP_SKIP_NEIGH = (1U << 2),
   BPF_FIB_LOOKUP_TBID = (1U << 3),
+  BPF_FIB_LOOKUP_SRC = (1U << 4),
 };
 enum {
   BPF_FIB_LKUP_RET_SUCCESS,
@@ -1232,6 +1255,7 @@
   BPF_FIB_LKUP_RET_UNSUPP_LWT,
   BPF_FIB_LKUP_RET_NO_NEIGH,
   BPF_FIB_LKUP_RET_FRAG_NEEDED,
+  BPF_FIB_LKUP_RET_NO_SRC_ADDR,
 };
 struct bpf_fib_lookup {
   __u8 family;
@@ -1430,6 +1454,7 @@
 };
 enum {
   BPF_F_TIMER_ABS = (1ULL << 0),
+  BPF_F_TIMER_CPU_PIN = (1ULL << 1),
 };
 struct bpf_iter_num {
   __u64 __opaque[1];
diff --git a/libc/kernel/uapi/linux/btrfs.h b/libc/kernel/uapi/linux/btrfs.h
index bbf530d..27564f8 100644
--- a/libc/kernel/uapi/linux/btrfs.h
+++ b/libc/kernel/uapi/linux/btrfs.h
@@ -185,6 +185,8 @@
 #define BTRFS_FEATURE_INCOMPAT_RAID1C34 (1ULL << 11)
 #define BTRFS_FEATURE_INCOMPAT_ZONED (1ULL << 12)
 #define BTRFS_FEATURE_INCOMPAT_EXTENT_TREE_V2 (1ULL << 13)
+#define BTRFS_FEATURE_INCOMPAT_RAID_STRIPE_TREE (1ULL << 14)
+#define BTRFS_FEATURE_INCOMPAT_SIMPLE_QUOTA (1ULL << 16)
 struct btrfs_ioctl_feature_flags {
   __u64 compat_flags;
   __u64 compat_ro_flags;
@@ -382,6 +384,7 @@
 #define BTRFS_QUOTA_CTL_ENABLE 1
 #define BTRFS_QUOTA_CTL_DISABLE 2
 #define BTRFS_QUOTA_CTL_RESCAN__NOTUSED 3
+#define BTRFS_QUOTA_CTL_ENABLE_SIMPLE_QUOTA 4
 struct btrfs_ioctl_quota_ctl_args {
   __u64 cmd;
   __u64 status;
diff --git a/libc/kernel/uapi/linux/btrfs_tree.h b/libc/kernel/uapi/linux/btrfs_tree.h
index 57579e4..ea33eee 100644
--- a/libc/kernel/uapi/linux/btrfs_tree.h
+++ b/libc/kernel/uapi/linux/btrfs_tree.h
@@ -24,6 +24,7 @@
 #define BTRFS_UUID_TREE_OBJECTID 9ULL
 #define BTRFS_FREE_SPACE_TREE_OBJECTID 10ULL
 #define BTRFS_BLOCK_GROUP_TREE_OBJECTID 11ULL
+#define BTRFS_RAID_STRIPE_TREE_OBJECTID 12ULL
 #define BTRFS_DEV_STATS_OBJECTID 0ULL
 #define BTRFS_BALANCE_OBJECTID - 4ULL
 #define BTRFS_ORPHAN_OBJECTID - 5ULL
@@ -60,6 +61,7 @@
 #define BTRFS_ROOT_REF_KEY 156
 #define BTRFS_EXTENT_ITEM_KEY 168
 #define BTRFS_METADATA_ITEM_KEY 169
+#define BTRFS_EXTENT_OWNER_REF_KEY 172
 #define BTRFS_TREE_BLOCK_REF_KEY 176
 #define BTRFS_EXTENT_DATA_REF_KEY 178
 #define BTRFS_SHARED_BLOCK_REF_KEY 182
@@ -71,6 +73,7 @@
 #define BTRFS_DEV_EXTENT_KEY 204
 #define BTRFS_DEV_ITEM_KEY 216
 #define BTRFS_CHUNK_ITEM_KEY 228
+#define BTRFS_RAID_STRIPE_KEY 230
 #define BTRFS_QGROUP_STATUS_KEY 240
 #define BTRFS_QGROUP_INFO_KEY 242
 #define BTRFS_QGROUP_LIMIT_KEY 244
@@ -272,6 +275,23 @@
   __le64 num_entries;
   __le64 num_bitmaps;
 } __attribute__((__packed__));
+struct btrfs_raid_stride {
+  __le64 devid;
+  __le64 physical;
+} __attribute__((__packed__));
+#define BTRFS_STRIPE_RAID0 1
+#define BTRFS_STRIPE_RAID1 2
+#define BTRFS_STRIPE_DUP 3
+#define BTRFS_STRIPE_RAID10 4
+#define BTRFS_STRIPE_RAID5 5
+#define BTRFS_STRIPE_RAID6 6
+#define BTRFS_STRIPE_RAID1C3 7
+#define BTRFS_STRIPE_RAID1C4 8
+struct btrfs_stripe_extent {
+  __u8 encoding;
+  __u8 reserved[7];
+  struct btrfs_raid_stride strides[];
+} __attribute__((__packed__));
 #define BTRFS_HEADER_FLAG_WRITTEN (1ULL << 0)
 #define BTRFS_HEADER_FLAG_RELOC (1ULL << 1)
 #define BTRFS_SUPER_FLAG_ERROR (1ULL << 2)
@@ -310,6 +330,9 @@
 struct btrfs_shared_data_ref {
   __le32 count;
 } __attribute__((__packed__));
+struct btrfs_extent_owner_ref {
+  __le64 root_id;
+} __attribute__((__packed__));
 struct btrfs_extent_inline_ref {
   __u8 type;
   __le64 offset;
@@ -502,13 +525,15 @@
 #define BTRFS_QGROUP_STATUS_FLAG_ON (1ULL << 0)
 #define BTRFS_QGROUP_STATUS_FLAG_RESCAN (1ULL << 1)
 #define BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT (1ULL << 2)
-#define BTRFS_QGROUP_STATUS_FLAGS_MASK (BTRFS_QGROUP_STATUS_FLAG_ON | BTRFS_QGROUP_STATUS_FLAG_RESCAN | BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT)
+#define BTRFS_QGROUP_STATUS_FLAG_SIMPLE_MODE (1ULL << 3)
+#define BTRFS_QGROUP_STATUS_FLAGS_MASK (BTRFS_QGROUP_STATUS_FLAG_ON | BTRFS_QGROUP_STATUS_FLAG_RESCAN | BTRFS_QGROUP_STATUS_FLAG_INCONSISTENT | BTRFS_QGROUP_STATUS_FLAG_SIMPLE_MODE)
 #define BTRFS_QGROUP_STATUS_VERSION 1
 struct btrfs_qgroup_status_item {
   __le64 version;
   __le64 generation;
   __le64 flags;
   __le64 rescan;
+  __le64 enable_gen;
 } __attribute__((__packed__));
 struct btrfs_qgroup_info_item {
   __le64 generation;
diff --git a/libc/kernel/uapi/linux/devlink.h b/libc/kernel/uapi/linux/devlink.h
index 2495be5..bc44a70 100644
--- a/libc/kernel/uapi/linux/devlink.h
+++ b/libc/kernel/uapi/linux/devlink.h
@@ -169,7 +169,7 @@
   __DEVLINK_ATTR_STATS_MAX,
   DEVLINK_ATTR_STATS_MAX = __DEVLINK_ATTR_STATS_MAX - 1
 };
-enum {
+enum devlink_flash_overwrite {
   DEVLINK_FLASH_OVERWRITE_SETTINGS_BIT,
   DEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT,
   __DEVLINK_FLASH_OVERWRITE_MAX_BIT,
@@ -464,6 +464,7 @@
   DEVLINK_PORT_FN_ATTR_STATE,
   DEVLINK_PORT_FN_ATTR_OPSTATE,
   DEVLINK_PORT_FN_ATTR_CAPS,
+  DEVLINK_PORT_FN_ATTR_DEVLINK,
   __DEVLINK_PORT_FUNCTION_ATTR_MAX,
   DEVLINK_PORT_FUNCTION_ATTR_MAX = __DEVLINK_PORT_FUNCTION_ATTR_MAX - 1
 };
diff --git a/libc/kernel/uapi/linux/dpll.h b/libc/kernel/uapi/linux/dpll.h
new file mode 100644
index 0000000..9b5f37d
--- /dev/null
+++ b/libc/kernel/uapi/linux/dpll.h
@@ -0,0 +1,121 @@
+/*
+ * This file is auto-generated. Modifications will be lost.
+ *
+ * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
+ * for more information.
+ */
+#ifndef _UAPI_LINUX_DPLL_H
+#define _UAPI_LINUX_DPLL_H
+#define DPLL_FAMILY_NAME "dpll"
+#define DPLL_FAMILY_VERSION 1
+enum dpll_mode {
+  DPLL_MODE_MANUAL = 1,
+  DPLL_MODE_AUTOMATIC,
+  __DPLL_MODE_MAX,
+  DPLL_MODE_MAX = (__DPLL_MODE_MAX - 1)
+};
+enum dpll_lock_status {
+  DPLL_LOCK_STATUS_UNLOCKED = 1,
+  DPLL_LOCK_STATUS_LOCKED,
+  DPLL_LOCK_STATUS_LOCKED_HO_ACQ,
+  DPLL_LOCK_STATUS_HOLDOVER,
+  __DPLL_LOCK_STATUS_MAX,
+  DPLL_LOCK_STATUS_MAX = (__DPLL_LOCK_STATUS_MAX - 1)
+};
+#define DPLL_TEMP_DIVIDER 1000
+enum dpll_type {
+  DPLL_TYPE_PPS = 1,
+  DPLL_TYPE_EEC,
+  __DPLL_TYPE_MAX,
+  DPLL_TYPE_MAX = (__DPLL_TYPE_MAX - 1)
+};
+enum dpll_pin_type {
+  DPLL_PIN_TYPE_MUX = 1,
+  DPLL_PIN_TYPE_EXT,
+  DPLL_PIN_TYPE_SYNCE_ETH_PORT,
+  DPLL_PIN_TYPE_INT_OSCILLATOR,
+  DPLL_PIN_TYPE_GNSS,
+  __DPLL_PIN_TYPE_MAX,
+  DPLL_PIN_TYPE_MAX = (__DPLL_PIN_TYPE_MAX - 1)
+};
+enum dpll_pin_direction {
+  DPLL_PIN_DIRECTION_INPUT = 1,
+  DPLL_PIN_DIRECTION_OUTPUT,
+  __DPLL_PIN_DIRECTION_MAX,
+  DPLL_PIN_DIRECTION_MAX = (__DPLL_PIN_DIRECTION_MAX - 1)
+};
+#define DPLL_PIN_FREQUENCY_1_HZ 1
+#define DPLL_PIN_FREQUENCY_10_KHZ 10000
+#define DPLL_PIN_FREQUENCY_77_5_KHZ 77500
+#define DPLL_PIN_FREQUENCY_10_MHZ 10000000
+enum dpll_pin_state {
+  DPLL_PIN_STATE_CONNECTED = 1,
+  DPLL_PIN_STATE_DISCONNECTED,
+  DPLL_PIN_STATE_SELECTABLE,
+  __DPLL_PIN_STATE_MAX,
+  DPLL_PIN_STATE_MAX = (__DPLL_PIN_STATE_MAX - 1)
+};
+enum dpll_pin_capabilities {
+  DPLL_PIN_CAPABILITIES_DIRECTION_CAN_CHANGE = 1,
+  DPLL_PIN_CAPABILITIES_PRIORITY_CAN_CHANGE = 2,
+  DPLL_PIN_CAPABILITIES_STATE_CAN_CHANGE = 4,
+};
+#define DPLL_PHASE_OFFSET_DIVIDER 1000
+enum dpll_a {
+  DPLL_A_ID = 1,
+  DPLL_A_MODULE_NAME,
+  DPLL_A_PAD,
+  DPLL_A_CLOCK_ID,
+  DPLL_A_MODE,
+  DPLL_A_MODE_SUPPORTED,
+  DPLL_A_LOCK_STATUS,
+  DPLL_A_TEMP,
+  DPLL_A_TYPE,
+  __DPLL_A_MAX,
+  DPLL_A_MAX = (__DPLL_A_MAX - 1)
+};
+enum dpll_a_pin {
+  DPLL_A_PIN_ID = 1,
+  DPLL_A_PIN_PARENT_ID,
+  DPLL_A_PIN_MODULE_NAME,
+  DPLL_A_PIN_PAD,
+  DPLL_A_PIN_CLOCK_ID,
+  DPLL_A_PIN_BOARD_LABEL,
+  DPLL_A_PIN_PANEL_LABEL,
+  DPLL_A_PIN_PACKAGE_LABEL,
+  DPLL_A_PIN_TYPE,
+  DPLL_A_PIN_DIRECTION,
+  DPLL_A_PIN_FREQUENCY,
+  DPLL_A_PIN_FREQUENCY_SUPPORTED,
+  DPLL_A_PIN_FREQUENCY_MIN,
+  DPLL_A_PIN_FREQUENCY_MAX,
+  DPLL_A_PIN_PRIO,
+  DPLL_A_PIN_STATE,
+  DPLL_A_PIN_CAPABILITIES,
+  DPLL_A_PIN_PARENT_DEVICE,
+  DPLL_A_PIN_PARENT_PIN,
+  DPLL_A_PIN_PHASE_ADJUST_MIN,
+  DPLL_A_PIN_PHASE_ADJUST_MAX,
+  DPLL_A_PIN_PHASE_ADJUST,
+  DPLL_A_PIN_PHASE_OFFSET,
+  __DPLL_A_PIN_MAX,
+  DPLL_A_PIN_MAX = (__DPLL_A_PIN_MAX - 1)
+};
+enum dpll_cmd {
+  DPLL_CMD_DEVICE_ID_GET = 1,
+  DPLL_CMD_DEVICE_GET,
+  DPLL_CMD_DEVICE_SET,
+  DPLL_CMD_DEVICE_CREATE_NTF,
+  DPLL_CMD_DEVICE_DELETE_NTF,
+  DPLL_CMD_DEVICE_CHANGE_NTF,
+  DPLL_CMD_PIN_ID_GET,
+  DPLL_CMD_PIN_GET,
+  DPLL_CMD_PIN_SET,
+  DPLL_CMD_PIN_CREATE_NTF,
+  DPLL_CMD_PIN_DELETE_NTF,
+  DPLL_CMD_PIN_CHANGE_NTF,
+  __DPLL_CMD_MAX,
+  DPLL_CMD_MAX = (__DPLL_CMD_MAX - 1)
+};
+#define DPLL_MCGRP_MONITOR "monitor"
+#endif
diff --git a/libc/kernel/uapi/linux/elf.h b/libc/kernel/uapi/linux/elf.h
index f5fe1d6..c545fdf 100644
--- a/libc/kernel/uapi/linux/elf.h
+++ b/libc/kernel/uapi/linux/elf.h
@@ -105,7 +105,7 @@
 #define ELF32_ST_TYPE(x) ELF_ST_TYPE(x)
 #define ELF64_ST_BIND(x) ELF_ST_BIND(x)
 #define ELF64_ST_TYPE(x) ELF_ST_TYPE(x)
-typedef struct dynamic {
+typedef struct {
   Elf32_Sword d_tag;
   union {
     Elf32_Sword d_val;
diff --git a/libc/kernel/uapi/linux/fs.h b/libc/kernel/uapi/linux/fs.h
index c1e7726..9288653 100644
--- a/libc/kernel/uapi/linux/fs.h
+++ b/libc/kernel/uapi/linux/fs.h
@@ -184,4 +184,33 @@
 #define RWF_NOWAIT (( __kernel_rwf_t) 0x00000008)
 #define RWF_APPEND (( __kernel_rwf_t) 0x00000010)
 #define RWF_SUPPORTED (RWF_HIPRI | RWF_DSYNC | RWF_SYNC | RWF_NOWAIT | RWF_APPEND)
+#define PAGEMAP_SCAN _IOWR('f', 16, struct pm_scan_arg)
+#define PAGE_IS_WPALLOWED (1 << 0)
+#define PAGE_IS_WRITTEN (1 << 1)
+#define PAGE_IS_FILE (1 << 2)
+#define PAGE_IS_PRESENT (1 << 3)
+#define PAGE_IS_SWAPPED (1 << 4)
+#define PAGE_IS_PFNZERO (1 << 5)
+#define PAGE_IS_HUGE (1 << 6)
+struct page_region {
+  __u64 start;
+  __u64 end;
+  __u64 categories;
+};
+#define PM_SCAN_WP_MATCHING (1 << 0)
+#define PM_SCAN_CHECK_WPASYNC (1 << 1)
+struct pm_scan_arg {
+  __u64 size;
+  __u64 flags;
+  __u64 start;
+  __u64 end;
+  __u64 walk_end;
+  __u64 vec;
+  __u64 vec_len;
+  __u64 max_pages;
+  __u64 category_inverted;
+  __u64 category_mask;
+  __u64 category_anyof_mask;
+  __u64 return_mask;
+};
 #endif
diff --git a/libc/kernel/uapi/linux/fscrypt.h b/libc/kernel/uapi/linux/fscrypt.h
index 6079549..9a53f4c 100644
--- a/libc/kernel/uapi/linux/fscrypt.h
+++ b/libc/kernel/uapi/linux/fscrypt.h
@@ -48,7 +48,8 @@
   __u8 contents_encryption_mode;
   __u8 filenames_encryption_mode;
   __u8 flags;
-  __u8 __reserved[4];
+  __u8 log2_data_unit_size;
+  __u8 __reserved[3];
   __u8 master_key_identifier[FSCRYPT_KEY_IDENTIFIER_SIZE];
 };
 struct fscrypt_get_policy_ex_arg {
diff --git a/libc/kernel/uapi/linux/fuse.h b/libc/kernel/uapi/linux/fuse.h
index dd733e3..8a7d37f 100644
--- a/libc/kernel/uapi/linux/fuse.h
+++ b/libc/kernel/uapi/linux/fuse.h
@@ -129,7 +129,8 @@
 #define FUSE_HAS_INODE_DAX (1ULL << 33)
 #define FUSE_CREATE_SUPP_GROUP (1ULL << 34)
 #define FUSE_HAS_EXPIRE_ONLY (1ULL << 35)
-#define FUSE_DIRECT_IO_RELAX (1ULL << 36)
+#define FUSE_DIRECT_IO_ALLOW_MMAP (1ULL << 36)
+#define FUSE_DIRECT_IO_RELAX FUSE_DIRECT_IO_ALLOW_MMAP
 #if FUSE_KERNEL_VERSION > 7 || FUSE_KERNEL_VERSION == 7 && FUSE_KERNEL_MINOR_VERSION >= 36
 #define FUSE_PASSTHROUGH (1ULL << 63)
 #else
diff --git a/libc/kernel/uapi/linux/futex.h b/libc/kernel/uapi/linux/futex.h
index 4ad2893..32c9d28 100644
--- a/libc/kernel/uapi/linux/futex.h
+++ b/libc/kernel/uapi/linux/futex.h
@@ -38,7 +38,14 @@
 #define FUTEX_WAKE_BITSET_PRIVATE (FUTEX_WAKE_BITSET | FUTEX_PRIVATE_FLAG)
 #define FUTEX_WAIT_REQUEUE_PI_PRIVATE (FUTEX_WAIT_REQUEUE_PI | FUTEX_PRIVATE_FLAG)
 #define FUTEX_CMP_REQUEUE_PI_PRIVATE (FUTEX_CMP_REQUEUE_PI | FUTEX_PRIVATE_FLAG)
-#define FUTEX_32 2
+#define FUTEX2_SIZE_U8 0x00
+#define FUTEX2_SIZE_U16 0x01
+#define FUTEX2_SIZE_U32 0x02
+#define FUTEX2_SIZE_U64 0x03
+#define FUTEX2_NUMA 0x04
+#define FUTEX2_PRIVATE FUTEX_PRIVATE_FLAG
+#define FUTEX2_SIZE_MASK 0x03
+#define FUTEX_32 FUTEX2_SIZE_U32
 #define FUTEX_WAITV_MAX 128
 struct futex_waitv {
   __u64 val;
diff --git a/libc/kernel/uapi/linux/hash_info.h b/libc/kernel/uapi/linux/hash_info.h
index 84b8c81..f59010f 100644
--- a/libc/kernel/uapi/linux/hash_info.h
+++ b/libc/kernel/uapi/linux/hash_info.h
@@ -27,6 +27,9 @@
   HASH_ALGO_SM3_256,
   HASH_ALGO_STREEBOG_256,
   HASH_ALGO_STREEBOG_512,
+  HASH_ALGO_SHA3_256,
+  HASH_ALGO_SHA3_384,
+  HASH_ALGO_SHA3_512,
   HASH_ALGO__LAST
 };
 #endif
diff --git a/libc/kernel/uapi/linux/idxd.h b/libc/kernel/uapi/linux/idxd.h
index 7118e81..d8ca23c 100644
--- a/libc/kernel/uapi/linux/idxd.h
+++ b/libc/kernel/uapi/linux/idxd.h
@@ -28,6 +28,7 @@
   IDXD_SCMD_WQ_IRQ_ERR = 0x80100000,
   IDXD_SCMD_WQ_USER_NO_IOMMU = 0x80110000,
   IDXD_SCMD_DEV_EVL_ERR = 0x80120000,
+  IDXD_SCMD_WQ_NO_DRV_NAME = 0x80200000,
 };
 #define IDXD_SCMD_SOFTERR_MASK 0x80000000
 #define IDXD_SCMD_SOFTERR_SHIFT 16
diff --git a/libc/kernel/uapi/linux/if_bridge.h b/libc/kernel/uapi/linux/if_bridge.h
index 6b73db9..a738876 100644
--- a/libc/kernel/uapi/linux/if_bridge.h
+++ b/libc/kernel/uapi/linux/if_bridge.h
@@ -570,6 +570,13 @@
 };
 #define MDBA_SET_ENTRY_MAX (__MDBA_SET_ENTRY_MAX - 1)
 enum {
+  MDBA_GET_ENTRY_UNSPEC,
+  MDBA_GET_ENTRY,
+  MDBA_GET_ENTRY_ATTRS,
+  __MDBA_GET_ENTRY_MAX,
+};
+#define MDBA_GET_ENTRY_MAX (__MDBA_GET_ENTRY_MAX - 1)
+enum {
   MDBE_ATTR_UNSPEC,
   MDBE_ATTR_SOURCE,
   MDBE_ATTR_SRC_LIST,
diff --git a/libc/kernel/uapi/linux/if_link.h b/libc/kernel/uapi/linux/if_link.h
index 249a0d9..54b751e 100644
--- a/libc/kernel/uapi/linux/if_link.h
+++ b/libc/kernel/uapi/linux/if_link.h
@@ -157,6 +157,7 @@
   IFLA_DEVLINK_PORT,
   IFLA_GSO_IPV4_MAX_SIZE,
   IFLA_GRO_IPV4_MAX_SIZE,
+  IFLA_DPLL_PIN,
   __IFLA_MAX
 };
 #define IFLA_MAX (__IFLA_MAX - 1)
@@ -244,6 +245,8 @@
   IFLA_BR_VLAN_STATS_PER_PORT,
   IFLA_BR_MULTI_BOOLOPT,
   IFLA_BR_MCAST_QUERIER_STATE,
+  IFLA_BR_FDB_N_LEARNED,
+  IFLA_BR_FDB_MAX_LEARNED,
   __IFLA_BR_MAX,
 };
 #define IFLA_BR_MAX (__IFLA_BR_MAX - 1)
@@ -448,6 +451,26 @@
   __u16 reserved2;
   __u32 ifindex;
 };
+enum netkit_action {
+  NETKIT_NEXT = - 1,
+  NETKIT_PASS = 0,
+  NETKIT_DROP = 2,
+  NETKIT_REDIRECT = 7,
+};
+enum netkit_mode {
+  NETKIT_L2,
+  NETKIT_L3,
+};
+enum {
+  IFLA_NETKIT_UNSPEC,
+  IFLA_NETKIT_PEER_INFO,
+  IFLA_NETKIT_PRIMARY,
+  IFLA_NETKIT_POLICY,
+  IFLA_NETKIT_PEER_POLICY,
+  IFLA_NETKIT_MODE,
+  __IFLA_NETKIT_MAX,
+};
+#define IFLA_NETKIT_MAX (__IFLA_NETKIT_MAX - 1)
 #define TUNNEL_MSG_FLAG_STATS 0x01
 #define TUNNEL_MSG_VALID_USER_FLAGS TUNNEL_MSG_FLAG_STATS
 enum {
@@ -939,7 +962,8 @@
 #define IFLA_MCTP_MAX (__IFLA_MCTP_MAX - 1)
 enum {
   IFLA_DSA_UNSPEC,
-  IFLA_DSA_MASTER,
+  IFLA_DSA_CONDUIT,
+  IFLA_DSA_MASTER = IFLA_DSA_CONDUIT,
   __IFLA_DSA_MAX,
 };
 #define IFLA_DSA_MAX (__IFLA_DSA_MAX - 1)
diff --git a/libc/kernel/uapi/linux/iio/types.h b/libc/kernel/uapi/linux/iio/types.h
index 9604ffc..4e4324a 100644
--- a/libc/kernel/uapi/linux/iio/types.h
+++ b/libc/kernel/uapi/linux/iio/types.h
@@ -42,6 +42,10 @@
   IIO_POSITIONRELATIVE,
   IIO_PHASE,
   IIO_MASSCONCENTRATION,
+  IIO_DELTA_ANGL,
+  IIO_DELTA_VELOCITY,
+  IIO_COLORTEMP,
+  IIO_CHROMATICITY,
 };
 enum iio_modifier {
   IIO_NO_MOD,
diff --git a/libc/kernel/uapi/linux/io_uring.h b/libc/kernel/uapi/linux/io_uring.h
index ea9eb57..57c6405 100644
--- a/libc/kernel/uapi/linux/io_uring.h
+++ b/libc/kernel/uapi/linux/io_uring.h
@@ -30,6 +30,10 @@
   union {
     __u64 addr;
     __u64 splice_off_in;
+    struct {
+      __u32 level;
+      __u32 optname;
+    };
   };
   __u32 len;
   union {
@@ -52,6 +56,8 @@
     __u32 xattr_flags;
     __u32 msg_ring_flags;
     __u32 uring_cmd_flags;
+    __u32 waitid_flags;
+    __u32 futex_flags;
   };
   __u64 user_data;
   union {
@@ -62,6 +68,7 @@
   union {
     __s32 splice_fd_in;
     __u32 file_index;
+    __u32 optlen;
     struct {
       __u16 addr_len;
       __u16 __pad3[1];
@@ -72,6 +79,7 @@
       __u64 addr3;
       __u64 __pad2[1];
     };
+    __u64 optval;
     __u8 cmd[0];
   };
 };
@@ -159,10 +167,15 @@
   IORING_OP_URING_CMD,
   IORING_OP_SEND_ZC,
   IORING_OP_SENDMSG_ZC,
+  IORING_OP_READ_MULTISHOT,
+  IORING_OP_WAITID,
+  IORING_OP_FUTEX_WAIT,
+  IORING_OP_FUTEX_WAKE,
+  IORING_OP_FUTEX_WAITV,
   IORING_OP_LAST,
 };
 #define IORING_URING_CMD_FIXED (1U << 0)
-#define IORING_URING_CMD_POLLED (1U << 31)
+#define IORING_URING_CMD_MASK IORING_URING_CMD_FIXED
 #define IORING_FSYNC_DATASYNC (1U << 0)
 #define IORING_TIMEOUT_ABS (1U << 0)
 #define IORING_TIMEOUT_UPDATE (1U << 1)
@@ -420,6 +433,8 @@
 enum {
   SOCKET_URING_OP_SIOCINQ = 0,
   SOCKET_URING_OP_SIOCOUTQ,
+  SOCKET_URING_OP_GETSOCKOPT,
+  SOCKET_URING_OP_SETSOCKOPT,
 };
 #ifdef __cplusplus
 }
diff --git a/libc/kernel/uapi/linux/iommufd.h b/libc/kernel/uapi/linux/iommufd.h
index 79a18fe..d19a471 100644
--- a/libc/kernel/uapi/linux/iommufd.h
+++ b/libc/kernel/uapi/linux/iommufd.h
@@ -22,6 +22,8 @@
   IOMMUFD_CMD_VFIO_IOAS,
   IOMMUFD_CMD_HWPT_ALLOC,
   IOMMUFD_CMD_GET_HW_INFO,
+  IOMMUFD_CMD_HWPT_SET_DIRTY_TRACKING,
+  IOMMUFD_CMD_HWPT_GET_DIRTY_BITMAP,
 };
 struct iommu_destroy {
   __u32 size;
@@ -116,6 +118,25 @@
   __u16 __reserved;
 };
 #define IOMMU_VFIO_IOAS _IO(IOMMUFD_TYPE, IOMMUFD_CMD_VFIO_IOAS)
+enum iommufd_hwpt_alloc_flags {
+  IOMMU_HWPT_ALLOC_NEST_PARENT = 1 << 0,
+  IOMMU_HWPT_ALLOC_DIRTY_TRACKING = 1 << 1,
+};
+enum iommu_hwpt_vtd_s1_flags {
+  IOMMU_VTD_S1_SRE = 1 << 0,
+  IOMMU_VTD_S1_EAFE = 1 << 1,
+  IOMMU_VTD_S1_WPE = 1 << 2,
+};
+struct iommu_hwpt_vtd_s1 {
+  __aligned_u64 flags;
+  __aligned_u64 pgtbl_addr;
+  __u32 addr_width;
+  __u32 __reserved;
+};
+enum iommu_hwpt_data_type {
+  IOMMU_HWPT_DATA_NONE,
+  IOMMU_HWPT_DATA_VTD_S1,
+};
 struct iommu_hwpt_alloc {
   __u32 size;
   __u32 flags;
@@ -123,8 +144,14 @@
   __u32 pt_id;
   __u32 out_hwpt_id;
   __u32 __reserved;
+  __u32 data_type;
+  __u32 data_len;
+  __aligned_u64 data_uptr;
 };
 #define IOMMU_HWPT_ALLOC _IO(IOMMUFD_TYPE, IOMMUFD_CMD_HWPT_ALLOC)
+enum iommu_hw_info_vtd_flags {
+  IOMMU_HW_INFO_VTD_ERRATA_772415_SPR17 = 1 << 0,
+};
 struct iommu_hw_info_vtd {
   __u32 flags;
   __u32 __reserved;
@@ -135,6 +162,9 @@
   IOMMU_HW_INFO_TYPE_NONE,
   IOMMU_HW_INFO_TYPE_INTEL_VTD,
 };
+enum iommufd_hw_capabilities {
+  IOMMU_HW_CAP_DIRTY_TRACKING = 1 << 0,
+};
 struct iommu_hw_info {
   __u32 size;
   __u32 flags;
@@ -143,6 +173,31 @@
   __aligned_u64 data_uptr;
   __u32 out_data_type;
   __u32 __reserved;
+  __aligned_u64 out_capabilities;
 };
 #define IOMMU_GET_HW_INFO _IO(IOMMUFD_TYPE, IOMMUFD_CMD_GET_HW_INFO)
+enum iommufd_hwpt_set_dirty_tracking_flags {
+  IOMMU_HWPT_DIRTY_TRACKING_ENABLE = 1,
+};
+struct iommu_hwpt_set_dirty_tracking {
+  __u32 size;
+  __u32 flags;
+  __u32 hwpt_id;
+  __u32 __reserved;
+};
+#define IOMMU_HWPT_SET_DIRTY_TRACKING _IO(IOMMUFD_TYPE, IOMMUFD_CMD_HWPT_SET_DIRTY_TRACKING)
+enum iommufd_hwpt_get_dirty_bitmap_flags {
+  IOMMU_HWPT_GET_DIRTY_BITMAP_NO_CLEAR = 1,
+};
+struct iommu_hwpt_get_dirty_bitmap {
+  __u32 size;
+  __u32 hwpt_id;
+  __u32 flags;
+  __u32 __reserved;
+  __aligned_u64 iova;
+  __aligned_u64 length;
+  __aligned_u64 page_size;
+  __aligned_u64 data;
+};
+#define IOMMU_HWPT_GET_DIRTY_BITMAP _IO(IOMMUFD_TYPE, IOMMUFD_CMD_HWPT_GET_DIRTY_BITMAP)
 #endif
diff --git a/libc/kernel/uapi/linux/kfd_ioctl.h b/libc/kernel/uapi/linux/kfd_ioctl.h
index 003d87c..0dc806f 100644
--- a/libc/kernel/uapi/linux/kfd_ioctl.h
+++ b/libc/kernel/uapi/linux/kfd_ioctl.h
@@ -268,6 +268,7 @@
 #define KFD_IOC_ALLOC_MEM_FLAGS_AQL_QUEUE_MEM (1 << 27)
 #define KFD_IOC_ALLOC_MEM_FLAGS_COHERENT (1 << 26)
 #define KFD_IOC_ALLOC_MEM_FLAGS_UNCACHED (1 << 25)
+#define KFD_IOC_ALLOC_MEM_FLAGS_EXT_COHERENT (1 << 24)
 struct kfd_ioctl_alloc_memory_of_gpu_args {
   __u64 va_addr;
   __u64 size;
@@ -401,6 +402,7 @@
 #define KFD_IOCTL_SVM_FLAG_GPU_EXEC 0x00000010
 #define KFD_IOCTL_SVM_FLAG_GPU_READ_MOSTLY 0x00000020
 #define KFD_IOCTL_SVM_FLAG_GPU_ALWAYS_MAPPED 0x00000040
+#define KFD_IOCTL_SVM_FLAG_EXT_COHERENT 0x00000080
 enum kfd_ioctl_svm_op {
   KFD_IOCTL_SVM_OP_SET_ATTR,
   KFD_IOCTL_SVM_OP_GET_ATTR
diff --git a/libc/kernel/uapi/linux/kvm.h b/libc/kernel/uapi/linux/kvm.h
index ab99d8c..2a89638 100644
--- a/libc/kernel/uapi/linux/kvm.h
+++ b/libc/kernel/uapi/linux/kvm.h
@@ -200,6 +200,7 @@
 #define KVM_EXIT_RISCV_SBI 35
 #define KVM_EXIT_RISCV_CSR 36
 #define KVM_EXIT_NOTIFY 37
+#define KVM_EXIT_LOONGARCH_IOCSR 38
 #define KVM_INTERNAL_ERROR_EMULATION 1
 #define KVM_INTERNAL_ERROR_SIMUL_EX 2
 #define KVM_INTERNAL_ERROR_DELIVERY_EV 3
@@ -250,6 +251,12 @@
       __u8 is_write;
     } mmio;
     struct {
+      __u64 phys_addr;
+      __u8 data[8];
+      __u32 len;
+      __u8 is_write;
+    } iocsr_io;
+    struct {
       __u64 nr;
       __u64 args[6];
       __u64 ret;
@@ -925,6 +932,7 @@
 #define KVM_CAP_COUNTER_OFFSET 227
 #define KVM_CAP_ARM_EAGER_SPLIT_CHUNK_SIZE 228
 #define KVM_CAP_ARM_SUPPORTED_BLOCK_SIZES 229
+#define KVM_CAP_ARM_SUPPORTED_REG_MASK_RANGES 230
 #ifdef KVM_CAP_IRQ_ROUTING
 struct kvm_irq_routing_irqchip {
   __u32 irqchip;
@@ -1052,6 +1060,7 @@
 #define KVM_REG_ARM64 0x6000000000000000ULL
 #define KVM_REG_MIPS 0x7000000000000000ULL
 #define KVM_REG_RISCV 0x8000000000000000ULL
+#define KVM_REG_LOONGARCH 0x9000000000000000ULL
 #define KVM_REG_SIZE_SHIFT 52
 #define KVM_REG_SIZE_MASK 0x00f0000000000000ULL
 #define KVM_REG_SIZE_U8 0x0000000000000000ULL
@@ -1197,6 +1206,7 @@
 #define KVM_PPC_SVM_OFF _IO(KVMIO, 0xb3)
 #define KVM_ARM_MTE_COPY_TAGS _IOR(KVMIO, 0xb4, struct kvm_arm_copy_mte_tags)
 #define KVM_ARM_SET_COUNTER_OFFSET _IOW(KVMIO, 0xb5, struct kvm_arm_counter_offset)
+#define KVM_ARM_GET_REG_WRITABLE_MASKS _IOR(KVMIO, 0xb6, struct reg_mask_range)
 #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/landlock.h b/libc/kernel/uapi/linux/landlock.h
index 7518c94..75d3037 100644
--- a/libc/kernel/uapi/linux/landlock.h
+++ b/libc/kernel/uapi/linux/landlock.h
@@ -9,15 +9,21 @@
 #include <linux/types.h>
 struct landlock_ruleset_attr {
   __u64 handled_access_fs;
+  __u64 handled_access_net;
 };
 #define LANDLOCK_CREATE_RULESET_VERSION (1U << 0)
 enum landlock_rule_type {
   LANDLOCK_RULE_PATH_BENEATH = 1,
+  LANDLOCK_RULE_NET_PORT,
 };
 struct landlock_path_beneath_attr {
   __u64 allowed_access;
   __s32 parent_fd;
 } __attribute__((packed));
+struct landlock_net_port_attr {
+  __u64 allowed_access;
+  __u64 port;
+};
 #define LANDLOCK_ACCESS_FS_EXECUTE (1ULL << 0)
 #define LANDLOCK_ACCESS_FS_WRITE_FILE (1ULL << 1)
 #define LANDLOCK_ACCESS_FS_READ_FILE (1ULL << 2)
@@ -33,4 +39,6 @@
 #define LANDLOCK_ACCESS_FS_MAKE_SYM (1ULL << 12)
 #define LANDLOCK_ACCESS_FS_REFER (1ULL << 13)
 #define LANDLOCK_ACCESS_FS_TRUNCATE (1ULL << 14)
+#define LANDLOCK_ACCESS_NET_BIND_TCP (1ULL << 0)
+#define LANDLOCK_ACCESS_NET_CONNECT_TCP (1ULL << 1)
 #endif
diff --git a/libc/kernel/uapi/linux/media-bus-format.h b/libc/kernel/uapi/linux/media-bus-format.h
index a7425cd..230bfbb 100644
--- a/libc/kernel/uapi/linux/media-bus-format.h
+++ b/libc/kernel/uapi/linux/media-bus-format.h
@@ -18,6 +18,7 @@
 #define MEDIA_BUS_FMT_RGB565_2X8_BE 0x1007
 #define MEDIA_BUS_FMT_RGB565_2X8_LE 0x1008
 #define MEDIA_BUS_FMT_RGB666_1X18 0x1009
+#define MEDIA_BUS_FMT_RGB666_2X9_BE 0x1025
 #define MEDIA_BUS_FMT_BGR666_1X18 0x1023
 #define MEDIA_BUS_FMT_RBG888_1X24 0x100e
 #define MEDIA_BUS_FMT_RGB666_1X24_CPADHI 0x1015
diff --git a/libc/kernel/uapi/linux/mptcp.h b/libc/kernel/uapi/linux/mptcp.h
index d97f29b..6f5d272 100644
--- a/libc/kernel/uapi/linux/mptcp.h
+++ b/libc/kernel/uapi/linux/mptcp.h
@@ -22,71 +22,16 @@
 #define MPTCP_SUBFLOW_FLAG_FULLY_ESTABLISHED _BITUL(6)
 #define MPTCP_SUBFLOW_FLAG_CONNECTED _BITUL(7)
 #define MPTCP_SUBFLOW_FLAG_MAPVALID _BITUL(8)
-enum {
-  MPTCP_SUBFLOW_ATTR_UNSPEC,
-  MPTCP_SUBFLOW_ATTR_TOKEN_REM,
-  MPTCP_SUBFLOW_ATTR_TOKEN_LOC,
-  MPTCP_SUBFLOW_ATTR_RELWRITE_SEQ,
-  MPTCP_SUBFLOW_ATTR_MAP_SEQ,
-  MPTCP_SUBFLOW_ATTR_MAP_SFSEQ,
-  MPTCP_SUBFLOW_ATTR_SSN_OFFSET,
-  MPTCP_SUBFLOW_ATTR_MAP_DATALEN,
-  MPTCP_SUBFLOW_ATTR_FLAGS,
-  MPTCP_SUBFLOW_ATTR_ID_REM,
-  MPTCP_SUBFLOW_ATTR_ID_LOC,
-  MPTCP_SUBFLOW_ATTR_PAD,
-  __MPTCP_SUBFLOW_ATTR_MAX
-};
-#define MPTCP_SUBFLOW_ATTR_MAX (__MPTCP_SUBFLOW_ATTR_MAX - 1)
-#define MPTCP_PM_NAME "mptcp_pm"
 #define MPTCP_PM_CMD_GRP_NAME "mptcp_pm_cmds"
 #define MPTCP_PM_EV_GRP_NAME "mptcp_pm_events"
-#define MPTCP_PM_VER 0x1
-enum {
-  MPTCP_PM_ATTR_UNSPEC,
-  MPTCP_PM_ATTR_ADDR,
-  MPTCP_PM_ATTR_RCV_ADD_ADDRS,
-  MPTCP_PM_ATTR_SUBFLOWS,
-  MPTCP_PM_ATTR_TOKEN,
-  MPTCP_PM_ATTR_LOC_ID,
-  MPTCP_PM_ATTR_ADDR_REMOTE,
-  __MPTCP_PM_ATTR_MAX
-};
-#define MPTCP_PM_ATTR_MAX (__MPTCP_PM_ATTR_MAX - 1)
-enum {
-  MPTCP_PM_ADDR_ATTR_UNSPEC,
-  MPTCP_PM_ADDR_ATTR_FAMILY,
-  MPTCP_PM_ADDR_ATTR_ID,
-  MPTCP_PM_ADDR_ATTR_ADDR4,
-  MPTCP_PM_ADDR_ATTR_ADDR6,
-  MPTCP_PM_ADDR_ATTR_PORT,
-  MPTCP_PM_ADDR_ATTR_FLAGS,
-  MPTCP_PM_ADDR_ATTR_IF_IDX,
-  __MPTCP_PM_ADDR_ATTR_MAX
-};
-#define MPTCP_PM_ADDR_ATTR_MAX (__MPTCP_PM_ADDR_ATTR_MAX - 1)
+#include <linux/mptcp_pm.h>
+#define MPTCP_INFO_FLAG_FALLBACK _BITUL(0)
+#define MPTCP_INFO_FLAG_REMOTE_KEY_RECEIVED _BITUL(1)
 #define MPTCP_PM_ADDR_FLAG_SIGNAL (1 << 0)
 #define MPTCP_PM_ADDR_FLAG_SUBFLOW (1 << 1)
 #define MPTCP_PM_ADDR_FLAG_BACKUP (1 << 2)
 #define MPTCP_PM_ADDR_FLAG_FULLMESH (1 << 3)
 #define MPTCP_PM_ADDR_FLAG_IMPLICIT (1 << 4)
-enum {
-  MPTCP_PM_CMD_UNSPEC,
-  MPTCP_PM_CMD_ADD_ADDR,
-  MPTCP_PM_CMD_DEL_ADDR,
-  MPTCP_PM_CMD_GET_ADDR,
-  MPTCP_PM_CMD_FLUSH_ADDRS,
-  MPTCP_PM_CMD_SET_LIMITS,
-  MPTCP_PM_CMD_GET_LIMITS,
-  MPTCP_PM_CMD_SET_FLAGS,
-  MPTCP_PM_CMD_ANNOUNCE,
-  MPTCP_PM_CMD_REMOVE,
-  MPTCP_PM_CMD_SUBFLOW_CREATE,
-  MPTCP_PM_CMD_SUBFLOW_DESTROY,
-  __MPTCP_PM_CMD_AFTER_LAST
-};
-#define MPTCP_INFO_FLAG_FALLBACK _BITUL(0)
-#define MPTCP_INFO_FLAG_REMOTE_KEY_RECEIVED _BITUL(1)
 struct mptcp_info {
   __u8 mptcpi_subflows;
   __u8 mptcpi_add_addr_signal;
@@ -108,42 +53,6 @@
   __u64 mptcpi_bytes_received;
   __u64 mptcpi_bytes_acked;
 };
-enum mptcp_event_type {
-  MPTCP_EVENT_UNSPEC = 0,
-  MPTCP_EVENT_CREATED = 1,
-  MPTCP_EVENT_ESTABLISHED = 2,
-  MPTCP_EVENT_CLOSED = 3,
-  MPTCP_EVENT_ANNOUNCED = 6,
-  MPTCP_EVENT_REMOVED = 7,
-  MPTCP_EVENT_SUB_ESTABLISHED = 10,
-  MPTCP_EVENT_SUB_CLOSED = 11,
-  MPTCP_EVENT_SUB_PRIORITY = 13,
-  MPTCP_EVENT_LISTENER_CREATED = 15,
-  MPTCP_EVENT_LISTENER_CLOSED = 16,
-};
-enum mptcp_event_attr {
-  MPTCP_ATTR_UNSPEC = 0,
-  MPTCP_ATTR_TOKEN,
-  MPTCP_ATTR_FAMILY,
-  MPTCP_ATTR_LOC_ID,
-  MPTCP_ATTR_REM_ID,
-  MPTCP_ATTR_SADDR4,
-  MPTCP_ATTR_SADDR6,
-  MPTCP_ATTR_DADDR4,
-  MPTCP_ATTR_DADDR6,
-  MPTCP_ATTR_SPORT,
-  MPTCP_ATTR_DPORT,
-  MPTCP_ATTR_BACKUP,
-  MPTCP_ATTR_ERROR,
-  MPTCP_ATTR_FLAGS,
-  MPTCP_ATTR_TIMEOUT,
-  MPTCP_ATTR_IF_IDX,
-  MPTCP_ATTR_RESET_REASON,
-  MPTCP_ATTR_RESET_FLAGS,
-  MPTCP_ATTR_SERVER_SIDE,
-  __MPTCP_ATTR_AFTER_LAST
-};
-#define MPTCP_ATTR_MAX (__MPTCP_ATTR_AFTER_LAST - 1)
 #define MPTCP_RST_EUNSPEC 0
 #define MPTCP_RST_EMPTCP 1
 #define MPTCP_RST_ERESOURCE 2
diff --git a/libc/kernel/uapi/linux/mptcp_pm.h b/libc/kernel/uapi/linux/mptcp_pm.h
new file mode 100644
index 0000000..dfabc75
--- /dev/null
+++ b/libc/kernel/uapi/linux/mptcp_pm.h
@@ -0,0 +1,107 @@
+/*
+ * This file is auto-generated. Modifications will be lost.
+ *
+ * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
+ * for more information.
+ */
+#ifndef _UAPI_LINUX_MPTCP_PM_H
+#define _UAPI_LINUX_MPTCP_PM_H
+#define MPTCP_PM_NAME "mptcp_pm"
+#define MPTCP_PM_VER 1
+enum mptcp_event_type {
+  MPTCP_EVENT_UNSPEC,
+  MPTCP_EVENT_CREATED,
+  MPTCP_EVENT_ESTABLISHED,
+  MPTCP_EVENT_CLOSED,
+  MPTCP_EVENT_ANNOUNCED = 6,
+  MPTCP_EVENT_REMOVED,
+  MPTCP_EVENT_SUB_ESTABLISHED = 10,
+  MPTCP_EVENT_SUB_CLOSED,
+  MPTCP_EVENT_SUB_PRIORITY = 13,
+  MPTCP_EVENT_LISTENER_CREATED = 15,
+  MPTCP_EVENT_LISTENER_CLOSED,
+};
+enum {
+  MPTCP_PM_ADDR_ATTR_UNSPEC,
+  MPTCP_PM_ADDR_ATTR_FAMILY,
+  MPTCP_PM_ADDR_ATTR_ID,
+  MPTCP_PM_ADDR_ATTR_ADDR4,
+  MPTCP_PM_ADDR_ATTR_ADDR6,
+  MPTCP_PM_ADDR_ATTR_PORT,
+  MPTCP_PM_ADDR_ATTR_FLAGS,
+  MPTCP_PM_ADDR_ATTR_IF_IDX,
+  __MPTCP_PM_ADDR_ATTR_MAX
+};
+#define MPTCP_PM_ADDR_ATTR_MAX (__MPTCP_PM_ADDR_ATTR_MAX - 1)
+enum {
+  MPTCP_SUBFLOW_ATTR_UNSPEC,
+  MPTCP_SUBFLOW_ATTR_TOKEN_REM,
+  MPTCP_SUBFLOW_ATTR_TOKEN_LOC,
+  MPTCP_SUBFLOW_ATTR_RELWRITE_SEQ,
+  MPTCP_SUBFLOW_ATTR_MAP_SEQ,
+  MPTCP_SUBFLOW_ATTR_MAP_SFSEQ,
+  MPTCP_SUBFLOW_ATTR_SSN_OFFSET,
+  MPTCP_SUBFLOW_ATTR_MAP_DATALEN,
+  MPTCP_SUBFLOW_ATTR_FLAGS,
+  MPTCP_SUBFLOW_ATTR_ID_REM,
+  MPTCP_SUBFLOW_ATTR_ID_LOC,
+  MPTCP_SUBFLOW_ATTR_PAD,
+  __MPTCP_SUBFLOW_ATTR_MAX
+};
+#define MPTCP_SUBFLOW_ATTR_MAX (__MPTCP_SUBFLOW_ATTR_MAX - 1)
+enum {
+  MPTCP_PM_ENDPOINT_ADDR = 1,
+  __MPTCP_PM_ENDPOINT_MAX
+};
+#define MPTCP_PM_ENDPOINT_MAX (__MPTCP_PM_ENDPOINT_MAX - 1)
+enum {
+  MPTCP_PM_ATTR_UNSPEC,
+  MPTCP_PM_ATTR_ADDR,
+  MPTCP_PM_ATTR_RCV_ADD_ADDRS,
+  MPTCP_PM_ATTR_SUBFLOWS,
+  MPTCP_PM_ATTR_TOKEN,
+  MPTCP_PM_ATTR_LOC_ID,
+  MPTCP_PM_ATTR_ADDR_REMOTE,
+  __MPTCP_ATTR_AFTER_LAST
+};
+#define MPTCP_PM_ATTR_MAX (__MPTCP_ATTR_AFTER_LAST - 1)
+enum mptcp_event_attr {
+  MPTCP_ATTR_UNSPEC,
+  MPTCP_ATTR_TOKEN,
+  MPTCP_ATTR_FAMILY,
+  MPTCP_ATTR_LOC_ID,
+  MPTCP_ATTR_REM_ID,
+  MPTCP_ATTR_SADDR4,
+  MPTCP_ATTR_SADDR6,
+  MPTCP_ATTR_DADDR4,
+  MPTCP_ATTR_DADDR6,
+  MPTCP_ATTR_SPORT,
+  MPTCP_ATTR_DPORT,
+  MPTCP_ATTR_BACKUP,
+  MPTCP_ATTR_ERROR,
+  MPTCP_ATTR_FLAGS,
+  MPTCP_ATTR_TIMEOUT,
+  MPTCP_ATTR_IF_IDX,
+  MPTCP_ATTR_RESET_REASON,
+  MPTCP_ATTR_RESET_FLAGS,
+  MPTCP_ATTR_SERVER_SIDE,
+  __MPTCP_ATTR_MAX
+};
+#define MPTCP_ATTR_MAX (__MPTCP_ATTR_MAX - 1)
+enum {
+  MPTCP_PM_CMD_UNSPEC,
+  MPTCP_PM_CMD_ADD_ADDR,
+  MPTCP_PM_CMD_DEL_ADDR,
+  MPTCP_PM_CMD_GET_ADDR,
+  MPTCP_PM_CMD_FLUSH_ADDRS,
+  MPTCP_PM_CMD_SET_LIMITS,
+  MPTCP_PM_CMD_GET_LIMITS,
+  MPTCP_PM_CMD_SET_FLAGS,
+  MPTCP_PM_CMD_ANNOUNCE,
+  MPTCP_PM_CMD_REMOVE,
+  MPTCP_PM_CMD_SUBFLOW_CREATE,
+  MPTCP_PM_CMD_SUBFLOW_DESTROY,
+  __MPTCP_PM_CMD_AFTER_LAST
+};
+#define MPTCP_PM_CMD_MAX (__MPTCP_PM_CMD_AFTER_LAST - 1)
+#endif
diff --git a/libc/kernel/uapi/linux/netdev.h b/libc/kernel/uapi/linux/netdev.h
index 37e7cc6..3c5cb94 100644
--- a/libc/kernel/uapi/linux/netdev.h
+++ b/libc/kernel/uapi/linux/netdev.h
@@ -18,11 +18,17 @@
   NETDEV_XDP_ACT_NDO_XMIT_SG = 64,
   NETDEV_XDP_ACT_MASK = 127,
 };
+enum netdev_xdp_rx_metadata {
+  NETDEV_XDP_RX_METADATA_TIMESTAMP = 1,
+  NETDEV_XDP_RX_METADATA_HASH = 2,
+  NETDEV_XDP_RX_METADATA_MASK = 3,
+};
 enum {
   NETDEV_A_DEV_IFINDEX = 1,
   NETDEV_A_DEV_PAD,
   NETDEV_A_DEV_XDP_FEATURES,
   NETDEV_A_DEV_XDP_ZC_MAX_SEGS,
+  NETDEV_A_DEV_XDP_RX_METADATA_FEATURES,
   __NETDEV_A_DEV_MAX,
   NETDEV_A_DEV_MAX = (__NETDEV_A_DEV_MAX - 1)
 };
diff --git a/libc/kernel/uapi/linux/netlink.h b/libc/kernel/uapi/linux/netlink.h
index 0baa6ce..7621869 100644
--- a/libc/kernel/uapi/linux/netlink.h
+++ b/libc/kernel/uapi/linux/netlink.h
@@ -168,6 +168,8 @@
   NL_ATTR_TYPE_NESTED,
   NL_ATTR_TYPE_NESTED_ARRAY,
   NL_ATTR_TYPE_BITFIELD32,
+  NL_ATTR_TYPE_SINT,
+  NL_ATTR_TYPE_UINT,
 };
 enum netlink_policy_type_attr {
   NL_POLICY_TYPE_ATTR_UNSPEC,
diff --git a/libc/kernel/uapi/linux/nfsd_netlink.h b/libc/kernel/uapi/linux/nfsd_netlink.h
new file mode 100644
index 0000000..dd3d570
--- /dev/null
+++ b/libc/kernel/uapi/linux/nfsd_netlink.h
@@ -0,0 +1,34 @@
+/*
+ * This file is auto-generated. Modifications will be lost.
+ *
+ * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
+ * for more information.
+ */
+#ifndef _UAPI_LINUX_NFSD_NETLINK_H
+#define _UAPI_LINUX_NFSD_NETLINK_H
+#define NFSD_FAMILY_NAME "nfsd"
+#define NFSD_FAMILY_VERSION 1
+enum {
+  NFSD_A_RPC_STATUS_XID = 1,
+  NFSD_A_RPC_STATUS_FLAGS,
+  NFSD_A_RPC_STATUS_PROG,
+  NFSD_A_RPC_STATUS_VERSION,
+  NFSD_A_RPC_STATUS_PROC,
+  NFSD_A_RPC_STATUS_SERVICE_TIME,
+  NFSD_A_RPC_STATUS_PAD,
+  NFSD_A_RPC_STATUS_SADDR4,
+  NFSD_A_RPC_STATUS_DADDR4,
+  NFSD_A_RPC_STATUS_SADDR6,
+  NFSD_A_RPC_STATUS_DADDR6,
+  NFSD_A_RPC_STATUS_SPORT,
+  NFSD_A_RPC_STATUS_DPORT,
+  NFSD_A_RPC_STATUS_COMPOUND_OPS,
+  __NFSD_A_RPC_STATUS_MAX,
+  NFSD_A_RPC_STATUS_MAX = (__NFSD_A_RPC_STATUS_MAX - 1)
+};
+enum {
+  NFSD_CMD_RPC_STATUS_GET = 1,
+  __NFSD_CMD_MAX,
+  NFSD_CMD_MAX = (__NFSD_CMD_MAX - 1)
+};
+#endif
diff --git a/libc/kernel/uapi/linux/nl80211.h b/libc/kernel/uapi/linux/nl80211.h
index 90c6126..bf87c0e 100644
--- a/libc/kernel/uapi/linux/nl80211.h
+++ b/libc/kernel/uapi/linux/nl80211.h
@@ -867,6 +867,7 @@
   NL80211_FREQUENCY_ATTR_16MHZ,
   NL80211_FREQUENCY_ATTR_NO_320MHZ,
   NL80211_FREQUENCY_ATTR_NO_EHT,
+  NL80211_FREQUENCY_ATTR_PSD,
   __NL80211_FREQUENCY_ATTR_AFTER_LAST,
   NL80211_FREQUENCY_ATTR_MAX = __NL80211_FREQUENCY_ATTR_AFTER_LAST - 1
 };
@@ -903,6 +904,7 @@
   NL80211_ATTR_POWER_RULE_MAX_ANT_GAIN,
   NL80211_ATTR_POWER_RULE_MAX_EIRP,
   NL80211_ATTR_DFS_CAC_TIME,
+  NL80211_ATTR_POWER_RULE_PSD,
   __NL80211_REG_RULE_ATTR_AFTER_LAST,
   NL80211_REG_RULE_ATTR_MAX = __NL80211_REG_RULE_ATTR_AFTER_LAST - 1
 };
@@ -937,6 +939,7 @@
   NL80211_RRF_NO_HE = 1 << 17,
   NL80211_RRF_NO_320MHZ = 1 << 18,
   NL80211_RRF_NO_EHT = 1 << 19,
+  NL80211_RRF_PSD = 1 << 20,
 };
 #define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR
 #define NL80211_RRF_NO_IBSS NL80211_RRF_NO_IR
@@ -1542,6 +1545,8 @@
   NL80211_EXT_FEATURE_PUNCT,
   NL80211_EXT_FEATURE_SECURE_NAN,
   NL80211_EXT_FEATURE_AUTH_AND_DEAUTH_RANDOM_TA,
+  NL80211_EXT_FEATURE_OWE_OFFLOAD,
+  NL80211_EXT_FEATURE_OWE_OFFLOAD_AP,
   NUM_NL80211_EXT_FEATURES,
   MAX_NL80211_EXT_FEATURES = NUM_NL80211_EXT_FEATURES - 1
 };
diff --git a/libc/kernel/uapi/linux/npcm-video.h b/libc/kernel/uapi/linux/npcm-video.h
new file mode 100644
index 0000000..64cd3cc
--- /dev/null
+++ b/libc/kernel/uapi/linux/npcm-video.h
@@ -0,0 +1,16 @@
+/*
+ * This file is auto-generated. Modifications will be lost.
+ *
+ * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
+ * for more information.
+ */
+#ifndef _UAPI_LINUX_NPCM_VIDEO_H
+#define _UAPI_LINUX_NPCM_VIDEO_H
+#include <linux/v4l2-controls.h>
+#define V4L2_CID_NPCM_CAPTURE_MODE (V4L2_CID_USER_NPCM_BASE + 0)
+enum v4l2_npcm_capture_mode {
+  V4L2_NPCM_CAPTURE_MODE_COMPLETE = 0,
+  V4L2_NPCM_CAPTURE_MODE_DIFF = 1,
+};
+#define V4L2_CID_NPCM_RECT_COUNT (V4L2_CID_USER_NPCM_BASE + 1)
+#endif
diff --git a/libc/kernel/uapi/linux/pci_regs.h b/libc/kernel/uapi/linux/pci_regs.h
index 4bed443..e26392b 100644
--- a/libc/kernel/uapi/linux/pci_regs.h
+++ b/libc/kernel/uapi/linux/pci_regs.h
@@ -52,6 +52,7 @@
 #define PCI_HEADER_TYPE_NORMAL 0
 #define PCI_HEADER_TYPE_BRIDGE 1
 #define PCI_HEADER_TYPE_CARDBUS 2
+#define PCI_HEADER_TYPE_MFD 0x80
 #define PCI_BIST 0x0f
 #define PCI_BIST_CODE_MASK 0x0f
 #define PCI_BIST_START 0x40
@@ -534,6 +535,7 @@
 #define PCI_EXP_RTCAP 0x1e
 #define PCI_EXP_RTCAP_CRSVIS 0x0001
 #define PCI_EXP_RTSTA 0x20
+#define PCI_EXP_RTSTA_PME_RQ_ID 0x0000ffff
 #define PCI_EXP_RTSTA_PME 0x00010000
 #define PCI_EXP_RTSTA_PENDING 0x00020000
 #define PCI_EXP_DEVCAP2 0x24
@@ -784,12 +786,13 @@
 #define PCI_PRI_ALLOC_REQ 0x0c
 #define PCI_EXT_CAP_PRI_SIZEOF 16
 #define PCI_PASID_CAP 0x04
-#define PCI_PASID_CAP_EXEC 0x02
-#define PCI_PASID_CAP_PRIV 0x04
+#define PCI_PASID_CAP_EXEC 0x0002
+#define PCI_PASID_CAP_PRIV 0x0004
+#define PCI_PASID_CAP_WIDTH 0x1f00
 #define PCI_PASID_CTRL 0x06
-#define PCI_PASID_CTRL_ENABLE 0x01
-#define PCI_PASID_CTRL_EXEC 0x02
-#define PCI_PASID_CTRL_PRIV 0x04
+#define PCI_PASID_CTRL_ENABLE 0x0001
+#define PCI_PASID_CTRL_EXEC 0x0002
+#define PCI_PASID_CTRL_PRIV 0x0004
 #define PCI_EXT_CAP_PASID_SIZEOF 8
 #define PCI_SRIOV_CAP 0x04
 #define PCI_SRIOV_CAP_VFM 0x00000001
@@ -826,6 +829,8 @@
 #define PCI_LTR_VALUE_MASK 0x000003ff
 #define PCI_LTR_SCALE_MASK 0x00001c00
 #define PCI_LTR_SCALE_SHIFT 10
+#define PCI_LTR_NOSNOOP_VALUE 0x03ff0000
+#define PCI_LTR_NOSNOOP_SCALE 0x1c000000
 #define PCI_EXT_CAP_LTR_SIZEOF 8
 #define PCI_ACS_CAP 0x04
 #define PCI_ACS_SV 0x0001
@@ -878,9 +883,16 @@
 #define PCI_EXP_DPC_STATUS 0x08
 #define PCI_EXP_DPC_STATUS_TRIGGER 0x0001
 #define PCI_EXP_DPC_STATUS_TRIGGER_RSN 0x0006
+#define PCI_EXP_DPC_STATUS_TRIGGER_RSN_UNCOR 0x0000
+#define PCI_EXP_DPC_STATUS_TRIGGER_RSN_NFE 0x0002
+#define PCI_EXP_DPC_STATUS_TRIGGER_RSN_FE 0x0004
+#define PCI_EXP_DPC_STATUS_TRIGGER_RSN_IN_EXT 0x0006
 #define PCI_EXP_DPC_STATUS_INTERRUPT 0x0008
 #define PCI_EXP_DPC_RP_BUSY 0x0010
 #define PCI_EXP_DPC_STATUS_TRIGGER_RSN_EXT 0x0060
+#define PCI_EXP_DPC_STATUS_TRIGGER_RSN_RP_PIO 0x0000
+#define PCI_EXP_DPC_STATUS_TRIGGER_RSN_SW_TRIGGER 0x0020
+#define PCI_EXP_DPC_RP_PIO_FEP 0x1f00
 #define PCI_EXP_DPC_SOURCE_ID 0x0A
 #define PCI_EXP_DPC_RP_PIO_STATUS 0x0C
 #define PCI_EXP_DPC_RP_PIO_MASK 0x10
@@ -918,6 +930,8 @@
 #define PCI_L1SS_CTL1_LTR_L12_TH_VALUE 0x03ff0000
 #define PCI_L1SS_CTL1_LTR_L12_TH_SCALE 0xe0000000
 #define PCI_L1SS_CTL2 0x0c
+#define PCI_L1SS_CTL2_T_PWR_ON_SCALE 0x00000003
+#define PCI_L1SS_CTL2_T_PWR_ON_VALUE 0x000000f8
 #define PCI_DVSEC_HEADER1 0x4
 #define PCI_DVSEC_HEADER1_VID(x) ((x) & 0xffff)
 #define PCI_DVSEC_HEADER1_REV(x) (((x) >> 16) & 0xf)
diff --git a/libc/kernel/uapi/linux/pkt_sched.h b/libc/kernel/uapi/linux/pkt_sched.h
index 9a4f7fd..9047c8e 100644
--- a/libc/kernel/uapi/linux/pkt_sched.h
+++ b/libc/kernel/uapi/linux/pkt_sched.h
@@ -678,9 +678,13 @@
   TCA_FQ_TIMER_SLACK,
   TCA_FQ_HORIZON,
   TCA_FQ_HORIZON_DROP,
+  TCA_FQ_PRIOMAP,
+  TCA_FQ_WEIGHTS,
   __TCA_FQ_MAX
 };
 #define TCA_FQ_MAX (__TCA_FQ_MAX - 1)
+#define FQ_BANDS 3
+#define FQ_MIN_WEIGHT 16384
 struct tc_fq_qd_stats {
   __u64 gc_flows;
   __u64 highprio_packets;
@@ -697,6 +701,10 @@
   __u64 ce_mark;
   __u64 horizon_drops;
   __u64 horizon_caps;
+  __u64 fastpath_packets;
+  __u64 band_drops[FQ_BANDS];
+  __u32 band_pkt_count[FQ_BANDS];
+  __u32 pad;
 };
 enum {
   TCA_HHF_UNSPEC,
diff --git a/libc/kernel/uapi/linux/prctl.h b/libc/kernel/uapi/linux/prctl.h
index 02c1d78..48e100b 100644
--- a/libc/kernel/uapi/linux/prctl.h
+++ b/libc/kernel/uapi/linux/prctl.h
@@ -173,7 +173,8 @@
 #define PR_SME_VL_LEN_MASK 0xffff
 #define PR_SME_VL_INHERIT (1 << 17)
 #define PR_SET_MDWE 65
-#define PR_MDWE_REFUSE_EXEC_GAIN 1
+#define PR_MDWE_REFUSE_EXEC_GAIN (1UL << 0)
+#define PR_MDWE_NO_INHERIT (1UL << 1)
 #define PR_GET_MDWE 66
 #define PR_SET_VMA 0x53564d41
 #define PR_SET_VMA_ANON_NAME 0
diff --git a/libc/kernel/uapi/linux/psp-sev.h b/libc/kernel/uapi/linux/psp-sev.h
index f73a397..ffbcf82 100644
--- a/libc/kernel/uapi/linux/psp-sev.h
+++ b/libc/kernel/uapi/linux/psp-sev.h
@@ -46,6 +46,7 @@
   SEV_RET_INVALID_PARAM,
   SEV_RET_RESOURCE_LIMIT,
   SEV_RET_SECURE_DATA_INVALID,
+  SEV_RET_INVALID_KEY = 0x27,
   SEV_RET_MAX,
 } sev_ret_code;
 struct sev_user_data_status {
diff --git a/libc/kernel/uapi/linux/ptp_clock.h b/libc/kernel/uapi/linux/ptp_clock.h
index 5c24483..ca4447e 100644
--- a/libc/kernel/uapi/linux/ptp_clock.h
+++ b/libc/kernel/uapi/linux/ptp_clock.h
@@ -104,6 +104,8 @@
 #define PTP_PIN_SETFUNC2 _IOW(PTP_CLK_MAGIC, 16, struct ptp_pin_desc)
 #define PTP_SYS_OFFSET_PRECISE2 _IOWR(PTP_CLK_MAGIC, 17, struct ptp_sys_offset_precise)
 #define PTP_SYS_OFFSET_EXTENDED2 _IOWR(PTP_CLK_MAGIC, 18, struct ptp_sys_offset_extended)
+#define PTP_MASK_CLEAR_ALL _IO(PTP_CLK_MAGIC, 19)
+#define PTP_MASK_EN_SINGLE _IOW(PTP_CLK_MAGIC, 20, unsigned int)
 struct ptp_extts_event {
   struct ptp_clock_time t;
   unsigned int index;
diff --git a/libc/kernel/uapi/linux/rtnetlink.h b/libc/kernel/uapi/linux/rtnetlink.h
index 6309914..70038f2 100644
--- a/libc/kernel/uapi/linux/rtnetlink.h
+++ b/libc/kernel/uapi/linux/rtnetlink.h
@@ -368,7 +368,8 @@
 #define RTAX_FEATURE_SACK (1 << 1)
 #define RTAX_FEATURE_TIMESTAMP (1 << 2)
 #define RTAX_FEATURE_ALLFRAG (1 << 3)
-#define RTAX_FEATURE_MASK (RTAX_FEATURE_ECN | RTAX_FEATURE_SACK | RTAX_FEATURE_TIMESTAMP | RTAX_FEATURE_ALLFRAG)
+#define RTAX_FEATURE_TCP_USEC_TS (1 << 4)
+#define RTAX_FEATURE_MASK (RTAX_FEATURE_ECN | RTAX_FEATURE_SACK | RTAX_FEATURE_TIMESTAMP | RTAX_FEATURE_ALLFRAG | RTAX_FEATURE_TCP_USEC_TS)
 struct rta_session {
   __u8 proto;
   __u8 pad1;
diff --git a/libc/kernel/uapi/linux/sched/types.h b/libc/kernel/uapi/linux/sched/types.h
index 6ee5d57..e3bcbd2 100644
--- a/libc/kernel/uapi/linux/sched/types.h
+++ b/libc/kernel/uapi/linux/sched/types.h
@@ -7,9 +7,6 @@
 #ifndef _UAPI_LINUX_SCHED_TYPES_H
 #define _UAPI_LINUX_SCHED_TYPES_H
 #include <linux/types.h>
-struct sched_param {
-  int sched_priority;
-};
 #define SCHED_ATTR_SIZE_VER0 48
 #define SCHED_ATTR_SIZE_VER1 56
 struct sched_attr {
diff --git a/libc/kernel/uapi/linux/serial_core.h b/libc/kernel/uapi/linux/serial_core.h
index e376405..23b049a 100644
--- a/libc/kernel/uapi/linux/serial_core.h
+++ b/libc/kernel/uapi/linux/serial_core.h
@@ -98,4 +98,5 @@
 #define PORT_SUNIX 121
 #define PORT_LINFLEXUART 122
 #define PORT_SUNPLUS 123
+#define PORT_GENERIC (- 1)
 #endif
diff --git a/libc/kernel/uapi/linux/serial_reg.h b/libc/kernel/uapi/linux/serial_reg.h
index 8283812..7f53277 100644
--- a/libc/kernel/uapi/linux/serial_reg.h
+++ b/libc/kernel/uapi/linux/serial_reg.h
@@ -30,6 +30,7 @@
 #define UART_IIR_FIFO_ENABLED_8250 0x00
 #define UART_IIR_FIFO_ENABLED_16550 0x80
 #define UART_IIR_FIFO_ENABLED_16550A 0xc0
+#define UART_IIR_FIFO_ENABLED_16750 0xe0
 #define UART_FCR 2
 #define UART_FCR_ENABLE_FIFO 0x01
 #define UART_FCR_CLEAR_RCVR 0x02
diff --git a/libc/kernel/uapi/linux/sev-guest.h b/libc/kernel/uapi/linux/sev-guest.h
index 3221fef..a822bed 100644
--- a/libc/kernel/uapi/linux/sev-guest.h
+++ b/libc/kernel/uapi/linux/sev-guest.h
@@ -7,8 +7,9 @@
 #ifndef __UAPI_LINUX_SEV_GUEST_H_
 #define __UAPI_LINUX_SEV_GUEST_H_
 #include <linux/types.h>
+#define SNP_REPORT_USER_DATA_SIZE 64
 struct snp_report_req {
-  __u8 user_data[64];
+  __u8 user_data[SNP_REPORT_USER_DATA_SIZE];
   __u32 vmpl;
   __u8 rsvd[28];
 };
diff --git a/libc/kernel/uapi/linux/snmp.h b/libc/kernel/uapi/linux/snmp.h
index d511976..2f4c65c 100644
--- a/libc/kernel/uapi/linux/snmp.h
+++ b/libc/kernel/uapi/linux/snmp.h
@@ -12,7 +12,7 @@
   IPSTATS_MIB_INOCTETS,
   IPSTATS_MIB_INDELIVERS,
   IPSTATS_MIB_OUTFORWDATAGRAMS,
-  IPSTATS_MIB_OUTPKTS,
+  IPSTATS_MIB_OUTREQUESTS,
   IPSTATS_MIB_OUTOCTETS,
   IPSTATS_MIB_INHDRERRORS,
   IPSTATS_MIB_INTOOBIGERRORS,
@@ -44,6 +44,7 @@
   IPSTATS_MIB_ECT0PKTS,
   IPSTATS_MIB_CEPKTS,
   IPSTATS_MIB_REASM_OVERLAPS,
+  IPSTATS_MIB_OUTPKTS,
   __IPSTATS_MIB_MAX
 };
 enum {
@@ -251,6 +252,11 @@
   LINUX_MIB_TCPMIGRATEREQSUCCESS,
   LINUX_MIB_TCPMIGRATEREQFAILURE,
   LINUX_MIB_TCPPLBREHASH,
+  LINUX_MIB_TCPAOREQUIRED,
+  LINUX_MIB_TCPAOBAD,
+  LINUX_MIB_TCPAOKEYNOTFOUND,
+  LINUX_MIB_TCPAOGOOD,
+  LINUX_MIB_TCPAODROPPEDICMPS,
   __LINUX_MIB_MAX
 };
 enum {
diff --git a/libc/kernel/uapi/linux/stddef.h b/libc/kernel/uapi/linux/stddef.h
index ad98d3e..aa3a694 100644
--- a/libc/kernel/uapi/linux/stddef.h
+++ b/libc/kernel/uapi/linux/stddef.h
@@ -10,7 +10,7 @@
 #ifndef __always_inline
 #define __always_inline inline
 #endif
-#define __struct_group(TAG,NAME,ATTRS,MEMBERS...) union { struct { MEMBERS } ATTRS; struct TAG { MEMBERS } ATTRS NAME; }
+#define __struct_group(TAG,NAME,ATTRS,MEMBERS...) union { struct { MEMBERS } ATTRS; struct TAG { MEMBERS } ATTRS NAME; } ATTRS
 #ifdef __cplusplus
 #define __DECLARE_FLEX_ARRAY(T,member) T member[0]
 #else
diff --git a/libc/kernel/uapi/linux/tcp.h b/libc/kernel/uapi/linux/tcp.h
index 65bab54..cb26f97 100644
--- a/libc/kernel/uapi/linux/tcp.h
+++ b/libc/kernel/uapi/linux/tcp.h
@@ -66,6 +66,11 @@
 #define TCP_INQ 36
 #define TCP_CM_INQ TCP_INQ
 #define TCP_TX_DELAY 37
+#define TCP_AO_ADD_KEY 38
+#define TCP_AO_DEL_KEY 39
+#define TCP_AO_INFO 40
+#define TCP_AO_GET_KEYS 41
+#define TCP_AO_REPAIR 42
 #define TCP_REPAIR_ON 1
 #define TCP_REPAIR_OFF 0
 #define TCP_REPAIR_OFF_NO_WP - 1
@@ -98,6 +103,7 @@
 #define TCPI_OPT_ECN 8
 #define TCPI_OPT_ECN_SEEN 16
 #define TCPI_OPT_SYN_DATA 32
+#define TCPI_OPT_USEC_TS 64
 enum tcp_ca_state {
   TCP_CA_Open = 0,
 #define TCPF_CA_Open (1 << TCP_CA_Open)
@@ -167,6 +173,9 @@
   __u32 tcpi_snd_wnd;
   __u32 tcpi_rcv_wnd;
   __u32 tcpi_rehash;
+  __u16 tcpi_total_rto;
+  __u16 tcpi_total_rto_recoveries;
+  __u32 tcpi_total_rto_time;
 };
 enum {
   TCP_NLA_PAD,
@@ -216,6 +225,68 @@
   __be32 tcpm_addr[4];
   __u8 tcpm_key[TCP_MD5SIG_MAXKEYLEN];
 };
+#define TCP_AO_MAXKEYLEN 80
+#define TCP_AO_KEYF_IFINDEX (1 << 0)
+#define TCP_AO_KEYF_EXCLUDE_OPT (1 << 1)
+struct tcp_ao_add {
+  struct sockaddr_storage addr;
+  char alg_name[64];
+  __s32 ifindex;
+  __u32 set_current : 1, set_rnext : 1, reserved : 30;
+  __u16 reserved2;
+  __u8 prefix;
+  __u8 sndid;
+  __u8 rcvid;
+  __u8 maclen;
+  __u8 keyflags;
+  __u8 keylen;
+  __u8 key[TCP_AO_MAXKEYLEN];
+} __attribute__((aligned(8)));
+struct tcp_ao_del {
+  struct sockaddr_storage addr;
+  __s32 ifindex;
+  __u32 set_current : 1, set_rnext : 1, del_async : 1, reserved : 29;
+  __u16 reserved2;
+  __u8 prefix;
+  __u8 sndid;
+  __u8 rcvid;
+  __u8 current_key;
+  __u8 rnext;
+  __u8 keyflags;
+} __attribute__((aligned(8)));
+struct tcp_ao_info_opt {
+  __u32 set_current : 1, set_rnext : 1, ao_required : 1, set_counters : 1, accept_icmps : 1, reserved : 27;
+  __u16 reserved2;
+  __u8 current_key;
+  __u8 rnext;
+  __u64 pkt_good;
+  __u64 pkt_bad;
+  __u64 pkt_key_not_found;
+  __u64 pkt_ao_required;
+  __u64 pkt_dropped_icmp;
+} __attribute__((aligned(8)));
+struct tcp_ao_getsockopt {
+  struct sockaddr_storage addr;
+  char alg_name[64];
+  __u8 key[TCP_AO_MAXKEYLEN];
+  __u32 nkeys;
+  __u16 is_current : 1, is_rnext : 1, get_all : 1, reserved : 13;
+  __u8 sndid;
+  __u8 rcvid;
+  __u8 prefix;
+  __u8 maclen;
+  __u8 keyflags;
+  __u8 keylen;
+  __s32 ifindex;
+  __u64 pkt_good;
+  __u64 pkt_bad;
+} __attribute__((aligned(8)));
+struct tcp_ao_repair {
+  __be32 snt_isn;
+  __be32 rcv_isn;
+  __u32 snd_sne;
+  __u32 rcv_sne;
+} __attribute__((aligned(8)));
 #define TCP_RECEIVE_ZEROCOPY_FLAG_TLB_CLEAN_HINT 0x1
 struct tcp_zerocopy_receive {
   __u64 address;
diff --git a/libc/kernel/uapi/linux/usb/raw_gadget.h b/libc/kernel/uapi/linux/usb/raw_gadget.h
index 16c1753..d09dc1d 100644
--- a/libc/kernel/uapi/linux/usb/raw_gadget.h
+++ b/libc/kernel/uapi/linux/usb/raw_gadget.h
@@ -19,6 +19,10 @@
   USB_RAW_EVENT_INVALID = 0,
   USB_RAW_EVENT_CONNECT = 1,
   USB_RAW_EVENT_CONTROL = 2,
+  USB_RAW_EVENT_SUSPEND = 3,
+  USB_RAW_EVENT_RESUME = 4,
+  USB_RAW_EVENT_RESET = 5,
+  USB_RAW_EVENT_DISCONNECT = 6,
 };
 struct usb_raw_event {
   __u32 type;
diff --git a/libc/kernel/uapi/linux/user_events.h b/libc/kernel/uapi/linux/user_events.h
index de643be..7bff0b0 100644
--- a/libc/kernel/uapi/linux/user_events.h
+++ b/libc/kernel/uapi/linux/user_events.h
@@ -11,6 +11,10 @@
 #define USER_EVENTS_SYSTEM "user_events"
 #define USER_EVENTS_PREFIX "u:"
 #define DYN_LOC(offset,size) ((size) << 16 | (offset))
+enum user_reg_flag {
+  USER_EVENT_REG_PERSIST = 1U << 0,
+  USER_EVENT_REG_MAX = 1U << 1,
+};
 struct user_reg {
   __u32 size;
   __u8 enable_bit;
diff --git a/libc/kernel/uapi/linux/userfaultfd.h b/libc/kernel/uapi/linux/userfaultfd.h
index 4393eb2..5eeea4e 100644
--- a/libc/kernel/uapi/linux/userfaultfd.h
+++ b/libc/kernel/uapi/linux/userfaultfd.h
@@ -11,7 +11,7 @@
 #define USERFAULTFD_IOC_NEW _IO(USERFAULTFD_IOC, 0x00)
 #define UFFD_API ((__u64) 0xAA)
 #define UFFD_API_REGISTER_MODES (UFFDIO_REGISTER_MODE_MISSING | UFFDIO_REGISTER_MODE_WP | UFFDIO_REGISTER_MODE_MINOR)
-#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID | UFFD_FEATURE_MINOR_HUGETLBFS | UFFD_FEATURE_MINOR_SHMEM | UFFD_FEATURE_EXACT_ADDRESS | UFFD_FEATURE_WP_HUGETLBFS_SHMEM | UFFD_FEATURE_WP_UNPOPULATED | UFFD_FEATURE_POISON)
+#define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | UFFD_FEATURE_EVENT_FORK | UFFD_FEATURE_EVENT_REMAP | UFFD_FEATURE_EVENT_REMOVE | UFFD_FEATURE_EVENT_UNMAP | UFFD_FEATURE_MISSING_HUGETLBFS | UFFD_FEATURE_MISSING_SHMEM | UFFD_FEATURE_SIGBUS | UFFD_FEATURE_THREAD_ID | UFFD_FEATURE_MINOR_HUGETLBFS | UFFD_FEATURE_MINOR_SHMEM | UFFD_FEATURE_EXACT_ADDRESS | UFFD_FEATURE_WP_HUGETLBFS_SHMEM | UFFD_FEATURE_WP_UNPOPULATED | UFFD_FEATURE_POISON | UFFD_FEATURE_WP_ASYNC)
 #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 | (__u64) 1 << _UFFDIO_WRITEPROTECT | (__u64) 1 << _UFFDIO_CONTINUE | (__u64) 1 << _UFFDIO_POISON)
 #define UFFD_API_RANGE_IOCTLS_BASIC ((__u64) 1 << _UFFDIO_WAKE | (__u64) 1 << _UFFDIO_COPY | (__u64) 1 << _UFFDIO_WRITEPROTECT | (__u64) 1 << _UFFDIO_CONTINUE | (__u64) 1 << _UFFDIO_POISON)
@@ -91,6 +91,7 @@
 #define UFFD_FEATURE_WP_HUGETLBFS_SHMEM (1 << 12)
 #define UFFD_FEATURE_WP_UNPOPULATED (1 << 13)
 #define UFFD_FEATURE_POISON (1 << 14)
+#define UFFD_FEATURE_WP_ASYNC (1 << 15)
   __u64 features;
   __u64 ioctls;
 };
diff --git a/libc/kernel/uapi/linux/v4l2-controls.h b/libc/kernel/uapi/linux/v4l2-controls.h
index da0935f..90cb69d 100644
--- a/libc/kernel/uapi/linux/v4l2-controls.h
+++ b/libc/kernel/uapi/linux/v4l2-controls.h
@@ -110,6 +110,7 @@
 #define V4L2_CID_USER_ISL7998X_BASE (V4L2_CID_USER_BASE + 0x1180)
 #define V4L2_CID_USER_DW100_BASE (V4L2_CID_USER_BASE + 0x1190)
 #define V4L2_CID_USER_ASPEED_BASE (V4L2_CID_USER_BASE + 0x11a0)
+#define V4L2_CID_USER_NPCM_BASE (V4L2_CID_USER_BASE + 0x11b0)
 #define V4L2_CID_CODEC_BASE (V4L2_CTRL_CLASS_CODEC | 0x900)
 #define V4L2_CID_CODEC_CLASS (V4L2_CTRL_CLASS_CODEC | 1)
 #define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_CODEC_BASE + 0)
diff --git a/libc/kernel/uapi/linux/v4l2-subdev.h b/libc/kernel/uapi/linux/v4l2-subdev.h
index b1d1175..d684a54 100644
--- a/libc/kernel/uapi/linux/v4l2-subdev.h
+++ b/libc/kernel/uapi/linux/v4l2-subdev.h
@@ -103,7 +103,7 @@
   __u64 routes;
   __u32 reserved[6];
 };
-#define V4L2_SUBDEV_CLIENT_CAP_STREAMS (1U << 0)
+#define V4L2_SUBDEV_CLIENT_CAP_STREAMS (1ULL << 0)
 struct v4l2_subdev_client_capability {
   __u64 capabilities;
 };
diff --git a/libc/kernel/uapi/linux/version.h b/libc/kernel/uapi/linux/version.h
index e9f78f2..645a2ab 100644
--- a/libc/kernel/uapi/linux/version.h
+++ b/libc/kernel/uapi/linux/version.h
@@ -4,8 +4,8 @@
  * See https://android.googlesource.com/platform/bionic/+/master/libc/kernel/
  * for more information.
  */
-#define LINUX_VERSION_CODE 394752
+#define LINUX_VERSION_CODE 395008
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + ((c) > 255 ? 255 : (c)))
 #define LINUX_VERSION_MAJOR 6
-#define LINUX_VERSION_PATCHLEVEL 6
+#define LINUX_VERSION_PATCHLEVEL 7
 #define LINUX_VERSION_SUBLEVEL 0
diff --git a/libc/kernel/uapi/linux/vfio.h b/libc/kernel/uapi/linux/vfio.h
index e44f122..1107b21 100644
--- a/libc/kernel/uapi/linux/vfio.h
+++ b/libc/kernel/uapi/linux/vfio.h
@@ -84,14 +84,14 @@
 #define VFIO_REGION_INFO_FLAG_CAPS (1 << 3)
   __u32 index;
   __u32 cap_offset;
-  __u64 size;
-  __u64 offset;
+  __aligned_u64 size;
+  __aligned_u64 offset;
 };
 #define VFIO_DEVICE_GET_REGION_INFO _IO(VFIO_TYPE, VFIO_BASE + 8)
 #define VFIO_REGION_INFO_CAP_SPARSE_MMAP 1
 struct vfio_region_sparse_mmap_area {
-  __u64 offset;
-  __u64 size;
+  __aligned_u64 offset;
+  __aligned_u64 size;
 };
 struct vfio_region_info_cap_sparse_mmap {
   struct vfio_info_cap_header header;
@@ -141,15 +141,15 @@
 #define VFIO_DEVICE_STATE_IS_ERROR(state) ((state & VFIO_DEVICE_STATE_MASK) == (VFIO_DEVICE_STATE_V1_SAVING | VFIO_DEVICE_STATE_V1_RESUMING))
 #define VFIO_DEVICE_STATE_SET_ERROR(state) ((state & ~VFIO_DEVICE_STATE_MASK) | VFIO_DEVICE_STATE_V1_SAVING | VFIO_DEVICE_STATE_V1_RESUMING)
   __u32 reserved;
-  __u64 pending_bytes;
-  __u64 data_offset;
-  __u64 data_size;
+  __aligned_u64 pending_bytes;
+  __aligned_u64 data_offset;
+  __aligned_u64 data_size;
 };
 #define VFIO_REGION_INFO_CAP_MSIX_MAPPABLE 3
 #define VFIO_REGION_INFO_CAP_NVLINK2_SSATGT 4
 struct vfio_region_info_cap_nvlink2_ssatgt {
   struct vfio_info_cap_header header;
-  __u64 tgt;
+  __aligned_u64 tgt;
 };
 #define VFIO_REGION_INFO_CAP_NVLINK2_LNKSPD 5
 struct vfio_region_info_cap_nvlink2_lnkspd {
@@ -255,7 +255,7 @@
 #define VFIO_GFX_PLANE_TYPE_REGION (1 << 2)
   __u32 drm_plane_type;
   __u32 drm_format;
-  __u64 drm_format_mod;
+  __aligned_u64 drm_format_mod;
   __u32 width;
   __u32 height;
   __u32 stride;
@@ -268,6 +268,7 @@
     __u32 region_index;
     __u32 dmabuf_id;
   };
+  __u32 reserved;
 };
 #define VFIO_DEVICE_QUERY_GFX_PLANE _IO(VFIO_TYPE, VFIO_BASE + 14)
 #define VFIO_DEVICE_GET_GFX_DMABUF _IO(VFIO_TYPE, VFIO_BASE + 15)
@@ -279,9 +280,10 @@
 #define VFIO_DEVICE_IOEVENTFD_32 (1 << 2)
 #define VFIO_DEVICE_IOEVENTFD_64 (1 << 3)
 #define VFIO_DEVICE_IOEVENTFD_SIZE_MASK (0xf)
-  __u64 offset;
-  __u64 data;
+  __aligned_u64 offset;
+  __aligned_u64 data;
   __s32 fd;
+  __u32 reserved;
 };
 #define VFIO_DEVICE_IOEVENTFD _IO(VFIO_TYPE, VFIO_BASE + 16)
 struct vfio_device_feature {
@@ -372,12 +374,18 @@
   __aligned_u64 stop_copy_length;
 };
 #define VFIO_DEVICE_FEATURE_MIG_DATA_SIZE 9
+struct vfio_device_feature_bus_master {
+  __u32 op;
+#define VFIO_DEVICE_FEATURE_CLEAR_MASTER 0
+#define VFIO_DEVICE_FEATURE_SET_MASTER 1
+};
+#define VFIO_DEVICE_FEATURE_BUS_MASTER 10
 struct vfio_iommu_type1_info {
   __u32 argsz;
   __u32 flags;
 #define VFIO_IOMMU_INFO_PGSIZES (1 << 0)
 #define VFIO_IOMMU_INFO_CAPS (1 << 1)
-  __u64 iova_pgsizes;
+  __aligned_u64 iova_pgsizes;
   __u32 cap_offset;
   __u32 pad;
 };
diff --git a/libc/kernel/uapi/linux/vhost.h b/libc/kernel/uapi/linux/vhost.h
index 05142cb..adf0af7 100644
--- a/libc/kernel/uapi/linux/vhost.h
+++ b/libc/kernel/uapi/linux/vhost.h
@@ -62,4 +62,5 @@
 #define VHOST_VDPA_SET_GROUP_ASID _IOW(VHOST_VIRTIO, 0x7C, struct vhost_vring_state)
 #define VHOST_VDPA_SUSPEND _IO(VHOST_VIRTIO, 0x7D)
 #define VHOST_VDPA_RESUME _IO(VHOST_VIRTIO, 0x7E)
+#define VHOST_VDPA_GET_VRING_DESC_GROUP _IOWR(VHOST_VIRTIO, 0x7F, struct vhost_vring_state)
 #endif
diff --git a/libc/kernel/uapi/linux/vhost_types.h b/libc/kernel/uapi/linux/vhost_types.h
index d249ac4..cd9a9fb 100644
--- a/libc/kernel/uapi/linux/vhost_types.h
+++ b/libc/kernel/uapi/linux/vhost_types.h
@@ -103,4 +103,6 @@
 #define VHOST_BACKEND_F_SUSPEND 0x4
 #define VHOST_BACKEND_F_RESUME 0x5
 #define VHOST_BACKEND_F_ENABLE_AFTER_DRIVER_OK 0x6
+#define VHOST_BACKEND_F_DESC_ASID 0x7
+#define VHOST_BACKEND_F_IOTLB_PERSIST 0x8
 #endif
diff --git a/libc/kernel/uapi/linux/videodev2.h b/libc/kernel/uapi/linux/videodev2.h
index de51ef0..bb98888 100644
--- a/libc/kernel/uapi/linux/videodev2.h
+++ b/libc/kernel/uapi/linux/videodev2.h
@@ -418,6 +418,7 @@
 #define V4L2_PIX_FMT_QC08C v4l2_fourcc('Q', '0', '8', 'C')
 #define V4L2_PIX_FMT_QC10C v4l2_fourcc('Q', '1', '0', 'C')
 #define V4L2_PIX_FMT_AJPG v4l2_fourcc('A', 'J', 'P', 'G')
+#define V4L2_PIX_FMT_HEXTILE v4l2_fourcc('H', 'X', 'T', 'L')
 #define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b')
 #define V4L2_PIX_FMT_IPU3_SGBRG10 v4l2_fourcc('i', 'p', '3', 'g')
 #define V4L2_PIX_FMT_IPU3_SGRBG10 v4l2_fourcc('i', 'p', '3', 'G')
diff --git a/libc/kernel/uapi/linux/virtio_config.h b/libc/kernel/uapi/linux/virtio_config.h
index 223b63c..520a472 100644
--- a/libc/kernel/uapi/linux/virtio_config.h
+++ b/libc/kernel/uapi/linux/virtio_config.h
@@ -27,5 +27,6 @@
 #define VIRTIO_F_ORDER_PLATFORM 36
 #define VIRTIO_F_SR_IOV 37
 #define VIRTIO_F_NOTIFICATION_DATA 38
+#define VIRTIO_F_NOTIF_CONFIG_DATA 39
 #define VIRTIO_F_RING_RESET 40
 #endif
diff --git a/libc/kernel/uapi/linux/virtio_pci.h b/libc/kernel/uapi/linux/virtio_pci.h
index ee6a078..f9595bc 100644
--- a/libc/kernel/uapi/linux/virtio_pci.h
+++ b/libc/kernel/uapi/linux/virtio_pci.h
@@ -74,6 +74,11 @@
   __le32 queue_used_lo;
   __le32 queue_used_hi;
 };
+struct virtio_pci_modern_common_cfg {
+  struct virtio_pci_common_cfg cfg;
+  __le16 queue_notify_data;
+  __le16 queue_reset;
+};
 struct virtio_pci_cfg_cap {
   struct virtio_pci_cap cap;
   __u8 pci_cfg_data[4];
diff --git a/libc/kernel/uapi/linux/vm_sockets.h b/libc/kernel/uapi/linux/vm_sockets.h
index ad74adc..bd84f44 100644
--- a/libc/kernel/uapi/linux/vm_sockets.h
+++ b/libc/kernel/uapi/linux/vm_sockets.h
@@ -40,4 +40,6 @@
   unsigned char svm_zero[sizeof(struct sockaddr) - sizeof(sa_family_t) - sizeof(unsigned short) - sizeof(unsigned int) - sizeof(unsigned int) - sizeof(__u8)];
 };
 #define IOCTL_VM_SOCKETS_GET_LOCAL_CID _IO(7, 0xb9)
+#define SOL_VSOCK 287
+#define VSOCK_RECVERR 1
 #endif
diff --git a/libc/kernel/uapi/linux/xfrm.h b/libc/kernel/uapi/linux/xfrm.h
index a34b399..e2f168d 100644
--- a/libc/kernel/uapi/linux/xfrm.h
+++ b/libc/kernel/uapi/linux/xfrm.h
@@ -8,6 +8,7 @@
 #define _LINUX_XFRM_H
 #include <linux/in6.h>
 #include <linux/types.h>
+#include <linux/stddef.h>
 typedef union {
   __be32 a4;
   __be32 a6[4];
@@ -23,7 +24,7 @@
   __u8 ctx_alg;
   __u16 ctx_len;
   __u32 ctx_sid;
-  char ctx_str[];
+  char ctx_str[] __counted_by(ctx_len);
 };
 #define XFRM_SC_DOI_RESERVED 0
 #define XFRM_SC_DOI_LSM 1
diff --git a/libc/kernel/uapi/mtd/ubi-user.h b/libc/kernel/uapi/mtd/ubi-user.h
index 93831de..bb9a6cb 100644
--- a/libc/kernel/uapi/mtd/ubi-user.h
+++ b/libc/kernel/uapi/mtd/ubi-user.h
@@ -45,7 +45,8 @@
   __s32 vid_hdr_offset;
   __s16 max_beb_per1024;
   __s8 disable_fm;
-  __s8 padding[9];
+  __s8 need_resv_pool;
+  __s8 padding[8];
 };
 enum {
   UBI_VOL_SKIP_CRC_CHECK_FLG = 0x1,
diff --git a/libc/kernel/uapi/rdma/hns-abi.h b/libc/kernel/uapi/rdma/hns-abi.h
index afe0f80..f9effb3 100644
--- a/libc/kernel/uapi/rdma/hns-abi.h
+++ b/libc/kernel/uapi/rdma/hns-abi.h
@@ -20,14 +20,22 @@
   __aligned_u64 cqn;
   __aligned_u64 cap_flags;
 };
+enum hns_roce_srq_cap_flags {
+  HNS_ROCE_SRQ_CAP_RECORD_DB = 1 << 0,
+};
+enum hns_roce_srq_cap_flags_resp {
+  HNS_ROCE_RSP_SRQ_CAP_RECORD_DB = 1 << 0,
+};
 struct hns_roce_ib_create_srq {
   __aligned_u64 buf_addr;
   __aligned_u64 db_addr;
   __aligned_u64 que_addr;
+  __u32 req_cap_flags;
+  __u32 reserved;
 };
 struct hns_roce_ib_create_srq_resp {
   __u32 srqn;
-  __u32 reserved;
+  __u32 cap_flags;
 };
 struct hns_roce_ib_create_qp {
   __aligned_u64 buf_addr;
diff --git a/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h b/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
index 2e4a79b..9feec8e 100644
--- a/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
+++ b/libc/kernel/uapi/rdma/ib_user_ioctl_verbs.h
@@ -151,7 +151,8 @@
 struct ib_uverbs_query_port_resp_ex {
   struct ib_uverbs_query_port_resp legacy_resp;
   __u16 port_cap_flags2;
-  __u8 reserved[6];
+  __u8 reserved[2];
+  __u32 active_speed_ex;
 };
 struct ib_uverbs_qp_cap {
   __u32 max_send_wr;
diff --git a/libc/kernel/uapi/rdma/rdma_netlink.h b/libc/kernel/uapi/rdma/rdma_netlink.h
index b16118d..2fe8c30 100644
--- a/libc/kernel/uapi/rdma/rdma_netlink.h
+++ b/libc/kernel/uapi/rdma/rdma_netlink.h
@@ -198,6 +198,7 @@
   RDMA_NLDEV_CMD_RES_CTX_GET,
   RDMA_NLDEV_CMD_RES_SRQ_GET,
   RDMA_NLDEV_CMD_STAT_GET_STATUS,
+  RDMA_NLDEV_CMD_RES_SRQ_GET_RAW,
   RDMA_NLDEV_NUM_OPS
 };
 enum rdma_nldev_print_type {
@@ -302,6 +303,7 @@
   RDMA_NLDEV_SYS_ATTR_COPY_ON_FORK,
   RDMA_NLDEV_ATTR_STAT_HWCOUNTER_INDEX,
   RDMA_NLDEV_ATTR_STAT_HWCOUNTER_DYNAMIC,
+  RDMA_NLDEV_SYS_ATTR_PRIVILEGED_QKEY_MODE,
   RDMA_NLDEV_ATTR_MAX
 };
 enum rdma_nl_counter_mode {
diff --git a/libc/kernel/uapi/sound/asequencer.h b/libc/kernel/uapi/sound/asequencer.h
index 6919149..7918528 100644
--- a/libc/kernel/uapi/sound/asequencer.h
+++ b/libc/kernel/uapi/sound/asequencer.h
@@ -117,7 +117,7 @@
 struct snd_seq_ev_ext {
   unsigned int len;
   void * ptr;
-} __attribute__((packed));
+} __attribute__((__packed__));
 struct snd_seq_result {
   int event;
   int result;
@@ -151,7 +151,7 @@
   struct snd_seq_addr origin;
   unsigned short value;
   struct snd_seq_event * event;
-} __attribute__((packed));
+} __attribute__((__packed__));
 union snd_seq_event_data {
   struct snd_seq_ev_note note;
   struct snd_seq_ev_ctrl control;
diff --git a/libc/kernel/uapi/xen/privcmd.h b/libc/kernel/uapi/xen/privcmd.h
index eef9f8d..0597247 100644
--- a/libc/kernel/uapi/xen/privcmd.h
+++ b/libc/kernel/uapi/xen/privcmd.h
@@ -57,13 +57,26 @@
 };
 #define PRIVCMD_IRQFD_FLAG_DEASSIGN (1 << 0)
 struct privcmd_irqfd {
-  void  * dm_op;
+  __u64 dm_op;
   __u32 size;
   __u32 fd;
   __u32 flags;
   domid_t dom;
   __u8 pad[2];
 };
+#define PRIVCMD_IOEVENTFD_FLAG_DEASSIGN (1 << 0)
+struct privcmd_ioeventfd {
+  __u64 ioreq;
+  __u64 ports;
+  __u64 addr;
+  __u32 addr_len;
+  __u32 event_fd;
+  __u32 vcpus;
+  __u32 vq;
+  __u32 flags;
+  domid_t dom;
+  __u8 pad[2];
+};
 #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))
@@ -71,5 +84,6 @@
 #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))
 #define IOCTL_PRIVCMD_MMAP_RESOURCE _IOC(_IOC_NONE, 'P', 7, sizeof(struct privcmd_mmap_resource))
-#define IOCTL_PRIVCMD_IRQFD _IOC(_IOC_NONE, 'P', 8, sizeof(struct privcmd_irqfd))
+#define IOCTL_PRIVCMD_IRQFD _IOW('P', 8, struct privcmd_irqfd)
+#define IOCTL_PRIVCMD_IOEVENTFD _IOW('P', 9, struct privcmd_ioeventfd)
 #endif