Update to v4.19 kernel headers.

Test: Builds and boots.
Change-Id: I99a9ed79666e143b47f02ca4e59eed94f69b7e4a
(cherry picked from commit a981e2e52e2e95a65fa9c9b6fb16dcb4c83dd576)
diff --git a/libc/kernel/uapi/linux/aio_abi.h b/libc/kernel/uapi/linux/aio_abi.h
index e71936d..17ca2f9 100644
--- a/libc/kernel/uapi/linux/aio_abi.h
+++ b/libc/kernel/uapi/linux/aio_abi.h
@@ -27,11 +27,13 @@
   IOCB_CMD_PWRITE = 1,
   IOCB_CMD_FSYNC = 2,
   IOCB_CMD_FDSYNC = 3,
+  IOCB_CMD_POLL = 5,
   IOCB_CMD_NOOP = 6,
   IOCB_CMD_PREADV = 7,
   IOCB_CMD_PWRITEV = 8,
 };
 #define IOCB_FLAG_RESFD (1 << 0)
+#define IOCB_FLAG_IOPRIO (1 << 1)
 struct io_event {
   __u64 data;
   __u64 obj;
diff --git a/libc/kernel/uapi/linux/audit.h b/libc/kernel/uapi/linux/audit.h
index be48b44..235a0e7 100644
--- a/libc/kernel/uapi/linux/audit.h
+++ b/libc/kernel/uapi/linux/audit.h
@@ -110,13 +110,16 @@
 #define AUDIT_INTEGRITY_HASH 1803
 #define AUDIT_INTEGRITY_PCR 1804
 #define AUDIT_INTEGRITY_RULE 1805
+#define AUDIT_INTEGRITY_EVM_XATTR 1806
+#define AUDIT_INTEGRITY_POLICY_RULE 1807
 #define AUDIT_KERNEL 2000
 #define AUDIT_FILTER_USER 0x00
 #define AUDIT_FILTER_TASK 0x01
 #define AUDIT_FILTER_ENTRY 0x02
 #define AUDIT_FILTER_WATCH 0x03
 #define AUDIT_FILTER_EXIT 0x04
-#define AUDIT_FILTER_TYPE 0x05
+#define AUDIT_FILTER_EXCLUDE 0x05
+#define AUDIT_FILTER_TYPE AUDIT_FILTER_EXCLUDE
 #define AUDIT_FILTER_FS 0x06
 #define AUDIT_NR_FILTERS 7
 #define AUDIT_FILTER_PREPEND 0x10
@@ -335,6 +338,7 @@
   __u32 log_passwd;
 };
 #define AUDIT_UID_UNSET (unsigned int) - 1
+#define AUDIT_SID_UNSET ((unsigned int) - 1)
 struct audit_rule_data {
   __u32 flags;
   __u32 action;
diff --git a/libc/kernel/uapi/linux/auto_fs.h b/libc/kernel/uapi/linux/auto_fs.h
index 93a3724..0264b86 100644
--- a/libc/kernel/uapi/linux/auto_fs.h
+++ b/libc/kernel/uapi/linux/auto_fs.h
@@ -21,9 +21,10 @@
 #include <linux/types.h>
 #include <linux/limits.h>
 #include <sys/ioctl.h>
-#define AUTOFS_PROTO_VERSION 3
-#define AUTOFS_MAX_PROTO_VERSION AUTOFS_PROTO_VERSION
-#define AUTOFS_MIN_PROTO_VERSION AUTOFS_PROTO_VERSION
+#define AUTOFS_PROTO_VERSION 5
+#define AUTOFS_MIN_PROTO_VERSION 3
+#define AUTOFS_MAX_PROTO_VERSION 5
+#define AUTOFS_PROTO_SUBVERSION 3
 #if defined(__ia64__) || defined(__alpha__)
 typedef unsigned long autofs_wqt_t;
 #else
@@ -62,4 +63,66 @@
 #define AUTOFS_IOC_SETTIMEOUT32 _IOWR(AUTOFS_IOCTL, AUTOFS_IOC_SETTIMEOUT_CMD, compat_ulong_t)
 #define AUTOFS_IOC_SETTIMEOUT _IOWR(AUTOFS_IOCTL, AUTOFS_IOC_SETTIMEOUT_CMD, unsigned long)
 #define AUTOFS_IOC_EXPIRE _IOR(AUTOFS_IOCTL, AUTOFS_IOC_EXPIRE_CMD, struct autofs_packet_expire)
+#define AUTOFS_EXP_NORMAL 0x00
+#define AUTOFS_EXP_IMMEDIATE 0x01
+#define AUTOFS_EXP_LEAVES 0x02
+#define AUTOFS_EXP_FORCED 0x04
+#define AUTOFS_TYPE_ANY 0U
+#define AUTOFS_TYPE_INDIRECT 1U
+#define AUTOFS_TYPE_DIRECT 2U
+#define AUTOFS_TYPE_OFFSET 4U
+enum autofs_notify {
+  NFY_NONE,
+  NFY_MOUNT,
+  NFY_EXPIRE
+};
+#define autofs_ptype_expire_multi 2
+#define autofs_ptype_missing_indirect 3
+#define autofs_ptype_expire_indirect 4
+#define autofs_ptype_missing_direct 5
+#define autofs_ptype_expire_direct 6
+struct autofs_packet_expire_multi {
+  struct autofs_packet_hdr hdr;
+  autofs_wqt_t wait_queue_token;
+  int len;
+  char name[NAME_MAX + 1];
+};
+union autofs_packet_union {
+  struct autofs_packet_hdr hdr;
+  struct autofs_packet_missing missing;
+  struct autofs_packet_expire expire;
+  struct autofs_packet_expire_multi expire_multi;
+};
+struct autofs_v5_packet {
+  struct autofs_packet_hdr hdr;
+  autofs_wqt_t wait_queue_token;
+  __u32 dev;
+  __u64 ino;
+  __u32 uid;
+  __u32 gid;
+  __u32 pid;
+  __u32 tgid;
+  __u32 len;
+  char name[NAME_MAX + 1];
+};
+typedef struct autofs_v5_packet autofs_packet_missing_indirect_t;
+typedef struct autofs_v5_packet autofs_packet_expire_indirect_t;
+typedef struct autofs_v5_packet autofs_packet_missing_direct_t;
+typedef struct autofs_v5_packet autofs_packet_expire_direct_t;
+union autofs_v5_packet_union {
+  struct autofs_packet_hdr hdr;
+  struct autofs_v5_packet v5_packet;
+  autofs_packet_missing_indirect_t missing_indirect;
+  autofs_packet_expire_indirect_t expire_indirect;
+  autofs_packet_missing_direct_t missing_direct;
+  autofs_packet_expire_direct_t expire_direct;
+};
+enum {
+  AUTOFS_IOC_EXPIRE_MULTI_CMD = 0x66,
+  AUTOFS_IOC_PROTOSUBVER_CMD,
+  AUTOFS_IOC_ASKUMOUNT_CMD = 0x70,
+};
+#define AUTOFS_IOC_EXPIRE_MULTI _IOW(AUTOFS_IOCTL, AUTOFS_IOC_EXPIRE_MULTI_CMD, int)
+#define AUTOFS_IOC_PROTOSUBVER _IOR(AUTOFS_IOCTL, AUTOFS_IOC_PROTOSUBVER_CMD, int)
+#define AUTOFS_IOC_ASKUMOUNT _IOR(AUTOFS_IOCTL, AUTOFS_IOC_ASKUMOUNT_CMD, int)
 #endif
diff --git a/libc/kernel/uapi/linux/auto_fs4.h b/libc/kernel/uapi/linux/auto_fs4.h
index be6766b..41f3c8c 100644
--- a/libc/kernel/uapi/linux/auto_fs4.h
+++ b/libc/kernel/uapi/linux/auto_fs4.h
@@ -16,75 +16,7 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef _LINUX_AUTO_FS4_H
-#define _LINUX_AUTO_FS4_H
-#include <linux/types.h>
+#ifndef _UAPI_LINUX_AUTO_FS4_H
+#define _UAPI_LINUX_AUTO_FS4_H
 #include <linux/auto_fs.h>
-#undef AUTOFS_PROTO_VERSION
-#undef AUTOFS_MIN_PROTO_VERSION
-#undef AUTOFS_MAX_PROTO_VERSION
-#define AUTOFS_PROTO_VERSION 5
-#define AUTOFS_MIN_PROTO_VERSION 3
-#define AUTOFS_MAX_PROTO_VERSION 5
-#define AUTOFS_PROTO_SUBVERSION 2
-#define AUTOFS_EXP_IMMEDIATE 1
-#define AUTOFS_EXP_LEAVES 2
-#define AUTOFS_TYPE_ANY 0U
-#define AUTOFS_TYPE_INDIRECT 1U
-#define AUTOFS_TYPE_DIRECT 2U
-#define AUTOFS_TYPE_OFFSET 4U
-enum autofs_notify {
-  NFY_NONE,
-  NFY_MOUNT,
-  NFY_EXPIRE
-};
-#define autofs_ptype_expire_multi 2
-#define autofs_ptype_missing_indirect 3
-#define autofs_ptype_expire_indirect 4
-#define autofs_ptype_missing_direct 5
-#define autofs_ptype_expire_direct 6
-struct autofs_packet_expire_multi {
-  struct autofs_packet_hdr hdr;
-  autofs_wqt_t wait_queue_token;
-  int len;
-  char name[NAME_MAX + 1];
-};
-union autofs_packet_union {
-  struct autofs_packet_hdr hdr;
-  struct autofs_packet_missing missing;
-  struct autofs_packet_expire expire;
-  struct autofs_packet_expire_multi expire_multi;
-};
-struct autofs_v5_packet {
-  struct autofs_packet_hdr hdr;
-  autofs_wqt_t wait_queue_token;
-  __u32 dev;
-  __u64 ino;
-  __u32 uid;
-  __u32 gid;
-  __u32 pid;
-  __u32 tgid;
-  __u32 len;
-  char name[NAME_MAX + 1];
-};
-typedef struct autofs_v5_packet autofs_packet_missing_indirect_t;
-typedef struct autofs_v5_packet autofs_packet_expire_indirect_t;
-typedef struct autofs_v5_packet autofs_packet_missing_direct_t;
-typedef struct autofs_v5_packet autofs_packet_expire_direct_t;
-union autofs_v5_packet_union {
-  struct autofs_packet_hdr hdr;
-  struct autofs_v5_packet v5_packet;
-  autofs_packet_missing_indirect_t missing_indirect;
-  autofs_packet_expire_indirect_t expire_indirect;
-  autofs_packet_missing_direct_t missing_direct;
-  autofs_packet_expire_direct_t expire_direct;
-};
-enum {
-  AUTOFS_IOC_EXPIRE_MULTI_CMD = 0x66,
-  AUTOFS_IOC_PROTOSUBVER_CMD,
-  AUTOFS_IOC_ASKUMOUNT_CMD = 0x70,
-};
-#define AUTOFS_IOC_EXPIRE_MULTI _IOW(AUTOFS_IOCTL, AUTOFS_IOC_EXPIRE_MULTI_CMD, int)
-#define AUTOFS_IOC_PROTOSUBVER _IOR(AUTOFS_IOCTL, AUTOFS_IOC_PROTOSUBVER_CMD, int)
-#define AUTOFS_IOC_ASKUMOUNT _IOR(AUTOFS_IOCTL, AUTOFS_IOC_ASKUMOUNT_CMD, int)
 #endif
diff --git a/libc/kernel/uapi/linux/bcache.h b/libc/kernel/uapi/linux/bcache.h
index 4c7e32a..1bee0a3 100644
--- a/libc/kernel/uapi/linux/bcache.h
+++ b/libc/kernel/uapi/linux/bcache.h
@@ -29,8 +29,8 @@
   __u64 ptr[];
 };
 #define KEY_FIELD(name,field,offset,size) BITMASK(name, struct bkey, field, offset, size)
-#define PTR_FIELD(name,offset,size) static inline __u64 name(const struct bkey * k, unsigned i) \
-{ return(k->ptr[i] >> offset) & ~(~0ULL << size); } static inline void SET_ ##name(struct bkey * k, unsigned i, __u64 v) \
+#define PTR_FIELD(name,offset,size) static inline __u64 name(const struct bkey * k, unsigned int i) \
+{ return(k->ptr[i] >> offset) & ~(~0ULL << size); } static inline void SET_ ##name(struct bkey * k, unsigned int i, __u64 v) \
 { k->ptr[i] &= ~(~(~0ULL << size) << offset); k->ptr[i] |= (v & ~(~0ULL << size)) << offset; \
 }
 #define KEY_SIZE_BITS 16
diff --git a/libc/kernel/uapi/linux/blkzoned.h b/libc/kernel/uapi/linux/blkzoned.h
index c071c98..eaff1d8 100644
--- a/libc/kernel/uapi/linux/blkzoned.h
+++ b/libc/kernel/uapi/linux/blkzoned.h
@@ -50,7 +50,7 @@
   __u32 nr_zones;
   __u8 reserved[4];
   struct blk_zone zones[0];
-} __packed;
+};
 struct blk_zone_range {
   __u64 sector;
   __u64 nr_sectors;
diff --git a/libc/kernel/uapi/linux/bpf.h b/libc/kernel/uapi/linux/bpf.h
index 0eb0d45..a187913 100644
--- a/libc/kernel/uapi/linux/bpf.h
+++ b/libc/kernel/uapi/linux/bpf.h
@@ -65,6 +65,10 @@
   __u32 prefixlen;
   __u8 data[0];
 };
+struct bpf_cgroup_storage_key {
+  __u64 cgroup_inode_id;
+  __u32 attach_type;
+};
 enum bpf_cmd {
   BPF_MAP_CREATE,
   BPF_MAP_LOOKUP_ELEM,
@@ -84,6 +88,9 @@
   BPF_OBJ_GET_INFO_BY_FD,
   BPF_PROG_QUERY,
   BPF_RAW_TRACEPOINT_OPEN,
+  BPF_BTF_LOAD,
+  BPF_BTF_GET_FD_BY_ID,
+  BPF_TASK_FD_QUERY,
 };
 enum bpf_map_type {
   BPF_MAP_TYPE_UNSPEC,
@@ -103,6 +110,10 @@
   BPF_MAP_TYPE_DEVMAP,
   BPF_MAP_TYPE_SOCKMAP,
   BPF_MAP_TYPE_CPUMAP,
+  BPF_MAP_TYPE_XSKMAP,
+  BPF_MAP_TYPE_SOCKHASH,
+  BPF_MAP_TYPE_CGROUP_STORAGE,
+  BPF_MAP_TYPE_REUSEPORT_SOCKARRAY,
 };
 enum bpf_prog_type {
   BPF_PROG_TYPE_UNSPEC,
@@ -124,6 +135,9 @@
   BPF_PROG_TYPE_SK_MSG,
   BPF_PROG_TYPE_RAW_TRACEPOINT,
   BPF_PROG_TYPE_CGROUP_SOCK_ADDR,
+  BPF_PROG_TYPE_LWT_SEG6LOCAL,
+  BPF_PROG_TYPE_LIRC_MODE2,
+  BPF_PROG_TYPE_SK_REUSEPORT,
 };
 enum bpf_attach_type {
   BPF_CGROUP_INET_INGRESS,
@@ -140,6 +154,9 @@
   BPF_CGROUP_INET6_CONNECT,
   BPF_CGROUP_INET4_POST_BIND,
   BPF_CGROUP_INET6_POST_BIND,
+  BPF_CGROUP_UDP4_SENDMSG,
+  BPF_CGROUP_UDP6_SENDMSG,
+  BPF_LIRC_MODE2,
   __MAX_BPF_ATTACH_TYPE
 };
 #define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
@@ -184,6 +201,9 @@
     __u32 numa_node;
     char map_name[BPF_OBJ_NAME_LEN];
     __u32 map_ifindex;
+    __u32 btf_fd;
+    __u32 btf_key_type_id;
+    __u32 btf_value_type_id;
   };
   struct {
     __u32 map_fd;
@@ -234,6 +254,7 @@
       __u32 start_id;
       __u32 prog_id;
       __u32 map_id;
+      __u32 btf_id;
     };
     __u32 next_id;
     __u32 open_flags;
@@ -255,8 +276,26 @@
     __u64 name;
     __u32 prog_fd;
   } raw_tracepoint;
+  struct {
+    __aligned_u64 btf;
+    __aligned_u64 btf_log_buf;
+    __u32 btf_size;
+    __u32 btf_log_size;
+    __u32 btf_log_level;
+  };
+  struct {
+    __u32 pid;
+    __u32 fd;
+    __u32 flags;
+    __u32 buf_len;
+    __aligned_u64 buf;
+    __u32 prog_id;
+    __u32 fd_type;
+    __u64 probe_offset;
+    __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),
+#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),
 #define __BPF_ENUM_FN(x) BPF_FUNC_ ##x
 enum bpf_func_id {
   __BPF_FUNC_MAPPER(__BPF_ENUM_FN) __BPF_FUNC_MAX_ID,
@@ -274,6 +313,7 @@
 #define BPF_F_USER_STACK (1ULL << 8)
 #define BPF_F_FAST_STACK_CMP (1ULL << 9)
 #define BPF_F_REUSE_STACKID (1ULL << 10)
+#define BPF_F_USER_BUILD_ID (1ULL << 11)
 #define BPF_F_ZERO_CSUM_TX (1ULL << 1)
 #define BPF_F_DONT_FRAGMENT (1ULL << 2)
 #define BPF_F_SEQ_NUMBER (1ULL << 3)
@@ -283,6 +323,14 @@
 enum bpf_adj_room_mode {
   BPF_ADJ_ROOM_NET,
 };
+enum bpf_hdr_start_off {
+  BPF_HDR_START_MAC,
+  BPF_HDR_START_NET,
+};
+enum bpf_lwt_encap_mode {
+  BPF_LWT_ENCAP_SEG6,
+  BPF_LWT_ENCAP_SEG6_INLINE
+};
 struct __sk_buff {
   __u32 len;
   __u32 pkt_type;
@@ -322,6 +370,16 @@
   __u16 tunnel_ext;
   __u32 tunnel_label;
 };
+struct bpf_xfrm_state {
+  __u32 reqid;
+  __u32 spi;
+  __u16 family;
+  __u16 ext;
+  union {
+    __u32 remote_ipv4;
+    __u32 remote_ipv6[4];
+  };
+};
 enum bpf_ret_code {
   BPF_OK = 0,
   BPF_DROP = 2,
@@ -360,6 +418,22 @@
 struct sk_msg_md {
   void * data;
   void * data_end;
+  __u32 family;
+  __u32 remote_ip4;
+  __u32 local_ip4;
+  __u32 remote_ip6[4];
+  __u32 local_ip6[4];
+  __u32 remote_port;
+  __u32 local_port;
+};
+struct sk_reuseport_md {
+  void * data;
+  void * data_end;
+  __u32 len;
+  __u32 eth_protocol;
+  __u32 ip_protocol;
+  __u32 bind_inany;
+  __u32 hash;
 };
 #define BPF_TAG_SIZE 8
 struct bpf_prog_info {
@@ -376,9 +450,13 @@
   __aligned_u64 map_ids;
   char name[BPF_OBJ_NAME_LEN];
   __u32 ifindex;
-  __u32 : 32;
+  __u32 gpl_compatible : 1;
   __u64 netns_dev;
   __u64 netns_ino;
+  __u32 nr_jited_ksyms;
+  __u32 nr_jited_func_lens;
+  __aligned_u64 jited_ksyms;
+  __aligned_u64 jited_func_lens;
 } __attribute__((aligned(8)));
 struct bpf_map_info {
   __u32 type;
@@ -392,6 +470,14 @@
   __u32 : 32;
   __u64 netns_dev;
   __u64 netns_ino;
+  __u32 btf_id;
+  __u32 btf_key_type_id;
+  __u32 btf_value_type_id;
+} __attribute__((aligned(8)));
+struct bpf_btf_info {
+  __aligned_u64 btf;
+  __u32 btf_size;
+  __u32 id;
 } __attribute__((aligned(8)));
 struct bpf_sock_addr {
   __u32 user_family;
@@ -401,6 +487,8 @@
   __u32 family;
   __u32 type;
   __u32 protocol;
+  __u32 msg_src_ip4;
+  __u32 msg_src_ip6[4];
 };
 struct bpf_sock_ops {
   __u32 op;
@@ -459,6 +547,7 @@
   BPF_SOCK_OPS_RTO_CB,
   BPF_SOCK_OPS_RETRANS_CB,
   BPF_SOCK_OPS_STATE_CB,
+  BPF_SOCK_OPS_TCP_LISTEN_CB,
 };
 enum {
   BPF_TCP_ESTABLISHED = 1,
@@ -495,4 +584,50 @@
 struct bpf_raw_tracepoint_args {
   __u64 args[0];
 };
+#define BPF_FIB_LOOKUP_DIRECT BIT(0)
+#define BPF_FIB_LOOKUP_OUTPUT BIT(1)
+enum {
+  BPF_FIB_LKUP_RET_SUCCESS,
+  BPF_FIB_LKUP_RET_BLACKHOLE,
+  BPF_FIB_LKUP_RET_UNREACHABLE,
+  BPF_FIB_LKUP_RET_PROHIBIT,
+  BPF_FIB_LKUP_RET_NOT_FWDED,
+  BPF_FIB_LKUP_RET_FWD_DISABLED,
+  BPF_FIB_LKUP_RET_UNSUPP_LWT,
+  BPF_FIB_LKUP_RET_NO_NEIGH,
+  BPF_FIB_LKUP_RET_FRAG_NEEDED,
+};
+struct bpf_fib_lookup {
+  __u8 family;
+  __u8 l4_protocol;
+  __be16 sport;
+  __be16 dport;
+  __u16 tot_len;
+  __u32 ifindex;
+  union {
+    __u8 tos;
+    __be32 flowinfo;
+    __u32 rt_metric;
+  };
+  union {
+    __be32 ipv4_src;
+    __u32 ipv6_src[4];
+  };
+  union {
+    __be32 ipv4_dst;
+    __u32 ipv6_dst[4];
+  };
+  __be16 h_vlan_proto;
+  __be16 h_vlan_TCI;
+  __u8 smac[6];
+  __u8 dmac[6];
+};
+enum bpf_task_fd_type {
+  BPF_FD_TYPE_RAW_TRACEPOINT,
+  BPF_FD_TYPE_TRACEPOINT,
+  BPF_FD_TYPE_KPROBE,
+  BPF_FD_TYPE_KRETPROBE,
+  BPF_FD_TYPE_UPROBE,
+  BPF_FD_TYPE_URETPROBE,
+};
 #endif
diff --git a/libc/kernel/uapi/linux/ncp_no.h b/libc/kernel/uapi/linux/bpfilter.h
similarity index 63%
rename from libc/kernel/uapi/linux/ncp_no.h
rename to libc/kernel/uapi/linux/bpfilter.h
index fe5caa0..a7d8d66 100644
--- a/libc/kernel/uapi/linux/ncp_no.h
+++ b/libc/kernel/uapi/linux/bpfilter.h
@@ -16,19 +16,19 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef _NCP_NO
-#define _NCP_NO
-#define aRONLY (__cpu_to_le32(1))
-#define aHIDDEN (__cpu_to_le32(2))
-#define aSYSTEM (__cpu_to_le32(4))
-#define aEXECUTE (__cpu_to_le32(8))
-#define aDIR (__cpu_to_le32(0x10))
-#define aARCH (__cpu_to_le32(0x20))
-#define aSHARED (__cpu_to_le32(0x80))
-#define aDONTSUBALLOCATE (__cpu_to_le32(1L << 11))
-#define aTRANSACTIONAL (__cpu_to_le32(1L << 12))
-#define aPURGE (__cpu_to_le32(1L << 16))
-#define aRENAMEINHIBIT (__cpu_to_le32(1L << 17))
-#define aDELETEINHIBIT (__cpu_to_le32(1L << 18))
-#define aDONTCOMPRESS (__cpu_to_le32(1L << 27))
+#ifndef _UAPI_LINUX_BPFILTER_H
+#define _UAPI_LINUX_BPFILTER_H
+#include <linux/if.h>
+enum {
+  BPFILTER_IPT_SO_SET_REPLACE = 64,
+  BPFILTER_IPT_SO_SET_ADD_COUNTERS = 65,
+  BPFILTER_IPT_SET_MAX,
+};
+enum {
+  BPFILTER_IPT_SO_GET_INFO = 64,
+  BPFILTER_IPT_SO_GET_ENTRIES = 65,
+  BPFILTER_IPT_SO_GET_REVISION_MATCH = 66,
+  BPFILTER_IPT_SO_GET_REVISION_TARGET = 67,
+  BPFILTER_IPT_GET_MAX,
+};
 #endif
diff --git a/libc/kernel/uapi/linux/btf.h b/libc/kernel/uapi/linux/btf.h
new file mode 100644
index 0000000..33dde5a
--- /dev/null
+++ b/libc/kernel/uapi/linux/btf.h
@@ -0,0 +1,81 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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_BTF_H__
+#define _UAPI__LINUX_BTF_H__
+#include <linux/types.h>
+#define BTF_MAGIC 0xeB9F
+#define BTF_VERSION 1
+struct btf_header {
+  __u16 magic;
+  __u8 version;
+  __u8 flags;
+  __u32 hdr_len;
+  __u32 type_off;
+  __u32 type_len;
+  __u32 str_off;
+  __u32 str_len;
+};
+#define BTF_MAX_TYPE 0x0000ffff
+#define BTF_MAX_NAME_OFFSET 0x0000ffff
+#define BTF_MAX_VLEN 0xffff
+struct btf_type {
+  __u32 name_off;
+  __u32 info;
+  union {
+    __u32 size;
+    __u32 type;
+  };
+};
+#define BTF_INFO_KIND(info) (((info) >> 24) & 0x0f)
+#define BTF_INFO_VLEN(info) ((info) & 0xffff)
+#define BTF_KIND_UNKN 0
+#define BTF_KIND_INT 1
+#define BTF_KIND_PTR 2
+#define BTF_KIND_ARRAY 3
+#define BTF_KIND_STRUCT 4
+#define BTF_KIND_UNION 5
+#define BTF_KIND_ENUM 6
+#define BTF_KIND_FWD 7
+#define BTF_KIND_TYPEDEF 8
+#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_INT_ENCODING(VAL) (((VAL) & 0x0f000000) >> 24)
+#define BTF_INT_OFFSET(VAL) (((VAL & 0x00ff0000)) >> 16)
+#define BTF_INT_BITS(VAL) ((VAL) & 0x000000ff)
+#define BTF_INT_SIGNED (1 << 0)
+#define BTF_INT_CHAR (1 << 1)
+#define BTF_INT_BOOL (1 << 2)
+struct btf_enum {
+  __u32 name_off;
+  __s32 val;
+};
+struct btf_array {
+  __u32 type;
+  __u32 index_type;
+  __u32 nelems;
+};
+struct btf_member {
+  __u32 name_off;
+  __u32 type;
+  __u32 offset;
+};
+#endif
diff --git a/libc/kernel/uapi/linux/btrfs.h b/libc/kernel/uapi/linux/btrfs.h
index a162bb0..2bb79d8 100644
--- a/libc/kernel/uapi/linux/btrfs.h
+++ b/libc/kernel/uapi/linux/btrfs.h
@@ -248,6 +248,13 @@
   __u64 objectid;
   char name[BTRFS_INO_LOOKUP_PATH_MAX];
 };
+#define BTRFS_INO_LOOKUP_USER_PATH_MAX (4080 - BTRFS_VOL_NAME_MAX - 1)
+struct btrfs_ioctl_ino_lookup_user_args {
+  __u64 dirid;
+  __u64 treeid;
+  char name[BTRFS_VOL_NAME_MAX + 1];
+  char path[BTRFS_INO_LOOKUP_USER_PATH_MAX];
+};
 struct btrfs_ioctl_search_key {
   __u64 tree_id;
   __u64 min_objectid;
@@ -406,6 +413,36 @@
   __u64 flags;
   __u64 reserved[4];
 };
+struct btrfs_ioctl_get_subvol_info_args {
+  __u64 treeid;
+  char name[BTRFS_VOL_NAME_MAX + 1];
+  __u64 parent_id;
+  __u64 dirid;
+  __u64 generation;
+  __u64 flags;
+  __u8 uuid[BTRFS_UUID_SIZE];
+  __u8 parent_uuid[BTRFS_UUID_SIZE];
+  __u8 received_uuid[BTRFS_UUID_SIZE];
+  __u64 ctransid;
+  __u64 otransid;
+  __u64 stransid;
+  __u64 rtransid;
+  struct btrfs_ioctl_timespec ctime;
+  struct btrfs_ioctl_timespec otime;
+  struct btrfs_ioctl_timespec stime;
+  struct btrfs_ioctl_timespec rtime;
+  __u64 reserved[8];
+};
+#define BTRFS_MAX_ROOTREF_BUFFER_NUM 255
+struct btrfs_ioctl_get_subvol_rootref_args {
+  __u64 min_treeid;
+  struct {
+    __u64 treeid;
+    __u64 dirid;
+  } rootref[BTRFS_MAX_ROOTREF_BUFFER_NUM];
+  __u8 num_items;
+  __u8 align[7];
+};
 enum btrfs_err_code {
   BTRFS_ERROR_DEV_RAID1_MIN_NOT_MET = 1,
   BTRFS_ERROR_DEV_RAID10_MIN_NOT_MET,
@@ -472,4 +509,7 @@
 #define BTRFS_IOC_GET_SUPPORTED_FEATURES _IOR(BTRFS_IOCTL_MAGIC, 57, struct btrfs_ioctl_feature_flags[3])
 #define BTRFS_IOC_RM_DEV_V2 _IOW(BTRFS_IOCTL_MAGIC, 58, struct btrfs_ioctl_vol_args_v2)
 #define BTRFS_IOC_LOGICAL_INO_V2 _IOWR(BTRFS_IOCTL_MAGIC, 59, struct btrfs_ioctl_logical_ino_args)
+#define BTRFS_IOC_GET_SUBVOL_INFO _IOR(BTRFS_IOCTL_MAGIC, 60, struct btrfs_ioctl_get_subvol_info_args)
+#define BTRFS_IOC_GET_SUBVOL_ROOTREF _IOWR(BTRFS_IOCTL_MAGIC, 61, struct btrfs_ioctl_get_subvol_rootref_args)
+#define BTRFS_IOC_INO_LOOKUP_USER _IOWR(BTRFS_IOCTL_MAGIC, 62, struct btrfs_ioctl_ino_lookup_user_args)
 #endif
diff --git a/libc/kernel/uapi/linux/cec.h b/libc/kernel/uapi/linux/cec.h
index 98892f7..fd0f824 100644
--- a/libc/kernel/uapi/linux/cec.h
+++ b/libc/kernel/uapi/linux/cec.h
@@ -132,6 +132,8 @@
 #define CEC_EVENT_PIN_CEC_HIGH 4
 #define CEC_EVENT_PIN_HPD_LOW 5
 #define CEC_EVENT_PIN_HPD_HIGH 6
+#define CEC_EVENT_PIN_5V_LOW 7
+#define CEC_EVENT_PIN_5V_HIGH 8
 #define CEC_EVENT_FL_INITIAL_STATE (1 << 0)
 #define CEC_EVENT_FL_DROPPED_EVENTS (1 << 1)
 struct cec_event_state_change {
diff --git a/libc/kernel/uapi/linux/cn_proc.h b/libc/kernel/uapi/linux/cn_proc.h
index 8aa48a8..411b725 100644
--- a/libc/kernel/uapi/linux/cn_proc.h
+++ b/libc/kernel/uapi/linux/cn_proc.h
@@ -82,11 +82,15 @@
     struct coredump_proc_event {
       __kernel_pid_t process_pid;
       __kernel_pid_t process_tgid;
+      __kernel_pid_t parent_pid;
+      __kernel_pid_t parent_tgid;
     } coredump;
     struct exit_proc_event {
       __kernel_pid_t process_pid;
       __kernel_pid_t process_tgid;
       __u32 exit_code, exit_signal;
+      __kernel_pid_t parent_pid;
+      __kernel_pid_t parent_tgid;
     } exit;
   } event_data;
 };
diff --git a/libc/kernel/uapi/linux/dcbnl.h b/libc/kernel/uapi/linux/dcbnl.h
index 2fe4cce..d1f2eba 100644
--- a/libc/kernel/uapi/linux/dcbnl.h
+++ b/libc/kernel/uapi/linux/dcbnl.h
@@ -71,6 +71,13 @@
   __u64 requests[IEEE_8021QAZ_MAX_TCS];
   __u64 indications[IEEE_8021QAZ_MAX_TCS];
 };
+#define IEEE_8021Q_MAX_PRIORITIES 8
+#define DCBX_MAX_BUFFERS 8
+struct dcbnl_buffer {
+  __u8 prio2buffer[IEEE_8021Q_MAX_PRIORITIES];
+  __u32 buffer_size[DCBX_MAX_BUFFERS];
+  __u32 total_size;
+};
 #define CEE_DCBX_MAX_PGS 8
 #define CEE_DCBX_MAX_PRIO 8
 struct cee_pg {
@@ -170,6 +177,7 @@
   DCB_ATTR_IEEE_MAXRATE,
   DCB_ATTR_IEEE_QCN,
   DCB_ATTR_IEEE_QCN_STATS,
+  DCB_ATTR_DCB_BUFFER,
   __DCB_ATTR_IEEE_MAX
 };
 #define DCB_ATTR_IEEE_MAX (__DCB_ATTR_IEEE_MAX - 1)
diff --git a/libc/kernel/uapi/linux/devlink.h b/libc/kernel/uapi/linux/devlink.h
index 07c5752..ead40ad 100644
--- a/libc/kernel/uapi/linux/devlink.h
+++ b/libc/kernel/uapi/linux/devlink.h
@@ -62,6 +62,15 @@
   DEVLINK_CMD_RESOURCE_SET,
   DEVLINK_CMD_RESOURCE_DUMP,
   DEVLINK_CMD_RELOAD,
+  DEVLINK_CMD_PARAM_GET,
+  DEVLINK_CMD_PARAM_SET,
+  DEVLINK_CMD_PARAM_NEW,
+  DEVLINK_CMD_PARAM_DEL,
+  DEVLINK_CMD_REGION_GET,
+  DEVLINK_CMD_REGION_SET,
+  DEVLINK_CMD_REGION_NEW,
+  DEVLINK_CMD_REGION_DEL,
+  DEVLINK_CMD_REGION_READ,
   __DEVLINK_CMD_MAX,
   DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1
 };
