Update to v5.0 kernel headers.

Test: Builds and boots on taimen.
Change-Id: I13843bf1ab30ea89a50852adc88f2cba8401bded
diff --git a/libc/kernel/uapi/linux/android/binderfs.h b/libc/kernel/uapi/linux/android/binderfs.h
new file mode 100644
index 0000000..d58c333
--- /dev/null
+++ b/libc/kernel/uapi/linux/android/binderfs.h
@@ -0,0 +1,31 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_BINDERFS_H
+#define _UAPI_LINUX_BINDERFS_H
+#include <linux/android/binder.h>
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define BINDERFS_MAX_NAME 255
+struct binderfs_device {
+  char name[BINDERFS_MAX_NAME + 1];
+  __u32 major;
+  __u32 minor;
+};
+#define BINDER_CTL_ADD _IOWR('b', 1, struct binderfs_device)
+#endif
diff --git a/libc/kernel/uapi/linux/audit.h b/libc/kernel/uapi/linux/audit.h
index 235a0e7..0698fc8 100644
--- a/libc/kernel/uapi/linux/audit.h
+++ b/libc/kernel/uapi/linux/audit.h
@@ -265,6 +265,7 @@
 #define AUDIT_ARCH_ARM (EM_ARM | __AUDIT_ARCH_LE)
 #define AUDIT_ARCH_ARMEB (EM_ARM)
 #define AUDIT_ARCH_CRIS (EM_CRIS | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_CSKY (EM_CSKY | __AUDIT_ARCH_LE)
 #define AUDIT_ARCH_FRV (EM_FRV)
 #define AUDIT_ARCH_I386 (EM_386 | __AUDIT_ARCH_LE)
 #define AUDIT_ARCH_IA64 (EM_IA_64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
@@ -283,6 +284,8 @@
 #define AUDIT_ARCH_PPC (EM_PPC)
 #define AUDIT_ARCH_PPC64 (EM_PPC64 | __AUDIT_ARCH_64BIT)
 #define AUDIT_ARCH_PPC64LE (EM_PPC64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_RISCV32 (EM_RISCV | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_RISCV64 (EM_RISCV | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
 #define AUDIT_ARCH_S390 (EM_S390)
 #define AUDIT_ARCH_S390X (EM_S390 | __AUDIT_ARCH_64BIT)
 #define AUDIT_ARCH_SH (EM_SH)
@@ -295,6 +298,7 @@
 #define AUDIT_ARCH_TILEGX32 (EM_TILEGX | __AUDIT_ARCH_LE)
 #define AUDIT_ARCH_TILEPRO (EM_TILEPRO | __AUDIT_ARCH_LE)
 #define AUDIT_ARCH_X86_64 (EM_X86_64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
+#define AUDIT_ARCH_XTENSA (EM_XTENSA)
 #define AUDIT_PERM_EXEC 1
 #define AUDIT_PERM_WRITE 2
 #define AUDIT_PERM_READ 4
diff --git a/libc/kernel/uapi/linux/auto_fs.h b/libc/kernel/uapi/linux/auto_fs.h
index 0264b86..9a9dd65 100644
--- a/libc/kernel/uapi/linux/auto_fs.h
+++ b/libc/kernel/uapi/linux/auto_fs.h
@@ -24,7 +24,7 @@
 #define AUTOFS_PROTO_VERSION 5
 #define AUTOFS_MIN_PROTO_VERSION 3
 #define AUTOFS_MAX_PROTO_VERSION 5
-#define AUTOFS_PROTO_SUBVERSION 3
+#define AUTOFS_PROTO_SUBVERSION 4
 #if defined(__ia64__) || defined(__alpha__)
 typedef unsigned long autofs_wqt_t;
 #else
diff --git a/libc/kernel/uapi/linux/bpf.h b/libc/kernel/uapi/linux/bpf.h
index d70a409..894b9f7 100644
--- a/libc/kernel/uapi/linux/bpf.h
+++ b/libc/kernel/uapi/linux/bpf.h
@@ -169,6 +169,7 @@
 #define BPF_F_ALLOW_OVERRIDE (1U << 0)
 #define BPF_F_ALLOW_MULTI (1U << 1)
 #define BPF_F_STRICT_ALIGNMENT (1U << 0)
+#define BPF_F_ANY_ALIGNMENT (1U << 1)
 #define BPF_PSEUDO_MAP_FD 1
 #define BPF_PSEUDO_CALL 1
 #define BPF_ANY 0
@@ -177,11 +178,12 @@
 #define BPF_F_NO_PREALLOC (1U << 0)
 #define BPF_F_NO_COMMON_LRU (1U << 1)
 #define BPF_F_NUMA_NODE (1U << 2)
-#define BPF_F_QUERY_EFFECTIVE (1U << 0)
 #define BPF_OBJ_NAME_LEN 16U
 #define BPF_F_RDONLY (1U << 3)
 #define BPF_F_WRONLY (1U << 4)
 #define BPF_F_STACK_BUILD_ID (1U << 5)
+#define BPF_F_ZERO_SEED (1U << 6)
+#define BPF_F_QUERY_EFFECTIVE (1U << 0)
 enum bpf_stack_build_id_status {
   BPF_STACK_BUILD_ID_EMPTY = 0,
   BPF_STACK_BUILD_ID_VALID = 1,
@@ -233,6 +235,13 @@
     char prog_name[BPF_OBJ_NAME_LEN];
     __u32 prog_ifindex;
     __u32 expected_attach_type;
+    __u32 prog_btf_fd;
+    __u32 func_info_rec_size;
+    __aligned_u64 func_info;
+    __u32 func_info_cnt;
+    __u32 line_info_rec_size;
+    __aligned_u64 line_info;
+    __u32 line_info_cnt;
   };
   struct {
     __aligned_u64 pathname;
@@ -301,7 +310,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),
+#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),
 #define __BPF_ENUM_FN(x) BPF_FUNC_ ##x
 enum bpf_func_id {
   __BPF_FUNC_MAPPER(__BPF_ENUM_FN) __BPF_FUNC_MAX_ID,
@@ -368,6 +377,8 @@
   __u32 local_port;
   __u32 data_meta;
   __bpf_md_ptr(struct bpf_flow_keys *, flow_keys);
+  __u64 tstamp;
+  __u32 wire_len;
 };
 struct bpf_tunnel_key {
   __u32 tunnel_id;
@@ -451,6 +462,7 @@
   __u32 local_ip6[4];
   __u32 remote_port;
   __u32 local_port;
+  __u32 size;
 };
 struct sk_reuseport_md {
   __bpf_md_ptr(void *, data);
@@ -483,6 +495,18 @@
   __u32 nr_jited_func_lens;
   __aligned_u64 jited_ksyms;
   __aligned_u64 jited_func_lens;
+  __u32 btf_id;
+  __u32 func_info_rec_size;
+  __aligned_u64 func_info;
+  __u32 nr_func_info;
+  __u32 nr_line_info;
+  __aligned_u64 line_info;
+  __aligned_u64 jited_line_info;
+  __u32 nr_jited_line_info;
+  __u32 line_info_rec_size;
+  __u32 jited_line_info_rec_size;
+  __u32 nr_prog_tags;
+  __aligned_u64 prog_tags;
 } __attribute__((aligned(8)));
 struct bpf_map_info {
   __u32 type;
@@ -678,4 +702,16 @@
     };
   };
 };
+struct bpf_func_info {
+  __u32 insn_off;
+  __u32 type_id;
+};
+#define BPF_LINE_INFO_LINE_NUM(line_col) ((line_col) >> 10)
+#define BPF_LINE_INFO_LINE_COL(line_col) ((line_col) & 0x3ff)
+struct bpf_line_info {
+  __u32 insn_off;
+  __u32 file_name_off;
+  __u32 line_off;
+  __u32 line_col;
+};
 #endif
diff --git a/libc/kernel/uapi/linux/btf.h b/libc/kernel/uapi/linux/btf.h
index 33dde5a..6e13631 100644
--- a/libc/kernel/uapi/linux/btf.h
+++ b/libc/kernel/uapi/linux/btf.h
@@ -44,6 +44,7 @@
 };
 #define BTF_INFO_KIND(info) (((info) >> 24) & 0x0f)
 #define BTF_INFO_VLEN(info) ((info) & 0xffff)
+#define BTF_INFO_KFLAG(info) ((info) >> 31)
 #define BTF_KIND_UNKN 0
 #define BTF_KIND_INT 1
 #define BTF_KIND_PTR 2
@@ -56,8 +57,10 @@
 #define BTF_KIND_VOLATILE 9
 #define BTF_KIND_CONST 10
 #define BTF_KIND_RESTRICT 11
-#define BTF_KIND_MAX 11
-#define NR_BTF_KINDS 12
+#define BTF_KIND_FUNC 12
+#define BTF_KIND_FUNC_PROTO 13
+#define BTF_KIND_MAX 13
+#define NR_BTF_KINDS 14
 #define BTF_INT_ENCODING(VAL) (((VAL) & 0x0f000000) >> 24)
 #define BTF_INT_OFFSET(VAL) (((VAL & 0x00ff0000)) >> 16)
 #define BTF_INT_BITS(VAL) ((VAL) & 0x000000ff)
@@ -78,4 +81,10 @@
   __u32 type;
   __u32 offset;
 };
+#define BTF_MEMBER_BITFIELD_SIZE(val) ((val) >> 24)
+#define BTF_MEMBER_BIT_OFFSET(val) ((val) & 0xffffff)
+struct btf_param {
+  __u32 name_off;
+  __u32 type;
+};
 #endif
diff --git a/libc/kernel/uapi/linux/btrfs.h b/libc/kernel/uapi/linux/btrfs.h
index 2bb79d8..0dae543 100644
--- a/libc/kernel/uapi/linux/btrfs.h
+++ b/libc/kernel/uapi/linux/btrfs.h
@@ -173,6 +173,7 @@
 #define BTRFS_FEATURE_INCOMPAT_RAID56 (1ULL << 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)
 struct btrfs_ioctl_feature_flags {
   __u64 compat_flags;
   __u64 compat_ro_flags;
diff --git a/libc/kernel/uapi/linux/btrfs_tree.h b/libc/kernel/uapi/linux/btrfs_tree.h
index 6a461ec..0618f66 100644
--- a/libc/kernel/uapi/linux/btrfs_tree.h
+++ b/libc/kernel/uapi/linux/btrfs_tree.h
@@ -166,6 +166,7 @@
 #define BTRFS_SUPER_FLAG_METADUMP (1ULL << 33)
 #define BTRFS_SUPER_FLAG_METADUMP_V2 (1ULL << 34)
 #define BTRFS_SUPER_FLAG_CHANGING_FSID (1ULL << 35)
+#define BTRFS_SUPER_FLAG_CHANGING_FSID_V2 (1ULL << 36)
 struct btrfs_extent_item {
   __le64 refs;
   __le64 generation;
diff --git a/libc/kernel/uapi/linux/cryptouser.h b/libc/kernel/uapi/linux/cryptouser.h
index 816fb05..b32db64 100644
--- a/libc/kernel/uapi/linux/cryptouser.h
+++ b/libc/kernel/uapi/linux/cryptouser.h
@@ -65,45 +65,62 @@
   __u32 cru_refcnt;
   __u32 cru_flags;
 };
-struct crypto_stat {
+struct crypto_stat_aead {
   char type[CRYPTO_MAX_NAME];
-  union {
-    __u32 stat_encrypt_cnt;
-    __u32 stat_compress_cnt;
-    __u32 stat_generate_cnt;
-    __u32 stat_hash_cnt;
-    __u32 stat_setsecret_cnt;
-  };
-  union {
-    __u64 stat_encrypt_tlen;
-    __u64 stat_compress_tlen;
-    __u64 stat_generate_tlen;
-    __u64 stat_hash_tlen;
-  };
-  union {
-    __u32 stat_akcipher_err_cnt;
-    __u32 stat_cipher_err_cnt;
-    __u32 stat_compress_err_cnt;
-    __u32 stat_aead_err_cnt;
-    __u32 stat_hash_err_cnt;
-    __u32 stat_rng_err_cnt;
-    __u32 stat_kpp_err_cnt;
-  };
-  union {
-    __u32 stat_decrypt_cnt;
-    __u32 stat_decompress_cnt;
-    __u32 stat_seed_cnt;
-    __u32 stat_generate_public_key_cnt;
-  };
-  union {
-    __u64 stat_decrypt_tlen;
-    __u64 stat_decompress_tlen;
-  };
-  union {
-    __u32 stat_verify_cnt;
-    __u32 stat_compute_shared_secret_cnt;
-  };
-  __u32 stat_sign_cnt;
+  __u64 stat_encrypt_cnt;
+  __u64 stat_encrypt_tlen;
+  __u64 stat_decrypt_cnt;
+  __u64 stat_decrypt_tlen;
+  __u64 stat_err_cnt;
+};
+struct crypto_stat_akcipher {
+  char type[CRYPTO_MAX_NAME];
+  __u64 stat_encrypt_cnt;
+  __u64 stat_encrypt_tlen;
+  __u64 stat_decrypt_cnt;
+  __u64 stat_decrypt_tlen;
+  __u64 stat_verify_cnt;
+  __u64 stat_sign_cnt;
+  __u64 stat_err_cnt;
+};
+struct crypto_stat_cipher {
+  char type[CRYPTO_MAX_NAME];
+  __u64 stat_encrypt_cnt;
+  __u64 stat_encrypt_tlen;
+  __u64 stat_decrypt_cnt;
+  __u64 stat_decrypt_tlen;
+  __u64 stat_err_cnt;
+};
+struct crypto_stat_compress {
+  char type[CRYPTO_MAX_NAME];
+  __u64 stat_compress_cnt;
+  __u64 stat_compress_tlen;
+  __u64 stat_decompress_cnt;
+  __u64 stat_decompress_tlen;
+  __u64 stat_err_cnt;
+};
+struct crypto_stat_hash {
+  char type[CRYPTO_MAX_NAME];
+  __u64 stat_hash_cnt;
+  __u64 stat_hash_tlen;
+  __u64 stat_err_cnt;
+};
+struct crypto_stat_kpp {
+  char type[CRYPTO_MAX_NAME];
+  __u64 stat_setsecret_cnt;
+  __u64 stat_generate_public_key_cnt;
+  __u64 stat_compute_shared_secret_cnt;
+  __u64 stat_err_cnt;
+};
+struct crypto_stat_rng {
+  char type[CRYPTO_MAX_NAME];
+  __u64 stat_generate_cnt;
+  __u64 stat_generate_tlen;
+  __u64 stat_seed_cnt;
+  __u64 stat_err_cnt;
+};
+struct crypto_stat_larval {
+  char type[CRYPTO_MAX_NAME];
 };
 struct crypto_report_larval {
   char type[CRYPTO_MAX_NAME];
diff --git a/libc/kernel/uapi/linux/devlink.h b/libc/kernel/uapi/linux/devlink.h
index ead40ad..7c55a0a 100644
--- a/libc/kernel/uapi/linux/devlink.h
+++ b/libc/kernel/uapi/linux/devlink.h
@@ -115,6 +115,10 @@
   __DEVLINK_PARAM_CMODE_MAX,
   DEVLINK_PARAM_CMODE_MAX = __DEVLINK_PARAM_CMODE_MAX - 1
 };
+enum devlink_param_fw_load_policy_value {
+  DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_DRIVER,
+  DEVLINK_PARAM_FW_LOAD_POLICY_VALUE_FLASH,
+};
 enum devlink_attr {
   DEVLINK_ATTR_UNSPEC,
   DEVLINK_ATTR_BUS_NAME,
diff --git a/libc/kernel/uapi/linux/elf-em.h b/libc/kernel/uapi/linux/elf-em.h
index 5b54e18..99835ae 100644
--- a/libc/kernel/uapi/linux/elf-em.h
+++ b/libc/kernel/uapi/linux/elf-em.h
@@ -45,6 +45,7 @@
 #define EM_M32R 88
 #define EM_MN10300 89
 #define EM_OPENRISC 92
+#define EM_XTENSA 94
 #define EM_BLACKFIN 106
 #define EM_ALTERA_NIOS2 113
 #define EM_TI_C6000 140
@@ -54,6 +55,7 @@
 #define EM_TILEGX 191
 #define EM_RISCV 243
 #define EM_BPF 247
+#define EM_CSKY 252
 #define EM_FRV 0x5441
 #define EM_ALPHA 0x9026
 #define EM_CYGNUS_M32R 0x9041
diff --git a/libc/kernel/uapi/linux/elf.h b/libc/kernel/uapi/linux/elf.h
index 1f69e1b..9845bd3 100644
--- a/libc/kernel/uapi/linux/elf.h
+++ b/libc/kernel/uapi/linux/elf.h
@@ -355,10 +355,12 @@
 #define NT_ARM_HW_WATCH 0x403
 #define NT_ARM_SYSTEM_CALL 0x404
 #define NT_ARM_SVE 0x405
+#define NT_ARM_PAC_MASK 0x406
 #define NT_ARC_V2 0x600
 #define NT_VMCOREDD 0x700
 #define NT_MIPS_DSP 0x800
 #define NT_MIPS_FP_MODE 0x801
+#define NT_MIPS_MSA 0x802
 typedef struct elf32_note {
   Elf32_Word n_namesz;
   Elf32_Word n_descsz;
diff --git a/libc/kernel/uapi/linux/fanotify.h b/libc/kernel/uapi/linux/fanotify.h
index 00a1871..4c33fde 100644
--- a/libc/kernel/uapi/linux/fanotify.h
+++ b/libc/kernel/uapi/linux/fanotify.h
@@ -24,9 +24,11 @@
 #define FAN_CLOSE_WRITE 0x00000008
 #define FAN_CLOSE_NOWRITE 0x00000010
 #define FAN_OPEN 0x00000020
+#define FAN_OPEN_EXEC 0x00001000
 #define FAN_Q_OVERFLOW 0x00004000
 #define FAN_OPEN_PERM 0x00010000
 #define FAN_ACCESS_PERM 0x00020000
+#define FAN_OPEN_EXEC_PERM 0x00040000
 #define FAN_ONDIR 0x40000000
 #define FAN_EVENT_ON_CHILD 0x08000000
 #define FAN_CLOSE (FAN_CLOSE_WRITE | FAN_CLOSE_NOWRITE)
diff --git a/libc/kernel/uapi/linux/fb.h b/libc/kernel/uapi/linux/fb.h
index 9f6b139..38da042 100644
--- a/libc/kernel/uapi/linux/fb.h
+++ b/libc/kernel/uapi/linux/fb.h
@@ -320,4 +320,6 @@
   struct fbcurpos hot;
   struct fb_image image;
 };
+#define FB_BACKLIGHT_LEVELS 128
+#define FB_BACKLIGHT_MAX 0xFF
 #endif
diff --git a/libc/kernel/uapi/linux/fs.h b/libc/kernel/uapi/linux/fs.h
index 5c237d8..84dc010 100644
--- a/libc/kernel/uapi/linux/fs.h
+++ b/libc/kernel/uapi/linux/fs.h
@@ -21,6 +21,7 @@
 #include <linux/limits.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
+#include <linux/mount.h>
 #undef NR_OPEN
 #define INR_OPEN_CUR 1024
 #define INR_OPEN_MAX 4096
@@ -74,40 +75,6 @@
   long dummy[5];
 };
 #define NR_FILE 8192
-#define MS_RDONLY 1
-#define MS_NOSUID 2
-#define MS_NODEV 4
-#define MS_NOEXEC 8
-#define MS_SYNCHRONOUS 16
-#define MS_REMOUNT 32
-#define MS_MANDLOCK 64
-#define MS_DIRSYNC 128
-#define MS_NOATIME 1024
-#define MS_NODIRATIME 2048
-#define MS_BIND 4096
-#define MS_MOVE 8192
-#define MS_REC 16384
-#define MS_VERBOSE 32768
-#define MS_SILENT 32768
-#define MS_POSIXACL (1 << 16)
-#define MS_UNBINDABLE (1 << 17)
-#define MS_PRIVATE (1 << 18)
-#define MS_SLAVE (1 << 19)
-#define MS_SHARED (1 << 20)
-#define MS_RELATIME (1 << 21)
-#define MS_KERNMOUNT (1 << 22)
-#define MS_I_VERSION (1 << 23)
-#define MS_STRICTATIME (1 << 24)
-#define MS_LAZYTIME (1 << 25)
-#define MS_SUBMOUNT (1 << 26)
-#define MS_NOREMOTELOCK (1 << 27)
-#define MS_NOSEC (1 << 28)
-#define MS_BORN (1 << 29)
-#define MS_ACTIVE (1 << 30)
-#define MS_NOUSER (1 << 31)
-#define MS_RMT_MASK (MS_RDONLY | MS_SYNCHRONOUS | MS_MANDLOCK | MS_I_VERSION | MS_LAZYTIME)
-#define MS_MGC_VAL 0xC0ED0000
-#define MS_MGC_MSK 0xffff0000
 struct fsxattr {
   __u32 fsx_xflags;
   __u32 fsx_extsize;
@@ -190,7 +157,8 @@
 #define FS_POLICY_FLAGS_PAD_16 0x02
 #define FS_POLICY_FLAGS_PAD_32 0x03
 #define FS_POLICY_FLAGS_PAD_MASK 0x03
-#define FS_POLICY_FLAGS_VALID 0x03
+#define FS_POLICY_FLAG_DIRECT_KEY 0x04
+#define FS_POLICY_FLAGS_VALID 0x07
 #define FS_ENCRYPTION_MODE_INVALID 0
 #define FS_ENCRYPTION_MODE_AES_256_XTS 1
 #define FS_ENCRYPTION_MODE_AES_256_GCM 2
@@ -200,6 +168,7 @@
 #define FS_ENCRYPTION_MODE_AES_128_CTS 6
 #define FS_ENCRYPTION_MODE_SPECK128_256_XTS 7
 #define FS_ENCRYPTION_MODE_SPECK128_256_CTS 8
+#define FS_ENCRYPTION_MODE_ADIANTUM 9
 struct fscrypt_policy {
   __u8 version;
   __u8 contents_encryption_mode;
diff --git a/libc/kernel/uapi/linux/hash_info.h b/libc/kernel/uapi/linux/hash_info.h
index 898e46f..824b71a 100644
--- a/libc/kernel/uapi/linux/hash_info.h
+++ b/libc/kernel/uapi/linux/hash_info.h
@@ -37,6 +37,8 @@
   HASH_ALGO_TGR_160,
   HASH_ALGO_TGR_192,
   HASH_ALGO_SM3_256,
+  HASH_ALGO_STREEBOG_256,
+  HASH_ALGO_STREEBOG_512,
   HASH_ALGO__LAST
 };
 #endif
diff --git a/libc/kernel/uapi/linux/if_bridge.h b/libc/kernel/uapi/linux/if_bridge.h
index 7e6a72f..31683c1 100644
--- a/libc/kernel/uapi/linux/if_bridge.h
+++ b/libc/kernel/uapi/linux/if_bridge.h
@@ -237,4 +237,12 @@
   __u64 mcast_bytes[BR_MCAST_DIR_SIZE];
   __u64 mcast_packets[BR_MCAST_DIR_SIZE];
 };
+enum br_boolopt_id {
+  BR_BOOLOPT_NO_LL_LEARN,
+  BR_BOOLOPT_MAX
+};
+struct br_boolopt_multi {
+  __u32 optval;
+  __u32 optmask;
+};
 #endif
diff --git a/libc/kernel/uapi/linux/if_link.h b/libc/kernel/uapi/linux/if_link.h
index 2c80d3d..416c48b 100644
--- a/libc/kernel/uapi/linux/if_link.h
+++ b/libc/kernel/uapi/linux/if_link.h
@@ -221,6 +221,7 @@
   IFLA_BR_MCAST_IGMP_VERSION,
   IFLA_BR_MCAST_MLD_VERSION,
   IFLA_BR_VLAN_STATS_PER_PORT,
+  IFLA_BR_MULTI_BOOLOPT,
   __IFLA_BR_MAX,
 };
 #define IFLA_BR_MAX (__IFLA_BR_MAX - 1)
@@ -426,6 +427,7 @@
   IFLA_VXLAN_LABEL,
   IFLA_VXLAN_GPE,
   IFLA_VXLAN_TTL_INHERIT,
+  IFLA_VXLAN_DF,
   __IFLA_VXLAN_MAX
 };
 #define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1)