@@ -94,6 +103,18 @@
   DEVLINK_ESWITCH_ENCAP_MODE_NONE,
   DEVLINK_ESWITCH_ENCAP_MODE_BASIC,
 };
+enum devlink_port_flavour {
+  DEVLINK_PORT_FLAVOUR_PHYSICAL,
+  DEVLINK_PORT_FLAVOUR_CPU,
+  DEVLINK_PORT_FLAVOUR_DSA,
+};
+enum devlink_param_cmode {
+  DEVLINK_PARAM_CMODE_RUNTIME,
+  DEVLINK_PARAM_CMODE_DRIVERINIT,
+  DEVLINK_PARAM_CMODE_PERMANENT,
+  __DEVLINK_PARAM_CMODE_MAX,
+  DEVLINK_PARAM_CMODE_MAX = __DEVLINK_PARAM_CMODE_MAX - 1
+};
 enum devlink_attr {
   DEVLINK_ATTR_UNSPEC,
   DEVLINK_ATTR_BUS_NAME,
@@ -172,6 +193,27 @@
   DEVLINK_ATTR_RESOURCE_OCC,
   DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID,
   DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_UNITS,
+  DEVLINK_ATTR_PORT_FLAVOUR,
+  DEVLINK_ATTR_PORT_NUMBER,
+  DEVLINK_ATTR_PORT_SPLIT_SUBPORT_NUMBER,
+  DEVLINK_ATTR_PARAM,
+  DEVLINK_ATTR_PARAM_NAME,
+  DEVLINK_ATTR_PARAM_GENERIC,
+  DEVLINK_ATTR_PARAM_TYPE,
+  DEVLINK_ATTR_PARAM_VALUES_LIST,
+  DEVLINK_ATTR_PARAM_VALUE,
+  DEVLINK_ATTR_PARAM_VALUE_DATA,
+  DEVLINK_ATTR_PARAM_VALUE_CMODE,
+  DEVLINK_ATTR_REGION_NAME,
+  DEVLINK_ATTR_REGION_SIZE,
+  DEVLINK_ATTR_REGION_SNAPSHOTS,
+  DEVLINK_ATTR_REGION_SNAPSHOT,
+  DEVLINK_ATTR_REGION_SNAPSHOT_ID,
+  DEVLINK_ATTR_REGION_CHUNKS,
+  DEVLINK_ATTR_REGION_CHUNK,
+  DEVLINK_ATTR_REGION_CHUNK_DATA,
+  DEVLINK_ATTR_REGION_CHUNK_ADDR,
+  DEVLINK_ATTR_REGION_CHUNK_LEN,
   __DEVLINK_ATTR_MAX,
   DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1
 };
diff --git a/libc/kernel/uapi/linux/dvb/audio.h b/libc/kernel/uapi/linux/dvb/audio.h
index e606f79..0a527c1 100644
--- a/libc/kernel/uapi/linux/dvb/audio.h
+++ b/libc/kernel/uapi/linux/dvb/audio.h
@@ -48,12 +48,6 @@
   int bypass_mode;
   audio_mixer_t mixer_state;
 } audio_status_t;
-typedef struct audio_karaoke {
-  int vocal1;
-  int vocal2;
-  int melody;
-} audio_karaoke_t;
-typedef __u16 audio_attributes_t;
 #define AUDIO_CAP_DTS 1
 #define AUDIO_CAP_LPCM 2
 #define AUDIO_CAP_MP1 4
@@ -78,9 +72,5 @@
 #define AUDIO_SET_ID _IO('o', 13)
 #define AUDIO_SET_MIXER _IOW('o', 14, audio_mixer_t)
 #define AUDIO_SET_STREAMTYPE _IO('o', 15)
-#define AUDIO_SET_EXT_ID _IO('o', 16)
-#define AUDIO_SET_ATTRIBUTES _IOW('o', 17, audio_attributes_t)
-#define AUDIO_SET_KARAOKE _IOW('o', 18, audio_karaoke_t)
-#define AUDIO_GET_PTS _IOR('o', 19, __u64)
 #define AUDIO_BILINGUAL_CHANNEL_SELECT _IO('o', 20)
 #endif
diff --git a/libc/kernel/uapi/linux/dvb/video.h b/libc/kernel/uapi/linux/dvb/video.h
index 7ada1a0..6577e1f 100644
--- a/libc/kernel/uapi/linux/dvb/video.h
+++ b/libc/kernel/uapi/linux/dvb/video.h
@@ -26,16 +26,6 @@
   VIDEO_FORMAT_221_1
 } video_format_t;
 typedef enum {
-  VIDEO_SYSTEM_PAL,
-  VIDEO_SYSTEM_NTSC,
-  VIDEO_SYSTEM_PALN,
-  VIDEO_SYSTEM_PALNc,
-  VIDEO_SYSTEM_PALM,
-  VIDEO_SYSTEM_NTSC60,
-  VIDEO_SYSTEM_PAL60,
-  VIDEO_SYSTEM_PALM60
-} video_system_t;
-typedef enum {
   VIDEO_PAN_SCAN,
   VIDEO_LETTER_BOX,
   VIDEO_CENTER_CUT_OUT
@@ -107,27 +97,6 @@
   char __user * iFrame;
   __s32 size;
 };
-typedef struct video_highlight {
-  int active;
-  __u8 contrast1;
-  __u8 contrast2;
-  __u8 color1;
-  __u8 color2;
-  __u32 ypos;
-  __u32 xpos;
-} video_highlight_t;
-typedef struct video_spu {
-  int active;
-  int stream_id;
-} video_spu_t;
-typedef struct video_spu_palette {
-  int length;
-  __u8 __user * palette;
-} video_spu_palette_t;
-typedef struct video_navi_pack {
-  int length;
-  __u8 data[1024];
-} video_navi_pack_t;
 typedef __u16 video_attributes_t;
 #define VIDEO_CAP_MPEG1 1
 #define VIDEO_CAP_MPEG2 2
@@ -150,17 +119,9 @@
 #define VIDEO_SLOWMOTION _IO('o', 32)
 #define VIDEO_GET_CAPABILITIES _IOR('o', 33, unsigned int)
 #define VIDEO_CLEAR_BUFFER _IO('o', 34)
-#define VIDEO_SET_ID _IO('o', 35)
 #define VIDEO_SET_STREAMTYPE _IO('o', 36)
 #define VIDEO_SET_FORMAT _IO('o', 37)
-#define VIDEO_SET_SYSTEM _IO('o', 38)
-#define VIDEO_SET_HIGHLIGHT _IOW('o', 39, video_highlight_t)
-#define VIDEO_SET_SPU _IOW('o', 50, video_spu_t)
-#define VIDEO_SET_SPU_PALETTE _IOW('o', 51, video_spu_palette_t)
-#define VIDEO_GET_NAVI _IOR('o', 52, video_navi_pack_t)
-#define VIDEO_SET_ATTRIBUTES _IO('o', 53)
 #define VIDEO_GET_SIZE _IOR('o', 55, video_size_t)
-#define VIDEO_GET_FRAME_RATE _IOR('o', 56, unsigned int)
 #define VIDEO_GET_PTS _IOR('o', 57, __u64)
 #define VIDEO_GET_FRAME_COUNT _IOR('o', 58, __u64)
 #define VIDEO_COMMAND _IOWR('o', 59, struct video_command)
diff --git a/libc/kernel/uapi/linux/elf.h b/libc/kernel/uapi/linux/elf.h
index 195ef09..1f69e1b 100644
--- a/libc/kernel/uapi/linux/elf.h
+++ b/libc/kernel/uapi/linux/elf.h
@@ -356,6 +356,9 @@
 #define NT_ARM_SYSTEM_CALL 0x404
 #define NT_ARM_SVE 0x405
 #define NT_ARC_V2 0x600
+#define NT_VMCOREDD 0x700
+#define NT_MIPS_DSP 0x800
+#define NT_MIPS_FP_MODE 0x801
 typedef struct elf32_note {
   Elf32_Word n_namesz;
   Elf32_Word n_descsz;
diff --git a/libc/kernel/uapi/linux/errqueue.h b/libc/kernel/uapi/linux/errqueue.h
index 196189b..f4a244f 100644
--- a/libc/kernel/uapi/linux/errqueue.h
+++ b/libc/kernel/uapi/linux/errqueue.h
@@ -34,9 +34,12 @@
 #define SO_EE_ORIGIN_ICMP6 3
 #define SO_EE_ORIGIN_TXSTATUS 4
 #define SO_EE_ORIGIN_ZEROCOPY 5
+#define SO_EE_ORIGIN_TXTIME 6
 #define SO_EE_ORIGIN_TIMESTAMPING SO_EE_ORIGIN_TXSTATUS
 #define SO_EE_OFFENDER(ee) ((struct sockaddr *) ((ee) + 1))
 #define SO_EE_CODE_ZEROCOPY_COPIED 1
+#define SO_EE_CODE_TXTIME_INVALID_PARAM 1
+#define SO_EE_CODE_TXTIME_MISSED 2
 struct scm_timestamping {
   struct timespec ts[3];
 };
diff --git a/libc/kernel/uapi/linux/ethtool.h b/libc/kernel/uapi/linux/ethtool.h
index 92607f9..25e1a9e 100644
--- a/libc/kernel/uapi/linux/ethtool.h
+++ b/libc/kernel/uapi/linux/ethtool.h
@@ -320,6 +320,17 @@
 #define ETHTOOL_RX_FLOW_SPEC_RING 0x00000000FFFFFFFFLL
 #define ETHTOOL_RX_FLOW_SPEC_RING_VF 0x000000FF00000000LL
 #define ETHTOOL_RX_FLOW_SPEC_RING_VF_OFF 32
+struct ethtool_rxnfc {
+  __u32 cmd;
+  __u32 flow_type;
+  __u64 data;
+  struct ethtool_rx_flow_spec fs;
+  union {
+    __u32 rule_cnt;
+    __u32 rss_context;
+  };
+  __u32 rule_locs[0];
+};
 struct ethtool_rxfh_indir {
   __u32 cmd;
   __u32 size;
@@ -683,6 +694,7 @@
 #define WAKE_ARP (1 << 4)
 #define WAKE_MAGIC (1 << 5)
 #define WAKE_MAGICSECURE (1 << 6)
+#define WAKE_FILTER (1 << 7)
 #define TCP_V4_FLOW 0x01
 #define UDP_V4_FLOW 0x02
 #define SCTP_V4_FLOW 0x03
@@ -713,6 +725,7 @@
 #define RXH_L4_B_2_3 (1 << 7)
 #define RXH_DISCARD (1 << 31)
 #define RX_CLS_FLOW_DISC 0xffffffffffffffffULL
+#define RX_CLS_FLOW_WAKE 0xfffffffffffffffeULL
 #define RX_CLS_LOC_SPECIAL 0x80000000
 #define RX_CLS_LOC_ANY 0xffffffff
 #define RX_CLS_LOC_FIRST 0xfffffffe
diff --git a/libc/kernel/uapi/linux/eventpoll.h b/libc/kernel/uapi/linux/eventpoll.h
index 2e5ba8e..d2601e5 100644
--- a/libc/kernel/uapi/linux/eventpoll.h
+++ b/libc/kernel/uapi/linux/eventpoll.h
@@ -37,10 +37,10 @@
 #define EPOLLWRBAND (__force __poll_t) 0x00000200
 #define EPOLLMSG (__force __poll_t) 0x00000400
 #define EPOLLRDHUP (__force __poll_t) 0x00002000
-#define EPOLLEXCLUSIVE (__force __poll_t) (1U << 28)
-#define EPOLLWAKEUP (__force __poll_t) (1U << 29)
-#define EPOLLONESHOT (__force __poll_t) (1U << 30)
-#define EPOLLET (__force __poll_t) (1U << 31)
+#define EPOLLEXCLUSIVE ((__force __poll_t) (1U << 28))
+#define EPOLLWAKEUP ((__force __poll_t) (1U << 29))
+#define EPOLLONESHOT ((__force __poll_t) (1U << 30))
+#define EPOLLET ((__force __poll_t) (1U << 31))
 #ifdef __x86_64__
 #define EPOLL_PACKED __attribute__((packed))
 #else
diff --git a/libc/kernel/uapi/linux/fpga-dfl.h b/libc/kernel/uapi/linux/fpga-dfl.h
new file mode 100644
index 0000000..bf9a7c7
--- /dev/null
+++ b/libc/kernel/uapi/linux/fpga-dfl.h
@@ -0,0 +1,74 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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_FPGA_DFL_H
+#define _UAPI_LINUX_FPGA_DFL_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+#define DFL_FPGA_API_VERSION 0
+#define DFL_FPGA_MAGIC 0xB6
+#define DFL_FPGA_BASE 0
+#define DFL_PORT_BASE 0x40
+#define DFL_FME_BASE 0x80
+#define DFL_FPGA_GET_API_VERSION _IO(DFL_FPGA_MAGIC, DFL_FPGA_BASE + 0)
+#define DFL_FPGA_CHECK_EXTENSION _IO(DFL_FPGA_MAGIC, DFL_FPGA_BASE + 1)
+#define DFL_FPGA_PORT_RESET _IO(DFL_FPGA_MAGIC, DFL_PORT_BASE + 0)
+struct dfl_fpga_port_info {
+  __u32 argsz;
+  __u32 flags;
+  __u32 num_regions;
+  __u32 num_umsgs;
+};
+#define DFL_FPGA_PORT_GET_INFO _IO(DFL_FPGA_MAGIC, DFL_PORT_BASE + 1)
+struct dfl_fpga_port_region_info {
+  __u32 argsz;
+  __u32 flags;
+#define DFL_PORT_REGION_READ (1 << 0)
+#define DFL_PORT_REGION_WRITE (1 << 1)
+#define DFL_PORT_REGION_MMAP (1 << 2)
+  __u32 index;
+#define DFL_PORT_REGION_INDEX_AFU 0
+#define DFL_PORT_REGION_INDEX_STP 1
+  __u32 padding;
+  __u64 size;
+  __u64 offset;
+};
+#define DFL_FPGA_PORT_GET_REGION_INFO _IO(DFL_FPGA_MAGIC, DFL_PORT_BASE + 2)
+struct dfl_fpga_port_dma_map {
+  __u32 argsz;
+  __u32 flags;
+  __u64 user_addr;
+  __u64 length;
+  __u64 iova;
+};
+#define DFL_FPGA_PORT_DMA_MAP _IO(DFL_FPGA_MAGIC, DFL_PORT_BASE + 3)
+struct dfl_fpga_port_dma_unmap {
+  __u32 argsz;
+  __u32 flags;
+  __u64 iova;
+};
+#define DFL_FPGA_PORT_DMA_UNMAP _IO(DFL_FPGA_MAGIC, DFL_PORT_BASE + 4)
+struct dfl_fpga_fme_port_pr {
+  __u32 argsz;
+  __u32 flags;
+  __u32 port_id;
+  __u32 buffer_size;
+  __u64 buffer_address;
+};
+#define DFL_FPGA_FME_PORT_PR _IO(DFL_FPGA_MAGIC, DFL_FME_BASE + 0)
+#endif
diff --git a/libc/kernel/uapi/linux/fs.h b/libc/kernel/uapi/linux/fs.h
index 77c45c8..5c237d8 100644
--- a/libc/kernel/uapi/linux/fs.h
+++ b/libc/kernel/uapi/linux/fs.h
@@ -170,6 +170,7 @@
 #define FICLONE _IOW(0x94, 9, int)
 #define FICLONERANGE _IOW(0x94, 13, struct file_clone_range)
 #define FIDEDUPERANGE _IOWR(0x94, 54, struct file_dedupe_range)
+#define FSLABEL_MAX 256
 #define FS_IOC_GETFLAGS _IOR('f', 1, long)
 #define FS_IOC_SETFLAGS _IOW('f', 2, long)
 #define FS_IOC_GETVERSION _IOR('v', 1, long)
@@ -181,6 +182,8 @@
 #define FS_IOC32_SETVERSION _IOW('v', 2, int)
 #define FS_IOC_FSGETXATTR _IOR('X', 31, struct fsxattr)
 #define FS_IOC_FSSETXATTR _IOW('X', 32, struct fsxattr)
+#define FS_IOC_GETFSLABEL _IOR(0x94, 49, char[FSLABEL_MAX])
+#define FS_IOC_SETFSLABEL _IOW(0x94, 50, char[FSLABEL_MAX])
 #define FS_KEY_DESCRIPTOR_SIZE 8
 #define FS_POLICY_FLAGS_PAD_4 0x00
 #define FS_POLICY_FLAGS_PAD_8 0x01
@@ -195,6 +198,8 @@
 #define FS_ENCRYPTION_MODE_AES_256_CTS 4
 #define FS_ENCRYPTION_MODE_AES_128_CBC 5
 #define FS_ENCRYPTION_MODE_AES_128_CTS 6
+#define FS_ENCRYPTION_MODE_SPECK128_256_XTS 7
+#define FS_ENCRYPTION_MODE_SPECK128_256_CTS 8
 struct fscrypt_policy {
   __u8 version;
   __u8 contents_encryption_mode;
diff --git a/libc/kernel/uapi/linux/fsi.h b/libc/kernel/uapi/linux/fsi.h
new file mode 100644
index 0000000..fc88464
--- /dev/null
+++ b/libc/kernel/uapi/linux/fsi.h
@@ -0,0 +1,51 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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_FSI_H
+#define _UAPI_LINUX_FSI_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
+struct scom_access {
+  __u64 addr;
+  __u64 data;
+  __u64 mask;
+  __u32 intf_errors;
+#define SCOM_INTF_ERR_PARITY 0x00000001
+#define SCOM_INTF_ERR_PROTECTION 0x00000002
+#define SCOM_INTF_ERR_ABORT 0x00000004
+#define SCOM_INTF_ERR_UNKNOWN 0x80000000
+  __u8 pib_status;
+#define SCOM_PIB_SUCCESS 0
+#define SCOM_PIB_BLOCKED 1
+#define SCOM_PIB_OFFLINE 2
+#define SCOM_PIB_PARTIAL 3
+#define SCOM_PIB_BAD_ADDR 4
+#define SCOM_PIB_CLK_ERR 5
+#define SCOM_PIB_PARITY_ERR 6
+#define SCOM_PIB_TIMEOUT 7
+  __u8 pad;
+};
+#define SCOM_CHECK_SUPPORTED 0x00000001
+#define SCOM_CHECK_PROTECTED 0x00000002
+#define SCOM_RESET_INTF 0x00000001
+#define SCOM_RESET_PIB 0x00000002
+#define FSI_SCOM_CHECK _IOR('s', 0x00, __u32)
+#define FSI_SCOM_READ _IOWR('s', 0x01, struct scom_access)
+#define FSI_SCOM_WRITE _IOWR('s', 0x02, struct scom_access)
+#define FSI_SCOM_RESET _IOW('s', 0x03, __u32)
+#endif
diff --git a/libc/kernel/uapi/linux/fuse.h b/libc/kernel/uapi/linux/fuse.h
index 42f9ed6..a727580 100644
--- a/libc/kernel/uapi/linux/fuse.h
+++ b/libc/kernel/uapi/linux/fuse.h
@@ -20,7 +20,7 @@
 #define _LINUX_FUSE_H
 #include <stdint.h>
 #define FUSE_KERNEL_VERSION 7
-#define FUSE_KERNEL_MINOR_VERSION 26
+#define FUSE_KERNEL_MINOR_VERSION 27
 #define FUSE_ROOT_ID 1
 struct fuse_attr {
   uint64_t ino;
@@ -93,6 +93,7 @@
 #define FUSE_PARALLEL_DIROPS (1 << 18)
 #define FUSE_HANDLE_KILLPRIV (1 << 19)
 #define FUSE_POSIX_ACL (1 << 20)
+#define FUSE_ABORT_ERROR (1 << 21)
 #define CUSE_UNRESTRICTED_IOCTL (1 << 0)
 #define FUSE_RELEASE_FLUSH (1 << 0)
 #define FUSE_RELEASE_FLOCK_UNLOCK (1 << 1)
diff --git a/libc/kernel/uapi/linux/if_addr.h b/libc/kernel/uapi/linux/if_addr.h
index cefc11b..0a4b0ae 100644
--- a/libc/kernel/uapi/linux/if_addr.h
+++ b/libc/kernel/uapi/linux/if_addr.h
@@ -37,6 +37,7 @@
   IFA_CACHEINFO,
   IFA_MULTICAST,
   IFA_FLAGS,
+  IFA_RT_PRIORITY,
   __IFA_MAX,
 };
 #define IFA_MAX (__IFA_MAX - 1)
diff --git a/libc/kernel/uapi/linux/if_link.h b/libc/kernel/uapi/linux/if_link.h
index 8a9993b..4bbf21d 100644
--- a/libc/kernel/uapi/linux/if_link.h
+++ b/libc/kernel/uapi/linux/if_link.h
@@ -141,6 +141,8 @@
   IFLA_CARRIER_UP_COUNT,
   IFLA_CARRIER_DOWN_COUNT,
   IFLA_NEW_IFINDEX,
+  IFLA_MIN_MTU,
+  IFLA_MAX_MTU,
   __IFLA_MAX
 };
 #define IFLA_MAX (__IFLA_MAX - 1)
@@ -262,6 +264,8 @@
   IFLA_BRPORT_BCAST_FLOOD,
   IFLA_BRPORT_GROUP_FWD_MASK,
   IFLA_BRPORT_NEIGH_SUPPRESS,
+  IFLA_BRPORT_ISOLATED,
+  IFLA_BRPORT_BACKUP_PORT,
   __IFLA_BRPORT_MAX
 };
 #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
@@ -361,6 +365,13 @@
   __IFLA_MACSEC_MAX,
 };
 #define IFLA_MACSEC_MAX (__IFLA_MACSEC_MAX - 1)
+enum {
+  IFLA_XFRM_UNSPEC,
+  IFLA_XFRM_LINK,
+  IFLA_XFRM_IF_ID,
+  __IFLA_XFRM_MAX
+};
+#define IFLA_XFRM_MAX (__IFLA_XFRM_MAX - 1)
 enum macsec_validation_type {
   MACSEC_VALIDATE_DISABLED = 0,
   MACSEC_VALIDATE_CHECK = 1,
@@ -412,6 +423,7 @@
   IFLA_VXLAN_COLLECT_METADATA,
   IFLA_VXLAN_LABEL,
   IFLA_VXLAN_GPE,
+  IFLA_VXLAN_TTL_INHERIT,
   __IFLA_VXLAN_MAX
 };
 #define IFLA_VXLAN_MAX (__IFLA_VXLAN_MAX - 1)
@@ -714,6 +726,7 @@
   XDP_ATTACHED_DRV,
   XDP_ATTACHED_SKB,
   XDP_ATTACHED_HW,
+  XDP_ATTACHED_MULTI,
 };
 enum {
   IFLA_XDP_UNSPEC,
@@ -721,6 +734,9 @@
   IFLA_XDP_ATTACHED,
   IFLA_XDP_FLAGS,
   IFLA_XDP_PROG_ID,
+  IFLA_XDP_DRV_PROG_ID,
+  IFLA_XDP_SKB_PROG_ID,
+  IFLA_XDP_HW_PROG_ID,
   __IFLA_XDP_MAX,
 };
 #define IFLA_XDP_MAX (__IFLA_XDP_MAX - 1)
diff --git a/libc/kernel/uapi/linux/if_xdp.h b/libc/kernel/uapi/linux/if_xdp.h
new file mode 100644
index 0000000..a0935bd
--- /dev/null
+++ b/libc/kernel/uapi/linux/if_xdp.h
@@ -0,0 +1,70 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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_IF_XDP_H
+#define _LINUX_IF_XDP_H
+#include <linux/types.h>
+#define XDP_SHARED_UMEM (1 << 0)
+#define XDP_COPY (1 << 1)
+#define XDP_ZEROCOPY (1 << 2)
+struct sockaddr_xdp {
+  __u16 sxdp_family;
+  __u16 sxdp_flags;
+  __u32 sxdp_ifindex;
+  __u32 sxdp_queue_id;
+  __u32 sxdp_shared_umem_fd;
+};
+struct xdp_ring_offset {
+  __u64 producer;
+  __u64 consumer;
+  __u64 desc;
+};
+struct xdp_mmap_offsets {
+  struct xdp_ring_offset rx;
+  struct xdp_ring_offset tx;
+  struct xdp_ring_offset fr;
+  struct xdp_ring_offset cr;
+};
+#define XDP_MMAP_OFFSETS 1
+#define XDP_RX_RING 2
+#define XDP_TX_RING 3
+#define XDP_UMEM_REG 4
+#define XDP_UMEM_FILL_RING 5
+#define XDP_UMEM_COMPLETION_RING 6
+#define XDP_STATISTICS 7
+struct xdp_umem_reg {
+  __u64 addr;
+  __u64 len;
+  __u32 chunk_size;
+  __u32 headroom;
+};
+struct xdp_statistics {
+  __u64 rx_dropped;
+  __u64 rx_invalid_descs;
+  __u64 tx_invalid_descs;
+};
+#define XDP_PGOFF_RX_RING 0
+#define XDP_PGOFF_TX_RING 0x80000000
+#define XDP_UMEM_PGOFF_FILL_RING 0x100000000ULL
+#define XDP_UMEM_PGOFF_COMPLETION_RING 0x180000000ULL
+struct xdp_desc {
+  __u64 addr;
+  __u32 len;
+  __u32 options;
+};
+#endif
diff --git a/libc/kernel/uapi/linux/iio/types.h b/libc/kernel/uapi/linux/iio/types.h
index 3d4769d..834a2eb 100644
--- a/libc/kernel/uapi/linux/iio/types.h
+++ b/libc/kernel/uapi/linux/iio/types.h
@@ -51,6 +51,8 @@
   IIO_COUNT,
   IIO_INDEX,
   IIO_GRAVITY,
+  IIO_POSITIONRELATIVE,
+  IIO_PHASE,
 };
 enum iio_modifier {
   IIO_NO_MOD,
@@ -90,6 +92,7 @@
   IIO_MOD_CO2,
   IIO_MOD_VOC,
   IIO_MOD_LIGHT_UV,
+  IIO_MOD_LIGHT_DUV,
 };
 enum iio_event_type {
   IIO_EV_TYPE_THRESH,
diff --git a/libc/kernel/uapi/linux/ila.h b/libc/kernel/uapi/linux/ila.h
index a5af23a..75de8eb 100644
--- a/libc/kernel/uapi/linux/ila.h
+++ b/libc/kernel/uapi/linux/ila.h
@@ -39,6 +39,7 @@
   ILA_CMD_ADD,
   ILA_CMD_DEL,
   ILA_CMD_GET,
+  ILA_CMD_FLUSH,
   __ILA_CMD_MAX,
 };
 #define ILA_CMD_MAX (__ILA_CMD_MAX - 1)
diff --git a/libc/kernel/uapi/linux/inotify.h b/libc/kernel/uapi/linux/inotify.h
index 653dc07..eb9ac3c 100644
--- a/libc/kernel/uapi/linux/inotify.h
+++ b/libc/kernel/uapi/linux/inotify.h
@@ -47,6 +47,7 @@
 #define IN_ONLYDIR 0x01000000
 #define IN_DONT_FOLLOW 0x02000000
 #define IN_EXCL_UNLINK 0x04000000
+#define IN_MASK_CREATE 0x10000000
 #define IN_MASK_ADD 0x20000000
 #define IN_ISDIR 0x40000000
 #define IN_ONESHOT 0x80000000
diff --git a/libc/kernel/uapi/linux/input.h b/libc/kernel/uapi/linux/input.h
index 298e2a3..0a4b563 100644
--- a/libc/kernel/uapi/linux/input.h
+++ b/libc/kernel/uapi/linux/input.h
@@ -120,10 +120,11 @@
 #define BUS_RMI 0x1D
 #define BUS_CEC 0x1E
 #define BUS_INTEL_ISHTP 0x1F
-#define MT_TOOL_FINGER 0
-#define MT_TOOL_PEN 1
-#define MT_TOOL_PALM 2
-#define MT_TOOL_MAX 2
+#define MT_TOOL_FINGER 0x00
+#define MT_TOOL_PEN 0x01
+#define MT_TOOL_PALM 0x02
+#define MT_TOOL_DIAL 0x0a
+#define MT_TOOL_MAX 0x0f
 #define FF_STATUS_STOPPED 0x00
 #define FF_STATUS_PLAYING 0x01
 #define FF_STATUS_MAX 0x01
diff --git a/libc/kernel/uapi/linux/ip.h b/libc/kernel/uapi/linux/ip.h
index 8632d45..564fd8d 100644
--- a/libc/kernel/uapi/linux/ip.h
+++ b/libc/kernel/uapi/linux/ip.h
@@ -145,6 +145,7 @@
   IPV4_DEVCONF_IGNORE_ROUTES_WITH_LINKDOWN,
   IPV4_DEVCONF_DROP_UNICAST_IN_L2_MULTICAST,
   IPV4_DEVCONF_DROP_GRATUITOUS_ARP,
+  IPV4_DEVCONF_BC_FORWARDING,
   __IPV4_DEVCONF_MAX
 };
 #define IPV4_DEVCONF_MAX (__IPV4_DEVCONF_MAX - 1)
diff --git a/libc/kernel/uapi/linux/kernel-page-flags.h b/libc/kernel/uapi/linux/kernel-page-flags.h
index a1212cc..afa0393 100644
--- a/libc/kernel/uapi/linux/kernel-page-flags.h
+++ b/libc/kernel/uapi/linux/kernel-page-flags.h
@@ -44,4 +44,5 @@
 #define KPF_BALLOON 23
 #define KPF_ZERO_PAGE 24
 #define KPF_IDLE 25
+#define KPF_PGTABLE 26
 #endif
diff --git a/libc/kernel/uapi/linux/keyboard.h b/libc/kernel/uapi/linux/keyboard.h
index 3694fb6..570cca9 100644
--- a/libc/kernel/uapi/linux/keyboard.h
+++ b/libc/kernel/uapi/linux/keyboard.h
@@ -357,7 +357,28 @@
 #define K_DTILDE K(KT_DEAD, 3)
 #define K_DDIERE K(KT_DEAD, 4)
 #define K_DCEDIL K(KT_DEAD, 5)
-#define NR_DEAD 6
+#define K_DMACRON K(KT_DEAD, 6)
+#define K_DBREVE K(KT_DEAD, 7)
+#define K_DABDOT K(KT_DEAD, 8)
+#define K_DABRING K(KT_DEAD, 9)
+#define K_DDBACUTE K(KT_DEAD, 10)
+#define K_DCARON K(KT_DEAD, 11)
+#define K_DOGONEK K(KT_DEAD, 12)
+#define K_DIOTA K(KT_DEAD, 13)
+#define K_DVOICED K(KT_DEAD, 14)
+#define K_DSEMVOICED K(KT_DEAD, 15)
+#define K_DBEDOT K(KT_DEAD, 16)
+#define K_DHOOK K(KT_DEAD, 17)
+#define K_DHORN K(KT_DEAD, 18)
+#define K_DSTROKE K(KT_DEAD, 19)
+#define K_DABCOMMA K(KT_DEAD, 20)
+#define K_DABREVCOMMA K(KT_DEAD, 21)
+#define K_DDBGRAVE K(KT_DEAD, 22)
+#define K_DINVBREVE K(KT_DEAD, 23)
+#define K_DBECOMMA K(KT_DEAD, 24)
+#define K_DCURRENCY K(KT_DEAD, 25)
+#define K_DGREEK K(KT_DEAD, 26)
+#define NR_DEAD 27
 #define K_DOWN K(KT_CUR, 0)
 #define K_LEFT K(KT_CUR, 1)
 #define K_RIGHT K(KT_CUR, 2)
diff --git a/libc/kernel/uapi/linux/kfd_ioctl.h b/libc/kernel/uapi/linux/kfd_ioctl.h
index 05db3fb..55aff04 100644
--- a/libc/kernel/uapi/linux/kfd_ioctl.h
+++ b/libc/kernel/uapi/linux/kfd_ioctl.h
@@ -59,6 +59,11 @@
   __u32 queue_percentage;
   __u32 queue_priority;
 };