@@ -433,6 +435,13 @@
   __be16 low;
   __be16 high;
 };
+enum ifla_vxlan_df {
+  VXLAN_DF_UNSET = 0,
+  VXLAN_DF_SET,
+  VXLAN_DF_INHERIT,
+  __VXLAN_DF_END,
+  VXLAN_DF_MAX = __VXLAN_DF_END - 1,
+};
 enum {
   IFLA_GENEVE_UNSPEC,
   IFLA_GENEVE_ID,
@@ -447,9 +456,17 @@
   IFLA_GENEVE_UDP_ZERO_CSUM6_RX,
   IFLA_GENEVE_LABEL,
   IFLA_GENEVE_TTL_INHERIT,
+  IFLA_GENEVE_DF,
   __IFLA_GENEVE_MAX
 };
 #define IFLA_GENEVE_MAX (__IFLA_GENEVE_MAX - 1)
+enum ifla_geneve_df {
+  GENEVE_DF_UNSET = 0,
+  GENEVE_DF_SET,
+  GENEVE_DF_INHERIT,
+  __GENEVE_DF_END,
+  GENEVE_DF_MAX = __GENEVE_DF_END - 1,
+};
 enum {
   IFLA_PPP_UNSPEC,
   IFLA_PPP_DEV_FD,
diff --git a/libc/kernel/uapi/linux/if_tun.h b/libc/kernel/uapi/linux/if_tun.h
index 6a3c75e..cb2d2d2 100644
--- a/libc/kernel/uapi/linux/if_tun.h
+++ b/libc/kernel/uapi/linux/if_tun.h
@@ -51,6 +51,7 @@
 #define TUNGETVNETBE _IOR('T', 223, int)
 #define TUNSETSTEERINGEBPF _IOR('T', 224, int)
 #define TUNSETFILTEREBPF _IOR('T', 225, int)
+#define TUNSETCARRIER _IOW('T', 226, int)
 #define IFF_TUN 0x0001
 #define IFF_TAP 0x0002
 #define IFF_NAPI 0x0010
diff --git a/libc/kernel/uapi/linux/in.h b/libc/kernel/uapi/linux/in.h
index 78bd72a..9ed00b4 100644
--- a/libc/kernel/uapi/linux/in.h
+++ b/libc/kernel/uapi/linux/in.h
@@ -201,7 +201,7 @@
 #define IN_CLASSD(a) ((((long int) (a)) & 0xf0000000) == 0xe0000000)
 #define IN_MULTICAST(a) IN_CLASSD(a)
 #define IN_MULTICAST_NET 0xe0000000
-#define IN_BADCLASS(a) (((long int) (a)) == (long int)0xffffffff)
+#define IN_BADCLASS(a) (((long int) (a)) == (long int) 0xffffffff)
 #define IN_EXPERIMENTAL(a) IN_BADCLASS((a))
 #define IN_CLASSE(a) ((((long int) (a)) & 0xf0000000) == 0xf0000000)
 #define IN_CLASSE_NET 0xffffffff
diff --git a/libc/kernel/uapi/linux/input-event-codes.h b/libc/kernel/uapi/linux/input-event-codes.h
index 11e6d5b..1ca3cb0 100644
--- a/libc/kernel/uapi/linux/input-event-codes.h
+++ b/libc/kernel/uapi/linux/input-event-codes.h
@@ -623,6 +623,8 @@
 #define REL_WHEEL 0x08
 #define REL_MISC 0x09
 #define REL_RESERVED 0x0a
+#define REL_WHEEL_HI_RES 0x0b
+#define REL_HWHEEL_HI_RES 0x0c
 #define REL_MAX 0x0f
 #define REL_CNT (REL_MAX + 1)
 #define ABS_X 0x00
diff --git a/libc/kernel/uapi/linux/input.h b/libc/kernel/uapi/linux/input.h
index 0a4b563..f138f64 100644
--- a/libc/kernel/uapi/linux/input.h
+++ b/libc/kernel/uapi/linux/input.h
@@ -24,13 +24,17 @@
 #include <linux/types.h>
 #include "input-event-codes.h"
 struct input_event {
-#if (__BITS_PER_LONG != 32 || !defined(__USE_TIME_BITS64)) && !defined(__KERNEL)
+#if __BITS_PER_LONG != 32 || !defined(__USE_TIME_BITS64)
   struct timeval time;
 #define input_event_sec time.tv_sec
 #define input_event_usec time.tv_usec
 #else
   __kernel_ulong_t __sec;
+#if defined(__sparc__) && defined(__arch64__)
+  unsigned int __usec;
+#else
   __kernel_ulong_t __usec;
+#endif
 #define input_event_sec __sec
 #define input_event_usec __usec
 #endif
diff --git a/libc/kernel/uapi/linux/kfd_ioctl.h b/libc/kernel/uapi/linux/kfd_ioctl.h
index 525f672..5e20606 100644
--- a/libc/kernel/uapi/linux/kfd_ioctl.h
+++ b/libc/kernel/uapi/linux/kfd_ioctl.h
@@ -261,6 +261,20 @@
   __u32 n_devices;
   __u32 n_success;
 };
+struct kfd_ioctl_get_dmabuf_info_args {
+  __u64 size;
+  __u64 metadata_ptr;
+  __u32 metadata_size;
+  __u32 gpu_id;
+  __u32 flags;
+  __u32 dmabuf_fd;
+};
+struct kfd_ioctl_import_dmabuf_args {
+  __u64 va_addr;
+  __u64 handle;
+  __u32 gpu_id;
+  __u32 dmabuf_fd;
+};
 #define AMDKFD_IOCTL_BASE 'K'
 #define AMDKFD_IO(nr) _IO(AMDKFD_IOCTL_BASE, nr)
 #define AMDKFD_IOR(nr,type) _IOR(AMDKFD_IOCTL_BASE, nr, type)
@@ -293,6 +307,8 @@
 #define AMDKFD_IOC_UNMAP_MEMORY_FROM_GPU AMDKFD_IOWR(0x19, struct kfd_ioctl_unmap_memory_from_gpu_args)
 #define AMDKFD_IOC_SET_CU_MASK AMDKFD_IOW(0x1A, struct kfd_ioctl_set_cu_mask_args)
 #define AMDKFD_IOC_GET_QUEUE_WAVE_STATE AMDKFD_IOWR(0x1B, struct kfd_ioctl_get_queue_wave_state_args)
+#define AMDKFD_IOC_GET_DMABUF_INFO AMDKFD_IOWR(0x1C, struct kfd_ioctl_get_dmabuf_info_args)
+#define AMDKFD_IOC_IMPORT_DMABUF AMDKFD_IOWR(0x1D, struct kfd_ioctl_import_dmabuf_args)
 #define AMDKFD_COMMAND_START 0x01
-#define AMDKFD_COMMAND_END 0x1C
+#define AMDKFD_COMMAND_END 0x1E
 #endif
diff --git a/libc/kernel/uapi/linux/kvm.h b/libc/kernel/uapi/linux/kvm.h
index b70bcd9..8cfa34d 100644
--- a/libc/kernel/uapi/linux/kvm.h
+++ b/libc/kernel/uapi/linux/kvm.h
@@ -367,6 +367,15 @@
     __u64 padding2;
   };
 };