+struct kfd_ioctl_set_cu_mask_args {
+  __u32 queue_id;
+  __u32 num_cu_mask;
+  __u64 cu_mask_ptr;
+};
 #define KFD_IOC_CACHE_POLICY_COHERENT 0
 #define KFD_IOC_CACHE_POLICY_NONCOHERENT 1
 struct kfd_ioctl_set_memory_policy_args {
@@ -132,6 +137,10 @@
 #define KFD_IOC_WAIT_RESULT_TIMEOUT 1
 #define KFD_IOC_WAIT_RESULT_FAIL 2
 #define KFD_SIGNAL_EVENT_LIMIT 4096
+#define KFD_HW_EXCEPTION_WHOLE_GPU_RESET 0
+#define KFD_HW_EXCEPTION_PER_ENGINE_RESET 1
+#define KFD_HW_EXCEPTION_GPU_HANG 0
+#define KFD_HW_EXCEPTION_ECC 1
 struct kfd_ioctl_create_event_args {
   __u64 event_page_offset;
   __u32 event_trigger_data;
@@ -157,7 +166,7 @@
   __u32 NotPresent;
   __u32 ReadOnly;
   __u32 NoExecute;
-  __u32 pad;
+  __u32 imprecise;
 };
 struct kfd_hsa_memory_exception_data {
   struct kfd_memory_exception_failure failure;
@@ -165,9 +174,16 @@
   __u32 gpu_id;
   __u32 pad;
 };
+struct kfd_hsa_hw_exception_data {
+  uint32_t reset_type;
+  uint32_t reset_cause;
+  uint32_t memory_lost;
+  uint32_t gpu_id;
+};
 struct kfd_event_data {
   union {
     struct kfd_hsa_memory_exception_data memory_exception_data;
+    struct kfd_hsa_hw_exception_data hw_exception_data;
   };
   __u64 kfd_event_data_ext;
   __u32 event_id;
@@ -268,6 +284,7 @@
 #define AMDKFD_IOC_FREE_MEMORY_OF_GPU AMDKFD_IOW(0x17, struct kfd_ioctl_free_memory_of_gpu_args)
 #define AMDKFD_IOC_MAP_MEMORY_TO_GPU AMDKFD_IOWR(0x18, struct kfd_ioctl_map_memory_to_gpu_args)
 #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_COMMAND_START 0x01
-#define AMDKFD_COMMAND_END 0x1A
+#define AMDKFD_COMMAND_END 0x1B
 #endif
diff --git a/libc/kernel/uapi/linux/kvm.h b/libc/kernel/uapi/linux/kvm.h
index 6c8ae61..14e882b 100644
--- a/libc/kernel/uapi/linux/kvm.h
+++ b/libc/kernel/uapi/linux/kvm.h
@@ -739,6 +739,11 @@
 #define KVM_CAP_S390_BPB 152
 #define KVM_CAP_GET_MSR_FEATURES 153
 #define KVM_CAP_HYPERV_EVENTFD 154
+#define KVM_CAP_HYPERV_TLBFLUSH 155
+#define KVM_CAP_S390_HPAGE_1M 156
+#define KVM_CAP_NESTED_STATE 157
+#define KVM_CAP_ARM_INJECT_SERROR_ESR 158
+#define KVM_CAP_MSR_PLATFORM_INFO 159
 #ifdef KVM_CAP_IRQ_ROUTING
 struct kvm_irq_routing_irqchip {
   __u32 irqchip;
@@ -1048,6 +1053,8 @@
 #define KVM_MEMORY_ENCRYPT_REG_REGION _IOR(KVMIO, 0xbb, struct kvm_enc_region)
 #define KVM_MEMORY_ENCRYPT_UNREG_REGION _IOR(KVMIO, 0xbc, struct kvm_enc_region)
 #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)
 enum sev_cmd_id {
   KVM_SEV_INIT = 0,
   KVM_SEV_ES_INIT,
diff --git a/libc/kernel/uapi/linux/kvm_para.h b/libc/kernel/uapi/linux/kvm_para.h
index 5035c23..b08a605 100644
--- a/libc/kernel/uapi/linux/kvm_para.h
+++ b/libc/kernel/uapi/linux/kvm_para.h
@@ -20,6 +20,7 @@
 #define _UAPI__LINUX_KVM_PARA_H
 #define KVM_ENOSYS 1000
 #define KVM_EFAULT EFAULT
+#define KVM_EINVAL EINVAL
 #define KVM_E2BIG E2BIG
 #define KVM_EPERM EPERM
 #define KVM_EOPNOTSUPP 95
@@ -32,5 +33,6 @@
 #define KVM_HC_MIPS_EXIT_VM 7
 #define KVM_HC_MIPS_CONSOLE_OUTPUT 8
 #define KVM_HC_CLOCK_PAIRING 9
+#define KVM_HC_SEND_IPI 10
 #include <asm/kvm_para.h>
 #endif
diff --git a/libc/kernel/uapi/linux/lirc.h b/libc/kernel/uapi/linux/lirc.h
index 3dfb6d0..4a8d0ff 100644
--- a/libc/kernel/uapi/linux/lirc.h
+++ b/libc/kernel/uapi/linux/lirc.h
@@ -92,6 +92,7 @@
 #define LIRC_SET_MEASURE_CARRIER_MODE _IOW('i', 0x0000001d, __u32)
 #define LIRC_SET_REC_CARRIER_RANGE _IOW('i', 0x0000001f, __u32)
 #define LIRC_SET_WIDEBAND_RECEIVER _IOW('i', 0x00000023, __u32)
+#define LIRC_GET_REC_TIMEOUT _IOR('i', 0x00000024, __u32)
 struct lirc_scancode {
   __u64 timestamp;
   __u16 flags;
diff --git a/libc/kernel/uapi/linux/media-bus-format.h b/libc/kernel/uapi/linux/media-bus-format.h
index dd7fcc7..7c701b1 100644
--- a/libc/kernel/uapi/linux/media-bus-format.h
+++ b/libc/kernel/uapi/linux/media-bus-format.h
@@ -56,6 +56,7 @@
 #define MEDIA_BUS_FMT_YUYV8_2X8 0x2008
 #define MEDIA_BUS_FMT_YVYU8_2X8 0x2009
 #define MEDIA_BUS_FMT_Y10_1X10 0x200a
+#define MEDIA_BUS_FMT_Y10_2X8_PADHI_LE 0x202c
 #define MEDIA_BUS_FMT_UYVY10_2X10 0x2018
 #define MEDIA_BUS_FMT_VYUY10_2X10 0x2019
 #define MEDIA_BUS_FMT_YUYV10_2X10 0x200b
diff --git a/libc/kernel/uapi/linux/media.h b/libc/kernel/uapi/linux/media.h
index e6236f9..eefc07a 100644
--- a/libc/kernel/uapi/linux/media.h
+++ b/libc/kernel/uapi/linux/media.h
@@ -21,7 +21,6 @@
 #include <stdint.h>
 #include <linux/ioctl.h>
 #include <linux/types.h>
-#include <linux/version.h>
 struct media_device_info {
   char driver[16];
   char model[32];
@@ -48,8 +47,6 @@
 #define MEDIA_ENT_F_CAM_SENSOR (MEDIA_ENT_F_OLD_SUBDEV_BASE + 1)
 #define MEDIA_ENT_F_FLASH (MEDIA_ENT_F_OLD_SUBDEV_BASE + 2)
 #define MEDIA_ENT_F_LENS (MEDIA_ENT_F_OLD_SUBDEV_BASE + 3)
-#define MEDIA_ENT_F_ATV_DECODER (MEDIA_ENT_F_OLD_SUBDEV_BASE + 4)
-#define MEDIA_ENT_F_DTV_DECODER (MEDIA_ENT_F_BASE + 0x6001)
 #define MEDIA_ENT_F_TUNER (MEDIA_ENT_F_OLD_SUBDEV_BASE + 5)
 #define MEDIA_ENT_F_IF_VID_DECODER (MEDIA_ENT_F_BASE + 0x02001)
 #define MEDIA_ENT_F_IF_AUD_DECODER (MEDIA_ENT_F_BASE + 0x02002)
@@ -62,8 +59,13 @@
 #define MEDIA_ENT_F_PROC_VIDEO_LUT (MEDIA_ENT_F_BASE + 0x4004)
 #define MEDIA_ENT_F_PROC_VIDEO_SCALER (MEDIA_ENT_F_BASE + 0x4005)
 #define MEDIA_ENT_F_PROC_VIDEO_STATISTICS (MEDIA_ENT_F_BASE + 0x4006)
+#define MEDIA_ENT_F_PROC_VIDEO_ENCODER (MEDIA_ENT_F_BASE + 0x4007)
+#define MEDIA_ENT_F_PROC_VIDEO_DECODER (MEDIA_ENT_F_BASE + 0x4008)
 #define MEDIA_ENT_F_VID_MUX (MEDIA_ENT_F_BASE + 0x5001)
 #define MEDIA_ENT_F_VID_IF_BRIDGE (MEDIA_ENT_F_BASE + 0x5002)
+#define MEDIA_ENT_F_ATV_DECODER (MEDIA_ENT_F_OLD_SUBDEV_BASE + 4)
+#define MEDIA_ENT_F_DV_DECODER (MEDIA_ENT_F_BASE + 0x6001)
+#define MEDIA_ENT_F_DV_ENCODER (MEDIA_ENT_F_BASE + 0x6002)
 #define MEDIA_ENT_FL_DEFAULT (1 << 0)
 #define MEDIA_ENT_FL_CONNECTOR (1 << 1)
 #define MEDIA_ENT_ID_FLAG_NEXT (1 << 31)
@@ -139,11 +141,13 @@
 #define MEDIA_INTF_T_V4L_SUBDEV (MEDIA_INTF_T_V4L_BASE + 3)
 #define MEDIA_INTF_T_V4L_SWRADIO (MEDIA_INTF_T_V4L_BASE + 4)
 #define MEDIA_INTF_T_V4L_TOUCH (MEDIA_INTF_T_V4L_BASE + 5)
+#define MEDIA_V2_ENTITY_HAS_FLAGS(media_version) ((media_version) >= ((4 << 16) | (19 << 8) | 0))
 struct media_v2_entity {
   __u32 id;
   char name[64];
   __u32 function;
-  __u32 reserved[6];
+  __u32 flags;
+  __u32 reserved[5];
 } __attribute__((packed));
 struct media_v2_intf_devnode {
   __u32 major;
@@ -159,11 +163,13 @@
     __u32 raw[16];
   };
 } __attribute__((packed));
+#define MEDIA_V2_PAD_HAS_INDEX(media_version) ((media_version) >= ((4 << 16) | (19 << 8) | 0))
 struct media_v2_pad {
   __u32 id;
   __u32 entity_id;
   __u32 flags;
-  __u32 reserved[5];
+  __u32 index;
+  __u32 reserved[4];
 } __attribute__((packed));
 struct media_v2_link {
   __u32 id;
@@ -209,6 +215,7 @@
 #define MEDIA_ENT_T_V4L2_SUBDEV_LENS MEDIA_ENT_F_LENS
 #define MEDIA_ENT_T_V4L2_SUBDEV_DECODER MEDIA_ENT_F_ATV_DECODER
 #define MEDIA_ENT_T_V4L2_SUBDEV_TUNER MEDIA_ENT_F_TUNER
+#define MEDIA_ENT_F_DTV_DECODER MEDIA_ENT_F_DV_DECODER
 #define MEDIA_INTF_T_ALSA_BASE 0x00000300
 #define MEDIA_INTF_T_ALSA_PCM_CAPTURE (MEDIA_INTF_T_ALSA_BASE)
 #define MEDIA_INTF_T_ALSA_PCM_PLAYBACK (MEDIA_INTF_T_ALSA_BASE + 1)
@@ -218,5 +225,5 @@
 #define MEDIA_INTF_T_ALSA_HWDEP (MEDIA_INTF_T_ALSA_BASE + 5)
 #define MEDIA_INTF_T_ALSA_SEQUENCER (MEDIA_INTF_T_ALSA_BASE + 6)
 #define MEDIA_INTF_T_ALSA_TIMER (MEDIA_INTF_T_ALSA_BASE + 7)
-#define MEDIA_API_VERSION KERNEL_VERSION(0, 1, 0)
+#define MEDIA_API_VERSION ((0 << 16) | (1 << 8) | 0)
 #endif
diff --git a/libc/kernel/uapi/linux/memfd.h b/libc/kernel/uapi/linux/memfd.h
index e3e5cd5..914c076 100644
--- a/libc/kernel/uapi/linux/memfd.h
+++ b/libc/kernel/uapi/linux/memfd.h
@@ -30,7 +30,9 @@
 #define MFD_HUGE_2MB HUGETLB_FLAG_ENCODE_2MB
 #define MFD_HUGE_8MB HUGETLB_FLAG_ENCODE_8MB
 #define MFD_HUGE_16MB HUGETLB_FLAG_ENCODE_16MB
+#define MFD_HUGE_32MB HUGETLB_FLAG_ENCODE_32MB
 #define MFD_HUGE_256MB HUGETLB_FLAG_ENCODE_256MB
+#define MFD_HUGE_512MB HUGETLB_FLAG_ENCODE_512MB
 #define MFD_HUGE_1GB HUGETLB_FLAG_ENCODE_1GB
 #define MFD_HUGE_2GB HUGETLB_FLAG_ENCODE_2GB
 #define MFD_HUGE_16GB HUGETLB_FLAG_ENCODE_16GB
diff --git a/libc/kernel/uapi/linux/mii.h b/libc/kernel/uapi/linux/mii.h
index aa4824d..5c87990 100644
--- a/libc/kernel/uapi/linux/mii.h
+++ b/libc/kernel/uapi/linux/mii.h
@@ -122,6 +122,7 @@
 #define ADVERTISE_1000HALF 0x0100
 #define CTL1000_AS_MASTER 0x0800
 #define CTL1000_ENABLE_MASTER 0x1000
+#define LPA_1000MSFAIL 0x8000
 #define LPA_1000LOCALRXOK 0x2000
 #define LPA_1000REMRXOK 0x1000
 #define LPA_1000FULL 0x0800
diff --git a/libc/kernel/uapi/linux/mman.h b/libc/kernel/uapi/linux/mman.h
index b0ce77e..0c9c397 100644
--- a/libc/kernel/uapi/linux/mman.h
+++ b/libc/kernel/uapi/linux/mman.h
@@ -33,7 +33,9 @@
 #define MAP_HUGE_2MB HUGETLB_FLAG_ENCODE_2MB
 #define MAP_HUGE_8MB HUGETLB_FLAG_ENCODE_8MB
 #define MAP_HUGE_16MB HUGETLB_FLAG_ENCODE_16MB
+#define MAP_HUGE_32MB HUGETLB_FLAG_ENCODE_32MB
 #define MAP_HUGE_256MB HUGETLB_FLAG_ENCODE_256MB
+#define MAP_HUGE_512MB HUGETLB_FLAG_ENCODE_512MB
 #define MAP_HUGE_1GB HUGETLB_FLAG_ENCODE_1GB
 #define MAP_HUGE_2GB HUGETLB_FLAG_ENCODE_2GB
 #define MAP_HUGE_16GB HUGETLB_FLAG_ENCODE_16GB
diff --git a/libc/kernel/uapi/linux/mroute.h b/libc/kernel/uapi/linux/mroute.h
index d962f8b..f0cb21b 100644
--- a/libc/kernel/uapi/linux/mroute.h
+++ b/libc/kernel/uapi/linux/mroute.h
@@ -103,6 +103,7 @@
   IPMRA_TABLE_MROUTE_DO_ASSERT,
   IPMRA_TABLE_MROUTE_DO_PIM,
   IPMRA_TABLE_VIFS,
+  IPMRA_TABLE_MROUTE_DO_WRVIFWHOLE,
   __IPMRA_TABLE_MAX
 };
 #define IPMRA_TABLE_MAX (__IPMRA_TABLE_MAX - 1)
@@ -141,4 +142,5 @@
 #define IGMPMSG_NOCACHE 1
 #define IGMPMSG_WRONGVIF 2
 #define IGMPMSG_WHOLEPKT 3
+#define IGMPMSG_WRVIFWHOLE 4
 #endif
diff --git a/libc/kernel/uapi/linux/nbd.h b/libc/kernel/uapi/linux/nbd.h
index 749c38a..3b74393 100644
--- a/libc/kernel/uapi/linux/nbd.h
+++ b/libc/kernel/uapi/linux/nbd.h
@@ -45,6 +45,7 @@
 #define NBD_FLAG_CAN_MULTI_CONN (1 << 8)
 #define NBD_CMD_FLAG_FUA (1 << 16)
 #define NBD_CFLAG_DESTROY_ON_DISCONNECT (1 << 0)
+#define NBD_CFLAG_DISCONNECT_ON_CLOSE (1 << 1)
 #define NBD_REQUEST_MAGIC 0x25609513
 #define NBD_REPLY_MAGIC 0x67446698
 struct nbd_request {
diff --git a/libc/kernel/uapi/linux/ncp.h b/libc/kernel/uapi/linux/ncp.h
deleted file mode 100644
index c3f318b..0000000
--- a/libc/kernel/uapi/linux/ncp.h
+++ /dev/null
@@ -1,178 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- ***   This header was automatically generated from a Linux kernel header
- ***   of the same name, to make information necessary for userspace to
- ***   call into the kernel available to libc.  It contains only constants,
- ***   structures, and macros generated from the original header, and thus,
- ***   contains no copyrightable information.
- ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
- ****************************************************************************
- ****************************************************************************/
-#ifndef _LINUX_NCP_H
-#define _LINUX_NCP_H
-#include <linux/types.h>
-#define NCP_PTYPE (0x11)
-#define NCP_PORT (0x0451)
-#define NCP_ALLOC_SLOT_REQUEST (0x1111)
-#define NCP_REQUEST (0x2222)
-#define NCP_DEALLOC_SLOT_REQUEST (0x5555)
-struct ncp_request_header {
-  __u16 type;
-  __u8 sequence;
-  __u8 conn_low;
-  __u8 task;
-  __u8 conn_high;
-  __u8 function;
-  __u8 data[0];
-} __attribute__((packed));
-#define NCP_REPLY (0x3333)
-#define NCP_WATCHDOG (0x3E3E)
-#define NCP_POSITIVE_ACK (0x9999)
-struct ncp_reply_header {
-  __u16 type;
-  __u8 sequence;
-  __u8 conn_low;
-  __u8 task;
-  __u8 conn_high;
-  __u8 completion_code;
-  __u8 connection_state;
-  __u8 data[0];
-} __attribute__((packed));
-#define NCP_VOLNAME_LEN (16)
-#define NCP_NUMBER_OF_VOLUMES (256)
-struct ncp_volume_info {
-  __u32 total_blocks;
-  __u32 free_blocks;
-  __u32 purgeable_blocks;
-  __u32 not_yet_purgeable_blocks;
-  __u32 total_dir_entries;
-  __u32 available_dir_entries;
-  __u8 sectors_per_block;
-  char volume_name[NCP_VOLNAME_LEN + 1];
-};
-#define AR_READ (cpu_to_le16(1))
-#define AR_WRITE (cpu_to_le16(2))
-#define AR_EXCLUSIVE (cpu_to_le16(0x20))
-#define NCP_FILE_ID_LEN 6
-#define NW_NS_DOS 0
-#define NW_NS_MAC 1
-#define NW_NS_NFS 2
-#define NW_NS_FTAM 3
-#define NW_NS_OS2 4
-#define RIM_NAME (cpu_to_le32(1))
-#define RIM_SPACE_ALLOCATED (cpu_to_le32(2))
-#define RIM_ATTRIBUTES (cpu_to_le32(4))
-#define RIM_DATA_SIZE (cpu_to_le32(8))
-#define RIM_TOTAL_SIZE (cpu_to_le32(0x10))
-#define RIM_EXT_ATTR_INFO (cpu_to_le32(0x20))
-#define RIM_ARCHIVE (cpu_to_le32(0x40))
-#define RIM_MODIFY (cpu_to_le32(0x80))
-#define RIM_CREATION (cpu_to_le32(0x100))
-#define RIM_OWNING_NAMESPACE (cpu_to_le32(0x200))
-#define RIM_DIRECTORY (cpu_to_le32(0x400))
-#define RIM_RIGHTS (cpu_to_le32(0x800))
-#define RIM_ALL (cpu_to_le32(0xFFF))
-#define RIM_COMPRESSED_INFO (cpu_to_le32(0x80000000))
-#define NSIBM_NFS_NAME 0x0001
-#define NSIBM_NFS_MODE 0x0002
-#define NSIBM_NFS_GID 0x0004
-#define NSIBM_NFS_NLINKS 0x0008
-#define NSIBM_NFS_RDEV 0x0010
-#define NSIBM_NFS_LINK 0x0020
-#define NSIBM_NFS_CREATED 0x0040
-#define NSIBM_NFS_UID 0x0080
-#define NSIBM_NFS_ACSFLAG 0x0100
-#define NSIBM_NFS_MYFLAG 0x0200
-#define OC_MODE_OPEN 0x01
-#define OC_MODE_TRUNCATE 0x02
-#define OC_MODE_REPLACE 0x02
-#define OC_MODE_CREATE 0x08
-#define OC_ACTION_NONE 0x00
-#define OC_ACTION_OPEN 0x01
-#define OC_ACTION_CREATE 0x02
-#define OC_ACTION_TRUNCATE 0x04
-#define OC_ACTION_REPLACE 0x04
-#ifndef AR_READ_ONLY
-#define AR_READ_ONLY 0x0001
-#define AR_WRITE_ONLY 0x0002
-#define AR_DENY_READ 0x0004
-#define AR_DENY_WRITE 0x0008
-#define AR_COMPATIBILITY 0x0010
-#define AR_WRITE_THROUGH 0x0040
-#define AR_OPEN_COMPRESSED 0x0100
-#endif
-struct nw_nfs_info {
-  __u32 mode;
-  __u32 rdev;
-};
-struct nw_info_struct {
-  __u32 spaceAlloc;
-  __le32 attributes;
-  __u16 flags;
-  __le32 dataStreamSize;
-  __le32 totalStreamSize;
-  __u16 numberOfStreams;
-  __le16 creationTime;
-  __le16 creationDate;
-  __u32 creatorID;
-  __le16 modifyTime;
-  __le16 modifyDate;
-  __u32 modifierID;
-  __le16 lastAccessDate;
-  __u16 archiveTime;
-  __u16 archiveDate;
-  __u32 archiverID;
-  __u16 inheritedRightsMask;
-  __le32 dirEntNum;
-  __le32 DosDirNum;
-  __u32 volNumber;
-  __u32 EADataSize;
-  __u32 EAKeyCount;
-  __u32 EAKeySize;
-  __u32 NSCreator;
-  __u8 nameLen;
-  __u8 entryName[256];
-} __attribute__((packed));
-#define DM_ATTRIBUTES (cpu_to_le32(0x02))
-#define DM_CREATE_DATE (cpu_to_le32(0x04))
-#define DM_CREATE_TIME (cpu_to_le32(0x08))
-#define DM_CREATOR_ID (cpu_to_le32(0x10))
-#define DM_ARCHIVE_DATE (cpu_to_le32(0x20))
-#define DM_ARCHIVE_TIME (cpu_to_le32(0x40))
-#define DM_ARCHIVER_ID (cpu_to_le32(0x80))
-#define DM_MODIFY_DATE (cpu_to_le32(0x0100))
-#define DM_MODIFY_TIME (cpu_to_le32(0x0200))
-#define DM_MODIFIER_ID (cpu_to_le32(0x0400))
-#define DM_LAST_ACCESS_DATE (cpu_to_le32(0x0800))
-#define DM_INHERITED_RIGHTS_MASK (cpu_to_le32(0x1000))
-#define DM_MAXIMUM_SPACE (cpu_to_le32(0x2000))
-struct nw_modify_dos_info {
-  __le32 attributes;
-  __le16 creationDate;
-  __le16 creationTime;
-  __u32 creatorID;
-  __le16 modifyDate;
-  __le16 modifyTime;
-  __u32 modifierID;
-  __u16 archiveDate;
-  __u16 archiveTime;
-  __u32 archiverID;
-  __le16 lastAccessDate;
-  __u16 inheritanceGrantMask;
-  __u16 inheritanceRevokeMask;
-  __u32 maximumSpace;
-} __attribute__((packed));
-struct nw_search_sequence {
-  __u8 volNumber;
-  __u32 dirBase;
-  __u32 sequence;
-} __attribute__((packed));
-#endif
diff --git a/libc/kernel/uapi/linux/ncp_fs.h b/libc/kernel/uapi/linux/ncp_fs.h
deleted file mode 100644
index ddb9742..0000000
--- a/libc/kernel/uapi/linux/ncp_fs.h
+++ /dev/null
@@ -1,116 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- ***   This header was automatically generated from a Linux kernel header
- ***   of the same name, to make information necessary for userspace to
- ***   call into the kernel available to libc.  It contains only constants,
- ***   structures, and macros generated from the original header, and thus,
- ***   contains no copyrightable information.
- ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
- ****************************************************************************
- ****************************************************************************/
-#ifndef _LINUX_NCP_FS_H
-#define _LINUX_NCP_FS_H
-#include <linux/fs.h>
-#include <linux/in.h>
-#include <linux/types.h>
-#include <linux/magic.h>
-#include <linux/ipx.h>
-#include <linux/ncp_no.h>
-struct ncp_ioctl_request {
-  unsigned int function;
-  unsigned int size;
-  char __user * data;
-};
-struct ncp_fs_info {
-  int version;
-  struct sockaddr_ipx addr;
-  __kernel_uid_t mounted_uid;
-  int connection;
-  int buffer_size;
-  int volume_number;
-  __le32 directory_id;
-};
-struct ncp_fs_info_v2 {
-  int version;
-  unsigned long mounted_uid;
-  unsigned int connection;
-  unsigned int buffer_size;
-  unsigned int volume_number;
-  __le32 directory_id;
-  __u32 dummy1;
-  __u32 dummy2;
-  __u32 dummy3;
-};
-struct ncp_sign_init {
-  char sign_root[8];
-  char sign_last[16];
-};
-struct ncp_lock_ioctl {
-#define NCP_LOCK_LOG 0
-#define NCP_LOCK_SH 1
-#define NCP_LOCK_EX 2
-#define NCP_LOCK_CLEAR 256
-  int cmd;
-  int origin;
-  unsigned int offset;
-  unsigned int length;
-#define NCP_LOCK_DEFAULT_TIMEOUT 18
-#define NCP_LOCK_MAX_TIMEOUT 180
-  int timeout;
-};
-struct ncp_setroot_ioctl {
-  int volNumber;
-  int namespace;
-  __le32 dirEntNum;
-};
-struct ncp_objectname_ioctl {
-#define NCP_AUTH_NONE 0x00
-#define NCP_AUTH_BIND 0x31
-#define NCP_AUTH_NDS 0x32
-  int auth_type;
-  size_t object_name_len;
-  void __user * object_name;
-};
-struct ncp_privatedata_ioctl {
-  size_t len;
-  void __user * data;
-};
-#define NCP_IOCSNAME_LEN 20
-struct ncp_nls_ioctl {
-  unsigned char codepage[NCP_IOCSNAME_LEN + 1];
-  unsigned char iocharset[NCP_IOCSNAME_LEN + 1];
-};
-#define NCP_IOC_NCPREQUEST _IOR('n', 1, struct ncp_ioctl_request)
-#define NCP_IOC_GETMOUNTUID _IOW('n', 2, __kernel_old_uid_t)
-#define NCP_IOC_GETMOUNTUID2 _IOW('n', 2, unsigned long)
-#define NCP_IOC_CONN_LOGGED_IN _IO('n', 3)
-#define NCP_GET_FS_INFO_VERSION (1)
-#define NCP_IOC_GET_FS_INFO _IOWR('n', 4, struct ncp_fs_info)
-#define NCP_GET_FS_INFO_VERSION_V2 (2)
-#define NCP_IOC_GET_FS_INFO_V2 _IOWR('n', 4, struct ncp_fs_info_v2)
-#define NCP_IOC_SIGN_INIT _IOR('n', 5, struct ncp_sign_init)
-#define NCP_IOC_SIGN_WANTED _IOR('n', 6, int)
-#define NCP_IOC_SET_SIGN_WANTED _IOW('n', 6, int)
-#define NCP_IOC_LOCKUNLOCK _IOR('n', 7, struct ncp_lock_ioctl)
-#define NCP_IOC_GETROOT _IOW('n', 8, struct ncp_setroot_ioctl)
-#define NCP_IOC_SETROOT _IOR('n', 8, struct ncp_setroot_ioctl)
-#define NCP_IOC_GETOBJECTNAME _IOWR('n', 9, struct ncp_objectname_ioctl)
-#define NCP_IOC_SETOBJECTNAME _IOR('n', 9, struct ncp_objectname_ioctl)
-#define NCP_IOC_GETPRIVATEDATA _IOWR('n', 10, struct ncp_privatedata_ioctl)
-#define NCP_IOC_SETPRIVATEDATA _IOR('n', 10, struct ncp_privatedata_ioctl)
-#define NCP_IOC_GETCHARSETS _IOWR('n', 11, struct ncp_nls_ioctl)
-#define NCP_IOC_SETCHARSETS _IOR('n', 11, struct ncp_nls_ioctl)
-#define NCP_IOC_GETDENTRYTTL _IOW('n', 12, __u32)
-#define NCP_IOC_SETDENTRYTTL _IOR('n', 12, __u32)
-#define NCP_PACKET_SIZE 4070
-#define NCP_MAXPATHLEN 255
-#define NCP_MAXNAMELEN 14
-#endif
diff --git a/libc/kernel/uapi/linux/ncp_mount.h b/libc/kernel/uapi/linux/ncp_mount.h
deleted file mode 100644
index e29640d..0000000
--- a/libc/kernel/uapi/linux/ncp_mount.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/****************************************************************************
- ****************************************************************************
- ***
- ***   This header was automatically generated from a Linux kernel header
- ***   of the same name, to make information necessary for userspace to
- ***   call into the kernel available to libc.  It contains only constants,
- ***   structures, and macros generated from the original header, and thus,
- ***   contains no copyrightable information.
- ***
- ***   To edit the content of this header, modify the corresponding
- ***   source file (e.g. under external/kernel-headers/original/) then
- ***   run bionic/libc/kernel/tools/update_all.py
- ***
- ***   Any manual change here will be lost the next time this script will
- ***   be run. You've been warned!
- ***
- ****************************************************************************
- ****************************************************************************/
-#ifndef _LINUX_NCP_MOUNT_H
-#define _LINUX_NCP_MOUNT_H
-#include <linux/types.h>
-#include <linux/ncp.h>
-#define NCP_MOUNT_VERSION 3
-#define NCP_MOUNT_SOFT 0x0001
-#define NCP_MOUNT_INTR 0x0002
-#define NCP_MOUNT_STRONG 0x0004
-#define NCP_MOUNT_NO_OS2 0x0008
-#define NCP_MOUNT_NO_NFS 0x0010
-#define NCP_MOUNT_EXTRAS 0x0020
-#define NCP_MOUNT_SYMLINKS 0x0040
-#define NCP_MOUNT_NFS_EXTRAS 0x0080
-struct ncp_mount_data {
-  int version;
-  unsigned int ncp_fd;
-  __kernel_uid_t mounted_uid;
-  __kernel_pid_t wdog_pid;
-  unsigned char mounted_vol[NCP_VOLNAME_LEN + 1];
-  unsigned int time_out;
-  unsigned int retry_count;
-  unsigned int flags;
-  __kernel_uid_t uid;
-  __kernel_gid_t gid;
-  __kernel_mode_t file_mode;
-  __kernel_mode_t dir_mode;
-};
-#define NCP_MOUNT_VERSION_V4 (4)
-struct ncp_mount_data_v4 {
-  int version;
-  unsigned long flags;
-  unsigned long mounted_uid;
-  long wdog_pid;
-  unsigned int ncp_fd;
-  unsigned int time_out;
-  unsigned int retry_count;
-  unsigned long uid;
-  unsigned long gid;
-  unsigned long file_mode;
-  unsigned long dir_mode;
-};
-#define NCP_MOUNT_VERSION_V5 (5)
-#endif
diff --git a/libc/kernel/uapi/linux/net_tstamp.h b/libc/kernel/uapi/linux/net_tstamp.h
index 49d4c2c..2f022ea 100644
--- a/libc/kernel/uapi/linux/net_tstamp.h
+++ b/libc/kernel/uapi/linux/net_tstamp.h
@@ -73,4 +73,14 @@
   __u32 pkt_length;
   __u32 reserved[2];
 };
+enum txtime_flags {
+  SOF_TXTIME_DEADLINE_MODE = (1 << 0),
+  SOF_TXTIME_REPORT_ERRORS = (1 << 1),
+  SOF_TXTIME_FLAGS_LAST = SOF_TXTIME_REPORT_ERRORS,
+  SOF_TXTIME_FLAGS_MASK = (SOF_TXTIME_FLAGS_LAST - 1) | SOF_TXTIME_FLAGS_LAST
+};
+struct sock_txtime {
+  clockid_t clockid;
+  __u32 flags;
+};
 #endif
diff --git a/libc/kernel/uapi/linux/netconf.h b/libc/kernel/uapi/linux/netconf.h
index 4f86757..27d3854 100644
--- a/libc/kernel/uapi/linux/netconf.h
+++ b/libc/kernel/uapi/linux/netconf.h
@@ -32,6 +32,7 @@
   NETCONFA_PROXY_NEIGH,
   NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN,
   NETCONFA_INPUT,
+  NETCONFA_BC_FORWARDING,
   __NETCONFA_MAX
 };
 #define NETCONFA_MAX (__NETCONFA_MAX - 1)
diff --git a/libc/kernel/uapi/linux/netfilter/nf_conntrack_common.h b/libc/kernel/uapi/linux/netfilter/nf_conntrack_common.h
index 2259e09..43d60ca 100644
--- a/libc/kernel/uapi/linux/netfilter/nf_conntrack_common.h
+++ b/libc/kernel/uapi/linux/netfilter/nf_conntrack_common.h
@@ -65,7 +65,7 @@
   IPS_OFFLOAD_BIT = 14,
   IPS_OFFLOAD = (1 << IPS_OFFLOAD_BIT),
   IPS_UNCHANGEABLE_MASK = (IPS_NAT_DONE_MASK | IPS_NAT_MASK | IPS_EXPECTED | IPS_CONFIRMED | IPS_DYING | IPS_SEQ_ADJUST | IPS_TEMPLATE | IPS_OFFLOAD),
-  __IPS_MAX_BIT = 14,
+  __IPS_MAX_BIT = 15,
 };
 enum ip_conntrack_events {
   IPCT_NEW,
diff --git a/libc/kernel/uapi/linux/netfilter/nf_nat.h b/libc/kernel/uapi/linux/netfilter/nf_nat.h
index 80a55e6..f01669b 100644
--- a/libc/kernel/uapi/linux/netfilter/nf_nat.h
+++ b/libc/kernel/uapi/linux/netfilter/nf_nat.h
@@ -25,8 +25,9 @@
 #define NF_NAT_RANGE_PROTO_RANDOM (1 << 2)
 #define NF_NAT_RANGE_PERSISTENT (1 << 3)
 #define NF_NAT_RANGE_PROTO_RANDOM_FULLY (1 << 4)
+#define NF_NAT_RANGE_PROTO_OFFSET (1 << 5)
 #define NF_NAT_RANGE_PROTO_RANDOM_ALL (NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PROTO_RANDOM_FULLY)
-#define NF_NAT_RANGE_MASK (NF_NAT_RANGE_MAP_IPS | NF_NAT_RANGE_PROTO_SPECIFIED | NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PERSISTENT | NF_NAT_RANGE_PROTO_RANDOM_FULLY)
+#define NF_NAT_RANGE_MASK (NF_NAT_RANGE_MAP_IPS | NF_NAT_RANGE_PROTO_SPECIFIED | NF_NAT_RANGE_PROTO_RANDOM | NF_NAT_RANGE_PERSISTENT | NF_NAT_RANGE_PROTO_RANDOM_FULLY | NF_NAT_RANGE_PROTO_OFFSET)
 struct nf_nat_ipv4_range {
   unsigned int flags;
   __be32 min_ip;
@@ -45,4 +46,12 @@
   union nf_conntrack_man_proto min_proto;
   union nf_conntrack_man_proto max_proto;
 };
+struct nf_nat_range2 {
+  unsigned int flags;
+  union nf_inet_addr min_addr;
+  union nf_inet_addr max_addr;
+  union nf_conntrack_man_proto min_proto;
+  union nf_conntrack_man_proto max_proto;
+  union nf_conntrack_man_proto base_proto;
+};
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/nf_tables.h b/libc/kernel/uapi/linux/netfilter/nf_tables.h
index 610594c..63394e0 100644
--- a/libc/kernel/uapi/linux/netfilter/nf_tables.h
+++ b/libc/kernel/uapi/linux/netfilter/nf_tables.h
@@ -24,6 +24,7 @@
 #define NFT_SET_MAXNAMELEN NFT_NAME_MAXLEN
 #define NFT_OBJ_MAXNAMELEN NFT_NAME_MAXLEN
 #define NFT_USERDATA_MAXLEN 256
+#define NFT_OSF_MAXGENRELEN 16
 enum nft_registers {
   NFT_REG_VERDICT,
   NFT_REG_1,
@@ -418,7 +419,9 @@
   NFT_RT_NEXTHOP4,
   NFT_RT_NEXTHOP6,
   NFT_RT_TCPMSS,
+  __NFT_RT_MAX
 };
+#define NFT_RT_MAX (__NFT_RT_MAX - 1)
 enum nft_hash_types {
   NFT_HASH_JENKINS,
   NFT_HASH_SYM,
@@ -432,6 +435,8 @@
   NFTA_HASH_SEED,
   NFTA_HASH_OFFSET,
   NFTA_HASH_TYPE,
+  NFTA_HASH_SET_NAME,
+  NFTA_HASH_SET_ID,
   __NFTA_HASH_MAX,
 };
 #define NFTA_HASH_MAX (__NFTA_HASH_MAX - 1)
@@ -450,6 +455,19 @@
   __NFTA_RT_MAX
 };
 #define NFTA_RT_MAX (__NFTA_RT_MAX - 1)
+enum nft_socket_attributes {
+  NFTA_SOCKET_UNSPEC,
+  NFTA_SOCKET_KEY,
+  NFTA_SOCKET_DREG,
+  __NFTA_SOCKET_MAX
+};
+#define NFTA_SOCKET_MAX (__NFTA_SOCKET_MAX - 1)
+enum nft_socket_keys {
+  NFT_SOCKET_TRANSPARENT,
+  NFT_SOCKET_MARK,
+  __NFT_SOCKET_MAX
+};
+#define NFT_SOCKET_MAX (__NFT_SOCKET_MAX - 1)
 enum nft_ct_keys {
   NFT_CT_STATE,
   NFT_CT_DIRECTION,
@@ -474,7 +492,10 @@
   NFT_CT_DST_IP,
   NFT_CT_SRC_IP6,
   NFT_CT_DST_IP6,
+  NFT_CT_TIMEOUT,
+  __NFT_CT_MAX
 };
+#define NFT_CT_MAX (__NFT_CT_MAX - 1)
 enum nft_ct_attributes {
   NFTA_CT_UNSPEC,
   NFTA_CT_DREG,
@@ -508,6 +529,16 @@
   __NFTA_LIMIT_MAX
 };
 #define NFTA_LIMIT_MAX (__NFTA_LIMIT_MAX - 1)
+enum nft_connlimit_flags {
+  NFT_CONNLIMIT_F_INV = (1 << 0),
+};
+enum nft_connlimit_attributes {
+  NFTA_CONNLIMIT_UNSPEC,
+  NFTA_CONNLIMIT_COUNT,
+  NFTA_CONNLIMIT_FLAGS,
+  __NFTA_CONNLIMIT_MAX
+};
+#define NFTA_CONNLIMIT_MAX (__NFTA_CONNLIMIT_MAX - 1)
 enum nft_counter_attributes {
   NFTA_COUNTER_UNSPEC,
   NFTA_COUNTER_BYTES,
@@ -527,6 +558,19 @@
   __NFTA_LOG_MAX
 };
 #define NFTA_LOG_MAX (__NFTA_LOG_MAX - 1)
+enum nft_log_level {
+  NFT_LOGLEVEL_EMERG,
+  NFT_LOGLEVEL_ALERT,
+  NFT_LOGLEVEL_CRIT,
+  NFT_LOGLEVEL_ERR,
+  NFT_LOGLEVEL_WARNING,
+  NFT_LOGLEVEL_NOTICE,
+  NFT_LOGLEVEL_INFO,
+  NFT_LOGLEVEL_DEBUG,
+  NFT_LOGLEVEL_AUDIT,
+  __NFT_LOGLEVEL_MAX
+};
+#define NFT_LOGLEVEL_MAX (__NFT_LOGLEVEL_MAX + 1)
 enum nft_queue_attributes {
   NFTA_QUEUE_UNSPEC,
   NFTA_QUEUE_NUM,
@@ -588,6 +632,14 @@
   __NFTA_NAT_MAX
 };
 #define NFTA_NAT_MAX (__NFTA_NAT_MAX - 1)
+enum nft_tproxy_attributes {
+  NFTA_TPROXY_UNSPEC,
+  NFTA_TPROXY_FAMILY,
+  NFTA_TPROXY_REG_ADDR,
+  NFTA_TPROXY_REG_PORT,
+  __NFTA_TPROXY_MAX
+};
+#define NFTA_TPROXY_MAX (__NFTA_TPROXY_MAX - 1)
 enum nft_masq_attributes {
   NFTA_MASQ_UNSPEC,
   NFTA_MASQ_FLAGS,
@@ -614,6 +666,8 @@
 enum nft_fwd_attributes {
   NFTA_FWD_UNSPEC,
   NFTA_FWD_SREG_DEV,
+  NFTA_FWD_SREG_ADDR,
+  NFTA_FWD_NFPROTO,
   __NFTA_FWD_MAX
 };
 #define NFTA_FWD_MAX (__NFTA_FWD_MAX - 1)
@@ -667,12 +721,23 @@
   __NFTA_CT_HELPER_MAX,
 };
 #define NFTA_CT_HELPER_MAX (__NFTA_CT_HELPER_MAX - 1)
+enum nft_ct_timeout_timeout_attributes {
+  NFTA_CT_TIMEOUT_UNSPEC,
+  NFTA_CT_TIMEOUT_L3PROTO,
+  NFTA_CT_TIMEOUT_L4PROTO,
+  NFTA_CT_TIMEOUT_DATA,
+  __NFTA_CT_TIMEOUT_MAX,
+};
+#define NFTA_CT_TIMEOUT_MAX (__NFTA_CT_TIMEOUT_MAX - 1)
 #define NFT_OBJECT_UNSPEC 0
 #define NFT_OBJECT_COUNTER 1
 #define NFT_OBJECT_QUOTA 2
 #define NFT_OBJECT_CT_HELPER 3
 #define NFT_OBJECT_LIMIT 4
-#define __NFT_OBJECT_MAX 5
+#define NFT_OBJECT_CONNLIMIT 5
+#define NFT_OBJECT_TUNNEL 6
+#define NFT_OBJECT_CT_TIMEOUT 7
+#define __NFT_OBJECT_MAX 8
 #define NFT_OBJECT_MAX (__NFT_OBJECT_MAX - 1)
 enum nft_object_attributes {
   NFTA_OBJ_UNSPEC,
@@ -705,6 +770,12 @@
   __NFTA_FLOWTABLE_HOOK_MAX
 };
 #define NFTA_FLOWTABLE_HOOK_MAX (__NFTA_FLOWTABLE_HOOK_MAX - 1)
+enum nft_osf_attributes {
+  NFTA_OSF_UNSPEC,
+  NFTA_OSF_DREG,
+  __NFTA_OSF_MAX,
+};
+#define NFTA_OSF_MAX (__NFTA_OSF_MAX - 1)
 enum nft_devices_attributes {
   NFTA_DEVICE_UNSPEC,
   NFTA_DEVICE_NAME,
@@ -747,6 +818,8 @@
   NFTA_NG_MODULUS,
   NFTA_NG_TYPE,
   NFTA_NG_OFFSET,
+  NFTA_NG_SET_NAME,
+  NFTA_NG_SET_ID,
   __NFTA_NG_MAX
 };
 #define NFTA_NG_MAX (__NFTA_NG_MAX - 1)
@@ -756,4 +829,74 @@
   __NFT_NG_MAX
 };
 #define NFT_NG_MAX (__NFT_NG_MAX - 1)
+enum nft_tunnel_key_ip_attributes {
+  NFTA_TUNNEL_KEY_IP_UNSPEC,
+  NFTA_TUNNEL_KEY_IP_SRC,
+  NFTA_TUNNEL_KEY_IP_DST,
+  __NFTA_TUNNEL_KEY_IP_MAX
+};
+#define NFTA_TUNNEL_KEY_IP_MAX (__NFTA_TUNNEL_KEY_IP_MAX - 1)
+enum nft_tunnel_ip6_attributes {
+  NFTA_TUNNEL_KEY_IP6_UNSPEC,
+  NFTA_TUNNEL_KEY_IP6_SRC,
+  NFTA_TUNNEL_KEY_IP6_DST,
+  NFTA_TUNNEL_KEY_IP6_FLOWLABEL,
+  __NFTA_TUNNEL_KEY_IP6_MAX
+};
+#define NFTA_TUNNEL_KEY_IP6_MAX (__NFTA_TUNNEL_KEY_IP6_MAX - 1)
+enum nft_tunnel_opts_attributes {
+  NFTA_TUNNEL_KEY_OPTS_UNSPEC,
+  NFTA_TUNNEL_KEY_OPTS_VXLAN,
+  NFTA_TUNNEL_KEY_OPTS_ERSPAN,
+  __NFTA_TUNNEL_KEY_OPTS_MAX
+};
+#define NFTA_TUNNEL_KEY_OPTS_MAX (__NFTA_TUNNEL_KEY_OPTS_MAX - 1)
+enum nft_tunnel_opts_vxlan_attributes {
+  NFTA_TUNNEL_KEY_VXLAN_UNSPEC,
+  NFTA_TUNNEL_KEY_VXLAN_GBP,
+  __NFTA_TUNNEL_KEY_VXLAN_MAX
+};
+#define NFTA_TUNNEL_KEY_VXLAN_MAX (__NFTA_TUNNEL_KEY_VXLAN_MAX - 1)
+enum nft_tunnel_opts_erspan_attributes {
+  NFTA_TUNNEL_KEY_ERSPAN_UNSPEC,
+  NFTA_TUNNEL_KEY_ERSPAN_VERSION,
+  NFTA_TUNNEL_KEY_ERSPAN_V1_INDEX,
+  NFTA_TUNNEL_KEY_ERSPAN_V2_HWID,
+  NFTA_TUNNEL_KEY_ERSPAN_V2_DIR,
+  __NFTA_TUNNEL_KEY_ERSPAN_MAX
+};
+#define NFTA_TUNNEL_KEY_ERSPAN_MAX (__NFTA_TUNNEL_KEY_ERSPAN_MAX - 1)
+enum nft_tunnel_flags {
+  NFT_TUNNEL_F_ZERO_CSUM_TX = (1 << 0),
+  NFT_TUNNEL_F_DONT_FRAGMENT = (1 << 1),
+  NFT_TUNNEL_F_SEQ_NUMBER = (1 << 2),
+};
+#define NFT_TUNNEL_F_MASK (NFT_TUNNEL_F_ZERO_CSUM_TX | NFT_TUNNEL_F_DONT_FRAGMENT | NFT_TUNNEL_F_SEQ_NUMBER)
+enum nft_tunnel_key_attributes {
+  NFTA_TUNNEL_KEY_UNSPEC,
+  NFTA_TUNNEL_KEY_ID,
+  NFTA_TUNNEL_KEY_IP,
+  NFTA_TUNNEL_KEY_IP6,
+  NFTA_TUNNEL_KEY_FLAGS,
+  NFTA_TUNNEL_KEY_TOS,
+  NFTA_TUNNEL_KEY_TTL,
+  NFTA_TUNNEL_KEY_SPORT,
+  NFTA_TUNNEL_KEY_DPORT,
+  NFTA_TUNNEL_KEY_OPTS,
+  __NFTA_TUNNEL_KEY_MAX
+};
+#define NFTA_TUNNEL_KEY_MAX (__NFTA_TUNNEL_KEY_MAX - 1)
+enum nft_tunnel_keys {
+  NFT_TUNNEL_PATH,
+  NFT_TUNNEL_ID,
+  __NFT_TUNNEL_MAX
+};
+#define NFT_TUNNEL_MAX (__NFT_TUNNEL_MAX - 1)
+enum nft_tunnel_attributes {
+  NFTA_TUNNEL_UNSPEC,
+  NFTA_TUNNEL_KEY,
+  NFTA_TUNNEL_DREG,
+  __NFTA_TUNNEL_MAX
+};
+#define NFTA_TUNNEL_MAX (__NFTA_TUNNEL_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/nfnetlink_conntrack.h b/libc/kernel/uapi/linux/netfilter/nfnetlink_conntrack.h
index 1347820..4981fc1 100644
--- a/libc/kernel/uapi/linux/netfilter/nfnetlink_conntrack.h
+++ b/libc/kernel/uapi/linux/netfilter/nfnetlink_conntrack.h
@@ -253,6 +253,7 @@
 enum ctattr_stats_global {
   CTA_STATS_GLOBAL_UNSPEC,
   CTA_STATS_GLOBAL_ENTRIES,
+  CTA_STATS_GLOBAL_MAX_ENTRIES,
   __CTA_STATS_GLOBAL_MAX,
 };
 #define CTA_STATS_GLOBAL_MAX (__CTA_STATS_GLOBAL_MAX - 1)
diff --git a/libc/kernel/uapi/linux/netfilter/nfnetlink_osf.h b/libc/kernel/uapi/linux/netfilter/nfnetlink_osf.h
new file mode 100644
index 0000000..3f930da
--- /dev/null
+++ b/libc/kernel/uapi/linux/netfilter/nfnetlink_osf.h
@@ -0,0 +1,97 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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 _NF_OSF_H
+#define _NF_OSF_H
+#include <linux/types.h>
+#include <linux/ip.h>
+#include <linux/tcp.h>
+#define MAXGENRELEN 32
+#define NF_OSF_GENRE (1 << 0)
+#define NF_OSF_TTL (1 << 1)
+#define NF_OSF_LOG (1 << 2)
+#define NF_OSF_INVERT (1 << 3)
+#define NF_OSF_LOGLEVEL_ALL 0
+#define NF_OSF_LOGLEVEL_FIRST 1
+#define NF_OSF_LOGLEVEL_ALL_KNOWN 2
+#define NF_OSF_TTL_TRUE 0
+#define NF_OSF_TTL_LESS 1
+#define NF_OSF_TTL_NOCHECK 2
+#define NF_OSF_FLAGMASK (NF_OSF_GENRE | NF_OSF_TTL | NF_OSF_LOG | NF_OSF_INVERT)
+struct nf_osf_wc {
+  __u32 wc;
+  __u32 val;
+};
+struct nf_osf_opt {
+  __u16 kind, length;
+  struct nf_osf_wc wc;
+};
+struct nf_osf_info {
+  char genre[MAXGENRELEN];
+  __u32 len;
+  __u32 flags;
+  __u32 loglevel;
+  __u32 ttl;
+};
+struct nf_osf_user_finger {
+  struct nf_osf_wc wss;
+  __u8 ttl, df;
+  __u16 ss, mss;
+  __u16 opt_num;
+  char genre[MAXGENRELEN];
+  char version[MAXGENRELEN];
+  char subtype[MAXGENRELEN];
+  struct nf_osf_opt opt[MAX_IPOPTLEN];
+};
+struct nf_osf_nlmsg {
+  struct nf_osf_user_finger f;
+  struct iphdr ip;
+  struct tcphdr tcp;
+};
+enum iana_options {
+  OSFOPT_EOL = 0,
+  OSFOPT_NOP,
+  OSFOPT_MSS,
+  OSFOPT_WSO,
+  OSFOPT_SACKP,
+  OSFOPT_SACK,
+  OSFOPT_ECHO,
+  OSFOPT_ECHOREPLY,
+  OSFOPT_TS,
+  OSFOPT_POCP,
+  OSFOPT_POSP,
+  OSFOPT_EMPTY = 255,
+};
+enum nf_osf_window_size_options {
+  OSF_WSS_PLAIN = 0,
+  OSF_WSS_MSS,
+  OSF_WSS_MTU,
+  OSF_WSS_MODULO,
+  OSF_WSS_MAX,
+};
+enum nf_osf_attr_type {
+  OSF_ATTR_UNSPEC,
+  OSF_ATTR_FINGER,
+  OSF_ATTR_MAX,
+};
+enum nf_osf_msg_types {
+  OSF_MSG_ADD,
+  OSF_MSG_REMOVE,
+  OSF_MSG_MAX,
+};
+#endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_osf.h b/libc/kernel/uapi/linux/netfilter/xt_osf.h
index 50156ef..892ad40 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_osf.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_osf.h
@@ -19,78 +19,24 @@
 #ifndef _XT_OSF_H
 #define _XT_OSF_H
 #include <linux/types.h>
-#include <linux/ip.h>
-#include <linux/tcp.h>
-#define MAXGENRELEN 32
-#define XT_OSF_GENRE (1 << 0)
-#define XT_OSF_TTL (1 << 1)
-#define XT_OSF_LOG (1 << 2)
-#define XT_OSF_INVERT (1 << 3)
-#define XT_OSF_LOGLEVEL_ALL 0
-#define XT_OSF_LOGLEVEL_FIRST 1
-#define XT_OSF_LOGLEVEL_ALL_KNOWN 2
-#define XT_OSF_TTL_TRUE 0
-#define XT_OSF_TTL_LESS 1
-#define XT_OSF_TTL_NOCHECK 2
-struct xt_osf_info {
-  char genre[MAXGENRELEN];
-  __u32 len;
-  __u32 flags;
-  __u32 loglevel;
-  __u32 ttl;
-};
-struct xt_osf_wc {
-  __u32 wc;
-  __u32 val;
-};
-struct xt_osf_opt {
-  __u16 kind, length;
-  struct xt_osf_wc wc;
-};
-struct xt_osf_user_finger {
-  struct xt_osf_wc wss;
-  __u8 ttl, df;
-  __u16 ss, mss;
-  __u16 opt_num;
-  char genre[MAXGENRELEN];
-  char version[MAXGENRELEN];
-  char subtype[MAXGENRELEN];
-  struct xt_osf_opt opt[MAX_IPOPTLEN];
-};
-struct xt_osf_nlmsg {
-  struct xt_osf_user_finger f;
-  struct iphdr ip;
-  struct tcphdr tcp;
-};
-enum iana_options {
-  OSFOPT_EOL = 0,
-  OSFOPT_NOP,
-  OSFOPT_MSS,
-  OSFOPT_WSO,
-  OSFOPT_SACKP,
-  OSFOPT_SACK,
-  OSFOPT_ECHO,
-  OSFOPT_ECHOREPLY,
-  OSFOPT_TS,
-  OSFOPT_POCP,
-  OSFOPT_POSP,
-  OSFOPT_EMPTY = 255,
-};
-enum xt_osf_window_size_options {
-  OSF_WSS_PLAIN = 0,
-  OSF_WSS_MSS,
-  OSF_WSS_MTU,
-  OSF_WSS_MODULO,
-  OSF_WSS_MAX,
-};
-enum xt_osf_msg_types {
-  OSF_MSG_ADD,
-  OSF_MSG_REMOVE,
-  OSF_MSG_MAX,
-};
-enum xt_osf_attr_type {
-  OSF_ATTR_UNSPEC,
-  OSF_ATTR_FINGER,
-  OSF_ATTR_MAX,
-};
+#include <linux/netfilter/nfnetlink_osf.h>
+#define XT_OSF_GENRE NF_OSF_GENRE
+#define XT_OSF_INVERT NF_OSF_INVERT
+#define XT_OSF_TTL NF_OSF_TTL
+#define XT_OSF_LOG NF_OSF_LOG
+#define XT_OSF_LOGLEVEL_ALL NF_OSF_LOGLEVEL_ALL
+#define XT_OSF_LOGLEVEL_FIRST NF_OSF_LOGLEVEL_FIRST
+#define XT_OSF_LOGLEVEL_ALL_KNOWN NF_OSF_LOGLEVEL_ALL_KNOWN
+#define XT_OSF_TTL_TRUE NF_OSF_TTL_TRUE
+#define XT_OSF_TTL_NOCHECK NF_OSF_TTL_NOCHECK
+#define XT_OSF_TTL_LESS NF_OSF_TTL_LESS
+#define xt_osf_wc nf_osf_wc
+#define xt_osf_opt nf_osf_opt
+#define xt_osf_info nf_osf_info
+#define xt_osf_user_finger nf_osf_user_finger
+#define xt_osf_finger nf_osf_finger
+#define xt_osf_nlmsg nf_osf_nlmsg
+#define xt_osf_window_size_options nf_osf_window_size_options
+#define xt_osf_attr_type nf_osf_attr_type
+#define xt_osf_msg_types nf_osf_msg_types
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_bridge.h b/libc/kernel/uapi/linux/netfilter_bridge.h
index 57de0e9..6da98f5 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge.h
@@ -30,4 +30,14 @@
 #define NF_BR_POST_ROUTING 4
 #define NF_BR_BROUTING 5
 #define NF_BR_NUMHOOKS 6
+enum nf_br_hook_priorities {
+  NF_BR_PRI_FIRST = INT_MIN,
+  NF_BR_PRI_NAT_DST_BRIDGED = - 300,
+  NF_BR_PRI_FILTER_BRIDGED = - 200,
+  NF_BR_PRI_BRNF = 0,
+  NF_BR_PRI_NAT_DST_OTHER = 100,
+  NF_BR_PRI_FILTER_OTHER = 200,
+  NF_BR_PRI_NAT_SRC = 300,
+  NF_BR_PRI_LAST = INT_MAX,
+};
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_srh.h b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_srh.h
index 70fd3e4..a9474e7 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_srh.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_srh.h
@@ -31,7 +31,10 @@
 #define IP6T_SRH_LAST_GT 0x0100
 #define IP6T_SRH_LAST_LT 0x0200
 #define IP6T_SRH_TAG 0x0400
-#define IP6T_SRH_MASK 0x07FF
+#define IP6T_SRH_PSID 0x0800
+#define IP6T_SRH_NSID 0x1000
+#define IP6T_SRH_LSID 0x2000
+#define IP6T_SRH_MASK 0x3FFF
 #define IP6T_SRH_INV_NEXTHDR 0x0001
 #define IP6T_SRH_INV_LEN_EQ 0x0002
 #define IP6T_SRH_INV_LEN_GT 0x0004
@@ -43,7 +46,10 @@
 #define IP6T_SRH_INV_LAST_GT 0x0100
 #define IP6T_SRH_INV_LAST_LT 0x0200
 #define IP6T_SRH_INV_TAG 0x0400
-#define IP6T_SRH_INV_MASK 0x07FF
+#define IP6T_SRH_INV_PSID 0x0800
+#define IP6T_SRH_INV_NSID 0x1000
+#define IP6T_SRH_INV_LSID 0x2000
+#define IP6T_SRH_INV_MASK 0x3FFF
 struct ip6t_srh {
   __u8 next_hdr;
   __u8 hdr_len;
@@ -53,4 +59,19 @@
   __u16 mt_flags;
   __u16 mt_invflags;
 };
+struct ip6t_srh1 {
+  __u8 next_hdr;
+  __u8 hdr_len;
+  __u8 segs_left;
+  __u8 last_entry;
+  __u16 tag;
+  struct in6_addr psid_addr;
+  struct in6_addr nsid_addr;
+  struct in6_addr lsid_addr;
+  struct in6_addr psid_msk;
+  struct in6_addr nsid_msk;
+  struct in6_addr lsid_msk;
+  __u16 mt_flags;
+  __u16 mt_invflags;
+};
 #endif
diff --git a/libc/kernel/uapi/linux/nl80211.h b/libc/kernel/uapi/linux/nl80211.h
index 349b471..1f2f77d 100644
--- a/libc/kernel/uapi/linux/nl80211.h
+++ b/libc/kernel/uapi/linux/nl80211.h
@@ -444,6 +444,11 @@
   NL80211_ATTR_NSS,
   NL80211_ATTR_ACK_SIGNAL,
   NL80211_ATTR_CONTROL_PORT_OVER_NL80211,
+  NL80211_ATTR_TXQ_STATS,
+  NL80211_ATTR_TXQ_LIMIT,
+  NL80211_ATTR_TXQ_MEMORY_LIMIT,
+  NL80211_ATTR_TXQ_QUANTUM,
+  NL80211_ATTR_HE_CAPABILITY,
   __NL80211_ATTR_AFTER_LAST,
   NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST,
   NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
@@ -482,6 +487,8 @@
 #define NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY 24
 #define NL80211_HT_CAPABILITY_LEN 26
 #define NL80211_VHT_CAPABILITY_LEN 12
+#define NL80211_HE_MIN_CAPABILITY_LEN 16
+#define NL80211_HE_MAX_CAPABILITY_LEN 51
 #define NL80211_MAX_NR_CIPHER_SUITES 5
 #define NL80211_MAX_NR_AKM_SUITES 2
 #define NL80211_MIN_REMAIN_ON_CHANNEL_TIME 10
@@ -526,6 +533,20 @@
   __u32 mask;
   __u32 set;
 } __attribute__((packed));
+enum nl80211_he_gi {
+  NL80211_RATE_INFO_HE_GI_0_8,
+  NL80211_RATE_INFO_HE_GI_1_6,
+  NL80211_RATE_INFO_HE_GI_3_2,
+};
+enum nl80211_he_ru_alloc {
+  NL80211_RATE_INFO_HE_RU_ALLOC_26,
+  NL80211_RATE_INFO_HE_RU_ALLOC_52,
+  NL80211_RATE_INFO_HE_RU_ALLOC_106,
+  NL80211_RATE_INFO_HE_RU_ALLOC_242,
+  NL80211_RATE_INFO_HE_RU_ALLOC_484,
+  NL80211_RATE_INFO_HE_RU_ALLOC_996,
+  NL80211_RATE_INFO_HE_RU_ALLOC_2x996,
+};
 enum nl80211_rate_info {
   __NL80211_RATE_INFO_INVALID,
   NL80211_RATE_INFO_BITRATE,
@@ -540,6 +561,11 @@
   NL80211_RATE_INFO_160_MHZ_WIDTH,
   NL80211_RATE_INFO_10_MHZ_WIDTH,
   NL80211_RATE_INFO_5_MHZ_WIDTH,
+  NL80211_RATE_INFO_HE_MCS,
+  NL80211_RATE_INFO_HE_NSS,
+  NL80211_RATE_INFO_HE_GI,
+  NL80211_RATE_INFO_HE_DCM,
+  NL80211_RATE_INFO_HE_RU_ALLOC,
   __NL80211_RATE_INFO_AFTER_LAST,
   NL80211_RATE_INFO_MAX = __NL80211_RATE_INFO_AFTER_LAST - 1
 };
@@ -589,6 +615,7 @@
   NL80211_STA_INFO_RX_DURATION,
   NL80211_STA_INFO_PAD,
   NL80211_STA_INFO_ACK_SIGNAL,
+  NL80211_STA_INFO_DATA_ACK_SIGNAL_AVG,
   __NL80211_STA_INFO_AFTER_LAST,
   NL80211_STA_INFO_MAX = __NL80211_STA_INFO_AFTER_LAST - 1
 };
@@ -599,9 +626,26 @@
   NL80211_TID_STATS_TX_MSDU_RETRIES,
   NL80211_TID_STATS_TX_MSDU_FAILED,
   NL80211_TID_STATS_PAD,
+  NL80211_TID_STATS_TXQ_STATS,
   NUM_NL80211_TID_STATS,
   NL80211_TID_STATS_MAX = NUM_NL80211_TID_STATS - 1
 };
+enum nl80211_txq_stats {
+  __NL80211_TXQ_STATS_INVALID,
+  NL80211_TXQ_STATS_BACKLOG_BYTES,
+  NL80211_TXQ_STATS_BACKLOG_PACKETS,
+  NL80211_TXQ_STATS_FLOWS,
+  NL80211_TXQ_STATS_DROPS,
+  NL80211_TXQ_STATS_ECN_MARKS,
+  NL80211_TXQ_STATS_OVERLIMIT,
+  NL80211_TXQ_STATS_OVERMEMORY,
+  NL80211_TXQ_STATS_COLLISIONS,
+  NL80211_TXQ_STATS_TX_BYTES,
+  NL80211_TXQ_STATS_TX_PACKETS,
+  NL80211_TXQ_STATS_MAX_FLOWS,
+  NUM_NL80211_TXQ_STATS,
+  NL80211_TXQ_STATS_MAX = NUM_NL80211_TXQ_STATS - 1
+};
 enum nl80211_mpath_flags {
   NL80211_MPATH_FLAG_ACTIVE = 1 << 0,
   NL80211_MPATH_FLAG_RESOLVING = 1 << 1,
@@ -621,6 +665,16 @@
   __NL80211_MPATH_INFO_AFTER_LAST,
   NL80211_MPATH_INFO_MAX = __NL80211_MPATH_INFO_AFTER_LAST - 1
 };