+struct kvm_clear_dirty_log {
+  __u32 slot;
+  __u32 num_pages;
+  __u64 first_page;
+  union {
+    void __user * dirty_bitmap;
+    __u64 padding2;
+  };
+};
 struct kvm_signal_mask {
   __u32 len;
   __u8 sigset[0];
@@ -759,6 +768,8 @@
 #define KVM_CAP_HYPERV_ENLIGHTENED_VMCS 163
 #define KVM_CAP_EXCEPTION_PAYLOAD 164
 #define KVM_CAP_ARM_VM_IPA_SIZE 165
+#define KVM_CAP_MANUAL_DIRTY_LOG_PROTECT 166
+#define KVM_CAP_HYPERV_CPUID 167
 #ifdef KVM_CAP_IRQ_ROUTING
 struct kvm_irq_routing_irqchip {
   __u32 irqchip;
@@ -1070,6 +1081,8 @@
 #define KVM_HYPERV_EVENTFD _IOW(KVMIO, 0xbd, struct kvm_hyperv_eventfd)
 #define KVM_GET_NESTED_STATE _IOWR(KVMIO, 0xbe, struct kvm_nested_state)
 #define KVM_SET_NESTED_STATE _IOW(KVMIO, 0xbf, struct kvm_nested_state)
+#define KVM_CLEAR_DIRTY_LOG _IOWR(KVMIO, 0xc0, struct kvm_clear_dirty_log)
+#define KVM_GET_SUPPORTED_HV_CPUID _IOWR(KVMIO, 0xc1, struct kvm_cpuid2)
 enum sev_cmd_id {
   KVM_SEV_INIT = 0,
   KVM_SEV_ES_INIT,
diff --git a/libc/kernel/uapi/linux/magic.h b/libc/kernel/uapi/linux/magic.h
index bf57a58..f3b337e 100644
--- a/libc/kernel/uapi/linux/magic.h
+++ b/libc/kernel/uapi/linux/magic.h
@@ -78,6 +78,7 @@
 #define DAXFS_MAGIC 0x64646178
 #define BINFMTFS_MAGIC 0x42494e4d
 #define DEVPTS_SUPER_MAGIC 0x1cd1
+#define BINDERFS_SUPER_MAGIC 0x6c6f6f70
 #define FUTEXFS_SUPER_MAGIC 0xBAD1DEA
 #define PIPEFS_MAGIC 0x50495045
 #define PROC_SUPER_MAGIC 0x9fa0
diff --git a/libc/kernel/uapi/linux/mount.h b/libc/kernel/uapi/linux/mount.h
new file mode 100644
index 0000000..54a4719
--- /dev/null
+++ b/libc/kernel/uapi/linux/mount.h
@@ -0,0 +1,55 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_MOUNT_H
+#define _UAPI_LINUX_MOUNT_H
+#define MS_RDONLY 1
+#define MS_NOSUID 2
+#define MS_NODEV 4
+#define MS_NOEXEC 8
+#define MS_SYNCHRONOUS 16
+#define MS_REMOUNT 32
+#define MS_MANDLOCK 64
+#define MS_DIRSYNC 128
+#define MS_NOATIME 1024
+#define MS_NODIRATIME 2048
+#define MS_BIND 4096
+#define MS_MOVE 8192
+#define MS_REC 16384
+#define MS_VERBOSE 32768
+#define MS_SILENT 32768
+#define MS_POSIXACL (1 << 16)
+#define MS_UNBINDABLE (1 << 17)
+#define MS_PRIVATE (1 << 18)
+#define MS_SLAVE (1 << 19)
+#define MS_SHARED (1 << 20)
+#define MS_RELATIME (1 << 21)
+#define MS_KERNMOUNT (1 << 22)
+#define MS_I_VERSION (1 << 23)
+#define MS_STRICTATIME (1 << 24)
+#define MS_LAZYTIME (1 << 25)
+#define MS_SUBMOUNT (1 << 26)
+#define MS_NOREMOTELOCK (1 << 27)
+#define MS_NOSEC (1 << 28)
+#define MS_BORN (1 << 29)
+#define MS_ACTIVE (1 << 30)
+#define MS_NOUSER (1 << 31)
+#define MS_RMT_MASK (MS_RDONLY | MS_SYNCHRONOUS | MS_MANDLOCK | MS_I_VERSION | MS_LAZYTIME)
+#define MS_MGC_VAL 0xC0ED0000
+#define MS_MGC_MSK 0xffff0000
+#endif
diff --git a/libc/kernel/uapi/linux/msdos_fs.h b/libc/kernel/uapi/linux/msdos_fs.h
index 60ee22a..4b777db 100644
--- a/libc/kernel/uapi/linux/msdos_fs.h
+++ b/libc/kernel/uapi/linux/msdos_fs.h
@@ -57,12 +57,10 @@
 #define MSDOS_SLOTS 21
 #define MSDOS_DOT ".          "
 #define MSDOS_DOTDOT "..         "
-#define FAT_FIRST_ENT(s,x) ((MSDOS_SB(s)->fat_bits == 32 ? 0x0FFFFF00 : MSDOS_SB(s)->fat_bits == 16 ? 0xFF00 : 0xF00) | (x))
 #define FAT_START_ENT 2
 #define MAX_FAT12 0xFF4
 #define MAX_FAT16 0xFFF4
 #define MAX_FAT32 0x0FFFFFF6
-#define MAX_FAT(s) (MSDOS_SB(s)->fat_bits == 32 ? MAX_FAT32 : MSDOS_SB(s)->fat_bits == 16 ? MAX_FAT16 : MAX_FAT12)
 #define BAD_FAT12 0xFF7
 #define BAD_FAT16 0xFFF7
 #define BAD_FAT32 0x0FFFFFF7
@@ -108,7 +106,7 @@
       __u8 state;
       __u8 signature;
       __u8 vol_id[4];
-      __u8 vol_label[11];
+      __u8 vol_label[MSDOS_NAME];
       __u8 fs_type[8];
     } fat16;
     struct {
@@ -123,7 +121,7 @@
       __u8 state;
       __u8 signature;
       __u8 vol_id[4];
-      __u8 vol_label[11];
+      __u8 vol_label[MSDOS_NAME];
       __u8 fs_type[8];
     } fat32;
   };
diff --git a/libc/kernel/uapi/linux/ncsi.h b/libc/kernel/uapi/linux/ncsi.h
index 23cdf1b..6334a8a 100644
--- a/libc/kernel/uapi/linux/ncsi.h
+++ b/libc/kernel/uapi/linux/ncsi.h
@@ -24,6 +24,8 @@
   NCSI_CMD_SET_INTERFACE,
   NCSI_CMD_CLEAR_INTERFACE,
   NCSI_CMD_SEND_CMD,
+  NCSI_CMD_SET_PACKAGE_MASK,
+  NCSI_CMD_SET_CHANNEL_MASK,
   __NCSI_CMD_AFTER_LAST,
   NCSI_CMD_MAX = __NCSI_CMD_AFTER_LAST - 1
 };
@@ -34,6 +36,9 @@
   NCSI_ATTR_PACKAGE_ID,
   NCSI_ATTR_CHANNEL_ID,
   NCSI_ATTR_DATA,
+  NCSI_ATTR_MULTI_FLAG,
+  NCSI_ATTR_PACKAGE_MASK,
+  NCSI_ATTR_CHANNEL_MASK,
   __NCSI_ATTR_AFTER_LAST,
   NCSI_ATTR_MAX = __NCSI_ATTR_AFTER_LAST - 1
 };
diff --git a/libc/kernel/uapi/linux/neighbour.h b/libc/kernel/uapi/linux/neighbour.h
index 6329211..4ce4736 100644
--- a/libc/kernel/uapi/linux/neighbour.h
+++ b/libc/kernel/uapi/linux/neighbour.h
@@ -42,6 +42,7 @@
   NDA_MASTER,
   NDA_LINK_NETNSID,
   NDA_SRC_VNI,
+  NDA_PROTOCOL,
   __NDA_MAX
 };
 #define NDA_MAX (__NDA_MAX - 1)
diff --git a/libc/kernel/uapi/linux/net_namespace.h b/libc/kernel/uapi/linux/net_namespace.h
index b1d96f6..a54c9e1 100644
--- a/libc/kernel/uapi/linux/net_namespace.h
+++ b/libc/kernel/uapi/linux/net_namespace.h
@@ -24,6 +24,8 @@
   NETNSA_NSID,
   NETNSA_PID,
   NETNSA_FD,
+  NETNSA_TARGET_NSID,
+  NETNSA_CURRENT_NSID,
   __NETNSA_MAX,
 };
 #define NETNSA_MAX (__NETNSA_MAX - 1)
diff --git a/libc/kernel/uapi/linux/netfilter.h b/libc/kernel/uapi/linux/netfilter.h
index 5538869..345b197 100644
--- a/libc/kernel/uapi/linux/netfilter.h
+++ b/libc/kernel/uapi/linux/netfilter.h
@@ -35,8 +35,6 @@
 #define NF_VERDICT_QBITS 16
 #define NF_QUEUE_NR(x) ((((x) << 16) & NF_VERDICT_QMASK) | NF_QUEUE)
 #define NF_DROP_ERR(x) (((- x) << 16) | NF_DROP)
-#define NFC_UNKNOWN 0x4000
-#define NFC_ALTERED 0x8000
 #define NF_VERDICT_BITS 16
 enum nf_inet_hooks {
   NF_INET_PRE_ROUTING,
diff --git a/libc/kernel/uapi/linux/netfilter/ipset/ip_set.h b/libc/kernel/uapi/linux/netfilter/ipset/ip_set.h
index 17107b7..2c5aeeb 100644
--- a/libc/kernel/uapi/linux/netfilter/ipset/ip_set.h
+++ b/libc/kernel/uapi/linux/netfilter/ipset/ip_set.h
@@ -19,7 +19,8 @@
 #ifndef _UAPI_IP_SET_H
 #define _UAPI_IP_SET_H
 #include <linux/types.h>
-#define IPSET_PROTOCOL 6
+#define IPSET_PROTOCOL 7
+#define IPSET_PROTOCOL_MIN 6
 #define IPSET_MAXNAMELEN 32
 #define IPSET_MAX_COMMENT_SIZE 255
 enum ipset_cmd {
@@ -37,6 +38,8 @@
   IPSET_CMD_TEST,
   IPSET_CMD_HEADER,
   IPSET_CMD_TYPE,
+  IPSET_CMD_GET_BYNAME,
+  IPSET_CMD_GET_BYINDEX,
   IPSET_MSG_MAX,
   IPSET_CMD_RESTORE = IPSET_MSG_MAX,
   IPSET_CMD_HELP,
@@ -59,6 +62,7 @@
   IPSET_ATTR_LINENO,
   IPSET_ATTR_PROTOCOL_MIN,
   IPSET_ATTR_REVISION_MIN = IPSET_ATTR_PROTOCOL_MIN,
+  IPSET_ATTR_INDEX,
   __IPSET_ATTR_CMD_MAX,
 };
 #define IPSET_ATTR_CMD_MAX (__IPSET_ATTR_CMD_MAX - 1)
diff --git a/libc/kernel/uapi/linux/netfilter_decnet.h b/libc/kernel/uapi/linux/netfilter_decnet.h
index a9dcdd3..c9c16ca 100644
--- a/libc/kernel/uapi/linux/netfilter_decnet.h
+++ b/libc/kernel/uapi/linux/netfilter_decnet.h
@@ -20,10 +20,6 @@
 #define __LINUX_DECNET_NETFILTER_H
 #include <linux/netfilter.h>
 #include <limits.h>
-#define NFC_DN_SRC 0x0001
-#define NFC_DN_DST 0x0002
-#define NFC_DN_IF_IN 0x0004
-#define NFC_DN_IF_OUT 0x0008
 #define NF_DN_NUMHOOKS 7
 #define NF_DN_PRE_ROUTING 0
 #define NF_DN_LOCAL_IN 1
diff --git a/libc/kernel/uapi/linux/netfilter_ipv4.h b/libc/kernel/uapi/linux/netfilter_ipv4.h
index 7eed768..bb2a1d9 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv4.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv4.h
@@ -20,18 +20,6 @@
 #define _UAPI__LINUX_IP_NETFILTER_H
 #include <linux/netfilter.h>
 #include <limits.h>
-#define NFC_IP_SRC 0x0001
-#define NFC_IP_DST 0x0002
-#define NFC_IP_IF_IN 0x0004
-#define NFC_IP_IF_OUT 0x0008
-#define NFC_IP_TOS 0x0010
-#define NFC_IP_PROTO 0x0020
-#define NFC_IP_OPTIONS 0x0040
-#define NFC_IP_FRAG 0x0080
-#define NFC_IP_TCPFLAGS 0x0100
-#define NFC_IP_SRC_PT 0x0200
-#define NFC_IP_DST_PT 0x0400
-#define NFC_IP_PROTO_UNKNOWN 0x2000
 #define NF_IP_PRE_ROUTING 0
 #define NF_IP_LOCAL_IN 1
 #define NF_IP_FORWARD 2
diff --git a/libc/kernel/uapi/linux/netfilter_ipv6.h b/libc/kernel/uapi/linux/netfilter_ipv6.h
index 2054532..f454eb6 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv6.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv6.h
@@ -20,18 +20,6 @@
 #define _UAPI__LINUX_IP6_NETFILTER_H
 #include <linux/netfilter.h>
 #include <limits.h>
-#define NFC_IP6_SRC 0x0001
-#define NFC_IP6_DST 0x0002
-#define NFC_IP6_IF_IN 0x0004
-#define NFC_IP6_IF_OUT 0x0008
-#define NFC_IP6_TOS 0x0010
-#define NFC_IP6_PROTO 0x0020
-#define NFC_IP6_OPTIONS 0x0040
-#define NFC_IP6_FRAG 0x0080
-#define NFC_IP6_TCPFLAGS 0x0100
-#define NFC_IP6_SRC_PT 0x0200
-#define NFC_IP6_DST_PT 0x0400
-#define NFC_IP6_PROTO_UNKNOWN 0x2000
 #define NF_IP6_PRE_ROUTING 0
 #define NF_IP6_LOCAL_IN 1
 #define NF_IP6_FORWARD 2
diff --git a/libc/kernel/uapi/linux/nl80211.h b/libc/kernel/uapi/linux/nl80211.h
index 471e65f..29a7b66 100644
--- a/libc/kernel/uapi/linux/nl80211.h
+++ b/libc/kernel/uapi/linux/nl80211.h
@@ -164,6 +164,10 @@
   NL80211_CMD_STA_OPMODE_CHANGED,
   NL80211_CMD_CONTROL_PORT_FRAME,
   NL80211_CMD_GET_FTM_RESPONDER_STATS,
+  NL80211_CMD_PEER_MEASUREMENT_START,
+  NL80211_CMD_PEER_MEASUREMENT_RESULT,
+  NL80211_CMD_PEER_MEASUREMENT_COMPLETE,
+  NL80211_CMD_NOTIFY_RADAR,
   __NL80211_CMD_AFTER_LAST,
   NL80211_CMD_MAX = __NL80211_CMD_AFTER_LAST - 1
 };