+enum nl80211_band_iftype_attr {
+  __NL80211_BAND_IFTYPE_ATTR_INVALID,
+  NL80211_BAND_IFTYPE_ATTR_IFTYPES,
+  NL80211_BAND_IFTYPE_ATTR_HE_CAP_MAC,
+  NL80211_BAND_IFTYPE_ATTR_HE_CAP_PHY,
+  NL80211_BAND_IFTYPE_ATTR_HE_CAP_MCS_SET,
+  NL80211_BAND_IFTYPE_ATTR_HE_CAP_PPE,
+  __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST,
+  NL80211_BAND_IFTYPE_ATTR_MAX = __NL80211_BAND_IFTYPE_ATTR_AFTER_LAST - 1
+};
 enum nl80211_band_attr {
   __NL80211_BAND_ATTR_INVALID,
   NL80211_BAND_ATTR_FREQS,
@@ -631,10 +685,20 @@
   NL80211_BAND_ATTR_HT_AMPDU_DENSITY,
   NL80211_BAND_ATTR_VHT_MCS_SET,
   NL80211_BAND_ATTR_VHT_CAPA,
+  NL80211_BAND_ATTR_IFTYPE_DATA,
   __NL80211_BAND_ATTR_AFTER_LAST,
   NL80211_BAND_ATTR_MAX = __NL80211_BAND_ATTR_AFTER_LAST - 1
 };
 #define NL80211_BAND_ATTR_HT_CAPA NL80211_BAND_ATTR_HT_CAPA
+enum nl80211_wmm_rule {
+  __NL80211_WMMR_INVALID,
+  NL80211_WMMR_CW_MIN,
+  NL80211_WMMR_CW_MAX,
+  NL80211_WMMR_AIFSN,
+  NL80211_WMMR_TXOP,
+  __NL80211_WMMR_LAST,
+  NL80211_WMMR_MAX = __NL80211_WMMR_LAST - 1
+};
 enum nl80211_frequency_attr {
   __NL80211_FREQUENCY_ATTR_INVALID,
   NL80211_FREQUENCY_ATTR_FREQ,
@@ -654,6 +718,7 @@
   NL80211_FREQUENCY_ATTR_IR_CONCURRENT,
   NL80211_FREQUENCY_ATTR_NO_20MHZ,
   NL80211_FREQUENCY_ATTR_NO_10MHZ,
+  NL80211_FREQUENCY_ATTR_WMM,
   __NL80211_FREQUENCY_ATTR_AFTER_LAST,
   NL80211_FREQUENCY_ATTR_MAX = __NL80211_FREQUENCY_ATTR_AFTER_LAST - 1
 };
@@ -1218,6 +1283,10 @@
   NL80211_EXT_FEATURE_HIGH_ACCURACY_SCAN,
   NL80211_EXT_FEATURE_DFS_OFFLOAD,
   NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211,
+  NL80211_EXT_FEATURE_DATA_ACK_SIGNAL_SUPPORT,
+  NL80211_EXT_FEATURE_TXQS,
+  NL80211_EXT_FEATURE_SCAN_RANDOM_SN,
+  NL80211_EXT_FEATURE_SCAN_MIN_PREQ_CONTENT,
   NUM_NL80211_EXT_FEATURES,
   MAX_NL80211_EXT_FEATURES = NUM_NL80211_EXT_FEATURES - 1
 };
@@ -1249,6 +1318,8 @@
   NL80211_SCAN_FLAG_LOW_SPAN = 1 << 8,
   NL80211_SCAN_FLAG_LOW_POWER = 1 << 9,
   NL80211_SCAN_FLAG_HIGH_ACCURACY = 1 << 10,
+  NL80211_SCAN_FLAG_RANDOM_SN = 1 << 11,
+  NL80211_SCAN_FLAG_MIN_PREQ_CONTENT = 1 << 12,
 };
 enum nl80211_acl_policy {
   NL80211_ACL_POLICY_ACCEPT_UNLESS_LISTED,
diff --git a/libc/kernel/uapi/linux/omap3isp.h b/libc/kernel/uapi/linux/omap3isp.h
index 66942e7..d2eceb7 100644
--- a/libc/kernel/uapi/linux/omap3isp.h
+++ b/libc/kernel/uapi/linux/omap3isp.h
@@ -26,6 +26,7 @@
 #define VIDIOC_OMAP3ISP_HIST_CFG _IOWR('V', BASE_VIDIOC_PRIVATE + 4, struct omap3isp_hist_config)
 #define VIDIOC_OMAP3ISP_AF_CFG _IOWR('V', BASE_VIDIOC_PRIVATE + 5, struct omap3isp_h3a_af_config)
 #define VIDIOC_OMAP3ISP_STAT_REQ _IOWR('V', BASE_VIDIOC_PRIVATE + 6, struct omap3isp_stat_data)
+#define VIDIOC_OMAP3ISP_STAT_REQ_TIME32 _IOWR('V', BASE_VIDIOC_PRIVATE + 6, struct omap3isp_stat_data_time32)
 #define VIDIOC_OMAP3ISP_STAT_EN _IOWR('V', BASE_VIDIOC_PRIVATE + 7, unsigned long)
 #define V4L2_EVENT_OMAP3ISP_CLASS (V4L2_EVENT_PRIVATE_START | 0x100)
 #define V4L2_EVENT_OMAP3ISP_AEWB (V4L2_EVENT_OMAP3ISP_CLASS | 0x1)
diff --git a/libc/kernel/uapi/linux/openvswitch.h b/libc/kernel/uapi/linux/openvswitch.h
index 1dba16e..7e75ac6 100644
--- a/libc/kernel/uapi/linux/openvswitch.h
+++ b/libc/kernel/uapi/linux/openvswitch.h
@@ -425,6 +425,7 @@
   OVS_ACTION_ATTR_PUSH_NSH,
   OVS_ACTION_ATTR_POP_NSH,
   OVS_ACTION_ATTR_METER,
+  OVS_ACTION_ATTR_CLONE,
   __OVS_ACTION_ATTR_MAX,
 };
 #define OVS_ACTION_ATTR_MAX (__OVS_ACTION_ATTR_MAX - 1)
@@ -467,4 +468,25 @@
   __OVS_METER_BAND_TYPE_MAX
 };
 #define OVS_METER_BAND_TYPE_MAX (__OVS_METER_BAND_TYPE_MAX - 1)
+#define OVS_CT_LIMIT_FAMILY "ovs_ct_limit"
+#define OVS_CT_LIMIT_MCGROUP "ovs_ct_limit"
+#define OVS_CT_LIMIT_VERSION 0x1
+enum ovs_ct_limit_cmd {
+  OVS_CT_LIMIT_CMD_UNSPEC,
+  OVS_CT_LIMIT_CMD_SET,
+  OVS_CT_LIMIT_CMD_DEL,
+  OVS_CT_LIMIT_CMD_GET
+};
+enum ovs_ct_limit_attr {
+  OVS_CT_LIMIT_ATTR_UNSPEC,
+  OVS_CT_LIMIT_ATTR_ZONE_LIMIT,
+  __OVS_CT_LIMIT_ATTR_MAX
+};
+#define OVS_CT_LIMIT_ATTR_MAX (__OVS_CT_LIMIT_ATTR_MAX - 1)
+#define OVS_ZONE_LIMIT_DEFAULT_ZONE - 1
+struct ovs_zone_limit {
+  int zone_id;
+  __u32 limit;
+  __u32 count;
+};
 #endif
diff --git a/libc/kernel/uapi/linux/pci_regs.h b/libc/kernel/uapi/linux/pci_regs.h
index 4ef3837..7b234f5 100644
--- a/libc/kernel/uapi/linux/pci_regs.h
+++ b/libc/kernel/uapi/linux/pci_regs.h
@@ -416,6 +416,8 @@
 #define PCI_EXP_DEVCTL_READRQ_256B 0x1000
 #define PCI_EXP_DEVCTL_READRQ_512B 0x2000
 #define PCI_EXP_DEVCTL_READRQ_1024B 0x3000
+#define PCI_EXP_DEVCTL_READRQ_2048B 0x4000
+#define PCI_EXP_DEVCTL_READRQ_4096B 0x5000
 #define PCI_EXP_DEVCTL_BCR_FLR 0x8000
 #define PCI_EXP_DEVSTA 10
 #define PCI_EXP_DEVSTA_CED 0x0001
@@ -536,6 +538,7 @@
 #define PCI_EXP_DEVCAP2_OBFF_MASK 0x000c0000
 #define PCI_EXP_DEVCAP2_OBFF_MSG 0x00040000
 #define PCI_EXP_DEVCAP2_OBFF_WAKE 0x00080000
+#define PCI_EXP_DEVCAP2_EE_PREFIX 0x00200000
 #define PCI_EXP_DEVCTL2 40
 #define PCI_EXP_DEVCTL2_COMP_TIMEOUT 0x000f
 #define PCI_EXP_DEVCTL2_COMP_TMOUT_DIS 0x0010
@@ -557,6 +560,11 @@
 #define PCI_EXP_LNKCAP2_SLS_16_0GB 0x00000010
 #define PCI_EXP_LNKCAP2_CROSSLINK 0x00000100
 #define PCI_EXP_LNKCTL2 48
+#define PCI_EXP_LNKCTL2_TLS 0x000f
+#define PCI_EXP_LNKCTL2_TLS_2_5GT 0x0001
+#define PCI_EXP_LNKCTL2_TLS_5_0GT 0x0002
+#define PCI_EXP_LNKCTL2_TLS_8_0GT 0x0003
+#define PCI_EXP_LNKCTL2_TLS_16_0GT 0x0004
 #define PCI_EXP_LNKSTA2 50
 #define PCI_CAP_EXP_ENDPOINT_SIZEOF_V2 52
 #define PCI_EXP_SLTCAP2 52
@@ -814,6 +822,7 @@
 #define PCI_REBAR_CTRL_NBAR_MASK 0x000000E0
 #define PCI_REBAR_CTRL_NBAR_SHIFT 5
 #define PCI_REBAR_CTRL_BAR_SIZE 0x00001F00
+#define PCI_REBAR_CTRL_BAR_SHIFT 8
 #define PCI_DPA_CAP 4
 #define PCI_DPA_CAP_SUBSTATE_MASK 0x1F
 #define PCI_DPA_BASE_SIZEOF 16
@@ -833,6 +842,7 @@
 #define PCI_EXP_DPC_RP_PIO_LOG_SIZE 0x0F00
 #define PCI_EXP_DPC_CAP_DL_ACTIVE 0x1000
 #define PCI_EXP_DPC_CTL 6
+#define PCI_EXP_DPC_CTL_EN_FATAL 0x0001
 #define PCI_EXP_DPC_CTL_EN_NONFATAL 0x0002
 #define PCI_EXP_DPC_CTL_INT_EN 0x0008
 #define PCI_EXP_DPC_STATUS 8
diff --git a/libc/kernel/uapi/linux/pcitest.h b/libc/kernel/uapi/linux/pcitest.h
index e6c0264..c6112d0 100644
--- a/libc/kernel/uapi/linux/pcitest.h
+++ b/libc/kernel/uapi/linux/pcitest.h
@@ -24,4 +24,7 @@
 #define PCITEST_WRITE _IOW('P', 0x4, unsigned long)
 #define PCITEST_READ _IOW('P', 0x5, unsigned long)
 #define PCITEST_COPY _IOW('P', 0x6, unsigned long)
+#define PCITEST_MSIX _IOW('P', 0x7, int)
+#define PCITEST_SET_IRQTYPE _IOW('P', 0x8, int)
+#define PCITEST_GET_IRQTYPE _IO('P', 0x9)
 #endif
diff --git a/libc/kernel/uapi/linux/perf_event.h b/libc/kernel/uapi/linux/perf_event.h
index dc1e32c..c106b5b 100644
--- a/libc/kernel/uapi/linux/perf_event.h
+++ b/libc/kernel/uapi/linux/perf_event.h
@@ -100,6 +100,7 @@
   PERF_SAMPLE_REGS_INTR = 1U << 18,
   PERF_SAMPLE_PHYS_ADDR = 1U << 19,
   PERF_SAMPLE_MAX = 1U << 20,
+  __PERF_SAMPLE_CALLCHAIN_EARLY = 1ULL << 63,
 };
 enum perf_branch_sample_type_shift {
   PERF_SAMPLE_BRANCH_USER_SHIFT = 0,
diff --git a/libc/kernel/uapi/linux/pkt_cls.h b/libc/kernel/uapi/linux/pkt_cls.h
index 113469c..1ede892 100644
--- a/libc/kernel/uapi/linux/pkt_cls.h
+++ b/libc/kernel/uapi/linux/pkt_cls.h
@@ -50,12 +50,15 @@
 #define TC_ACT_REPEAT 6
 #define TC_ACT_REDIRECT 7
 #define TC_ACT_TRAP 8
+#define TC_ACT_VALUE_MAX TC_ACT_TRAP
 #define __TC_ACT_EXT_SHIFT 28
 #define __TC_ACT_EXT(local) ((local) << __TC_ACT_EXT_SHIFT)
 #define TC_ACT_EXT_VAL_MASK ((1 << __TC_ACT_EXT_SHIFT) - 1)
-#define TC_ACT_EXT_CMP(combined,opcode) (((combined) & (~TC_ACT_EXT_VAL_MASK)) == opcode)
+#define TC_ACT_EXT_OPCODE(combined) ((combined) & (~TC_ACT_EXT_VAL_MASK))
+#define TC_ACT_EXT_CMP(combined,opcode) (TC_ACT_EXT_OPCODE(combined) == opcode)
 #define TC_ACT_JUMP __TC_ACT_EXT(1)
 #define TC_ACT_GOTO_CHAIN __TC_ACT_EXT(2)
+#define TC_ACT_EXT_OPCODE_MAX TC_ACT_GOTO_CHAIN
 enum {
   TCA_ID_UNSPEC = 0,
   TCA_ID_POLICE = 1,
@@ -107,6 +110,7 @@
 #define TCA_CLS_FLAGS_SKIP_SW (1 << 1)
 #define TCA_CLS_FLAGS_IN_HW (1 << 2)
 #define TCA_CLS_FLAGS_NOT_IN_HW (1 << 3)
+#define TCA_CLS_FLAGS_VERBOSE (1 << 4)
 #define TC_U32_HTID(h) ((h) & 0xFFF00000)
 #define TC_U32_USERHTID(h) (TC_U32_HTID(h) >> 20)
 #define TC_U32_HASH(h) (((h) >> 12) & 0xFF)
@@ -375,10 +379,33 @@
   TCA_FLOWER_KEY_IP_TOS_MASK,
   TCA_FLOWER_KEY_IP_TTL,
   TCA_FLOWER_KEY_IP_TTL_MASK,
+  TCA_FLOWER_KEY_CVLAN_ID,
+  TCA_FLOWER_KEY_CVLAN_PRIO,
+  TCA_FLOWER_KEY_CVLAN_ETH_TYPE,
+  TCA_FLOWER_KEY_ENC_IP_TOS,
+  TCA_FLOWER_KEY_ENC_IP_TOS_MASK,
+  TCA_FLOWER_KEY_ENC_IP_TTL,
+  TCA_FLOWER_KEY_ENC_IP_TTL_MASK,
+  TCA_FLOWER_KEY_ENC_OPTS,
+  TCA_FLOWER_KEY_ENC_OPTS_MASK,
   __TCA_FLOWER_MAX,
 };
 #define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1)
 enum {
+  TCA_FLOWER_KEY_ENC_OPTS_UNSPEC,
+  TCA_FLOWER_KEY_ENC_OPTS_GENEVE,
+  __TCA_FLOWER_KEY_ENC_OPTS_MAX,
+};
+#define TCA_FLOWER_KEY_ENC_OPTS_MAX (__TCA_FLOWER_KEY_ENC_OPTS_MAX - 1)
+enum {
+  TCA_FLOWER_KEY_ENC_OPT_GENEVE_UNSPEC,
+  TCA_FLOWER_KEY_ENC_OPT_GENEVE_CLASS,
+  TCA_FLOWER_KEY_ENC_OPT_GENEVE_TYPE,
+  TCA_FLOWER_KEY_ENC_OPT_GENEVE_DATA,
+  __TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX,
+};
+#define TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX (__TCA_FLOWER_KEY_ENC_OPT_GENEVE_MAX - 1)
+enum {
   TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT = (1 << 0),
   TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST = (1 << 1),
 };
diff --git a/libc/kernel/uapi/linux/pkt_sched.h b/libc/kernel/uapi/linux/pkt_sched.h
index a3f2adf..4efbc1c 100644
--- a/libc/kernel/uapi/linux/pkt_sched.h
+++ b/libc/kernel/uapi/linux/pkt_sched.h
@@ -87,6 +87,10 @@
 struct tc_fifo_qopt {
   __u32 limit;
 };
+#define SKBPRIO_MAX_PRIORITY 64
+struct tc_skbprio_qopt {
+  __u32 limit;
+};
 #define TCQ_PRIO_BANDS 16
 #define TCQ_MIN_PRIO_BANDS 2
 struct tc_prio_qopt {
@@ -407,6 +411,7 @@
   TCA_NETEM_LATENCY64,
   TCA_NETEM_JITTER64,
   TCA_NETEM_SLOT,
+  TCA_NETEM_SLOT_DIST,
   __TCA_NETEM_MAX,
 };
 #define TCA_NETEM_MAX (__TCA_NETEM_MAX - 1)
@@ -442,6 +447,8 @@
   __s64 max_delay;
   __s32 max_packets;
   __s32 max_bytes;
+  __s64 dist_delay;
+  __s64 dist_jitter;
 };
 enum {
   NETEM_LOSS_UNSPEC,
@@ -703,4 +710,122 @@
   __TCA_CBS_MAX,
 };
 #define TCA_CBS_MAX (__TCA_CBS_MAX - 1)
+struct tc_etf_qopt {
+  __s32 delta;
+  __s32 clockid;
+  __u32 flags;
+#define TC_ETF_DEADLINE_MODE_ON BIT(0)
+#define TC_ETF_OFFLOAD_ON BIT(1)
+};
+enum {
+  TCA_ETF_UNSPEC,
+  TCA_ETF_PARMS,
+  __TCA_ETF_MAX,
+};
+#define TCA_ETF_MAX (__TCA_ETF_MAX - 1)
+enum {
+  TCA_CAKE_UNSPEC,
+  TCA_CAKE_PAD,
+  TCA_CAKE_BASE_RATE64,
+  TCA_CAKE_DIFFSERV_MODE,
+  TCA_CAKE_ATM,
+  TCA_CAKE_FLOW_MODE,
+  TCA_CAKE_OVERHEAD,
+  TCA_CAKE_RTT,
+  TCA_CAKE_TARGET,
+  TCA_CAKE_AUTORATE,
+  TCA_CAKE_MEMORY,
+  TCA_CAKE_NAT,
+  TCA_CAKE_RAW,
+  TCA_CAKE_WASH,
+  TCA_CAKE_MPU,
+  TCA_CAKE_INGRESS,
+  TCA_CAKE_ACK_FILTER,
+  TCA_CAKE_SPLIT_GSO,
+  __TCA_CAKE_MAX
+};
+#define TCA_CAKE_MAX (__TCA_CAKE_MAX - 1)
+enum {
+  __TCA_CAKE_STATS_INVALID,
+  TCA_CAKE_STATS_PAD,
+  TCA_CAKE_STATS_CAPACITY_ESTIMATE64,
+  TCA_CAKE_STATS_MEMORY_LIMIT,
+  TCA_CAKE_STATS_MEMORY_USED,
+  TCA_CAKE_STATS_AVG_NETOFF,
+  TCA_CAKE_STATS_MIN_NETLEN,
+  TCA_CAKE_STATS_MAX_NETLEN,
+  TCA_CAKE_STATS_MIN_ADJLEN,
+  TCA_CAKE_STATS_MAX_ADJLEN,
+  TCA_CAKE_STATS_TIN_STATS,
+  TCA_CAKE_STATS_DEFICIT,
+  TCA_CAKE_STATS_COBALT_COUNT,
+  TCA_CAKE_STATS_DROPPING,
+  TCA_CAKE_STATS_DROP_NEXT_US,
+  TCA_CAKE_STATS_P_DROP,
+  TCA_CAKE_STATS_BLUE_TIMER_US,
+  __TCA_CAKE_STATS_MAX
+};
+#define TCA_CAKE_STATS_MAX (__TCA_CAKE_STATS_MAX - 1)
+enum {
+  __TCA_CAKE_TIN_STATS_INVALID,
+  TCA_CAKE_TIN_STATS_PAD,
+  TCA_CAKE_TIN_STATS_SENT_PACKETS,
+  TCA_CAKE_TIN_STATS_SENT_BYTES64,
+  TCA_CAKE_TIN_STATS_DROPPED_PACKETS,
+  TCA_CAKE_TIN_STATS_DROPPED_BYTES64,
+  TCA_CAKE_TIN_STATS_ACKS_DROPPED_PACKETS,
+  TCA_CAKE_TIN_STATS_ACKS_DROPPED_BYTES64,
+  TCA_CAKE_TIN_STATS_ECN_MARKED_PACKETS,
+  TCA_CAKE_TIN_STATS_ECN_MARKED_BYTES64,
+  TCA_CAKE_TIN_STATS_BACKLOG_PACKETS,
+  TCA_CAKE_TIN_STATS_BACKLOG_BYTES,
+  TCA_CAKE_TIN_STATS_THRESHOLD_RATE64,
+  TCA_CAKE_TIN_STATS_TARGET_US,
+  TCA_CAKE_TIN_STATS_INTERVAL_US,
+  TCA_CAKE_TIN_STATS_WAY_INDIRECT_HITS,
+  TCA_CAKE_TIN_STATS_WAY_MISSES,
+  TCA_CAKE_TIN_STATS_WAY_COLLISIONS,
+  TCA_CAKE_TIN_STATS_PEAK_DELAY_US,
+  TCA_CAKE_TIN_STATS_AVG_DELAY_US,
+  TCA_CAKE_TIN_STATS_BASE_DELAY_US,
+  TCA_CAKE_TIN_STATS_SPARSE_FLOWS,
+  TCA_CAKE_TIN_STATS_BULK_FLOWS,
+  TCA_CAKE_TIN_STATS_UNRESPONSIVE_FLOWS,
+  TCA_CAKE_TIN_STATS_MAX_SKBLEN,
+  TCA_CAKE_TIN_STATS_FLOW_QUANTUM,
+  __TCA_CAKE_TIN_STATS_MAX
+};
+#define TCA_CAKE_TIN_STATS_MAX (__TCA_CAKE_TIN_STATS_MAX - 1)
+#define TC_CAKE_MAX_TINS (8)
+enum {
+  CAKE_FLOW_NONE = 0,
+  CAKE_FLOW_SRC_IP,
+  CAKE_FLOW_DST_IP,
+  CAKE_FLOW_HOSTS,
+  CAKE_FLOW_FLOWS,
+  CAKE_FLOW_DUAL_SRC,
+  CAKE_FLOW_DUAL_DST,
+  CAKE_FLOW_TRIPLE,
+  CAKE_FLOW_MAX,
+};
+enum {
+  CAKE_DIFFSERV_DIFFSERV3 = 0,
+  CAKE_DIFFSERV_DIFFSERV4,
+  CAKE_DIFFSERV_DIFFSERV8,
+  CAKE_DIFFSERV_BESTEFFORT,
+  CAKE_DIFFSERV_PRECEDENCE,
+  CAKE_DIFFSERV_MAX
+};
+enum {
+  CAKE_ACK_NONE = 0,
+  CAKE_ACK_FILTER,
+  CAKE_ACK_AGGRESSIVE,
+  CAKE_ACK_MAX
+};
+enum {
+  CAKE_ATM_NONE = 0,
+  CAKE_ATM_ATM,
+  CAKE_ATM_PTM,
+  CAKE_ATM_MAX
+};
 #endif
diff --git a/libc/kernel/uapi/linux/psp-sev.h b/libc/kernel/uapi/linux/psp-sev.h
index 5f59330..10582d4 100644
--- a/libc/kernel/uapi/linux/psp-sev.h
+++ b/libc/kernel/uapi/linux/psp-sev.h
@@ -27,6 +27,7 @@
   SEV_PDH_GEN,
   SEV_PDH_CERT_EXPORT,
   SEV_PEK_CERT_IMPORT,
+  SEV_GET_ID,
   SEV_MAX,
 };
 typedef enum {
@@ -78,6 +79,10 @@
   __u64 cert_chain_address;
   __u32 cert_chain_len;
 } __packed;