@@ -452,6 +456,8 @@
   NL80211_ATTR_HE_CAPABILITY,
   NL80211_ATTR_FTM_RESPONDER,
   NL80211_ATTR_FTM_RESPONDER_STATS,
+  NL80211_ATTR_TIMEOUT,
+  NL80211_ATTR_PEER_MEASUREMENTS,
   __NL80211_ATTR_AFTER_LAST,
   NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST,
   NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
@@ -621,6 +627,7 @@
   NL80211_STA_INFO_ACK_SIGNAL_AVG,
   NL80211_STA_INFO_RX_MPDUS,
   NL80211_STA_INFO_FCS_ERROR_COUNT,
+  NL80211_STA_INFO_CONNECTED_TO_GATE,
   __NL80211_STA_INFO_AFTER_LAST,
   NL80211_STA_INFO_MAX = __NL80211_STA_INFO_AFTER_LAST - 1
 };
@@ -878,6 +885,7 @@
   NL80211_MESHCONF_POWER_MODE,
   NL80211_MESHCONF_AWAKE_WINDOW,
   NL80211_MESHCONF_PLINK_TIMEOUT,
+  NL80211_MESHCONF_CONNECTED_TO_GATE,
   __NL80211_MESHCONF_ATTR_AFTER_LAST,
   NL80211_MESHCONF_ATTR_MAX = __NL80211_MESHCONF_ATTR_AFTER_LAST - 1
 };
@@ -1480,4 +1488,122 @@
   __NL80211_FTM_STATS_AFTER_LAST,
   NL80211_FTM_STATS_MAX = __NL80211_FTM_STATS_AFTER_LAST - 1
 };
+enum nl80211_preamble {
+  NL80211_PREAMBLE_LEGACY,
+  NL80211_PREAMBLE_HT,
+  NL80211_PREAMBLE_VHT,
+  NL80211_PREAMBLE_DMG,
+};
+enum nl80211_peer_measurement_type {
+  NL80211_PMSR_TYPE_INVALID,
+  NL80211_PMSR_TYPE_FTM,
+  NUM_NL80211_PMSR_TYPES,
+  NL80211_PMSR_TYPE_MAX = NUM_NL80211_PMSR_TYPES - 1
+};
+enum nl80211_peer_measurement_status {
+  NL80211_PMSR_STATUS_SUCCESS,
+  NL80211_PMSR_STATUS_REFUSED,
+  NL80211_PMSR_STATUS_TIMEOUT,
+  NL80211_PMSR_STATUS_FAILURE,
+};
+enum nl80211_peer_measurement_req {
+  __NL80211_PMSR_REQ_ATTR_INVALID,
+  NL80211_PMSR_REQ_ATTR_DATA,
+  NL80211_PMSR_REQ_ATTR_GET_AP_TSF,
+  NUM_NL80211_PMSR_REQ_ATTRS,
+  NL80211_PMSR_REQ_ATTR_MAX = NUM_NL80211_PMSR_REQ_ATTRS - 1
+};
+enum nl80211_peer_measurement_resp {
+  __NL80211_PMSR_RESP_ATTR_INVALID,
+  NL80211_PMSR_RESP_ATTR_DATA,
+  NL80211_PMSR_RESP_ATTR_STATUS,
+  NL80211_PMSR_RESP_ATTR_HOST_TIME,
+  NL80211_PMSR_RESP_ATTR_AP_TSF,
+  NL80211_PMSR_RESP_ATTR_FINAL,
+  NL80211_PMSR_RESP_ATTR_PAD,
+  NUM_NL80211_PMSR_RESP_ATTRS,
+  NL80211_PMSR_RESP_ATTR_MAX = NUM_NL80211_PMSR_RESP_ATTRS - 1
+};
+enum nl80211_peer_measurement_peer_attrs {
+  __NL80211_PMSR_PEER_ATTR_INVALID,
+  NL80211_PMSR_PEER_ATTR_ADDR,
+  NL80211_PMSR_PEER_ATTR_CHAN,
+  NL80211_PMSR_PEER_ATTR_REQ,
+  NL80211_PMSR_PEER_ATTR_RESP,
+  NUM_NL80211_PMSR_PEER_ATTRS,
+  NL80211_PMSR_PEER_ATTR_MAX = NUM_NL80211_PMSR_PEER_ATTRS - 1,
+};
+enum nl80211_peer_measurement_attrs {
+  __NL80211_PMSR_ATTR_INVALID,
+  NL80211_PMSR_ATTR_MAX_PEERS,
+  NL80211_PMSR_ATTR_REPORT_AP_TSF,
+  NL80211_PMSR_ATTR_RANDOMIZE_MAC_ADDR,
+  NL80211_PMSR_ATTR_TYPE_CAPA,
+  NL80211_PMSR_ATTR_PEERS,
+  NUM_NL80211_PMSR_ATTR,
+  NL80211_PMSR_ATTR_MAX = NUM_NL80211_PMSR_ATTR - 1
+};
+enum nl80211_peer_measurement_ftm_capa {
+  __NL80211_PMSR_FTM_CAPA_ATTR_INVALID,
+  NL80211_PMSR_FTM_CAPA_ATTR_ASAP,
+  NL80211_PMSR_FTM_CAPA_ATTR_NON_ASAP,
+  NL80211_PMSR_FTM_CAPA_ATTR_REQ_LCI,
+  NL80211_PMSR_FTM_CAPA_ATTR_REQ_CIVICLOC,
+  NL80211_PMSR_FTM_CAPA_ATTR_PREAMBLES,
+  NL80211_PMSR_FTM_CAPA_ATTR_BANDWIDTHS,
+  NL80211_PMSR_FTM_CAPA_ATTR_MAX_BURSTS_EXPONENT,
+  NL80211_PMSR_FTM_CAPA_ATTR_MAX_FTMS_PER_BURST,
+  NUM_NL80211_PMSR_FTM_CAPA_ATTR,
+  NL80211_PMSR_FTM_CAPA_ATTR_MAX = NUM_NL80211_PMSR_FTM_CAPA_ATTR - 1
+};
+enum nl80211_peer_measurement_ftm_req {
+  __NL80211_PMSR_FTM_REQ_ATTR_INVALID,
+  NL80211_PMSR_FTM_REQ_ATTR_ASAP,
+  NL80211_PMSR_FTM_REQ_ATTR_PREAMBLE,
+  NL80211_PMSR_FTM_REQ_ATTR_NUM_BURSTS_EXP,
+  NL80211_PMSR_FTM_REQ_ATTR_BURST_PERIOD,
+  NL80211_PMSR_FTM_REQ_ATTR_BURST_DURATION,
+  NL80211_PMSR_FTM_REQ_ATTR_FTMS_PER_BURST,
+  NL80211_PMSR_FTM_REQ_ATTR_NUM_FTMR_RETRIES,
+  NL80211_PMSR_FTM_REQ_ATTR_REQUEST_LCI,
+  NL80211_PMSR_FTM_REQ_ATTR_REQUEST_CIVICLOC,
+  NUM_NL80211_PMSR_FTM_REQ_ATTR,
+  NL80211_PMSR_FTM_REQ_ATTR_MAX = NUM_NL80211_PMSR_FTM_REQ_ATTR - 1
+};
+enum nl80211_peer_measurement_ftm_failure_reasons {
+  NL80211_PMSR_FTM_FAILURE_UNSPECIFIED,
+  NL80211_PMSR_FTM_FAILURE_NO_RESPONSE,
+  NL80211_PMSR_FTM_FAILURE_REJECTED,
+  NL80211_PMSR_FTM_FAILURE_WRONG_CHANNEL,
+  NL80211_PMSR_FTM_FAILURE_PEER_NOT_CAPABLE,
+  NL80211_PMSR_FTM_FAILURE_INVALID_TIMESTAMP,
+  NL80211_PMSR_FTM_FAILURE_PEER_BUSY,
+  NL80211_PMSR_FTM_FAILURE_BAD_CHANGED_PARAMS,
+};
+enum nl80211_peer_measurement_ftm_resp {
+  __NL80211_PMSR_FTM_RESP_ATTR_INVALID,
+  NL80211_PMSR_FTM_RESP_ATTR_FAIL_REASON,
+  NL80211_PMSR_FTM_RESP_ATTR_BURST_INDEX,
+  NL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_ATTEMPTS,
+  NL80211_PMSR_FTM_RESP_ATTR_NUM_FTMR_SUCCESSES,
+  NL80211_PMSR_FTM_RESP_ATTR_BUSY_RETRY_TIME,
+  NL80211_PMSR_FTM_RESP_ATTR_NUM_BURSTS_EXP,
+  NL80211_PMSR_FTM_RESP_ATTR_BURST_DURATION,
+  NL80211_PMSR_FTM_RESP_ATTR_FTMS_PER_BURST,
+  NL80211_PMSR_FTM_RESP_ATTR_RSSI_AVG,
+  NL80211_PMSR_FTM_RESP_ATTR_RSSI_SPREAD,
+  NL80211_PMSR_FTM_RESP_ATTR_TX_RATE,
+  NL80211_PMSR_FTM_RESP_ATTR_RX_RATE,
+  NL80211_PMSR_FTM_RESP_ATTR_RTT_AVG,
+  NL80211_PMSR_FTM_RESP_ATTR_RTT_VARIANCE,
+  NL80211_PMSR_FTM_RESP_ATTR_RTT_SPREAD,
+  NL80211_PMSR_FTM_RESP_ATTR_DIST_AVG,
+  NL80211_PMSR_FTM_RESP_ATTR_DIST_VARIANCE,
+  NL80211_PMSR_FTM_RESP_ATTR_DIST_SPREAD,
+  NL80211_PMSR_FTM_RESP_ATTR_LCI,
+  NL80211_PMSR_FTM_RESP_ATTR_CIVICLOC,
+  NL80211_PMSR_FTM_RESP_ATTR_PAD,
+  NUM_NL80211_PMSR_FTM_RESP_ATTR,
+  NL80211_PMSR_FTM_RESP_ATTR_MAX = NUM_NL80211_PMSR_FTM_RESP_ATTR - 1
+};
 #endif
diff --git a/libc/kernel/uapi/linux/pkt_cls.h b/libc/kernel/uapi/linux/pkt_cls.h
index ac80a0a..2018f0b 100644
--- a/libc/kernel/uapi/linux/pkt_cls.h
+++ b/libc/kernel/uapi/linux/pkt_cls.h
@@ -389,6 +389,10 @@
   TCA_FLOWER_KEY_ENC_OPTS,
   TCA_FLOWER_KEY_ENC_OPTS_MASK,
   TCA_FLOWER_IN_HW_COUNT,
+  TCA_FLOWER_KEY_PORT_SRC_MIN,
+  TCA_FLOWER_KEY_PORT_SRC_MAX,
+  TCA_FLOWER_KEY_PORT_DST_MIN,
+  TCA_FLOWER_KEY_PORT_DST_MAX,
   __TCA_FLOWER_MAX,
 };
 #define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1)
@@ -410,6 +414,7 @@
   TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT = (1 << 0),
   TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST = (1 << 1),
 };
+#define TCA_FLOWER_MASK_FLAGS_RANGE (1 << 0)
 enum {
   TCA_MATCHALL_UNSPEC,
   TCA_MATCHALL_CLASSID,
diff --git a/libc/kernel/uapi/linux/pkt_sched.h b/libc/kernel/uapi/linux/pkt_sched.h
index e7d4942..dc0cd2f 100644
--- a/libc/kernel/uapi/linux/pkt_sched.h
+++ b/libc/kernel/uapi/linux/pkt_sched.h
@@ -195,9 +195,33 @@
   TCA_GRED_DPS,
   TCA_GRED_MAX_P,
   TCA_GRED_LIMIT,
+  TCA_GRED_VQ_LIST,
   __TCA_GRED_MAX,
 };
 #define TCA_GRED_MAX (__TCA_GRED_MAX - 1)
+enum {
+  TCA_GRED_VQ_ENTRY_UNSPEC,
+  TCA_GRED_VQ_ENTRY,
+  __TCA_GRED_VQ_ENTRY_MAX,
+};
+#define TCA_GRED_VQ_ENTRY_MAX (__TCA_GRED_VQ_ENTRY_MAX - 1)
+enum {
+  TCA_GRED_VQ_UNSPEC,
+  TCA_GRED_VQ_PAD,
+  TCA_GRED_VQ_DP,
+  TCA_GRED_VQ_STAT_BYTES,
+  TCA_GRED_VQ_STAT_PACKETS,
+  TCA_GRED_VQ_STAT_BACKLOG,
+  TCA_GRED_VQ_STAT_PROB_DROP,
+  TCA_GRED_VQ_STAT_PROB_MARK,
+  TCA_GRED_VQ_STAT_FORCED_DROP,
+  TCA_GRED_VQ_STAT_FORCED_MARK,
+  TCA_GRED_VQ_STAT_PDROP,
+  TCA_GRED_VQ_STAT_OTHER,
+  TCA_GRED_VQ_FLAGS,
+  __TCA_GRED_VQ_MAX
+};
+#define TCA_GRED_VQ_MAX (__TCA_GRED_VQ_MAX - 1)
 struct tc_gred_qopt {
   __u32 limit;
   __u32 qth_min;
@@ -639,6 +663,7 @@
   TCA_FQ_FLOW_REFILL_DELAY,
   TCA_FQ_ORPHAN_MASK,
   TCA_FQ_LOW_RATE_THRESHOLD,
+  TCA_FQ_CE_THRESHOLD,
   __TCA_FQ_MAX
 };
 #define TCA_FQ_MAX (__TCA_FQ_MAX - 1)
@@ -655,6 +680,7 @@
   __u32 inactive_flows;
   __u32 throttled_flows;
   __u32 unthrottle_latency_ns;
+  __u64 ce_mark;
 };
 enum {
   TCA_HHF_UNSPEC,
diff --git a/libc/kernel/uapi/linux/prctl.h b/libc/kernel/uapi/linux/prctl.h
index 44a088d..5031e8d 100644
--- a/libc/kernel/uapi/linux/prctl.h
+++ b/libc/kernel/uapi/linux/prctl.h
@@ -143,4 +143,10 @@
 #define PR_SPEC_ENABLE (1UL << 1)
 #define PR_SPEC_DISABLE (1UL << 2)
 #define PR_SPEC_FORCE_DISABLE (1UL << 3)
+#define PR_PAC_RESET_KEYS 54
+#define PR_PAC_APIAKEY (1UL << 0)
+#define PR_PAC_APIBKEY (1UL << 1)
+#define PR_PAC_APDAKEY (1UL << 2)
+#define PR_PAC_APDBKEY (1UL << 3)
+#define PR_PAC_APGAKEY (1UL << 4)
 #endif
diff --git a/libc/kernel/uapi/linux/ptp_clock.h b/libc/kernel/uapi/linux/ptp_clock.h
index f32dcf0..bef3fe2 100644
--- a/libc/kernel/uapi/linux/ptp_clock.h
+++ b/libc/kernel/uapi/linux/ptp_clock.h
@@ -56,6 +56,11 @@
   unsigned int rsv[3];
   struct ptp_clock_time ts[2 * PTP_MAX_SAMPLES + 1];
 };
+struct ptp_sys_offset_extended {
+  unsigned int n_samples;
+  unsigned int rsv[3];
+  struct ptp_clock_time ts[PTP_MAX_SAMPLES][3];
+};
 struct ptp_sys_offset_precise {
   struct ptp_clock_time device;
   struct ptp_clock_time sys_realtime;
@@ -84,6 +89,7 @@
 #define PTP_PIN_GETFUNC _IOWR(PTP_CLK_MAGIC, 6, struct ptp_pin_desc)
 #define PTP_PIN_SETFUNC _IOW(PTP_CLK_MAGIC, 7, struct ptp_pin_desc)
 #define PTP_SYS_OFFSET_PRECISE _IOWR(PTP_CLK_MAGIC, 8, struct ptp_sys_offset_precise)
+#define PTP_SYS_OFFSET_EXTENDED _IOWR(PTP_CLK_MAGIC, 9, struct ptp_sys_offset_extended)
 struct ptp_extts_event {
   struct ptp_clock_time t;
   unsigned int index;
diff --git a/libc/kernel/uapi/linux/sctp.h b/libc/kernel/uapi/linux/sctp.h
index dc07d78..66fde70 100644
--- a/libc/kernel/uapi/linux/sctp.h
+++ b/libc/kernel/uapi/linux/sctp.h
@@ -83,6 +83,7 @@
 #define SCTP_STREAM_SCHEDULER_VALUE 124
 #define SCTP_INTERLEAVING_SUPPORTED 125
 #define SCTP_SENDMSG_CONNECT 126
+#define SCTP_EVENT 127
 #define SCTP_PR_SCTP_NONE 0x0000
 #define SCTP_PR_SCTP_TTL 0x0010
 #define SCTP_PR_SCTP_RTX 0x0020
@@ -360,6 +361,8 @@
 };
 enum sctp_sn_type {
   SCTP_SN_TYPE_BASE = (1 << 15),
+  SCTP_DATA_IO_EVENT = SCTP_SN_TYPE_BASE,
+#define SCTP_DATA_IO_EVENT SCTP_DATA_IO_EVENT
   SCTP_ASSOC_CHANGE,
 #define SCTP_ASSOC_CHANGE SCTP_ASSOC_CHANGE
   SCTP_PEER_ADDR_CHANGE,
@@ -384,6 +387,8 @@
 #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,
+#define SCTP_SN_TYPE_MAX SCTP_SN_TYPE_MAX
 };
 typedef enum sctp_sn_error {
   SCTP_FAILED_THRESHOLD,
@@ -655,6 +660,11 @@
   uint16_t sas_instrms;
   uint16_t sas_outstrms;
 };
+struct sctp_event {
+  sctp_assoc_t se_assoc_id;
+  uint16_t se_type;
+  uint8_t se_on;
+};
 enum sctp_sched_type {
   SCTP_SS_FCFS,
   SCTP_SS_DEFAULT = SCTP_SS_FCFS,
diff --git a/libc/kernel/uapi/linux/seccomp.h b/libc/kernel/uapi/linux/seccomp.h
index fe63789..a1e577d 100644
--- a/libc/kernel/uapi/linux/seccomp.h
+++ b/libc/kernel/uapi/linux/seccomp.h
@@ -26,14 +26,17 @@
 #define SECCOMP_SET_MODE_STRICT 0
 #define SECCOMP_SET_MODE_FILTER 1
 #define SECCOMP_GET_ACTION_AVAIL 2
+#define SECCOMP_GET_NOTIF_SIZES 3
 #define SECCOMP_FILTER_FLAG_TSYNC (1UL << 0)
 #define SECCOMP_FILTER_FLAG_LOG (1UL << 1)
 #define SECCOMP_FILTER_FLAG_SPEC_ALLOW (1UL << 2)
+#define SECCOMP_FILTER_FLAG_NEW_LISTENER (1UL << 3)
 #define SECCOMP_RET_KILL_PROCESS 0x80000000U
 #define SECCOMP_RET_KILL_THREAD 0x00000000U
 #define SECCOMP_RET_KILL SECCOMP_RET_KILL_THREAD
 #define SECCOMP_RET_TRAP 0x00030000U
 #define SECCOMP_RET_ERRNO 0x00050000U
+#define SECCOMP_RET_USER_NOTIF 0x7fc00000U
 #define SECCOMP_RET_TRACE 0x7ff00000U
 #define SECCOMP_RET_LOG 0x7ffc0000U
 #define SECCOMP_RET_ALLOW 0x7fff0000U
@@ -46,4 +49,29 @@
   __u64 instruction_pointer;
   __u64 args[6];
 };
+struct seccomp_notif_sizes {
+  __u16 seccomp_notif;
+  __u16 seccomp_notif_resp;
+  __u16 seccomp_data;
+};
+struct seccomp_notif {
+  __u64 id;
+  __u32 pid;
+  __u32 flags;
+  struct seccomp_data data;
+};
+struct seccomp_notif_resp {
+  __u64 id;
+  __s64 val;
+  __s32 error;
+  __u32 flags;
+};
+#define SECCOMP_IOC_MAGIC '!'
+#define SECCOMP_IO(nr) _IO(SECCOMP_IOC_MAGIC, nr)
+#define SECCOMP_IOR(nr,type) _IOR(SECCOMP_IOC_MAGIC, nr, type)
+#define SECCOMP_IOW(nr,type) _IOW(SECCOMP_IOC_MAGIC, nr, type)
+#define SECCOMP_IOWR(nr,type) _IOWR(SECCOMP_IOC_MAGIC, nr, type)
+#define SECCOMP_IOCTL_NOTIF_RECV SECCOMP_IOWR(0, struct seccomp_notif)
+#define SECCOMP_IOCTL_NOTIF_SEND SECCOMP_IOWR(1, struct seccomp_notif_resp)
+#define SECCOMP_IOCTL_NOTIF_ID_VALID SECCOMP_IOR(2, __u64)
 #endif
diff --git a/libc/kernel/uapi/linux/serial_core.h b/libc/kernel/uapi/linux/serial_core.h
index f0f464b..b9af467 100644
--- a/libc/kernel/uapi/linux/serial_core.h
+++ b/libc/kernel/uapi/linux/serial_core.h
@@ -134,4 +134,5 @@
 #define PORT_PIC32 115
 #define PORT_MPS2UART 116
 #define PORT_MTK_BTIF 117
+#define PORT_RDA 118
 #endif
diff --git a/libc/kernel/uapi/linux/snmp.h b/libc/kernel/uapi/linux/snmp.h
index ae24f0f..75dea54 100644
--- a/libc/kernel/uapi/linux/snmp.h
+++ b/libc/kernel/uapi/linux/snmp.h
@@ -210,6 +210,7 @@
   LINUX_MIB_TCPREQQFULLDROP,
   LINUX_MIB_TCPRETRANSFAIL,
   LINUX_MIB_TCPRCVCOALESCE,
+  LINUX_MIB_TCPBACKLOGCOALESCE,
   LINUX_MIB_TCPOFOQUEUE,
   LINUX_MIB_TCPOFODROP,
   LINUX_MIB_TCPOFOMERGE,
diff --git a/libc/kernel/uapi/linux/sysctl.h b/libc/kernel/uapi/linux/sysctl.h
index 24d8362..ae0f44a 100644
--- a/libc/kernel/uapi/linux/sysctl.h
+++ b/libc/kernel/uapi/linux/sysctl.h
@@ -124,6 +124,7 @@
   KERN_NMI_WATCHDOG = 75,
   KERN_PANIC_ON_NMI = 76,
   KERN_PANIC_ON_WARN = 77,
+  KERN_PANIC_PRINT = 78,
 };
 enum {
   VM_UNUSED1 = 1,
diff --git a/libc/kernel/uapi/linux/tcp.h b/libc/kernel/uapi/linux/tcp.h
index d940f0f..ce3d735 100644
--- a/libc/kernel/uapi/linux/tcp.h
+++ b/libc/kernel/uapi/linux/tcp.h
@@ -207,6 +207,7 @@
   TCP_NLA_BYTES_RETRANS,
   TCP_NLA_DSACK_DUPS,
   TCP_NLA_REORD_SEEN,
+  TCP_NLA_SRTT,
 };
 #define TCP_MD5SIG_MAXKEYLEN 80
 #define TCP_MD5SIG_FLAG_PREFIX 1