+struct sev_user_data_get_id {
+  __u8 socket1[64];
+  __u8 socket2[64];
+} __packed;
 struct sev_issue_cmd {
   __u32 cmd;
   __u64 data;
diff --git a/libc/kernel/uapi/linux/rds.h b/libc/kernel/uapi/linux/rds.h
index c726f54..05da0cd 100644
--- a/libc/kernel/uapi/linux/rds.h
+++ b/libc/kernel/uapi/linux/rds.h
@@ -20,6 +20,7 @@
 #define _LINUX_RDS_H
 #include <linux/types.h>
 #include <linux/socket.h>
+#include <linux/in6.h>
 #define RDS_IB_ABI_VERSION 0x301
 #define SOL_RDS 276
 #define RDS_CANCEL_SENT_TO 1
@@ -58,7 +59,14 @@
 #define RDS_INFO_IB_CONNECTIONS 10008
 #define RDS_INFO_CONNECTION_STATS 10009
 #define RDS_INFO_IWARP_CONNECTIONS 10010
-#define RDS_INFO_LAST 10010
+#define RDS6_INFO_CONNECTIONS 10011
+#define RDS6_INFO_SEND_MESSAGES 10012
+#define RDS6_INFO_RETRANS_MESSAGES 10013
+#define RDS6_INFO_RECV_MESSAGES 10014
+#define RDS6_INFO_SOCKETS 10015
+#define RDS6_INFO_TCP_SOCKETS 10016
+#define RDS6_INFO_IB_CONNECTIONS 10017
+#define RDS_INFO_LAST 10017
 struct rds_info_counter {
   __u8 name[32];
   __u64 value;
@@ -75,6 +83,14 @@
   __u8 transport[TRANSNAMSIZ];
   __u8 flags;
 } __attribute__((packed));
+struct rds6_info_connection {
+  __u64 next_tx_seq;
+  __u64 next_rx_seq;
+  struct in6_addr laddr;
+  struct in6_addr faddr;
+  __u8 transport[TRANSNAMSIZ];
+  __u8 flags;
+} __attribute__((packed));
 #define RDS_INFO_MESSAGE_FLAG_ACK 0x01
 #define RDS_INFO_MESSAGE_FLAG_FAST_ACK 0x02
 struct rds_info_message {
@@ -86,6 +102,16 @@
   __be16 fport;
   __u8 flags;
 } __attribute__((packed));
+struct rds6_info_message {
+  __u64 seq;
+  __u32 len;
+  struct in6_addr laddr;
+  struct in6_addr faddr;
+  __be16 lport;
+  __be16 fport;
+  __u8 flags;
+  __u8 tos;
+} __attribute__((packed));
 struct rds_info_socket {
   __u32 sndbuf;
   __be32 bound_addr;
@@ -95,6 +121,15 @@
   __u32 rcvbuf;
   __u64 inum;
 } __attribute__((packed));
+struct rds6_info_socket {
+  __u32 sndbuf;
+  struct in6_addr bound_addr;
+  struct in6_addr connected_addr;
+  __be16 bound_port;
+  __be16 connected_port;
+  __u32 rcvbuf;
+  __u64 inum;
+} __attribute__((packed));
 struct rds_info_tcp_socket {
   __be32 local_addr;
   __be16 local_port;
@@ -106,6 +141,17 @@
   __u32 last_expected_una;
   __u32 last_seen_una;
 } __attribute__((packed));
+struct rds6_info_tcp_socket {
+  struct in6_addr local_addr;
+  __be16 local_port;
+  struct in6_addr peer_addr;
+  __be16 peer_port;
+  __u64 hdr_rem;
+  __u64 data_rem;
+  __u32 last_sent_nxt;
+  __u32 last_expected_una;
+  __u32 last_seen_una;
+} __attribute__((packed));
 #define RDS_IB_GID_LEN 16
 struct rds_info_rdma_connection {
   __be32 src_addr;
@@ -118,6 +164,17 @@
   __u32 rdma_mr_max;
   __u32 rdma_mr_size;
 };
+struct rds6_info_rdma_connection {
+  struct in6_addr src_addr;
+  struct in6_addr dst_addr;
+  __u8 src_gid[RDS_IB_GID_LEN];
+  __u8 dst_gid[RDS_IB_GID_LEN];
+  __u32 max_send_wr;
+  __u32 max_recv_wr;
+  __u32 max_send_sge;
+  __u32 rdma_mr_max;
+  __u32 rdma_mr_size;
+};
 enum rds_message_rxpath_latency {
   RDS_MSG_RX_HDR_TO_DGRAM_START = 0,
   RDS_MSG_RX_DGRAM_REASSEMBLE,
diff --git a/libc/kernel/uapi/linux/rseq.h b/libc/kernel/uapi/linux/rseq.h
new file mode 100644
index 0000000..ba0ceb1
--- /dev/null
+++ b/libc/kernel/uapi/linux/rseq.h
@@ -0,0 +1,68 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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_RSEQ_H
+#define _UAPI_LINUX_RSEQ_H
+#include <linux/types.h>
+#include <asm/byteorder.h>
+enum rseq_cpu_id_state {
+  RSEQ_CPU_ID_UNINITIALIZED = - 1,
+  RSEQ_CPU_ID_REGISTRATION_FAILED = - 2,
+};
+enum rseq_flags {
+  RSEQ_FLAG_UNREGISTER = (1 << 0),
+};
+enum rseq_cs_flags_bit {
+  RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT_BIT = 0,
+  RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL_BIT = 1,
+  RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE_BIT = 2,
+};
+enum rseq_cs_flags {
+  RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT = (1U << RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT_BIT),
+  RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL = (1U << RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL_BIT),
+  RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE = (1U << RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE_BIT),
+};
+struct rseq_cs {
+  __u32 version;
+  __u32 flags;
+  __u64 start_ip;
+  __u64 post_commit_offset;
+  __u64 abort_ip;
+} __attribute__((aligned(4 * sizeof(__u64))));
+struct rseq {
+  __u32 cpu_id_start;
+  __u32 cpu_id;
+  union {
+    __u64 ptr64;
+#ifdef __LP64__
+    __u64 ptr;
+#else
+    struct {
+#if defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN || defined(__BIG_ENDIAN)
+      __u32 padding;
+      __u32 ptr32;
+#else
+      __u32 ptr32;
+      __u32 padding;
+#endif
+    } ptr;
+#endif
+  } rseq_cs;
+  __u32 flags;
+} __attribute__((aligned(4 * sizeof(__u64))));
+#endif
diff --git a/libc/kernel/uapi/linux/rtnetlink.h b/libc/kernel/uapi/linux/rtnetlink.h
index 6fffcd3..33af1b3 100644
--- a/libc/kernel/uapi/linux/rtnetlink.h
+++ b/libc/kernel/uapi/linux/rtnetlink.h
@@ -133,6 +133,12 @@
 #define RTM_GETSTATS RTM_GETSTATS
   RTM_NEWCACHEREPORT = 96,
 #define RTM_NEWCACHEREPORT RTM_NEWCACHEREPORT
+  RTM_NEWCHAIN = 100,
+#define RTM_NEWCHAIN RTM_NEWCHAIN
+  RTM_DELCHAIN,
+#define RTM_DELCHAIN RTM_DELCHAIN
+  RTM_GETCHAIN,
+#define RTM_GETCHAIN RTM_GETCHAIN
   __RTM_MAX,
 #define RTM_MAX (((__RTM_MAX + 3) & ~3) - 1)
 };
@@ -194,6 +200,11 @@
 #define RTPROT_DHCP 16
 #define RTPROT_MROUTED 17
 #define RTPROT_BABEL 42
+#define RTPROT_BGP 186
+#define RTPROT_ISIS 187
+#define RTPROT_OSPF 188
+#define RTPROT_RIP 189
+#define RTPROT_EIGRP 192
 enum rt_scope_t {
   RT_SCOPE_UNIVERSE = 0,
   RT_SCOPE_SITE = 200,
@@ -243,6 +254,9 @@
   RTA_PAD,
   RTA_UID,
   RTA_TTL_PROPAGATE,
+  RTA_IP_PROTO,
+  RTA_SPORT,
+  RTA_DPORT,
   __RTA_MAX
 };
 #define RTA_MAX (__RTA_MAX - 1)
diff --git a/libc/kernel/uapi/linux/sctp.h b/libc/kernel/uapi/linux/sctp.h
index 1f7fed1..6ba738e 100644
--- a/libc/kernel/uapi/linux/sctp.h
+++ b/libc/kernel/uapi/linux/sctp.h
@@ -59,6 +59,7 @@
 #define SCTP_RECVNXTINFO 33
 #define SCTP_DEFAULT_SNDINFO 34
 #define SCTP_AUTH_DEACTIVATE_KEY 35
+#define SCTP_REUSE_PORT 36
 #define SCTP_SOCKOPT_BINDX_ADD 100
 #define SCTP_SOCKOPT_BINDX_REM 101
 #define SCTP_SOCKOPT_PEELOFF 102
@@ -159,6 +160,7 @@
   SCTP_ABORT = (1 << 2),
   SCTP_SACK_IMMEDIATELY = (1 << 3),
   SCTP_SENDALL = (1 << 6),
+  SCTP_PR_SCTP_ALL = (1 << 7),
   SCTP_NOTIFICATION = MSG_NOTIFICATION,
   SCTP_EOF = MSG_FIN,
 };
@@ -428,6 +430,8 @@
   SPP_SACKDELAY_DISABLE = 1 << 6,
   SPP_SACKDELAY = SPP_SACKDELAY_ENABLE | SPP_SACKDELAY_DISABLE,
   SPP_HB_TIME_IS_ZERO = 1 << 7,
+  SPP_IPV6_FLOWLABEL = 1 << 8,
+  SPP_DSCP = 1 << 9,
 };
 struct sctp_paddrparams {
   sctp_assoc_t spp_assoc_id;
@@ -437,6 +441,8 @@
   __u32 spp_pathmtu;
   __u32 spp_sackdelay;
   __u32 spp_flags;
+  __u32 spp_ipv6_flowlabel;
+  __u8 spp_dscp;
 } __attribute__((packed, aligned(4)));
 struct sctp_authchunk {
   __u8 sauth_chunk;
diff --git a/libc/kernel/uapi/linux/seg6_local.h b/libc/kernel/uapi/linux/seg6_local.h
index 7a10701..73873a8 100644
--- a/libc/kernel/uapi/linux/seg6_local.h
+++ b/libc/kernel/uapi/linux/seg6_local.h
@@ -28,6 +28,7 @@
   SEG6_LOCAL_NH6,
   SEG6_LOCAL_IIF,
   SEG6_LOCAL_OIF,
+  SEG6_LOCAL_BPF,
   __SEG6_LOCAL_MAX,
 };
 #define SEG6_LOCAL_MAX (__SEG6_LOCAL_MAX - 1)
@@ -47,7 +48,15 @@
   SEG6_LOCAL_ACTION_END_S = 12,
   SEG6_LOCAL_ACTION_END_AS = 13,
   SEG6_LOCAL_ACTION_END_AM = 14,
+  SEG6_LOCAL_ACTION_END_BPF = 15,
   __SEG6_LOCAL_ACTION_MAX,
 };
 #define SEG6_LOCAL_ACTION_MAX (__SEG6_LOCAL_ACTION_MAX - 1)
+enum {
+  SEG6_LOCAL_BPF_PROG_UNSPEC,
+  SEG6_LOCAL_BPF_PROG,
+  SEG6_LOCAL_BPF_PROG_NAME,
+  __SEG6_LOCAL_BPF_PROG_MAX,
+};
+#define SEG6_LOCAL_BPF_PROG_MAX (__SEG6_LOCAL_BPF_PROG_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/shm.h b/libc/kernel/uapi/linux/shm.h
index a30a089..57394cb 100644
--- a/libc/kernel/uapi/linux/shm.h
+++ b/libc/kernel/uapi/linux/shm.h
@@ -53,7 +53,9 @@
 #define SHM_HUGE_2MB HUGETLB_FLAG_ENCODE_2MB
 #define SHM_HUGE_8MB HUGETLB_FLAG_ENCODE_8MB
 #define SHM_HUGE_16MB HUGETLB_FLAG_ENCODE_16MB
+#define SHM_HUGE_32MB HUGETLB_FLAG_ENCODE_32MB
 #define SHM_HUGE_256MB HUGETLB_FLAG_ENCODE_256MB
+#define SHM_HUGE_512MB HUGETLB_FLAG_ENCODE_512MB
 #define SHM_HUGE_1GB HUGETLB_FLAG_ENCODE_1GB
 #define SHM_HUGE_2GB HUGETLB_FLAG_ENCODE_2GB
 #define SHM_HUGE_16GB HUGETLB_FLAG_ENCODE_16GB
diff --git a/libc/kernel/uapi/linux/signalfd.h b/libc/kernel/uapi/linux/signalfd.h
index a1fe2de..5108ef0 100644
--- a/libc/kernel/uapi/linux/signalfd.h
+++ b/libc/kernel/uapi/linux/signalfd.h
@@ -40,6 +40,10 @@
   __u64 ssi_stime;
   __u64 ssi_addr;
   __u16 ssi_addr_lsb;
-  __u8 __pad[46];
+  __u16 __pad2;
+  __s32 ssi_syscall;
+  __u64 ssi_call_addr;
+  __u32 ssi_arch;
+  __u8 __pad[28];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/smc_diag.h b/libc/kernel/uapi/linux/smc_diag.h
index 66f93f0..30e0fa2 100644
--- a/libc/kernel/uapi/linux/smc_diag.h
+++ b/libc/kernel/uapi/linux/smc_diag.h
@@ -30,17 +30,27 @@
 struct smc_diag_msg {
   __u8 diag_family;
   __u8 diag_state;
-  __u8 diag_fallback;
+  union {
+    __u8 diag_mode;
+    __u8 diag_fallback;
+  };
   __u8 diag_shutdown;
   struct inet_diag_sockid id;
   __u32 diag_uid;
-  __u64 diag_inode;
+  __aligned_u64 diag_inode;
+};
+enum {
+  SMC_DIAG_MODE_SMCR,
+  SMC_DIAG_MODE_FALLBACK_TCP,
+  SMC_DIAG_MODE_SMCD,
 };
 enum {
   SMC_DIAG_NONE,
   SMC_DIAG_CONNINFO,
   SMC_DIAG_LGRINFO,
   SMC_DIAG_SHUTDOWN,
+  SMC_DIAG_DMBINFO,
+  SMC_DIAG_FALLBACK,
   __SMC_DIAG_MAX,
 };
 #define SMC_DIAG_MAX (__SMC_DIAG_MAX - 1)
@@ -77,4 +87,15 @@
   struct smc_diag_linkinfo lnk[1];
   __u8 role;
 };
+struct smc_diag_fallback {
+  __u32 reason;
+  __u32 peer_diagnosis;
+};
+struct smcd_diag_dmbinfo {
+  __u32 linkid;
+  __aligned_u64 peer_gid;
+  __aligned_u64 my_gid;
+  __aligned_u64 token;
+  __aligned_u64 peer_token;
+};
 #endif
diff --git a/libc/kernel/uapi/linux/snmp.h b/libc/kernel/uapi/linux/snmp.h
index b9f0c3e..ae24f0f 100644
--- a/libc/kernel/uapi/linux/snmp.h
+++ b/libc/kernel/uapi/linux/snmp.h
@@ -55,6 +55,7 @@
   IPSTATS_MIB_ECT1PKTS,
   IPSTATS_MIB_ECT0PKTS,
   IPSTATS_MIB_CEPKTS,
+  IPSTATS_MIB_REASM_OVERLAPS,
   __IPSTATS_MIB_MAX
 };
 enum {
@@ -243,6 +244,11 @@
   LINUX_MIB_TCPKEEPALIVE,
   LINUX_MIB_TCPMTUPFAIL,
   LINUX_MIB_TCPMTUPSUCCESS,
+  LINUX_MIB_TCPDELIVERED,
+  LINUX_MIB_TCPDELIVEREDCE,
+  LINUX_MIB_TCPACKCOMPRESSED,
+  LINUX_MIB_TCPZEROWINDOWDROP,
+  LINUX_MIB_TCPRCVQDROP,
   __LINUX_MIB_MAX
 };
 enum {
diff --git a/libc/kernel/uapi/linux/sysctl.h b/libc/kernel/uapi/linux/sysctl.h
index eb6e61f..24d8362 100644
--- a/libc/kernel/uapi/linux/sysctl.h
+++ b/libc/kernel/uapi/linux/sysctl.h
@@ -491,7 +491,8 @@
   __NET_IPV6_MAX
 };
 enum {
-  NET_IPV6_ICMP_RATELIMIT = 1
+  NET_IPV6_ICMP_RATELIMIT = 1,
+  NET_IPV6_ICMP_ECHO_IGNORE_ALL = 2
 };
 enum {
   NET_NEIGH_MCAST_SOLICIT = 1,
diff --git a/libc/kernel/uapi/linux/target_core_user.h b/libc/kernel/uapi/linux/target_core_user.h
index 264b46f..7c997d1 100644
--- a/libc/kernel/uapi/linux/target_core_user.h
+++ b/libc/kernel/uapi/linux/target_core_user.h
@@ -24,6 +24,7 @@
 #define TCMU_MAILBOX_VERSION 2
 #define ALIGN_SIZE 64
 #define TCMU_MAILBOX_FLAG_CAP_OOOC (1 << 0)
+#define TCMU_MAILBOX_FLAG_CAP_READ_LEN (1 << 1)
 struct tcmu_mailbox {
   __u16 version;
   __u16 flags;
@@ -41,6 +42,7 @@
   __u16 cmd_id;
   __u8 kflags;
 #define TCMU_UFLAG_UNKNOWN_OP 0x1
+#define TCMU_UFLAG_READ_LEN 0x2
   __u8 uflags;
 } __packed;
 #define TCMU_OP_MASK 0x7
@@ -61,7 +63,7 @@
       __u8 scsi_status;
       __u8 __pad1;
       __u16 __pad2;
-      __u32 __pad3;
+      __u32 read_len;
       char sense_buffer[TCMU_SENSE_BUFFERSIZE];
     } rsp;
   };
diff --git a/libc/kernel/uapi/linux/tc_act/tc_skbedit.h b/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
index cb5c2e1..30d529a 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_skbedit.h
@@ -25,6 +25,7 @@
 #define SKBEDIT_F_MARK 0x4
 #define SKBEDIT_F_PTYPE 0x8
 #define SKBEDIT_F_MASK 0x10
+#define SKBEDIT_F_INHERITDSFIELD 0x20
 struct tc_skbedit {
   tc_gen;
 };
@@ -38,6 +39,7 @@
   TCA_SKBEDIT_PAD,
   TCA_SKBEDIT_PTYPE,
   TCA_SKBEDIT_MASK,
+  TCA_SKBEDIT_FLAGS,
   __TCA_SKBEDIT_MAX
 };
 #define TCA_SKBEDIT_MAX (__TCA_SKBEDIT_MAX - 1)
diff --git a/libc/kernel/uapi/linux/tc_act/tc_tunnel_key.h b/libc/kernel/uapi/linux/tc_act/tc_tunnel_key.h
index 24e7403..bd5fb24 100644
--- a/libc/kernel/uapi/linux/tc_act/tc_tunnel_key.h
+++ b/libc/kernel/uapi/linux/tc_act/tc_tunnel_key.h
@@ -38,7 +38,24 @@
   TCA_TUNNEL_KEY_PAD,
   TCA_TUNNEL_KEY_ENC_DST_PORT,
   TCA_TUNNEL_KEY_NO_CSUM,
+  TCA_TUNNEL_KEY_ENC_OPTS,
+  TCA_TUNNEL_KEY_ENC_TOS,
+  TCA_TUNNEL_KEY_ENC_TTL,
   __TCA_TUNNEL_KEY_MAX,
 };
 #define TCA_TUNNEL_KEY_MAX (__TCA_TUNNEL_KEY_MAX - 1)
+enum {
+  TCA_TUNNEL_KEY_ENC_OPTS_UNSPEC,
+  TCA_TUNNEL_KEY_ENC_OPTS_GENEVE,
+  __TCA_TUNNEL_KEY_ENC_OPTS_MAX,
+};
+#define TCA_TUNNEL_KEY_ENC_OPTS_MAX (__TCA_TUNNEL_KEY_ENC_OPTS_MAX - 1)
+enum {
+  TCA_TUNNEL_KEY_ENC_OPT_GENEVE_UNSPEC,
+  TCA_TUNNEL_KEY_ENC_OPT_GENEVE_CLASS,
+  TCA_TUNNEL_KEY_ENC_OPT_GENEVE_TYPE,
+  TCA_TUNNEL_KEY_ENC_OPT_GENEVE_DATA,
+  __TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX,
+};
+#define TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX (__TCA_TUNNEL_KEY_ENC_OPT_GENEVE_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/tcp.h b/libc/kernel/uapi/linux/tcp.h
index 8b73119..d940f0f 100644
--- a/libc/kernel/uapi/linux/tcp.h
+++ b/libc/kernel/uapi/linux/tcp.h
@@ -89,6 +89,12 @@
 #define TCP_MD5SIG_EXT 32
 #define TCP_FASTOPEN_KEY 33
 #define TCP_FASTOPEN_NO_COOKIE 34
+#define TCP_ZEROCOPY_RECEIVE 35
+#define TCP_INQ 36
+#define TCP_CM_INQ TCP_INQ
+#define TCP_REPAIR_ON 1
+#define TCP_REPAIR_OFF 0
+#define TCP_REPAIR_OFF_NO_WP - 1
 struct tcp_repair_opt {
   __u32 opt_code;
   __u32 opt_val;
@@ -171,6 +177,12 @@
   __u64 tcpi_busy_time;
   __u64 tcpi_rwnd_limited;
   __u64 tcpi_sndbuf_limited;
+  __u32 tcpi_delivered;
+  __u32 tcpi_delivered_ce;
+  __u64 tcpi_bytes_sent;
+  __u64 tcpi_bytes_retrans;
+  __u32 tcpi_dsack_dups;
+  __u32 tcpi_reord_seen;
 };
 enum {
   TCP_NLA_PAD,
@@ -189,6 +201,12 @@
   TCP_NLA_SNDQ_SIZE,
   TCP_NLA_CA_STATE,
   TCP_NLA_SND_SSTHRESH,
+  TCP_NLA_DELIVERED,
+  TCP_NLA_DELIVERED_CE,
+  TCP_NLA_BYTES_SENT,
+  TCP_NLA_BYTES_RETRANS,
+  TCP_NLA_DSACK_DUPS,
+  TCP_NLA_REORD_SEEN,
 };
 #define TCP_MD5SIG_MAXKEYLEN 80
 #define TCP_MD5SIG_FLAG_PREFIX 1
@@ -207,4 +225,9 @@
   __be32 tcpm_addr[4];
   __u8 tcpm_key[TCP_MD5SIG_MAXKEYLEN];
 };
+struct tcp_zerocopy_receive {
+  __u64 address;
+  __u32 length;
+  __u32 recv_skip_hint;
+};
 #endif
diff --git a/libc/kernel/uapi/linux/time.h b/libc/kernel/uapi/linux/time.h
index b75d2dc..96a7042 100644
--- a/libc/kernel/uapi/linux/time.h
+++ b/libc/kernel/uapi/linux/time.h
@@ -45,6 +45,18 @@
   struct timeval it_interval;
   struct timeval it_value;
 };
+#ifndef __kernel_timespec
+struct __kernel_timespec {
+  __kernel_time64_t tv_sec;
+  long long tv_nsec;
+};
+#endif
+#ifndef __kernel_itimerspec
+struct __kernel_itimerspec {
+  struct __kernel_timespec it_interval;
+  struct __kernel_timespec it_value;
+};
+#endif
 struct __kernel_old_timeval {
   __kernel_long_t tv_sec;
   __kernel_long_t tv_usec;
diff --git a/libc/kernel/uapi/linux/tipc.h b/libc/kernel/uapi/linux/tipc.h
index 603c58f..72bcad9 100644
--- a/libc/kernel/uapi/linux/tipc.h
+++ b/libc/kernel/uapi/linux/tipc.h
@@ -119,16 +119,22 @@
   __u32 scope;
   __u32 flags;
 };
+#define TIPC_NODEID_LEN 16
 #define TIPC_MAX_MEDIA_NAME 16
 #define TIPC_MAX_IF_NAME 16
 #define TIPC_MAX_BEARER_NAME 32
 #define TIPC_MAX_LINK_NAME 68
 #define SIOCGETLINKNAME SIOCPROTOPRIVATE
+#define SIOCGETNODEID (SIOCPROTOPRIVATE + 1)
 struct tipc_sioc_ln_req {
   __u32 peer;
   __u32 bearer_id;
   char linkname[TIPC_MAX_LINK_NAME];
 };
+struct tipc_sioc_nodeid_req {
+  __u32 peer;
+  char node_id[TIPC_NODEID_LEN];
+};
 #define TIPC_CFG_SRV 0
 #define TIPC_ZONE_SCOPE 1
 #define TIPC_ADDR_NAMESEQ 1
diff --git a/libc/kernel/uapi/linux/tipc_config.h b/libc/kernel/uapi/linux/tipc_config.h
index c52f5ff..a371e37 100644
--- a/libc/kernel/uapi/linux/tipc_config.h
+++ b/libc/kernel/uapi/linux/tipc_config.h
@@ -90,6 +90,7 @@
 #define TIPC_MIN_LINK_WIN 16
 #define TIPC_DEF_LINK_WIN 50
 #define TIPC_MAX_LINK_WIN 8191
+#define TIPC_DEF_LINK_UDP_MTU 14000
 struct tipc_node_info {
   __be32 addr;
   __be32 up;
diff --git a/libc/kernel/uapi/linux/tipc_netlink.h b/libc/kernel/uapi/linux/tipc_netlink.h
index ce77441..911bbde 100644
--- a/libc/kernel/uapi/linux/tipc_netlink.h
+++ b/libc/kernel/uapi/linux/tipc_netlink.h
@@ -92,6 +92,7 @@
   TIPC_NLA_SOCK_TIPC_STATE,
   TIPC_NLA_SOCK_COOKIE,
   TIPC_NLA_SOCK_PAD,
+  TIPC_NLA_SOCK_GROUP,
   __TIPC_NLA_SOCK_MAX,
   TIPC_NLA_SOCK_MAX = __TIPC_NLA_SOCK_MAX - 1
 };
@@ -177,6 +178,16 @@
   TIPC_NLA_MON_PEER_MAX = __TIPC_NLA_MON_PEER_MAX - 1
 };
 enum {
+  TIPC_NLA_SOCK_GROUP_ID,
+  TIPC_NLA_SOCK_GROUP_OPEN,
+  TIPC_NLA_SOCK_GROUP_NODE_SCOPE,
+  TIPC_NLA_SOCK_GROUP_CLUSTER_SCOPE,
+  TIPC_NLA_SOCK_GROUP_INSTANCE,
+  TIPC_NLA_SOCK_GROUP_BC_SEND_NEXT,
+  __TIPC_NLA_SOCK_GROUP_MAX,
+  TIPC_NLA_SOCK_GROUP_MAX = __TIPC_NLA_SOCK_GROUP_MAX - 1
+};
+enum {
   TIPC_NLA_CON_UNSPEC,
   TIPC_NLA_CON_FLAG,
   TIPC_NLA_CON_NODE,
@@ -200,6 +211,7 @@
   TIPC_NLA_PROP_PRIO,
   TIPC_NLA_PROP_TOL,
   TIPC_NLA_PROP_WIN,
+  TIPC_NLA_PROP_MTU,
   __TIPC_NLA_PROP_MAX,
   TIPC_NLA_PROP_MAX = __TIPC_NLA_PROP_MAX - 1
 };
diff --git a/libc/kernel/uapi/linux/types.h b/libc/kernel/uapi/linux/types.h
index e111573..9145e66 100644
--- a/libc/kernel/uapi/linux/types.h
+++ b/libc/kernel/uapi/linux/types.h
@@ -34,10 +34,6 @@
 #define __aligned_u64 __u64 __attribute__((aligned(8)))
 #define __aligned_be64 __be64 __attribute__((aligned(8)))
 #define __aligned_le64 __le64 __attribute__((aligned(8)))
-#ifdef __CHECK_POLL
 typedef unsigned __bitwise __poll_t;
-#else
-typedef unsigned __poll_t;
-#endif
 #endif
 #endif
diff --git a/libc/kernel/uapi/linux/udp.h b/libc/kernel/uapi/linux/udp.h
index 02e1373..3cd286b 100644
--- a/libc/kernel/uapi/linux/udp.h
+++ b/libc/kernel/uapi/linux/udp.h
@@ -29,9 +29,11 @@
 #define UDP_ENCAP 100
 #define UDP_NO_CHECK6_TX 101
 #define UDP_NO_CHECK6_RX 102