diff --git a/libc/kernel/uapi/linux/udp.h b/libc/kernel/uapi/linux/udp.h
index 3cd286b..278cf6c 100644
--- a/libc/kernel/uapi/linux/udp.h
+++ b/libc/kernel/uapi/linux/udp.h
@@ -30,6 +30,7 @@
 #define UDP_NO_CHECK6_TX 101
 #define UDP_NO_CHECK6_RX 102
 #define UDP_SEGMENT 103
+#define UDP_GRO 104
 #define UDP_ENCAP_ESPINUDP_NON_IKE 1
 #define UDP_ENCAP_ESPINUDP 2
 #define UDP_ENCAP_L2TPINUDP 3
diff --git a/libc/kernel/uapi/linux/v4l2-common.h b/libc/kernel/uapi/linux/v4l2-common.h
index 779bda9..021be85 100644
--- a/libc/kernel/uapi/linux/v4l2-common.h
+++ b/libc/kernel/uapi/linux/v4l2-common.h
@@ -27,18 +27,9 @@
 #define V4L2_SEL_TGT_COMPOSE_DEFAULT 0x0101
 #define V4L2_SEL_TGT_COMPOSE_BOUNDS 0x0102
 #define V4L2_SEL_TGT_COMPOSE_PADDED 0x0103
-#define V4L2_SEL_TGT_CROP_ACTIVE V4L2_SEL_TGT_CROP
-#define V4L2_SEL_TGT_COMPOSE_ACTIVE V4L2_SEL_TGT_COMPOSE
-#define V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL V4L2_SEL_TGT_CROP
-#define V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL V4L2_SEL_TGT_COMPOSE
-#define V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS V4L2_SEL_TGT_CROP_BOUNDS
-#define V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS V4L2_SEL_TGT_COMPOSE_BOUNDS
 #define V4L2_SEL_FLAG_GE (1 << 0)
 #define V4L2_SEL_FLAG_LE (1 << 1)
 #define V4L2_SEL_FLAG_KEEP_CONFIG (1 << 2)
-#define V4L2_SUBDEV_SEL_FLAG_SIZE_GE V4L2_SEL_FLAG_GE
-#define V4L2_SUBDEV_SEL_FLAG_SIZE_LE V4L2_SEL_FLAG_LE
-#define V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG V4L2_SEL_FLAG_KEEP_CONFIG
 struct v4l2_edid {
   __u32 pad;
   __u32 start_block;
@@ -46,4 +37,13 @@
   __u32 reserved[5];
   __u8 * edid;
 };
+#define V4L2_SEL_TGT_CROP_ACTIVE V4L2_SEL_TGT_CROP
+#define V4L2_SEL_TGT_COMPOSE_ACTIVE V4L2_SEL_TGT_COMPOSE
+#define V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL V4L2_SEL_TGT_CROP
+#define V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL V4L2_SEL_TGT_COMPOSE
+#define V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS V4L2_SEL_TGT_CROP_BOUNDS
+#define V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS V4L2_SEL_TGT_COMPOSE_BOUNDS
+#define V4L2_SUBDEV_SEL_FLAG_SIZE_GE V4L2_SEL_FLAG_GE
+#define V4L2_SUBDEV_SEL_FLAG_SIZE_LE V4L2_SEL_FLAG_LE
+#define V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG V4L2_SEL_FLAG_KEEP_CONFIG
 #endif
diff --git a/libc/kernel/uapi/linux/version.h b/libc/kernel/uapi/linux/version.h
index 6b1ef1b..6ec3412 100644
--- a/libc/kernel/uapi/linux/version.h
+++ b/libc/kernel/uapi/linux/version.h
@@ -16,5 +16,5 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#define LINUX_VERSION_CODE 267265
+#define LINUX_VERSION_CODE 327680
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
diff --git a/libc/kernel/uapi/linux/vfio.h b/libc/kernel/uapi/linux/vfio.h
index d282a52..b947abc 100644
--- a/libc/kernel/uapi/linux/vfio.h
+++ b/libc/kernel/uapi/linux/vfio.h
@@ -114,7 +114,20 @@
 #define VFIO_DEVICE_GFX_LINK_STATE_UP 1
 #define VFIO_DEVICE_GFX_LINK_STATE_DOWN 2
 };
+#define VFIO_REGION_SUBTYPE_NVIDIA_NVLINK2_RAM (1)
+#define VFIO_REGION_SUBTYPE_IBM_NVLINK2_ATSD (1)
 #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;
+};
+#define VFIO_REGION_INFO_CAP_NVLINK2_LNKSPD 5
+struct vfio_region_info_cap_nvlink2_lnkspd {
+  struct vfio_info_cap_header header;
+  __u32 link_speed;
+  __u32 __pad;
+};
 struct vfio_irq_info {
   __u32 argsz;
   __u32 flags;
diff --git a/libc/kernel/uapi/linux/vhost.h b/libc/kernel/uapi/linux/vhost.h
index e802e02..9e87e6e 100644
--- a/libc/kernel/uapi/linux/vhost.h
+++ b/libc/kernel/uapi/linux/vhost.h
@@ -18,71 +18,9 @@
  ****************************************************************************/
 #ifndef _LINUX_VHOST_H
 #define _LINUX_VHOST_H
+#include <linux/vhost_types.h>
 #include <linux/types.h>
-#include <linux/compiler.h>
 #include <linux/ioctl.h>
-#include <linux/virtio_config.h>
-#include <linux/virtio_ring.h>
-struct vhost_vring_state {
-  unsigned int index;
-  unsigned int num;
-};
-struct vhost_vring_file {
-  unsigned int index;
-  int fd;
-};
-struct vhost_vring_addr {
-  unsigned int index;
-  unsigned int flags;
-#define VHOST_VRING_F_LOG 0
-  __u64 desc_user_addr;
-  __u64 used_user_addr;
-  __u64 avail_user_addr;
-  __u64 log_guest_addr;
-};
-struct vhost_iotlb_msg {
-  __u64 iova;
-  __u64 size;
-  __u64 uaddr;
-#define VHOST_ACCESS_RO 0x1
-#define VHOST_ACCESS_WO 0x2
-#define VHOST_ACCESS_RW 0x3
-  __u8 perm;
-#define VHOST_IOTLB_MISS 1
-#define VHOST_IOTLB_UPDATE 2
-#define VHOST_IOTLB_INVALIDATE 3
-#define VHOST_IOTLB_ACCESS_FAIL 4
-  __u8 type;
-};
-#define VHOST_IOTLB_MSG 0x1
-#define VHOST_IOTLB_MSG_V2 0x2
-struct vhost_msg {
-  int type;
-  union {
-    struct vhost_iotlb_msg iotlb;
-    __u8 padding[64];
-  };
-};
-struct vhost_msg_v2 {
-  __u32 type;
-  __u32 reserved;
-  union {
-    struct vhost_iotlb_msg iotlb;
-    __u8 padding[64];
-  };
-};
-struct vhost_memory_region {
-  __u64 guest_phys_addr;
-  __u64 memory_size;
-  __u64 userspace_addr;
-  __u64 flags_padding;
-};
-#define VHOST_PAGE_SIZE 0x1000
-struct vhost_memory {
-  __u32 nregions;
-  __u32 padding;
-  struct vhost_memory_region regions[0];
-};
 #define VHOST_VIRTIO 0xAF
 #define VHOST_GET_FEATURES _IOR(VHOST_VIRTIO, 0x00, __u64)
 #define VHOST_SET_FEATURES _IOW(VHOST_VIRTIO, 0x00, __u64)
@@ -108,15 +46,6 @@
 #define VHOST_SET_BACKEND_FEATURES _IOW(VHOST_VIRTIO, 0x25, __u64)
 #define VHOST_GET_BACKEND_FEATURES _IOR(VHOST_VIRTIO, 0x26, __u64)
 #define VHOST_NET_SET_BACKEND _IOW(VHOST_VIRTIO, 0x30, struct vhost_vring_file)
-#define VHOST_F_LOG_ALL 26
-#define VHOST_NET_F_VIRTIO_NET_HDR 27
-#define VHOST_SCSI_ABI_VERSION 1
-struct vhost_scsi_target {
-  int abi_version;
-  char vhost_wwpn[224];
-  unsigned short vhost_tpgt;
-  unsigned short reserved;
-};
 #define VHOST_SCSI_SET_ENDPOINT _IOW(VHOST_VIRTIO, 0x40, struct vhost_scsi_target)
 #define VHOST_SCSI_CLEAR_ENDPOINT _IOW(VHOST_VIRTIO, 0x41, struct vhost_scsi_target)
 #define VHOST_SCSI_GET_ABI_VERSION _IOW(VHOST_VIRTIO, 0x42, int)
diff --git a/libc/kernel/uapi/linux/vhost_types.h b/libc/kernel/uapi/linux/vhost_types.h
new file mode 100644
index 0000000..646fcdc
--- /dev/null
+++ b/libc/kernel/uapi/linux/vhost_types.h
@@ -0,0 +1,94 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _LINUX_VHOST_TYPES_H
+#define _LINUX_VHOST_TYPES_H
+#include <linux/types.h>
+#include <linux/compiler.h>
+#include <linux/virtio_config.h>
+#include <linux/virtio_ring.h>
+struct vhost_vring_state {
+  unsigned int index;
+  unsigned int num;
+};
+struct vhost_vring_file {
+  unsigned int index;
+  int fd;
+};
+struct vhost_vring_addr {
+  unsigned int index;
+  unsigned int flags;
+#define VHOST_VRING_F_LOG 0
+  __u64 desc_user_addr;
+  __u64 used_user_addr;
+  __u64 avail_user_addr;
+  __u64 log_guest_addr;
+};
+struct vhost_iotlb_msg {
+  __u64 iova;
+  __u64 size;
+  __u64 uaddr;
+#define VHOST_ACCESS_RO 0x1
+#define VHOST_ACCESS_WO 0x2
+#define VHOST_ACCESS_RW 0x3
+  __u8 perm;
+#define VHOST_IOTLB_MISS 1
+#define VHOST_IOTLB_UPDATE 2
+#define VHOST_IOTLB_INVALIDATE 3
+#define VHOST_IOTLB_ACCESS_FAIL 4
+  __u8 type;
+};
+#define VHOST_IOTLB_MSG 0x1
+#define VHOST_IOTLB_MSG_V2 0x2
+struct vhost_msg {
+  int type;
+  union {
+    struct vhost_iotlb_msg iotlb;
+    __u8 padding[64];
+  };
+};
+struct vhost_msg_v2 {
+  __u32 type;
+  __u32 reserved;
+  union {
+    struct vhost_iotlb_msg iotlb;
+    __u8 padding[64];
+  };
+};
+struct vhost_memory_region {
+  __u64 guest_phys_addr;
+  __u64 memory_size;
+  __u64 userspace_addr;
+  __u64 flags_padding;
+};
+#define VHOST_PAGE_SIZE 0x1000
+struct vhost_memory {
+  __u32 nregions;
+  __u32 padding;
+  struct vhost_memory_region regions[0];
+};
+#define VHOST_SCSI_ABI_VERSION 1
+struct vhost_scsi_target {
+  int abi_version;
+  char vhost_wwpn[224];
+  unsigned short vhost_tpgt;
+  unsigned short reserved;
+};
+#define VHOST_F_LOG_ALL 26
+#define VHOST_NET_F_VIRTIO_NET_HDR 27
+#endif
diff --git a/libc/kernel/uapi/linux/videodev2.h b/libc/kernel/uapi/linux/videodev2.h
index ef89b08..74e591d 100644
--- a/libc/kernel/uapi/linux/videodev2.h
+++ b/libc/kernel/uapi/linux/videodev2.h
@@ -58,6 +58,7 @@
   V4L2_BUF_TYPE_SDR_CAPTURE = 11,
   V4L2_BUF_TYPE_SDR_OUTPUT = 12,
   V4L2_BUF_TYPE_META_CAPTURE = 13,
+  V4L2_BUF_TYPE_META_OUTPUT = 14,
   V4L2_BUF_TYPE_PRIVATE = 0x80,
 };
 #define V4L2_TYPE_IS_MULTIPLANAR(type) ((type) == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
@@ -179,6 +180,7 @@
 #define V4L2_CAP_READWRITE 0x01000000
 #define V4L2_CAP_ASYNCIO 0x02000000
 #define V4L2_CAP_STREAMING 0x04000000
+#define V4L2_CAP_META_OUTPUT 0x08000000
 #define V4L2_CAP_TOUCH 0x10000000
 #define V4L2_CAP_DEVICE_CAPS 0x80000000
 struct v4l2_pix_format {
@@ -356,6 +358,7 @@
 #define V4L2_PIX_FMT_MT21C v4l2_fourcc('M', 'T', '2', '1')
 #define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I')
 #define V4L2_PIX_FMT_SUNXI_TILED_NV12 v4l2_fourcc('S', 'T', '1', '2')
+#define V4L2_PIX_FMT_CNF4 v4l2_fourcc('C', 'N', 'F', '4')
 #define V4L2_PIX_FMT_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')
@@ -481,6 +484,7 @@
 #define V4L2_BUF_CAP_SUPPORTS_USERPTR (1 << 1)
 #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)
 struct v4l2_plane {
   __u32 bytesused;
   __u32 length;
diff --git a/libc/kernel/uapi/linux/virtio_blk.h b/libc/kernel/uapi/linux/virtio_blk.h
index 2d53704..5197434 100644
--- a/libc/kernel/uapi/linux/virtio_blk.h
+++ b/libc/kernel/uapi/linux/virtio_blk.h
@@ -29,6 +29,8 @@
 #define VIRTIO_BLK_F_BLK_SIZE 6
 #define VIRTIO_BLK_F_TOPOLOGY 10
 #define VIRTIO_BLK_F_MQ 12
+#define VIRTIO_BLK_F_DISCARD 13
+#define VIRTIO_BLK_F_WRITE_ZEROES 14
 #ifndef VIRTIO_BLK_NO_LEGACY
 #define VIRTIO_BLK_F_BARRIER 0
 #define VIRTIO_BLK_F_SCSI 7
@@ -54,6 +56,13 @@
   __u8 wce;
   __u8 unused;
   __u16 num_queues;
+  __u32 max_discard_sectors;
+  __u32 max_discard_seg;
+  __u32 discard_sector_alignment;
+  __u32 max_write_zeroes_sectors;
+  __u32 max_write_zeroes_seg;
+  __u8 write_zeroes_may_unmap;
+  __u8 unused1[3];
 } __attribute__((packed));
 #define VIRTIO_BLK_T_IN 0
 #define VIRTIO_BLK_T_OUT 1
@@ -62,6 +71,8 @@
 #endif
 #define VIRTIO_BLK_T_FLUSH 4
 #define VIRTIO_BLK_T_GET_ID 8
+#define VIRTIO_BLK_T_DISCARD 11
+#define VIRTIO_BLK_T_WRITE_ZEROES 13
 #ifndef VIRTIO_BLK_NO_LEGACY
 #define VIRTIO_BLK_T_BARRIER 0x80000000
 #endif
@@ -70,6 +81,12 @@
   __virtio32 ioprio;
   __virtio64 sector;
 };
+#define VIRTIO_BLK_WRITE_ZEROES_FLAG_UNMAP 0x00000001
+struct virtio_blk_discard_write_zeroes {
+  __le64 sector;
+  __le32 num_sectors;
+  __le32 flags;
+};
 #ifndef VIRTIO_BLK_NO_LEGACY
 struct virtio_scsi_inhdr {
   __virtio32 errors;
diff --git a/libc/kernel/uapi/linux/virtio_config.h b/libc/kernel/uapi/linux/virtio_config.h
index ddf5e4e..c9ec83f 100644
--- a/libc/kernel/uapi/linux/virtio_config.h
+++ b/libc/kernel/uapi/linux/virtio_config.h
@@ -33,5 +33,7 @@
 #endif
 #define VIRTIO_F_VERSION_1 32
 #define VIRTIO_F_IOMMU_PLATFORM 33
+#define VIRTIO_F_RING_PACKED 34
+#define VIRTIO_F_ORDER_PLATFORM 36
 #define VIRTIO_F_SR_IOV 37
 #endif
diff --git a/libc/kernel/uapi/linux/virtio_gpu.h b/libc/kernel/uapi/linux/virtio_gpu.h
index 60dbf71..0ac7495 100644
--- a/libc/kernel/uapi/linux/virtio_gpu.h
+++ b/libc/kernel/uapi/linux/virtio_gpu.h
@@ -20,6 +20,7 @@
 #define VIRTIO_GPU_HW_H
 #include <linux/types.h>
 #define VIRTIO_GPU_F_VIRGL 0
+#define VIRTIO_GPU_F_EDID 1
 enum virtio_gpu_ctrl_type {
   VIRTIO_GPU_UNDEFINED = 0,
   VIRTIO_GPU_CMD_GET_DISPLAY_INFO = 0x0100,
@@ -32,6 +33,7 @@
   VIRTIO_GPU_CMD_RESOURCE_DETACH_BACKING,
   VIRTIO_GPU_CMD_GET_CAPSET_INFO,
   VIRTIO_GPU_CMD_GET_CAPSET,
+  VIRTIO_GPU_CMD_GET_EDID,
   VIRTIO_GPU_CMD_CTX_CREATE = 0x0200,
   VIRTIO_GPU_CMD_CTX_DESTROY,
   VIRTIO_GPU_CMD_CTX_ATTACH_RESOURCE,
@@ -46,6 +48,7 @@
   VIRTIO_GPU_RESP_OK_DISPLAY_INFO,
   VIRTIO_GPU_RESP_OK_CAPSET_INFO,
   VIRTIO_GPU_RESP_OK_CAPSET,
+  VIRTIO_GPU_RESP_OK_EDID,
   VIRTIO_GPU_RESP_ERR_UNSPEC = 0x1200,
   VIRTIO_GPU_RESP_ERR_OUT_OF_MEMORY,
   VIRTIO_GPU_RESP_ERR_INVALID_SCANOUT_ID,
@@ -207,6 +210,17 @@
   struct virtio_gpu_ctrl_hdr hdr;
   __u8 capset_data[];
 };
+struct virtio_gpu_cmd_get_edid {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __le32 scanout;
+  __le32 padding;
+};
+struct virtio_gpu_resp_edid {
+  struct virtio_gpu_ctrl_hdr hdr;
+  __le32 size;
+  __le32 padding;
+  __u8 edid[1024];
+};
 #define VIRTIO_GPU_EVENT_DISPLAY (1 << 0)
 struct virtio_gpu_config {
   __u32 events_read;
diff --git a/libc/kernel/uapi/linux/virtio_ring.h b/libc/kernel/uapi/linux/virtio_ring.h
index e3af401..ba75940 100644
--- a/libc/kernel/uapi/linux/virtio_ring.h
+++ b/libc/kernel/uapi/linux/virtio_ring.h
@@ -24,8 +24,14 @@
 #define VRING_DESC_F_NEXT 1
 #define VRING_DESC_F_WRITE 2
 #define VRING_DESC_F_INDIRECT 4
+#define VRING_PACKED_DESC_F_AVAIL 7
+#define VRING_PACKED_DESC_F_USED 15
 #define VRING_USED_F_NO_NOTIFY 1
 #define VRING_AVAIL_F_NO_INTERRUPT 1
+#define VRING_PACKED_EVENT_FLAG_ENABLE 0x0
+#define VRING_PACKED_EVENT_FLAG_DISABLE 0x1
+#define VRING_PACKED_EVENT_FLAG_DESC 0x2
+#define VRING_PACKED_EVENT_F_WRAP_CTR 15
 #define VIRTIO_RING_F_INDIRECT_DESC 28
 #define VIRTIO_RING_F_EVENT_IDX 29
 struct vring_desc {
@@ -59,4 +65,14 @@
 #define VRING_DESC_ALIGN_SIZE 16
 #define vring_used_event(vr) ((vr)->avail->ring[(vr)->num])
 #define vring_avail_event(vr) (* (__virtio16 *) & (vr)->used->ring[(vr)->num])
+struct vring_packed_desc_event {
+  __le16 off_wrap;
+  __le16 flags;
+};
+struct vring_packed_desc {
+  __le64 addr;
+  __le32 len;
+  __le16 id;
+  __le16 flags;
+};
 #endif