+#define UDP_SEGMENT 103
 #define UDP_ENCAP_ESPINUDP_NON_IKE 1
 #define UDP_ENCAP_ESPINUDP 2
 #define UDP_ENCAP_L2TPINUDP 3
 #define UDP_ENCAP_GTP0 4
 #define UDP_ENCAP_GTP1U 5
+#define UDP_ENCAP_RXRPC 6
 #endif
diff --git a/libc/kernel/uapi/linux/usb/audio.h b/libc/kernel/uapi/linux/usb/audio.h
index 87b8bd5..7d36157 100644
--- a/libc/kernel/uapi/linux/usb/audio.h
+++ b/libc/kernel/uapi/linux/usb/audio.h
@@ -154,6 +154,12 @@
 #define UAC_OUTPUT_TERMINAL_ROOM_SPEAKER 0x305
 #define UAC_OUTPUT_TERMINAL_COMMUNICATION_SPEAKER 0x306
 #define UAC_OUTPUT_TERMINAL_LOW_FREQ_EFFECTS_SPEAKER 0x307
+#define UAC_BIDIR_TERMINAL_UNDEFINED 0x400
+#define UAC_BIDIR_TERMINAL_HANDSET 0x401
+#define UAC_BIDIR_TERMINAL_HEADSET 0x402
+#define UAC_BIDIR_TERMINAL_SPEAKER_PHONE 0x403
+#define UAC_BIDIR_TERMINAL_ECHO_SUPPRESSING 0x404
+#define UAC_BIDIR_TERMINAL_ECHO_CANCELING 0x405
 #define UAC_DT_FEATURE_UNIT_SIZE(ch) (7 + ((ch) + 1) * 2)
 #define DECLARE_UAC_FEATURE_UNIT_DESCRIPTOR(ch) struct uac_feature_unit_descriptor_ ##ch { __u8 bLength; __u8 bDescriptorType; __u8 bDescriptorSubtype; __u8 bUnitID; __u8 bSourceID; __u8 bControlSize; __le16 bmaControls[ch + 1]; __u8 iFeature; \
 } __attribute__((packed))
diff --git a/libc/kernel/uapi/linux/usb/ch11.h b/libc/kernel/uapi/linux/usb/ch11.h
index e31c37b..55387fe 100644
--- a/libc/kernel/uapi/linux/usb/ch11.h
+++ b/libc/kernel/uapi/linux/usb/ch11.h
@@ -109,6 +109,8 @@
 #define USB_EXT_PORT_STAT_TX_SPEED_ID 0x000000f0
 #define USB_EXT_PORT_STAT_RX_LANES 0x00000f00
 #define USB_EXT_PORT_STAT_TX_LANES 0x0000f000
+#define USB_EXT_PORT_RX_LANES(p) (((p) & USB_EXT_PORT_STAT_RX_LANES) >> 8)
+#define USB_EXT_PORT_TX_LANES(p) (((p) & USB_EXT_PORT_STAT_TX_LANES) >> 12)
 #define HUB_CHAR_LPSM 0x0003
 #define HUB_CHAR_COMMON_LPSM 0x0000
 #define HUB_CHAR_INDV_PORT_LPSM 0x0001
diff --git a/libc/kernel/uapi/linux/usb/g_uvc.h b/libc/kernel/uapi/linux/usb/g_uvc.h
new file mode 100644
index 0000000..0aeba3d
--- /dev/null
+++ b/libc/kernel/uapi/linux/usb/g_uvc.h
@@ -0,0 +1,44 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef __LINUX_USB_G_UVC_H
+#define __LINUX_USB_G_UVC_H
+#include <linux/ioctl.h>
+#include <linux/types.h>
+#include <linux/usb/ch9.h>
+#define UVC_EVENT_FIRST (V4L2_EVENT_PRIVATE_START + 0)
+#define UVC_EVENT_CONNECT (V4L2_EVENT_PRIVATE_START + 0)
+#define UVC_EVENT_DISCONNECT (V4L2_EVENT_PRIVATE_START + 1)
+#define UVC_EVENT_STREAMON (V4L2_EVENT_PRIVATE_START + 2)
+#define UVC_EVENT_STREAMOFF (V4L2_EVENT_PRIVATE_START + 3)
+#define UVC_EVENT_SETUP (V4L2_EVENT_PRIVATE_START + 4)
+#define UVC_EVENT_DATA (V4L2_EVENT_PRIVATE_START + 5)
+#define UVC_EVENT_LAST (V4L2_EVENT_PRIVATE_START + 5)
+struct uvc_request_data {
+  __s32 length;
+  __u8 data[60];
+};
+struct uvc_event {
+  union {
+    enum usb_device_speed speed;
+    struct usb_ctrlrequest req;
+    struct uvc_request_data data;
+  };
+};
+#define UVCIOC_SEND_RESPONSE _IOW('U', 1, struct uvc_request_data)
+#endif
diff --git a/libc/kernel/uapi/linux/usb/tmc.h b/libc/kernel/uapi/linux/usb/tmc.h
index c93096e..6e276de 100644
--- a/libc/kernel/uapi/linux/usb/tmc.h
+++ b/libc/kernel/uapi/linux/usb/tmc.h
@@ -18,6 +18,7 @@
  ****************************************************************************/
 #ifndef __LINUX_USB_TMC_H
 #define __LINUX_USB_TMC_H
+#include <linux/types.h>
 #define USBTMC_STATUS_SUCCESS 0x01
 #define USBTMC_STATUS_PENDING 0x02
 #define USBTMC_STATUS_FAILED 0x80
@@ -36,6 +37,10 @@
 #define USBTMC488_REQUEST_REN_CONTROL 160
 #define USBTMC488_REQUEST_GOTO_LOCAL 161
 #define USBTMC488_REQUEST_LOCAL_LOCKOUT 162
+struct usbtmc_termchar {
+  __u8 term_char;
+  __u8 term_char_enabled;
+} __attribute__((packed));
 #define USBTMC_IOC_NR 91
 #define USBTMC_IOCTL_INDICATOR_PULSE _IO(USBTMC_IOC_NR, 1)
 #define USBTMC_IOCTL_CLEAR _IO(USBTMC_IOC_NR, 2)
@@ -43,11 +48,16 @@
 #define USBTMC_IOCTL_ABORT_BULK_IN _IO(USBTMC_IOC_NR, 4)
 #define USBTMC_IOCTL_CLEAR_OUT_HALT _IO(USBTMC_IOC_NR, 6)
 #define USBTMC_IOCTL_CLEAR_IN_HALT _IO(USBTMC_IOC_NR, 7)
+#define USBTMC_IOCTL_GET_TIMEOUT _IOR(USBTMC_IOC_NR, 9, __u32)
+#define USBTMC_IOCTL_SET_TIMEOUT _IOW(USBTMC_IOC_NR, 10, __u32)
+#define USBTMC_IOCTL_EOM_ENABLE _IOW(USBTMC_IOC_NR, 11, __u8)
+#define USBTMC_IOCTL_CONFIG_TERMCHAR _IOW(USBTMC_IOC_NR, 12, struct usbtmc_termchar)
 #define USBTMC488_IOCTL_GET_CAPS _IOR(USBTMC_IOC_NR, 17, unsigned char)
 #define USBTMC488_IOCTL_READ_STB _IOR(USBTMC_IOC_NR, 18, unsigned char)
 #define USBTMC488_IOCTL_REN_CONTROL _IOW(USBTMC_IOC_NR, 19, unsigned char)
 #define USBTMC488_IOCTL_GOTO_LOCAL _IO(USBTMC_IOC_NR, 20)
 #define USBTMC488_IOCTL_LOCAL_LOCKOUT _IO(USBTMC_IOC_NR, 21)
+#define USBTMC488_IOCTL_TRIGGER _IO(USBTMC_IOC_NR, 22)
 #define USBTMC488_CAPABILITY_TRIGGER 1
 #define USBTMC488_CAPABILITY_SIMPLE 2
 #define USBTMC488_CAPABILITY_REN_CONTROL 2
diff --git a/libc/kernel/uapi/linux/uvcvideo.h b/libc/kernel/uapi/linux/uvcvideo.h
index 7ae7aad..719147a 100644
--- a/libc/kernel/uapi/linux/uvcvideo.h
+++ b/libc/kernel/uapi/linux/uvcvideo.h
@@ -34,6 +34,7 @@
 #define UVC_CTRL_FLAG_GET_DEF (1 << 5)
 #define UVC_CTRL_FLAG_RESTORE (1 << 6)
 #define UVC_CTRL_FLAG_AUTO_UPDATE (1 << 7)
+#define UVC_CTRL_FLAG_ASYNCHRONOUS (1 << 8)
 #define UVC_CTRL_FLAG_GET_RANGE (UVC_CTRL_FLAG_GET_CUR | UVC_CTRL_FLAG_GET_MIN | UVC_CTRL_FLAG_GET_MAX | UVC_CTRL_FLAG_GET_RES | UVC_CTRL_FLAG_GET_DEF)
 struct uvc_menu_info {
   __u32 value;
diff --git a/libc/kernel/uapi/linux/v4l2-controls.h b/libc/kernel/uapi/linux/v4l2-controls.h
index 37e447e..45590a2 100644
--- a/libc/kernel/uapi/linux/v4l2-controls.h
+++ b/libc/kernel/uapi/linux/v4l2-controls.h
@@ -108,7 +108,7 @@
 #define V4L2_CID_USER_ADV7180_BASE (V4L2_CID_USER_BASE + 0x1070)
 #define V4L2_CID_USER_TC358743_BASE (V4L2_CID_USER_BASE + 0x1080)
 #define V4L2_CID_USER_MAX217X_BASE (V4L2_CID_USER_BASE + 0x1090)
-#define V4L2_CID_USER_IMX_BASE (V4L2_CID_USER_BASE + 0x1090)
+#define V4L2_CID_USER_IMX_BASE (V4L2_CID_USER_BASE + 0x10b0)
 #define V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900)
 #define V4L2_CID_MPEG_CLASS (V4L2_CTRL_CLASS_MPEG | 1)
 #define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_MPEG_BASE + 0)
@@ -489,7 +489,21 @@
 #define V4L2_CID_MPEG_VIDEO_VPX_MAX_QP (V4L2_CID_MPEG_BASE + 508)
 #define V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP (V4L2_CID_MPEG_BASE + 509)
 #define V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP (V4L2_CID_MPEG_BASE + 510)
-#define V4L2_CID_MPEG_VIDEO_VPX_PROFILE (V4L2_CID_MPEG_BASE + 511)
+#define V4L2_CID_MPEG_VIDEO_VP8_PROFILE (V4L2_CID_MPEG_BASE + 511)
+enum v4l2_mpeg_video_vp8_profile {
+  V4L2_MPEG_VIDEO_VP8_PROFILE_0 = 0,
+  V4L2_MPEG_VIDEO_VP8_PROFILE_1 = 1,
+  V4L2_MPEG_VIDEO_VP8_PROFILE_2 = 2,
+  V4L2_MPEG_VIDEO_VP8_PROFILE_3 = 3,
+};
+#define V4L2_CID_MPEG_VIDEO_VPX_PROFILE V4L2_CID_MPEG_VIDEO_VP8_PROFILE
+#define V4L2_CID_MPEG_VIDEO_VP9_PROFILE (V4L2_CID_MPEG_BASE + 512)
+enum v4l2_mpeg_video_vp9_profile {
+  V4L2_MPEG_VIDEO_VP9_PROFILE_0 = 0,
+  V4L2_MPEG_VIDEO_VP9_PROFILE_1 = 1,
+  V4L2_MPEG_VIDEO_VP9_PROFILE_2 = 2,
+  V4L2_MPEG_VIDEO_VP9_PROFILE_3 = 3,
+};
 #define V4L2_CID_MPEG_VIDEO_HEVC_MIN_QP (V4L2_CID_MPEG_BASE + 600)
 #define V4L2_CID_MPEG_VIDEO_HEVC_MAX_QP (V4L2_CID_MPEG_BASE + 601)
 #define V4L2_CID_MPEG_VIDEO_HEVC_I_FRAME_QP (V4L2_CID_MPEG_BASE + 602)
diff --git a/libc/kernel/uapi/linux/v4l2-subdev.h b/libc/kernel/uapi/linux/v4l2-subdev.h
index fd1764b..303d167 100644
--- a/libc/kernel/uapi/linux/v4l2-subdev.h
+++ b/libc/kernel/uapi/linux/v4l2-subdev.h
@@ -91,8 +91,12 @@
 #define VIDIOC_SUBDEV_S_CROP _IOWR('V', 60, struct v4l2_subdev_crop)
 #define VIDIOC_SUBDEV_G_SELECTION _IOWR('V', 61, struct v4l2_subdev_selection)
 #define VIDIOC_SUBDEV_S_SELECTION _IOWR('V', 62, struct v4l2_subdev_selection)
+#define VIDIOC_SUBDEV_G_STD _IOR('V', 23, v4l2_std_id)
+#define VIDIOC_SUBDEV_S_STD _IOW('V', 24, v4l2_std_id)
+#define VIDIOC_SUBDEV_ENUMSTD _IOWR('V', 25, struct v4l2_standard)
 #define VIDIOC_SUBDEV_G_EDID _IOWR('V', 40, struct v4l2_edid)
 #define VIDIOC_SUBDEV_S_EDID _IOWR('V', 41, struct v4l2_edid)
+#define VIDIOC_SUBDEV_QUERYSTD _IOR('V', 63, v4l2_std_id)
 #define VIDIOC_SUBDEV_S_DV_TIMINGS _IOWR('V', 87, struct v4l2_dv_timings)
 #define VIDIOC_SUBDEV_G_DV_TIMINGS _IOWR('V', 88, struct v4l2_dv_timings)
 #define VIDIOC_SUBDEV_ENUM_DV_TIMINGS _IOWR('V', 98, struct v4l2_enum_dv_timings)
diff --git a/libc/kernel/uapi/linux/version.h b/libc/kernel/uapi/linux/version.h
index 61f0c3d..a234744 100644
--- a/libc/kernel/uapi/linux/version.h
+++ b/libc/kernel/uapi/linux/version.h
@@ -16,5 +16,5 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#define LINUX_VERSION_CODE 266499
+#define LINUX_VERSION_CODE 267008
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
diff --git a/libc/kernel/uapi/linux/vhost.h b/libc/kernel/uapi/linux/vhost.h
index b6c1f9d..e802e02 100644
--- a/libc/kernel/uapi/linux/vhost.h
+++ b/libc/kernel/uapi/linux/vhost.h
@@ -55,6 +55,7 @@
   __u8 type;
 };
 #define VHOST_IOTLB_MSG 0x1
+#define VHOST_IOTLB_MSG_V2 0x2
 struct vhost_msg {
   int type;
   union {
@@ -62,6 +63,14 @@
     __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;
@@ -95,6 +104,9 @@
 #define VHOST_SET_VRING_ERR _IOW(VHOST_VIRTIO, 0x22, struct vhost_vring_file)
 #define VHOST_SET_VRING_BUSYLOOP_TIMEOUT _IOW(VHOST_VIRTIO, 0x23, struct vhost_vring_state)
 #define VHOST_GET_VRING_BUSYLOOP_TIMEOUT _IOW(VHOST_VIRTIO, 0x24, struct vhost_vring_state)
+#define VHOST_BACKEND_F_IOTLB_MSG_V2 0x1
+#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
diff --git a/libc/kernel/uapi/linux/videodev2.h b/libc/kernel/uapi/linux/videodev2.h
index 0569ba7..51faa1e 100644
--- a/libc/kernel/uapi/linux/videodev2.h
+++ b/libc/kernel/uapi/linux/videodev2.h
@@ -225,6 +225,7 @@
 #define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ')
 #define V4L2_PIX_FMT_Y16_BE v4l2_fourcc_be('Y', '1', '6', ' ')
 #define V4L2_PIX_FMT_Y10BPACK v4l2_fourcc('Y', '1', '0', 'B')
+#define V4L2_PIX_FMT_Y10P v4l2_fourcc('Y', '1', '0', 'P')
 #define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8')
 #define V4L2_PIX_FMT_UV8 v4l2_fourcc('U', 'V', '8', ' ')
 #define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V')
@@ -292,6 +293,10 @@
 #define V4L2_PIX_FMT_SGBRG12P v4l2_fourcc('p', 'G', 'C', 'C')
 #define V4L2_PIX_FMT_SGRBG12P v4l2_fourcc('p', 'g', 'C', 'C')
 #define V4L2_PIX_FMT_SRGGB12P v4l2_fourcc('p', 'R', 'C', 'C')
+#define V4L2_PIX_FMT_SBGGR14P v4l2_fourcc('p', 'B', 'E', 'E')
+#define V4L2_PIX_FMT_SGBRG14P v4l2_fourcc('p', 'G', 'E', 'E')
+#define V4L2_PIX_FMT_SGRBG14P v4l2_fourcc('p', 'g', 'E', 'E')
+#define V4L2_PIX_FMT_SRGGB14P v4l2_fourcc('p', 'R', 'E', 'E')
 #define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2')
 #define V4L2_PIX_FMT_SGBRG16 v4l2_fourcc('G', 'B', '1', '6')
 #define V4L2_PIX_FMT_SGRBG16 v4l2_fourcc('G', 'R', '1', '6')
@@ -315,6 +320,7 @@
 #define V4L2_PIX_FMT_VP8 v4l2_fourcc('V', 'P', '8', '0')
 #define V4L2_PIX_FMT_VP9 v4l2_fourcc('V', 'P', '9', '0')
 #define V4L2_PIX_FMT_HEVC v4l2_fourcc('H', 'E', 'V', 'C')
+#define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T')
 #define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A')
 #define V4L2_PIX_FMT_WNVA v4l2_fourcc('W', 'N', 'V', 'A')
 #define V4L2_PIX_FMT_SN9C10X v4l2_fourcc('S', '9', '1', '0')
@@ -1271,7 +1277,6 @@
   __u32 reserved[8];
 };
 #define VIDIOC_QUERYCAP _IOR('V', 0, struct v4l2_capability)
-#define VIDIOC_RESERVED _IO('V', 1)
 #define VIDIOC_ENUM_FMT _IOWR('V', 2, struct v4l2_fmtdesc)
 #define VIDIOC_G_FMT _IOWR('V', 4, struct v4l2_format)
 #define VIDIOC_S_FMT _IOWR('V', 5, struct v4l2_format)
diff --git a/libc/kernel/uapi/linux/virtio_config.h b/libc/kernel/uapi/linux/virtio_config.h
index 80a0b1b..ddf5e4e 100644
--- a/libc/kernel/uapi/linux/virtio_config.h
+++ b/libc/kernel/uapi/linux/virtio_config.h
@@ -26,11 +26,12 @@
 #define VIRTIO_CONFIG_S_NEEDS_RESET 0x40
 #define VIRTIO_CONFIG_S_FAILED 0x80
 #define VIRTIO_TRANSPORT_F_START 28
-#define VIRTIO_TRANSPORT_F_END 34
+#define VIRTIO_TRANSPORT_F_END 38
 #ifndef VIRTIO_CONFIG_NO_LEGACY
 #define VIRTIO_F_NOTIFY_ON_EMPTY 24
 #define VIRTIO_F_ANY_LAYOUT 27
 #endif
 #define VIRTIO_F_VERSION_1 32
 #define VIRTIO_F_IOMMU_PLATFORM 33
+#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 b43671f..60dbf71 100644
--- a/libc/kernel/uapi/linux/virtio_gpu.h
+++ b/libc/kernel/uapi/linux/virtio_gpu.h
@@ -185,6 +185,7 @@
   __le32 padding;
 };
 #define VIRTIO_GPU_CAPSET_VIRGL 1
+#define VIRTIO_GPU_CAPSET_VIRGL2 2
 struct virtio_gpu_get_capset_info {
   struct virtio_gpu_ctrl_hdr hdr;
   __le32 capset_index;
diff --git a/libc/kernel/uapi/linux/virtio_net.h b/libc/kernel/uapi/linux/virtio_net.h
index 329d736..07afd06 100644
--- a/libc/kernel/uapi/linux/virtio_net.h
+++ b/libc/kernel/uapi/linux/virtio_net.h
@@ -45,6 +45,7 @@
 #define VIRTIO_NET_F_GUEST_ANNOUNCE 21
 #define VIRTIO_NET_F_MQ 22
 #define VIRTIO_NET_F_CTRL_MAC_ADDR 23
+#define VIRTIO_NET_F_STANDBY 62
 #define VIRTIO_NET_F_SPEED_DUPLEX 63
 #ifndef VIRTIO_NET_NO_LEGACY
 #define VIRTIO_NET_F_GSO 6
diff --git a/libc/kernel/uapi/linux/ncp_no.h b/libc/kernel/uapi/linux/vmcore.h
similarity index 63%
copy from libc/kernel/uapi/linux/ncp_no.h
copy to libc/kernel/uapi/linux/vmcore.h
index fe5caa0..3fa7fee 100644
--- a/libc/kernel/uapi/linux/ncp_no.h
+++ b/libc/kernel/uapi/linux/vmcore.h
@@ -16,19 +16,16 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef _NCP_NO
-#define _NCP_NO
-#define aRONLY (__cpu_to_le32(1))
-#define aHIDDEN (__cpu_to_le32(2))
-#define aSYSTEM (__cpu_to_le32(4))
-#define aEXECUTE (__cpu_to_le32(8))
-#define aDIR (__cpu_to_le32(0x10))
-#define aARCH (__cpu_to_le32(0x20))
-#define aSHARED (__cpu_to_le32(0x80))
-#define aDONTSUBALLOCATE (__cpu_to_le32(1L << 11))
-#define aTRANSACTIONAL (__cpu_to_le32(1L << 12))
-#define aPURGE (__cpu_to_le32(1L << 16))
-#define aRENAMEINHIBIT (__cpu_to_le32(1L << 17))
-#define aDELETEINHIBIT (__cpu_to_le32(1L << 18))
-#define aDONTCOMPRESS (__cpu_to_le32(1L << 27))
+#ifndef _UAPI_VMCORE_H
+#define _UAPI_VMCORE_H
+#include <linux/types.h>
+#define VMCOREDD_NOTE_NAME "LINUX"
+#define VMCOREDD_MAX_NAME_BYTES 44
+struct vmcoredd_header {
+  __u32 n_namesz;
+  __u32 n_descsz;
+  __u32 n_type;
+  __u8 name[8];
+  __u8 dump_name[VMCOREDD_MAX_NAME_BYTES];
+};
 #endif
diff --git a/libc/kernel/uapi/linux/vsoc_shm.h b/libc/kernel/uapi/linux/vsoc_shm.h
new file mode 100644
index 0000000..467b89b
--- /dev/null
+++ b/libc/kernel/uapi/linux/vsoc_shm.h
@@ -0,0 +1,84 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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_VSOC_SHM_H
+#define _UAPI_LINUX_VSOC_SHM_H
+#include <linux/types.h>
+struct fd_scoped_permission {
+  __u32 begin_offset;
+  __u32 end_offset;
+  __u32 owner_offset;
+  __u32 owned_value;
+};
+#define VSOC_REGION_FREE ((__u32) 0)
+struct fd_scoped_permission_arg {
+  struct fd_scoped_permission perm;
+  __s32 managed_region_fd;
+};
+#define VSOC_NODE_FREE ((__u32) 0)
+struct vsoc_signal_table_layout {
+  __u32 num_nodes_lg2;
+  __u32 futex_uaddr_table_offset;
+  __u32 interrupt_signalled_offset;
+};
+#define VSOC_REGION_WHOLE ((__s32) 0)
+#define VSOC_DEVICE_NAME_SZ 16
+struct vsoc_device_region {
+  __u16 current_version;
+  __u16 min_compatible_version;
+  __u32 region_begin_offset;
+  __u32 region_end_offset;
+  __u32 offset_of_region_data;
+  struct vsoc_signal_table_layout guest_to_host_signal_table;
+  struct vsoc_signal_table_layout host_to_guest_signal_table;
+  char device_name[VSOC_DEVICE_NAME_SZ];
+  __u32 managed_by;
+};
+struct vsoc_shm_layout_descriptor {
+  __u16 major_version;
+  __u16 minor_version;
+  __u32 size;
+  __u32 region_count;
+  __u32 vsoc_region_desc_offset;
+};
+#define CURRENT_VSOC_LAYOUT_MAJOR_VERSION 2
+#define CURRENT_VSOC_LAYOUT_MINOR_VERSION 0
+#define VSOC_CREATE_FD_SCOPED_PERMISSION _IOW(0xF5, 0, struct fd_scoped_permission)
+#define VSOC_GET_FD_SCOPED_PERMISSION _IOR(0xF5, 1, struct fd_scoped_permission)
+#define VSOC_MAYBE_SEND_INTERRUPT_TO_HOST _IO(0xF5, 2)
+#define VSOC_WAIT_FOR_INCOMING_INTERRUPT _IO(0xF5, 3)
+#define VSOC_DESCRIBE_REGION _IOR(0xF5, 4, struct vsoc_device_region)
+#define VSOC_SELF_INTERRUPT _IO(0xF5, 5)
+#define VSOC_SEND_INTERRUPT_TO_HOST _IO(0xF5, 6)
+enum wait_types {
+  VSOC_WAIT_UNDEFINED = 0,
+  VSOC_WAIT_IF_EQUAL = 1,
+  VSOC_WAIT_IF_EQUAL_TIMEOUT = 2
+};
+struct vsoc_cond_wait {
+  __u32 offset;
+  __u32 value;
+  __u64 wake_time_sec;
+  __u32 wake_time_nsec;
+  __u32 wait_type;
+  __u32 wakes;
+  __u32 reserved_1;
+};
+#define VSOC_COND_WAIT _IOWR(0xF5, 7, struct vsoc_cond_wait)
+#define VSOC_COND_WAKE _IO(0xF5, 8)
+#endif
diff --git a/libc/kernel/uapi/linux/xfrm.h b/libc/kernel/uapi/linux/xfrm.h
index 5ec7193..ea0ef5e 100644
--- a/libc/kernel/uapi/linux/xfrm.h
+++ b/libc/kernel/uapi/linux/xfrm.h
@@ -258,8 +258,11 @@
   XFRMA_ADDRESS_FILTER,
   XFRMA_PAD,
   XFRMA_OFFLOAD_DEV,
-  XFRMA_OUTPUT_MARK,
+  XFRMA_SET_MARK,
+  XFRMA_SET_MARK_MASK,
+  XFRMA_IF_ID,
   __XFRMA_MAX
+#define XFRMA_OUTPUT_MARK XFRMA_SET_MARK
 #define XFRMA_MAX (__XFRMA_MAX - 1)
 };
 struct xfrm_mark {