Update to v4.17.3 kernel headers.

Test: Builds, boots on a walleye.
Change-Id: I389d8b61ec00ea309e38d1b1a2e0dace48c21edb
diff --git a/libc/kernel/uapi/linux/arm_sdei.h b/libc/kernel/uapi/linux/arm_sdei.h
new file mode 100644
index 0000000..4ec9294
--- /dev/null
+++ b/libc/kernel/uapi/linux/arm_sdei.h
@@ -0,0 +1,72 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _UAPI_LINUX_ARM_SDEI_H
+#define _UAPI_LINUX_ARM_SDEI_H
+#define SDEI_1_0_FN_BASE 0xC4000020
+#define SDEI_1_0_MASK 0xFFFFFFE0
+#define SDEI_1_0_FN(n) (SDEI_1_0_FN_BASE + (n))
+#define SDEI_1_0_FN_SDEI_VERSION SDEI_1_0_FN(0x00)
+#define SDEI_1_0_FN_SDEI_EVENT_REGISTER SDEI_1_0_FN(0x01)
+#define SDEI_1_0_FN_SDEI_EVENT_ENABLE SDEI_1_0_FN(0x02)
+#define SDEI_1_0_FN_SDEI_EVENT_DISABLE SDEI_1_0_FN(0x03)
+#define SDEI_1_0_FN_SDEI_EVENT_CONTEXT SDEI_1_0_FN(0x04)
+#define SDEI_1_0_FN_SDEI_EVENT_COMPLETE SDEI_1_0_FN(0x05)
+#define SDEI_1_0_FN_SDEI_EVENT_COMPLETE_AND_RESUME SDEI_1_0_FN(0x06)
+#define SDEI_1_0_FN_SDEI_EVENT_UNREGISTER SDEI_1_0_FN(0x07)
+#define SDEI_1_0_FN_SDEI_EVENT_STATUS SDEI_1_0_FN(0x08)
+#define SDEI_1_0_FN_SDEI_EVENT_GET_INFO SDEI_1_0_FN(0x09)
+#define SDEI_1_0_FN_SDEI_EVENT_ROUTING_SET SDEI_1_0_FN(0x0A)
+#define SDEI_1_0_FN_SDEI_PE_MASK SDEI_1_0_FN(0x0B)
+#define SDEI_1_0_FN_SDEI_PE_UNMASK SDEI_1_0_FN(0x0C)
+#define SDEI_1_0_FN_SDEI_INTERRUPT_BIND SDEI_1_0_FN(0x0D)
+#define SDEI_1_0_FN_SDEI_INTERRUPT_RELEASE SDEI_1_0_FN(0x0E)
+#define SDEI_1_0_FN_SDEI_PRIVATE_RESET SDEI_1_0_FN(0x11)
+#define SDEI_1_0_FN_SDEI_SHARED_RESET SDEI_1_0_FN(0x12)
+#define SDEI_VERSION_MAJOR_SHIFT 48
+#define SDEI_VERSION_MAJOR_MASK 0x7fff
+#define SDEI_VERSION_MINOR_SHIFT 32
+#define SDEI_VERSION_MINOR_MASK 0xffff
+#define SDEI_VERSION_VENDOR_SHIFT 0
+#define SDEI_VERSION_VENDOR_MASK 0xffffffff
+#define SDEI_VERSION_MAJOR(x) (x >> SDEI_VERSION_MAJOR_SHIFT & SDEI_VERSION_MAJOR_MASK)
+#define SDEI_VERSION_MINOR(x) (x >> SDEI_VERSION_MINOR_SHIFT & SDEI_VERSION_MINOR_MASK)
+#define SDEI_VERSION_VENDOR(x) (x >> SDEI_VERSION_VENDOR_SHIFT & SDEI_VERSION_VENDOR_MASK)
+#define SDEI_SUCCESS 0
+#define SDEI_NOT_SUPPORTED - 1
+#define SDEI_INVALID_PARAMETERS - 2
+#define SDEI_DENIED - 3
+#define SDEI_PENDING - 5
+#define SDEI_OUT_OF_RESOURCE - 10
+#define SDEI_EVENT_REGISTER_RM_ANY 0
+#define SDEI_EVENT_REGISTER_RM_PE 1
+#define SDEI_EVENT_STATUS_RUNNING 2
+#define SDEI_EVENT_STATUS_ENABLED 1
+#define SDEI_EVENT_STATUS_REGISTERED 0
+#define SDEI_EV_HANDLED 0
+#define SDEI_EV_FAILED 1
+#define SDEI_EVENT_INFO_EV_TYPE 0
+#define SDEI_EVENT_INFO_EV_SIGNALED 1
+#define SDEI_EVENT_INFO_EV_PRIORITY 2
+#define SDEI_EVENT_INFO_EV_ROUTING_MODE 3
+#define SDEI_EVENT_INFO_EV_ROUTING_AFF 4
+#define SDEI_EVENT_TYPE_PRIVATE 0
+#define SDEI_EVENT_TYPE_SHARED 1
+#define SDEI_EVENT_PRIORITY_NORMAL 0
+#define SDEI_EVENT_PRIORITY_CRITICAL 1
+#endif
diff --git a/libc/kernel/uapi/linux/batadv_packet.h b/libc/kernel/uapi/linux/batadv_packet.h
new file mode 100644
index 0000000..6d5226c
--- /dev/null
+++ b/libc/kernel/uapi/linux/batadv_packet.h
@@ -0,0 +1,280 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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_BATADV_PACKET_H_
+#define _UAPI_LINUX_BATADV_PACKET_H_
+#include <asm/byteorder.h>
+#include <linux/if_ether.h>
+#include <linux/types.h>
+#define batadv_tp_is_error(n) ((__u8) (n) > 127 ? 1 : 0)
+enum batadv_packettype {
+  BATADV_IV_OGM = 0x00,
+  BATADV_BCAST = 0x01,
+  BATADV_CODED = 0x02,
+  BATADV_ELP = 0x03,
+  BATADV_OGM2 = 0x04,
+#define BATADV_UNICAST_MIN 0x40
+  BATADV_UNICAST = 0x40,
+  BATADV_UNICAST_FRAG = 0x41,
+  BATADV_UNICAST_4ADDR = 0x42,
+  BATADV_ICMP = 0x43,
+  BATADV_UNICAST_TVLV = 0x44,
+#define BATADV_UNICAST_MAX 0x7f
+};
+enum batadv_subtype {
+  BATADV_P_DATA = 0x01,
+  BATADV_P_DAT_DHT_GET = 0x02,
+  BATADV_P_DAT_DHT_PUT = 0x03,
+  BATADV_P_DAT_CACHE_REPLY = 0x04,
+};
+#define BATADV_COMPAT_VERSION 15
+enum batadv_iv_flags {
+  BATADV_NOT_BEST_NEXT_HOP = 1UL << 0,
+  BATADV_PRIMARIES_FIRST_HOP = 1UL << 1,
+  BATADV_DIRECTLINK = 1UL << 2,
+};
+enum batadv_icmp_packettype {
+  BATADV_ECHO_REPLY = 0,
+  BATADV_DESTINATION_UNREACHABLE = 3,
+  BATADV_ECHO_REQUEST = 8,
+  BATADV_TTL_EXCEEDED = 11,
+  BATADV_PARAMETER_PROBLEM = 12,
+  BATADV_TP = 15,
+};
+enum batadv_mcast_flags {
+  BATADV_MCAST_WANT_ALL_UNSNOOPABLES = 1UL << 0,
+  BATADV_MCAST_WANT_ALL_IPV4 = 1UL << 1,
+  BATADV_MCAST_WANT_ALL_IPV6 = 1UL << 2,
+};
+#define BATADV_TT_DATA_TYPE_MASK 0x0F
+enum batadv_tt_data_flags {
+  BATADV_TT_OGM_DIFF = 1UL << 0,
+  BATADV_TT_REQUEST = 1UL << 1,
+  BATADV_TT_RESPONSE = 1UL << 2,
+  BATADV_TT_FULL_TABLE = 1UL << 4,
+};
+enum batadv_vlan_flags {
+  BATADV_VLAN_HAS_TAG = 1UL << 15,
+};
+enum batadv_bla_claimframe {
+  BATADV_CLAIM_TYPE_CLAIM = 0x00,
+  BATADV_CLAIM_TYPE_UNCLAIM = 0x01,
+  BATADV_CLAIM_TYPE_ANNOUNCE = 0x02,
+  BATADV_CLAIM_TYPE_REQUEST = 0x03,
+  BATADV_CLAIM_TYPE_LOOPDETECT = 0x04,
+};
+enum batadv_tvlv_type {
+  BATADV_TVLV_GW = 0x01,
+  BATADV_TVLV_DAT = 0x02,
+  BATADV_TVLV_NC = 0x03,
+  BATADV_TVLV_TT = 0x04,
+  BATADV_TVLV_ROAM = 0x05,
+  BATADV_TVLV_MCAST = 0x06,
+};
+#pragma pack(2)
+struct batadv_bla_claim_dst {
+  __u8 magic[3];
+  __u8 type;
+  __be16 group;
+};
+struct batadv_ogm_packet {
+  __u8 packet_type;
+  __u8 version;
+  __u8 ttl;
+  __u8 flags;
+  __be32 seqno;
+  __u8 orig[ETH_ALEN];
+  __u8 prev_sender[ETH_ALEN];
+  __u8 reserved;
+  __u8 tq;
+  __be16 tvlv_len;
+};
+#define BATADV_OGM_HLEN sizeof(struct batadv_ogm_packet)
+struct batadv_ogm2_packet {
+  __u8 packet_type;
+  __u8 version;
+  __u8 ttl;
+  __u8 flags;
+  __be32 seqno;
+  __u8 orig[ETH_ALEN];
+  __be16 tvlv_len;
+  __be32 throughput;
+};
+#define BATADV_OGM2_HLEN sizeof(struct batadv_ogm2_packet)
+struct batadv_elp_packet {
+  __u8 packet_type;
+  __u8 version;
+  __u8 orig[ETH_ALEN];
+  __be32 seqno;
+  __be32 elp_interval;
+};
+#define BATADV_ELP_HLEN sizeof(struct batadv_elp_packet)
+struct batadv_icmp_header {
+  __u8 packet_type;
+  __u8 version;
+  __u8 ttl;
+  __u8 msg_type;
+  __u8 dst[ETH_ALEN];
+  __u8 orig[ETH_ALEN];
+  __u8 uid;
+  __u8 align[3];
+};
+struct batadv_icmp_packet {
+  __u8 packet_type;
+  __u8 version;
+  __u8 ttl;
+  __u8 msg_type;
+  __u8 dst[ETH_ALEN];
+  __u8 orig[ETH_ALEN];
+  __u8 uid;
+  __u8 reserved;
+  __be16 seqno;
+};
+struct batadv_icmp_tp_packet {
+  __u8 packet_type;
+  __u8 version;
+  __u8 ttl;
+  __u8 msg_type;
+  __u8 dst[ETH_ALEN];
+  __u8 orig[ETH_ALEN];
+  __u8 uid;
+  __u8 subtype;
+  __u8 session[2];
+  __be32 seqno;
+  __be32 timestamp;
+};
+enum batadv_icmp_tp_subtype {
+  BATADV_TP_MSG = 0,
+  BATADV_TP_ACK,
+};
+#define BATADV_RR_LEN 16
+struct batadv_icmp_packet_rr {
+  __u8 packet_type;
+  __u8 version;
+  __u8 ttl;
+  __u8 msg_type;
+  __u8 dst[ETH_ALEN];
+  __u8 orig[ETH_ALEN];
+  __u8 uid;
+  __u8 rr_cur;
+  __be16 seqno;
+  __u8 rr[BATADV_RR_LEN][ETH_ALEN];
+};
+#define BATADV_ICMP_MAX_PACKET_SIZE sizeof(struct batadv_icmp_packet_rr)
+struct batadv_unicast_packet {
+  __u8 packet_type;
+  __u8 version;
+  __u8 ttl;
+  __u8 ttvn;
+  __u8 dest[ETH_ALEN];
+};
+struct batadv_unicast_4addr_packet {
+  struct batadv_unicast_packet u;
+  __u8 src[ETH_ALEN];
+  __u8 subtype;
+  __u8 reserved;
+};
+struct batadv_frag_packet {
+  __u8 packet_type;
+  __u8 version;
+  __u8 ttl;
+#ifdef __BIG_ENDIAN_BITFIELD
+  __u8 no : 4;
+  __u8 priority : 3;
+  __u8 reserved : 1;
+#elif defined(__LITTLE_ENDIAN_BITFIELD)
+  __u8 reserved : 1;
+  __u8 priority : 3;
+  __u8 no : 4;
+#else
+#error "unknown bitfield endianness"
+#endif
+  __u8 dest[ETH_ALEN];
+  __u8 orig[ETH_ALEN];
+  __be16 seqno;
+  __be16 total_size;
+};
+struct batadv_bcast_packet {
+  __u8 packet_type;
+  __u8 version;
+  __u8 ttl;
+  __u8 reserved;
+  __be32 seqno;
+  __u8 orig[ETH_ALEN];
+};
+struct batadv_coded_packet {
+  __u8 packet_type;
+  __u8 version;
+  __u8 ttl;
+  __u8 first_ttvn;
+  __u8 first_source[ETH_ALEN];
+  __u8 first_orig_dest[ETH_ALEN];
+  __be32 first_crc;
+  __u8 second_ttl;
+  __u8 second_ttvn;
+  __u8 second_dest[ETH_ALEN];
+  __u8 second_source[ETH_ALEN];
+  __u8 second_orig_dest[ETH_ALEN];
+  __be32 second_crc;
+  __be16 coded_len;
+};
+struct batadv_unicast_tvlv_packet {
+  __u8 packet_type;
+  __u8 version;
+  __u8 ttl;
+  __u8 reserved;
+  __u8 dst[ETH_ALEN];
+  __u8 src[ETH_ALEN];
+  __be16 tvlv_len;
+  __u16 align;
+};
+struct batadv_tvlv_hdr {
+  __u8 type;
+  __u8 version;
+  __be16 len;
+};
+struct batadv_tvlv_gateway_data {
+  __be32 bandwidth_down;
+  __be32 bandwidth_up;
+};
+struct batadv_tvlv_tt_data {
+  __u8 flags;
+  __u8 ttvn;
+  __be16 num_vlan;
+};
+struct batadv_tvlv_tt_vlan_data {
+  __be32 crc;
+  __be16 vid;
+  __u16 reserved;
+};
+struct batadv_tvlv_tt_change {
+  __u8 flags;
+  __u8 reserved[3];
+  __u8 addr[ETH_ALEN];
+  __be16 vid;
+};
+struct batadv_tvlv_roam_adv {
+  __u8 client[ETH_ALEN];
+  __be16 vid;
+};
+struct batadv_tvlv_mcast_data {
+  __u8 flags;
+  __u8 reserved[3];
+};
+#pragma pack()
+#endif
diff --git a/libc/kernel/uapi/linux/batman_adv.h b/libc/kernel/uapi/linux/batman_adv.h
index 65568f9..efec2bb 100644
--- a/libc/kernel/uapi/linux/batman_adv.h
+++ b/libc/kernel/uapi/linux/batman_adv.h
@@ -30,6 +30,13 @@
   BATADV_TT_CLIENT_PENDING = (1 << 10),
   BATADV_TT_CLIENT_TEMP = (1 << 11),
 };
+enum batadv_mcast_flags_priv {
+  BATADV_MCAST_FLAGS_BRIDGED = (1 << 0),
+  BATADV_MCAST_FLAGS_QUERIER_IPV4_EXISTS = (1 << 1),
+  BATADV_MCAST_FLAGS_QUERIER_IPV6_EXISTS = (1 << 2),
+  BATADV_MCAST_FLAGS_QUERIER_IPV4_SHADOWING = (1 << 3),
+  BATADV_MCAST_FLAGS_QUERIER_IPV6_SHADOWING = (1 << 4),
+};
 enum batadv_nl_attrs {
   BATADV_ATTR_UNSPEC,
   BATADV_ATTR_VERSION,
@@ -66,6 +73,11 @@
   BATADV_ATTR_BLA_VID,
   BATADV_ATTR_BLA_BACKBONE,
   BATADV_ATTR_BLA_CRC,
+  BATADV_ATTR_DAT_CACHE_IP4ADDRESS,
+  BATADV_ATTR_DAT_CACHE_HWADDRESS,
+  BATADV_ATTR_DAT_CACHE_VID,
+  BATADV_ATTR_MCAST_FLAGS,
+  BATADV_ATTR_MCAST_FLAGS_PRIV,
   __BATADV_ATTR_AFTER_LAST,
   NUM_BATADV_ATTR = __BATADV_ATTR_AFTER_LAST,
   BATADV_ATTR_MAX = __BATADV_ATTR_AFTER_LAST - 1
@@ -84,6 +96,8 @@
   BATADV_CMD_GET_GATEWAYS,
   BATADV_CMD_GET_BLA_CLAIM,
   BATADV_CMD_GET_BLA_BACKBONE,
+  BATADV_CMD_GET_DAT_CACHE,
+  BATADV_CMD_GET_MCAST_FLAGS,
   __BATADV_CMD_AFTER_LAST,
   BATADV_CMD_MAX = __BATADV_CMD_AFTER_LAST - 1
 };
diff --git a/libc/kernel/uapi/linux/bpf.h b/libc/kernel/uapi/linux/bpf.h
index 9ac0729..0eb0d45 100644
--- a/libc/kernel/uapi/linux/bpf.h
+++ b/libc/kernel/uapi/linux/bpf.h
@@ -83,6 +83,7 @@
   BPF_MAP_GET_FD_BY_ID,
   BPF_OBJ_GET_INFO_BY_FD,
   BPF_PROG_QUERY,
+  BPF_RAW_TRACEPOINT_OPEN,
 };
 enum bpf_map_type {
   BPF_MAP_TYPE_UNSPEC,
@@ -120,6 +121,9 @@
   BPF_PROG_TYPE_SOCK_OPS,
   BPF_PROG_TYPE_SK_SKB,
   BPF_PROG_TYPE_CGROUP_DEVICE,
+  BPF_PROG_TYPE_SK_MSG,
+  BPF_PROG_TYPE_RAW_TRACEPOINT,
+  BPF_PROG_TYPE_CGROUP_SOCK_ADDR,
 };
 enum bpf_attach_type {
   BPF_CGROUP_INET_INGRESS,
@@ -129,6 +133,13 @@
   BPF_SK_SKB_STREAM_PARSER,
   BPF_SK_SKB_STREAM_VERDICT,
   BPF_CGROUP_DEVICE,
+  BPF_SK_MSG_VERDICT,
+  BPF_CGROUP_INET4_BIND,
+  BPF_CGROUP_INET6_BIND,
+  BPF_CGROUP_INET4_CONNECT,
+  BPF_CGROUP_INET6_CONNECT,
+  BPF_CGROUP_INET4_POST_BIND,
+  BPF_CGROUP_INET6_POST_BIND,
   __MAX_BPF_ATTACH_TYPE
 };
 #define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
@@ -136,6 +147,7 @@
 #define BPF_F_ALLOW_MULTI (1U << 1)
 #define BPF_F_STRICT_ALIGNMENT (1U << 0)
 #define BPF_PSEUDO_MAP_FD 1
+#define BPF_PSEUDO_CALL 1
 #define BPF_ANY 0
 #define BPF_NOEXIST 1
 #define BPF_EXIST 2
@@ -146,6 +158,21 @@
 #define BPF_OBJ_NAME_LEN 16U
 #define BPF_F_RDONLY (1U << 3)
 #define BPF_F_WRONLY (1U << 4)
+#define BPF_F_STACK_BUILD_ID (1U << 5)
+enum bpf_stack_build_id_status {
+  BPF_STACK_BUILD_ID_EMPTY = 0,
+  BPF_STACK_BUILD_ID_VALID = 1,
+  BPF_STACK_BUILD_ID_IP = 2,
+};
+#define BPF_BUILD_ID_SIZE 20
+struct bpf_stack_build_id {
+  __s32 status;
+  unsigned char build_id[BPF_BUILD_ID_SIZE];
+  union {
+    __u64 offset;
+    __u64 ip;
+  };
+};
 union bpf_attr {
   struct {
     __u32 map_type;
@@ -156,6 +183,7 @@
     __u32 inner_map_fd;
     __u32 numa_node;
     char map_name[BPF_OBJ_NAME_LEN];
+    __u32 map_ifindex;
   };
   struct {
     __u32 map_fd;
@@ -178,6 +206,7 @@
     __u32 prog_flags;
     char prog_name[BPF_OBJ_NAME_LEN];
     __u32 prog_ifindex;
+    __u32 expected_attach_type;
   };
   struct {
     __aligned_u64 pathname;
@@ -222,8 +251,12 @@
     __aligned_u64 prog_ids;
     __u32 prog_cnt;
   } query;
+  struct {
+    __u64 name;
+    __u32 prog_fd;
+  } raw_tracepoint;
 } __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),
+#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_ENUM_FN(x) BPF_FUNC_ ##x
 enum bpf_func_id {
   __BPF_FUNC_MAPPER(__BPF_ENUM_FN) __BPF_FUNC_MAX_ID,
@@ -243,6 +276,7 @@
 #define BPF_F_REUSE_STACKID (1ULL << 10)
 #define BPF_F_ZERO_CSUM_TX (1ULL << 1)
 #define BPF_F_DONT_FRAGMENT (1ULL << 2)
+#define BPF_F_SEQ_NUMBER (1ULL << 3)
 #define BPF_F_INDEX_MASK 0xffffffffULL
 #define BPF_F_CURRENT_CPU BPF_F_INDEX_MASK
 #define BPF_F_CTXLEN_MASK (0xfffffULL << 32)
@@ -300,6 +334,9 @@
   __u32 protocol;
   __u32 mark;
   __u32 priority;
+  __u32 src_ip4;
+  __u32 src_ip6[4];
+  __u32 src_port;
 };
 #define XDP_PACKET_HEADROOM 256
 enum xdp_action {
@@ -313,11 +350,17 @@
   __u32 data;
   __u32 data_end;
   __u32 data_meta;
+  __u32 ingress_ifindex;
+  __u32 rx_queue_index;
 };
 enum sk_action {
   SK_DROP = 0,
   SK_PASS,
 };
+struct sk_msg_md {
+  void * data;
+  void * data_end;
+};
 #define BPF_TAG_SIZE 8
 struct bpf_prog_info {
   __u32 type;
@@ -332,6 +375,10 @@
   __u32 nr_map_ids;
   __aligned_u64 map_ids;
   char name[BPF_OBJ_NAME_LEN];
+  __u32 ifindex;
+  __u32 : 32;
+  __u64 netns_dev;
+  __u64 netns_ino;
 } __attribute__((aligned(8)));
 struct bpf_map_info {
   __u32 type;
@@ -341,10 +388,24 @@
   __u32 max_entries;
   __u32 map_flags;
   char name[BPF_OBJ_NAME_LEN];
+  __u32 ifindex;
+  __u32 : 32;
+  __u64 netns_dev;
+  __u64 netns_ino;
 } __attribute__((aligned(8)));
+struct bpf_sock_addr {
+  __u32 user_family;
+  __u32 user_ip4;
+  __u32 user_ip6[4];
+  __u32 user_port;
+  __u32 family;
+  __u32 type;
+  __u32 protocol;
+};
 struct bpf_sock_ops {
   __u32 op;
   union {
+    __u32 args[4];
     __u32 reply;
     __u32 replylong[4];
   };
@@ -355,7 +416,37 @@
   __u32 local_ip6[4];
   __u32 remote_port;
   __u32 local_port;
+  __u32 is_fullsock;
+  __u32 snd_cwnd;
+  __u32 srtt_us;
+  __u32 bpf_sock_ops_cb_flags;
+  __u32 state;
+  __u32 rtt_min;
+  __u32 snd_ssthresh;
+  __u32 rcv_nxt;
+  __u32 snd_nxt;
+  __u32 snd_una;
+  __u32 mss_cache;
+  __u32 ecn_flags;
+  __u32 rate_delivered;
+  __u32 rate_interval_us;
+  __u32 packets_out;
+  __u32 retrans_out;
+  __u32 total_retrans;
+  __u32 segs_in;
+  __u32 data_segs_in;
+  __u32 segs_out;
+  __u32 data_segs_out;
+  __u32 lost_out;
+  __u32 sacked_out;
+  __u32 sk_txhash;
+  __u64 bytes_received;
+  __u64 bytes_acked;
 };
+#define BPF_SOCK_OPS_RTO_CB_FLAG (1 << 0)
+#define BPF_SOCK_OPS_RETRANS_CB_FLAG (1 << 1)
+#define BPF_SOCK_OPS_STATE_CB_FLAG (1 << 2)
+#define BPF_SOCK_OPS_ALL_CB_FLAGS 0x7
 enum {
   BPF_SOCK_OPS_VOID,
   BPF_SOCK_OPS_TIMEOUT_INIT,
@@ -365,6 +456,24 @@
   BPF_SOCK_OPS_PASSIVE_ESTABLISHED_CB,
   BPF_SOCK_OPS_NEEDS_ECN,
   BPF_SOCK_OPS_BASE_RTT,
+  BPF_SOCK_OPS_RTO_CB,
+  BPF_SOCK_OPS_RETRANS_CB,
+  BPF_SOCK_OPS_STATE_CB,
+};
+enum {
+  BPF_TCP_ESTABLISHED = 1,
+  BPF_TCP_SYN_SENT,
+  BPF_TCP_SYN_RECV,
+  BPF_TCP_FIN_WAIT1,
+  BPF_TCP_FIN_WAIT2,
+  BPF_TCP_TIME_WAIT,
+  BPF_TCP_CLOSE,
+  BPF_TCP_CLOSE_WAIT,
+  BPF_TCP_LAST_ACK,
+  BPF_TCP_LISTEN,
+  BPF_TCP_CLOSING,
+  BPF_TCP_NEW_SYN_RECV,
+  BPF_TCP_MAX_STATES
 };
 #define TCP_BPF_IW 1001
 #define TCP_BPF_SNDCWND_CLAMP 1002
@@ -383,4 +492,7 @@
   __u32 major;
   __u32 minor;
 };
+struct bpf_raw_tracepoint_args {
+  __u64 args[0];
+};
 #endif
diff --git a/libc/kernel/uapi/linux/bpf_perf_event.h b/libc/kernel/uapi/linux/bpf_perf_event.h
index 7a8d212..190b916 100644
--- a/libc/kernel/uapi/linux/bpf_perf_event.h
+++ b/libc/kernel/uapi/linux/bpf_perf_event.h
@@ -22,5 +22,6 @@
 struct bpf_perf_event_data {
   bpf_user_pt_regs_t regs;
   __u64 sample_period;
+  __u64 addr;
 };
 #endif
diff --git a/libc/kernel/uapi/linux/btrfs.h b/libc/kernel/uapi/linux/btrfs.h
index aa7c105..a162bb0 100644
--- a/libc/kernel/uapi/linux/btrfs.h
+++ b/libc/kernel/uapi/linux/btrfs.h
@@ -29,6 +29,10 @@
   char name[BTRFS_PATH_NAME_MAX + 1];
 };
 #define BTRFS_DEVICE_PATH_NAME_MAX 1024
+#define BTRFS_SUBVOL_NAME_MAX 4039
+#define BTRFS_SUBVOL_CREATE_ASYNC (1ULL << 0)
+#define BTRFS_SUBVOL_RDONLY (1ULL << 1)
+#define BTRFS_SUBVOL_QGROUP_INHERIT (1ULL << 2)
 #define BTRFS_DEVICE_SPEC_BY_ID (1ULL << 3)
 #define BTRFS_VOL_ARG_V2_FLAGS_SUPPORTED (BTRFS_SUBVOL_CREATE_ASYNC | BTRFS_SUBVOL_RDONLY | BTRFS_SUBVOL_QGROUP_INHERIT | BTRFS_DEVICE_SPEC_BY_ID)
 #define BTRFS_FSID_SIZE 16
@@ -60,10 +64,6 @@
   __u64 qgroupid;
   struct btrfs_qgroup_limit lim;
 };
-#define BTRFS_SUBVOL_CREATE_ASYNC (1ULL << 0)
-#define BTRFS_SUBVOL_RDONLY (1ULL << 1)
-#define BTRFS_SUBVOL_QGROUP_INHERIT (1ULL << 2)
-#define BTRFS_SUBVOL_NAME_MAX 4039
 struct btrfs_ioctl_vol_args_v2 {
   __s64 fd;
   __u64 transid;
diff --git a/libc/kernel/uapi/linux/btrfs_tree.h b/libc/kernel/uapi/linux/btrfs_tree.h
index c2fbd40..6a461ec 100644
--- a/libc/kernel/uapi/linux/btrfs_tree.h
+++ b/libc/kernel/uapi/linux/btrfs_tree.h
@@ -164,6 +164,8 @@
 #define BTRFS_SUPER_FLAG_ERROR (1ULL << 2)
 #define BTRFS_SUPER_FLAG_SEEDING (1ULL << 32)
 #define BTRFS_SUPER_FLAG_METADUMP (1ULL << 33)
+#define BTRFS_SUPER_FLAG_METADUMP_V2 (1ULL << 34)
+#define BTRFS_SUPER_FLAG_CHANGING_FSID (1ULL << 35)
 struct btrfs_extent_item {
   __le64 refs;
   __le64 generation;
diff --git a/libc/kernel/uapi/linux/can/netlink.h b/libc/kernel/uapi/linux/can/netlink.h
index 7df626d..ddf9058 100644
--- a/libc/kernel/uapi/linux/can/netlink.h
+++ b/libc/kernel/uapi/linux/can/netlink.h
@@ -92,6 +92,7 @@
   IFLA_CAN_TERMINATION_CONST,
   IFLA_CAN_BITRATE_CONST,
   IFLA_CAN_DATA_BITRATE_CONST,
+  IFLA_CAN_BITRATE_MAX,
   __IFLA_CAN_MAX
 };
 #define IFLA_CAN_MAX (__IFLA_CAN_MAX - 1)
diff --git a/libc/kernel/uapi/linux/const.h b/libc/kernel/uapi/linux/const.h
index 82b8bcd..6a4c1f7 100644
--- a/libc/kernel/uapi/linux/const.h
+++ b/libc/kernel/uapi/linux/const.h
@@ -16,8 +16,8 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#ifndef _LINUX_CONST_H
-#define _LINUX_CONST_H
+#ifndef _UAPI_LINUX_CONST_H
+#define _UAPI_LINUX_CONST_H
 #ifdef __ASSEMBLY__
 #define _AC(X,Y) X
 #define _AT(T,X) X
@@ -26,6 +26,8 @@
 #define _AC(X,Y) __AC(X, Y)
 #define _AT(T,X) ((T) (X))
 #endif
-#define _BITUL(x) (_AC(1, UL) << (x))
-#define _BITULL(x) (_AC(1, ULL) << (x))
+#define _UL(x) (_AC(x, UL))
+#define _ULL(x) (_AC(x, ULL))
+#define _BITUL(x) (_UL(1) << (x))
+#define _BITULL(x) (_ULL(1) << (x))
 #endif
diff --git a/libc/kernel/uapi/linux/devlink.h b/libc/kernel/uapi/linux/devlink.h
index 1d5c43c..07c5752 100644
--- a/libc/kernel/uapi/linux/devlink.h
+++ b/libc/kernel/uapi/linux/devlink.h
@@ -59,6 +59,9 @@
   DEVLINK_CMD_DPIPE_ENTRIES_GET,
   DEVLINK_CMD_DPIPE_HEADERS_GET,
   DEVLINK_CMD_DPIPE_TABLE_COUNTERS_SET,
+  DEVLINK_CMD_RESOURCE_SET,
+  DEVLINK_CMD_RESOURCE_DUMP,
+  DEVLINK_CMD_RELOAD,
   __DEVLINK_CMD_MAX,
   DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1
 };
@@ -155,6 +158,20 @@
   DEVLINK_ATTR_DPIPE_FIELD_MAPPING_TYPE,
   DEVLINK_ATTR_PAD,
   DEVLINK_ATTR_ESWITCH_ENCAP_MODE,
+  DEVLINK_ATTR_RESOURCE_LIST,
+  DEVLINK_ATTR_RESOURCE,
+  DEVLINK_ATTR_RESOURCE_NAME,
+  DEVLINK_ATTR_RESOURCE_ID,
+  DEVLINK_ATTR_RESOURCE_SIZE,
+  DEVLINK_ATTR_RESOURCE_SIZE_NEW,
+  DEVLINK_ATTR_RESOURCE_SIZE_VALID,
+  DEVLINK_ATTR_RESOURCE_SIZE_MIN,
+  DEVLINK_ATTR_RESOURCE_SIZE_MAX,
+  DEVLINK_ATTR_RESOURCE_SIZE_GRAN,
+  DEVLINK_ATTR_RESOURCE_UNIT,
+  DEVLINK_ATTR_RESOURCE_OCC,
+  DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_ID,
+  DEVLINK_ATTR_DPIPE_TABLE_RESOURCE_UNITS,
   __DEVLINK_ATTR_MAX,
   DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1
 };
@@ -182,4 +199,7 @@
   DEVLINK_DPIPE_HEADER_IPV4,
   DEVLINK_DPIPE_HEADER_IPV6,
 };
+enum devlink_resource_unit {
+  DEVLINK_RESOURCE_UNIT_ENTRY,
+};
 #endif
diff --git a/libc/kernel/uapi/linux/dm-ioctl.h b/libc/kernel/uapi/linux/dm-ioctl.h
index cc340b5..05847a7 100644
--- a/libc/kernel/uapi/linux/dm-ioctl.h
+++ b/libc/kernel/uapi/linux/dm-ioctl.h
@@ -102,9 +102,9 @@
 #define DM_TARGET_MSG _IOWR(DM_IOCTL, DM_TARGET_MSG_CMD, struct dm_ioctl)
 #define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)
 #define DM_VERSION_MAJOR 4
-#define DM_VERSION_MINOR 37
+#define DM_VERSION_MINOR 39
 #define DM_VERSION_PATCHLEVEL 0
-#define DM_VERSION_EXTRA "-ioctl(2017-09-20)"
+#define DM_VERSION_EXTRA "-ioctl(2018-04-03)"
 #define DM_READONLY_FLAG (1 << 0)
 #define DM_SUSPEND_FLAG (1 << 1)
 #define DM_PERSISTENT_DEV_FLAG (1 << 3)
diff --git a/libc/kernel/uapi/linux/dvb/dmx.h b/libc/kernel/uapi/linux/dvb/dmx.h
index d4ea26e..e142e57 100644
--- a/libc/kernel/uapi/linux/dvb/dmx.h
+++ b/libc/kernel/uapi/linux/dvb/dmx.h
@@ -85,6 +85,30 @@
   unsigned int base;
   __u64 stc;
 };
+enum dmx_buffer_flags {
+  DMX_BUFFER_FLAG_HAD_CRC32_DISCARD = 1 << 0,
+  DMX_BUFFER_FLAG_TEI = 1 << 1,
+  DMX_BUFFER_PKT_COUNTER_MISMATCH = 1 << 2,
+  DMX_BUFFER_FLAG_DISCONTINUITY_DETECTED = 1 << 3,
+  DMX_BUFFER_FLAG_DISCONTINUITY_INDICATOR = 1 << 4,
+};
+struct dmx_buffer {
+  __u32 index;
+  __u32 bytesused;
+  __u32 offset;
+  __u32 length;
+  __u32 flags;
+  __u32 count;
+};
+struct dmx_requestbuffers {
+  __u32 count;
+  __u32 size;
+};
+struct dmx_exportbuffer {
+  __u32 index;
+  __u32 flags;
+  __s32 fd;
+};
 #define DMX_START _IO('o', 41)
 #define DMX_STOP _IO('o', 42)
 #define DMX_SET_FILTER _IOW('o', 43, struct dmx_sct_filter_params)
@@ -98,4 +122,9 @@
 typedef enum dmx_input dmx_input_t;
 typedef enum dmx_ts_pes dmx_pes_type_t;
 typedef struct dmx_filter dmx_filter_t;
+#define DMX_REQBUFS _IOWR('o', 60, struct dmx_requestbuffers)
+#define DMX_QUERYBUF _IOWR('o', 61, struct dmx_buffer)
+#define DMX_EXPBUF _IOWR('o', 62, struct dmx_exportbuffer)
+#define DMX_QBUF _IOWR('o', 63, struct dmx_buffer)
+#define DMX_DQBUF _IOWR('o', 64, struct dmx_buffer)
 #endif
diff --git a/libc/kernel/uapi/linux/dvb/frontend.h b/libc/kernel/uapi/linux/dvb/frontend.h
index c8a48c1..d060138 100644
--- a/libc/kernel/uapi/linux/dvb/frontend.h
+++ b/libc/kernel/uapi/linux/dvb/frontend.h
@@ -247,7 +247,8 @@
 #define DTV_STAT_POST_TOTAL_BIT_COUNT 67
 #define DTV_STAT_ERROR_BLOCK_COUNT 68
 #define DTV_STAT_TOTAL_BLOCK_COUNT 69
-#define DTV_MAX_COMMAND DTV_STAT_TOTAL_BLOCK_COUNT
+#define DTV_SCRAMBLING_SEQUENCE_INDEX 70
+#define DTV_MAX_COMMAND DTV_SCRAMBLING_SEQUENCE_INDEX
 enum fe_pilot {
   PILOT_ON,
   PILOT_OFF,
diff --git a/libc/kernel/uapi/linux/dvb/version.h b/libc/kernel/uapi/linux/dvb/version.h
index 35cbfb1..47c8c74 100644
--- a/libc/kernel/uapi/linux/dvb/version.h
+++ b/libc/kernel/uapi/linux/dvb/version.h
@@ -19,5 +19,5 @@
 #ifndef _DVBVERSION_H_
 #define _DVBVERSION_H_
 #define DVB_API_VERSION 5
-#define DVB_API_VERSION_MINOR 10
+#define DVB_API_VERSION_MINOR 11
 #endif
diff --git a/libc/kernel/uapi/linux/elf.h b/libc/kernel/uapi/linux/elf.h
index bf35f6c..195ef09 100644
--- a/libc/kernel/uapi/linux/elf.h
+++ b/libc/kernel/uapi/linux/elf.h
@@ -331,6 +331,7 @@
 #define NT_PPC_TM_CTAR 0x10d
 #define NT_PPC_TM_CPPR 0x10e
 #define NT_PPC_TM_CDSCR 0x10f
+#define NT_PPC_PKEY 0x110
 #define NT_386_TLS 0x200
 #define NT_386_IOPERM 0x201
 #define NT_X86_XSTATE 0x202
@@ -354,9 +355,6 @@
 #define NT_ARM_HW_WATCH 0x403
 #define NT_ARM_SYSTEM_CALL 0x404
 #define NT_ARM_SVE 0x405
-#define NT_METAG_CBUF 0x500
-#define NT_METAG_RPIPE 0x501
-#define NT_METAG_TLS 0x502
 #define NT_ARC_V2 0x600
 typedef struct elf32_note {
   Elf32_Word n_namesz;
diff --git a/libc/kernel/uapi/linux/erspan.h b/libc/kernel/uapi/linux/erspan.h
new file mode 100644
index 0000000..790a85e
--- /dev/null
+++ b/libc/kernel/uapi/linux/erspan.h
@@ -0,0 +1,43 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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_ERSPAN_H
+#define _UAPI_ERSPAN_H
+#include <linux/types.h>
+#include <asm/byteorder.h>
+struct erspan_md2 {
+  __be32 timestamp;
+  __be16 sgt;
+#ifdef __LITTLE_ENDIAN_BITFIELD
+  __u8 hwid_upper : 2, ft : 5, p : 1;
+  __u8 o : 1, gra : 2, dir : 1, hwid : 4;
+#elif defined(__BIG_ENDIAN_BITFIELD)
+  __u8 p : 1, ft : 5, hwid_upper : 2;
+  __u8 hwid : 4, dir : 1, gra : 2, o : 1;
+#else
+#error "Please fix <asm/byteorder.h>"
+#endif
+};
+struct erspan_metadata {
+  int version;
+  union {
+    __be32 index;
+    struct erspan_md2 md2;
+  } u;
+};
+#endif
diff --git a/libc/kernel/uapi/linux/ethtool.h b/libc/kernel/uapi/linux/ethtool.h
index 6f1c0f3..92607f9 100644
--- a/libc/kernel/uapi/linux/ethtool.h
+++ b/libc/kernel/uapi/linux/ethtool.h
@@ -71,10 +71,13 @@
   __u32 cmd;
   __u32 data;
 };
+#define PFC_STORM_PREVENTION_AUTO 0xffff
+#define PFC_STORM_PREVENTION_DISABLE 0
 enum tunable_id {
   ETHTOOL_ID_UNSPEC,
   ETHTOOL_RX_COPYBREAK,
   ETHTOOL_TX_COPYBREAK,
+  ETHTOOL_PFC_PREVENTION_TOUT,
   __ETHTOOL_TUNABLE_COUNT,
 };
 enum tunable_type_id {
@@ -332,6 +335,7 @@
   __u32 rsvd32;
   __u32 rss_config[0];
 };
+#define ETH_RXFH_CONTEXT_ALLOC 0xffffffff
 #define ETH_RXFH_INDIR_NO_CHANGE 0xffffffff
 struct ethtool_rx_ntuple_flow_spec {
   __u32 flow_type;
@@ -699,6 +703,7 @@
 #define ETHER_FLOW 0x12
 #define FLOW_EXT 0x80000000
 #define FLOW_MAC_EXT 0x40000000
+#define FLOW_RSS 0x20000000
 #define RXH_L2DA (1 << 1)
 #define RXH_VLAN (1 << 2)
 #define RXH_L3_PROTO (1 << 3)
@@ -729,6 +734,7 @@
   ETH_RESET_MAC = 1 << 5,
   ETH_RESET_PHY = 1 << 6,
   ETH_RESET_RAM = 1 << 7,
+  ETH_RESET_AP = 1 << 8,
   ETH_RESET_DEDICATED = 0x0000ffff,
   ETH_RESET_ALL = 0xffffffff,
 };
diff --git a/libc/kernel/uapi/linux/eventpoll.h b/libc/kernel/uapi/linux/eventpoll.h
index eec1077..2e5ba8e 100644
--- a/libc/kernel/uapi/linux/eventpoll.h
+++ b/libc/kernel/uapi/linux/eventpoll.h
@@ -25,21 +25,22 @@
 #define EPOLL_CTL_ADD 1
 #define EPOLL_CTL_DEL 2
 #define EPOLL_CTL_MOD 3
-#define EPOLLIN 0x00000001
-#define EPOLLPRI 0x00000002
-#define EPOLLOUT 0x00000004
-#define EPOLLERR 0x00000008
-#define EPOLLHUP 0x00000010
-#define EPOLLRDNORM 0x00000040
-#define EPOLLRDBAND 0x00000080
-#define EPOLLWRNORM 0x00000100
-#define EPOLLWRBAND 0x00000200
-#define EPOLLMSG 0x00000400
-#define EPOLLRDHUP 0x00002000
-#define EPOLLEXCLUSIVE (1U << 28)
-#define EPOLLWAKEUP (1U << 29)
-#define EPOLLONESHOT (1U << 30)
-#define EPOLLET (1U << 31)
+#define EPOLLIN (__force __poll_t) 0x00000001
+#define EPOLLPRI (__force __poll_t) 0x00000002
+#define EPOLLOUT (__force __poll_t) 0x00000004
+#define EPOLLERR (__force __poll_t) 0x00000008
+#define EPOLLHUP (__force __poll_t) 0x00000010
+#define EPOLLNVAL (__force __poll_t) 0x00000020
+#define EPOLLRDNORM (__force __poll_t) 0x00000040
+#define EPOLLRDBAND (__force __poll_t) 0x00000080
+#define EPOLLWRNORM (__force __poll_t) 0x00000100
+#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)
 #ifdef __x86_64__
 #define EPOLL_PACKED __attribute__((packed))
 #else
diff --git a/libc/kernel/uapi/linux/fib_rules.h b/libc/kernel/uapi/linux/fib_rules.h
index 6b2a06f..733c1b1 100644
--- a/libc/kernel/uapi/linux/fib_rules.h
+++ b/libc/kernel/uapi/linux/fib_rules.h
@@ -42,6 +42,10 @@
   __u32 start;
   __u32 end;
 };
+struct fib_rule_port_range {
+  __u16 start;
+  __u16 end;
+};
 enum {
   FRA_UNSPEC,
   FRA_DST,
@@ -65,6 +69,10 @@
   FRA_PAD,
   FRA_L3MDEV,
   FRA_UID_RANGE,
+  FRA_PROTOCOL,
+  FRA_IP_PROTO,
+  FRA_SPORT_RANGE,
+  FRA_DPORT_RANGE,
   __FRA_MAX
 };
 #define FRA_MAX (__FRA_MAX - 1)
diff --git a/libc/kernel/uapi/linux/fs.h b/libc/kernel/uapi/linux/fs.h
index f4e74cd..77c45c8 100644
--- a/libc/kernel/uapi/linux/fs.h
+++ b/libc/kernel/uapi/linux/fs.h
@@ -250,5 +250,6 @@
 #define RWF_DSYNC ((__force __kernel_rwf_t) 0x00000002)
 #define RWF_SYNC ((__force __kernel_rwf_t) 0x00000004)
 #define RWF_NOWAIT ((__force __kernel_rwf_t) 0x00000008)
-#define RWF_SUPPORTED (RWF_HIPRI | RWF_DSYNC | RWF_SYNC | RWF_NOWAIT)
+#define RWF_APPEND ((__force __kernel_rwf_t) 0x00000010)
+#define RWF_SUPPORTED (RWF_HIPRI | RWF_DSYNC | RWF_SYNC | RWF_NOWAIT | RWF_APPEND)
 #endif
diff --git a/libc/kernel/uapi/linux/gfs2_ondisk.h b/libc/kernel/uapi/linux/gfs2_ondisk.h
index 60a6a26..7d03ba5 100644
--- a/libc/kernel/uapi/linux/gfs2_ondisk.h
+++ b/libc/kernel/uapi/linux/gfs2_ondisk.h
@@ -131,9 +131,16 @@
   __be32 rg_flags;
   __be32 rg_free;
   __be32 rg_dinodes;
-  __be32 __pad;
+  union {
+    __be32 __pad;
+    __be32 rg_skip;
+  };
   __be64 rg_igeneration;
-  __u8 rg_reserved[80];
+  __be64 rg_data0;
+  __be32 rg_data;
+  __be32 rg_bitbytes;
+  __be32 rg_crc;
+  __u8 rg_reserved[60];
 };
 struct gfs2_quota {
   __be64 qu_limit;
@@ -261,6 +268,32 @@
   __u32 __pad;
 };
 #define GFS2_LOG_HEAD_UNMOUNT 0x00000001
+#define GFS2_LOG_HEAD_FLUSH_NORMAL 0x00000002
+#define GFS2_LOG_HEAD_FLUSH_SYNC 0x00000004
+#define GFS2_LOG_HEAD_FLUSH_SHUTDOWN 0x00000008
+#define GFS2_LOG_HEAD_FLUSH_FREEZE 0x00000010
+#define GFS2_LOG_HEAD_RECOVERY 0x00000020
+#define GFS2_LOG_HEAD_USERSPACE 0x80000000
+#define GFS2_LFC_SHUTDOWN 0x00000100
+#define GFS2_LFC_JDATA_WPAGES 0x00000200
+#define GFS2_LFC_SET_FLAGS 0x00000400
+#define GFS2_LFC_AIL_EMPTY_GL 0x00000800
+#define GFS2_LFC_AIL_FLUSH 0x00001000
+#define GFS2_LFC_RGRP_GO_SYNC 0x00002000
+#define GFS2_LFC_INODE_GO_SYNC 0x00004000
+#define GFS2_LFC_INODE_GO_INVAL 0x00008000
+#define GFS2_LFC_FREEZE_GO_SYNC 0x00010000
+#define GFS2_LFC_KILL_SB 0x00020000
+#define GFS2_LFC_DO_SYNC 0x00040000
+#define GFS2_LFC_INPLACE_RESERVE 0x00080000
+#define GFS2_LFC_WRITE_INODE 0x00100000
+#define GFS2_LFC_MAKE_FS_RO 0x00200000
+#define GFS2_LFC_SYNC_FS 0x00400000
+#define GFS2_LFC_EVICT_INODE 0x00800000
+#define GFS2_LFC_TRANS_END 0x01000000
+#define GFS2_LFC_LOGD_JFLUSH_REQD 0x02000000
+#define GFS2_LFC_LOGD_AIL_FLUSH_REQD 0x04000000
+#define LH_V1_SIZE (offsetofend(struct gfs2_log_header, lh_hash))
 struct gfs2_log_header {
   struct gfs2_meta_header lh_header;
   __be64 lh_sequence;
@@ -268,6 +301,16 @@
   __be32 lh_tail;
   __be32 lh_blkno;
   __be32 lh_hash;
+  __be32 lh_crc;
+  __be32 lh_nsec;
+  __be64 lh_sec;
+  __be64 lh_addr;
+  __be64 lh_jinode;
+  __be64 lh_statfs_addr;
+  __be64 lh_quota_addr;
+  __be64 lh_local_total;
+  __be64 lh_local_free;
+  __be64 lh_local_dinodes;
 };
 #define GFS2_LOG_DESC_METADATA 300
 #define GFS2_LOG_DESC_REVOKE 301
diff --git a/libc/kernel/uapi/linux/i2c.h b/libc/kernel/uapi/linux/i2c.h
index bb8f4f5..dc1e96a 100644
--- a/libc/kernel/uapi/linux/i2c.h
+++ b/libc/kernel/uapi/linux/i2c.h
@@ -24,6 +24,7 @@
   __u16 flags;
 #define I2C_M_RD 0x0001
 #define I2C_M_TEN 0x0010
+#define I2C_M_DMA_SAFE 0x0200
 #define I2C_M_RECV_LEN 0x0400
 #define I2C_M_NO_RD_ACK 0x0800
 #define I2C_M_IGNORE_NAK 0x1000
diff --git a/libc/kernel/uapi/linux/if_ether.h b/libc/kernel/uapi/linux/if_ether.h
index 04b6dae..4fb58f1 100644
--- a/libc/kernel/uapi/linux/if_ether.h
+++ b/libc/kernel/uapi/linux/if_ether.h
@@ -19,8 +19,8 @@
 #ifndef _UAPI_LINUX_IF_ETHER_H
 #define _UAPI_LINUX_IF_ETHER_H
 #include <linux/types.h>
-#include <linux/libc-compat.h>
 #define ETH_ALEN 6
+#define ETH_TLEN 2
 #define ETH_HLEN 14
 #define ETH_ZLEN 60
 #define ETH_DATA_LEN 1500
@@ -32,6 +32,7 @@
 #define ETH_P_PUP 0x0200
 #define ETH_P_PUPAT 0x0201
 #define ETH_P_TSN 0x22F0
+#define ETH_P_ERSPAN2 0x22EB
 #define ETH_P_IP 0x0800
 #define ETH_P_X25 0x0805
 #define ETH_P_ARP 0x0806
@@ -69,6 +70,7 @@
 #define ETH_P_AOE 0x88A2
 #define ETH_P_8021AD 0x88A8
 #define ETH_P_802_EX1 0x88B5
+#define ETH_P_PREAUTH 0x88C7
 #define ETH_P_TIPC 0x88CA
 #define ETH_P_MACSEC 0x88E5
 #define ETH_P_8021AH 0x88E7
@@ -117,6 +119,9 @@
 #define ETH_P_CAIF 0x00F7
 #define ETH_P_XDSA 0x00F8
 #define ETH_P_MAP 0x00F9
+#ifndef __UAPI_DEF_ETHHDR
+#define __UAPI_DEF_ETHHDR 1
+#endif
 #if __UAPI_DEF_ETHHDR
 struct ethhdr {
   unsigned char h_dest[ETH_ALEN];
diff --git a/libc/kernel/uapi/linux/if_link.h b/libc/kernel/uapi/linux/if_link.h
index a43eaf7..8a9993b 100644
--- a/libc/kernel/uapi/linux/if_link.h
+++ b/libc/kernel/uapi/linux/if_link.h
@@ -138,6 +138,9 @@
   IFLA_EVENT,
   IFLA_NEW_NETNSID,
   IFLA_IF_NETNSID,
+  IFLA_CARRIER_UP_COUNT,
+  IFLA_CARRIER_DOWN_COUNT,
+  IFLA_NEW_IFINDEX,
   __IFLA_MAX
 };
 #define IFLA_MAX (__IFLA_MAX - 1)
@@ -590,6 +593,8 @@
   IFLA_VF_STATS_BROADCAST,
   IFLA_VF_STATS_MULTICAST,
   IFLA_VF_STATS_PAD,
+  IFLA_VF_STATS_RX_DROPPED,
+  IFLA_VF_STATS_TX_DROPPED,
   __IFLA_VF_STATS_MAX,
 };
 #define IFLA_VF_STATS_MAX (__IFLA_VF_STATS_MAX - 1)
@@ -728,4 +733,33 @@
   IFLA_EVENT_IGMP_RESEND,
   IFLA_EVENT_BONDING_OPTIONS,
 };
+enum {
+  IFLA_TUN_UNSPEC,
+  IFLA_TUN_OWNER,
+  IFLA_TUN_GROUP,
+  IFLA_TUN_TYPE,
+  IFLA_TUN_PI,
+  IFLA_TUN_VNET_HDR,
+  IFLA_TUN_PERSIST,
+  IFLA_TUN_MULTI_QUEUE,
+  IFLA_TUN_NUM_QUEUES,
+  IFLA_TUN_NUM_DISABLED_QUEUES,
+  __IFLA_TUN_MAX,
+};
+#define IFLA_TUN_MAX (__IFLA_TUN_MAX - 1)
+#define RMNET_FLAGS_INGRESS_DEAGGREGATION (1U << 0)
+#define RMNET_FLAGS_INGRESS_MAP_COMMANDS (1U << 1)
+#define RMNET_FLAGS_INGRESS_MAP_CKSUMV4 (1U << 2)
+#define RMNET_FLAGS_EGRESS_MAP_CKSUMV4 (1U << 3)
+enum {
+  IFLA_RMNET_UNSPEC,
+  IFLA_RMNET_MUX_ID,
+  IFLA_RMNET_FLAGS,
+  __IFLA_RMNET_MAX,
+};
+#define IFLA_RMNET_MAX (__IFLA_RMNET_MAX - 1)
+struct ifla_rmnet_flags {
+  __u32 flags;
+  __u32 mask;
+};
 #endif
diff --git a/libc/kernel/uapi/linux/if_macsec.h b/libc/kernel/uapi/linux/if_macsec.h
index 0031f7d..a58f531 100644
--- a/libc/kernel/uapi/linux/if_macsec.h
+++ b/libc/kernel/uapi/linux/if_macsec.h
@@ -23,8 +23,10 @@
 #define MACSEC_GENL_VERSION 1
 #define MACSEC_MAX_KEY_LEN 128
 #define MACSEC_KEYID_LEN 16
+#define MACSEC_CIPHER_ID_GCM_AES_128 0x0080C20001000001ULL
+#define MACSEC_CIPHER_ID_GCM_AES_256 0x0080C20001000002ULL
 #define MACSEC_DEFAULT_CIPHER_ID 0x0080020001000001ULL
-#define MACSEC_DEFAULT_CIPHER_ALT 0x0080C20001000001ULL
+#define MACSEC_DEFAULT_CIPHER_ALT MACSEC_CIPHER_ID_GCM_AES_128
 #define MACSEC_MIN_ICV_LEN 8
 #define MACSEC_MAX_ICV_LEN 32
 #define MACSEC_STD_ICV_LEN 16
diff --git a/libc/kernel/uapi/linux/if_tun.h b/libc/kernel/uapi/linux/if_tun.h
index d8757a1..6a3c75e 100644
--- a/libc/kernel/uapi/linux/if_tun.h
+++ b/libc/kernel/uapi/linux/if_tun.h
@@ -49,6 +49,8 @@
 #define TUNGETVNETLE _IOR('T', 221, int)
 #define TUNSETVNETBE _IOW('T', 222, int)
 #define TUNGETVNETBE _IOR('T', 223, int)
+#define TUNSETSTEERINGEBPF _IOR('T', 224, int)
+#define TUNSETFILTEREBPF _IOR('T', 225, int)
 #define IFF_TUN 0x0001
 #define IFF_TAP 0x0002
 #define IFF_NAPI 0x0010
diff --git a/libc/kernel/uapi/linux/if_tunnel.h b/libc/kernel/uapi/linux/if_tunnel.h
index 8edc956..d41dc49 100644
--- a/libc/kernel/uapi/linux/if_tunnel.h
+++ b/libc/kernel/uapi/linux/if_tunnel.h
@@ -136,6 +136,9 @@
   IFLA_GRE_IGNORE_DF,
   IFLA_GRE_FWMARK,
   IFLA_GRE_ERSPAN_INDEX,
+  IFLA_GRE_ERSPAN_VER,
+  IFLA_GRE_ERSPAN_DIR,
+  IFLA_GRE_ERSPAN_HWID,
   __IFLA_GRE_MAX,
 };
 #define IFLA_GRE_MAX (__IFLA_GRE_MAX - 1)
diff --git a/libc/kernel/uapi/linux/inet_diag.h b/libc/kernel/uapi/linux/inet_diag.h
index 47a3b34..eb9b712 100644
--- a/libc/kernel/uapi/linux/inet_diag.h
+++ b/libc/kernel/uapi/linux/inet_diag.h
@@ -78,6 +78,8 @@
   INET_DIAG_BC_D_COND,
   INET_DIAG_BC_DEV_COND,
   INET_DIAG_BC_MARK_COND,
+  INET_DIAG_BC_S_EQ,
+  INET_DIAG_BC_D_EQ,
 };
 struct inet_diag_hostcond {
   __u8 family;
diff --git a/libc/kernel/uapi/linux/inotify.h b/libc/kernel/uapi/linux/inotify.h
index 0736bd7..653dc07 100644
--- a/libc/kernel/uapi/linux/inotify.h
+++ b/libc/kernel/uapi/linux/inotify.h
@@ -53,4 +53,5 @@
 #define IN_ALL_EVENTS (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE | IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM | IN_MOVED_TO | IN_DELETE | IN_CREATE | IN_DELETE_SELF | IN_MOVE_SELF)
 #define IN_CLOEXEC O_CLOEXEC
 #define IN_NONBLOCK O_NONBLOCK
+#define INOTIFY_IOC_SETNEXTWD _IOW('I', 0, __s32)
 #endif
diff --git a/libc/kernel/uapi/linux/input-event-codes.h b/libc/kernel/uapi/linux/input-event-codes.h
index da90f1c..d8ae4c8 100644
--- a/libc/kernel/uapi/linux/input-event-codes.h
+++ b/libc/kernel/uapi/linux/input-event-codes.h
@@ -532,6 +532,7 @@
 #define BTN_DPAD_LEFT 0x222
 #define BTN_DPAD_RIGHT 0x223
 #define KEY_ALS_TOGGLE 0x230
+#define KEY_ROTATE_LOCK_TOGGLE 0x231
 #define KEY_BUTTONCONFIG 0x240
 #define KEY_TASKMANAGER 0x241
 #define KEY_JOURNAL 0x242
diff --git a/libc/kernel/uapi/linux/input.h b/libc/kernel/uapi/linux/input.h
index 9014059..298e2a3 100644
--- a/libc/kernel/uapi/linux/input.h
+++ b/libc/kernel/uapi/linux/input.h
@@ -24,7 +24,16 @@
 #include <linux/types.h>
 #include "input-event-codes.h"
 struct input_event {
+#if (__BITS_PER_LONG != 32 || !defined(__USE_TIME_BITS64)) && !defined(__KERNEL)
   struct timeval time;
+#define input_event_sec time.tv_sec
+#define input_event_usec time.tv_usec
+#else
+  __kernel_ulong_t __sec;
+  __kernel_ulong_t __usec;
+#define input_event_sec __sec
+#define input_event_usec __usec
+#endif
   __u16 type;
   __u16 code;
   __s32 value;
diff --git a/libc/kernel/uapi/linux/ipmi_bmc.h b/libc/kernel/uapi/linux/ipmi_bmc.h
new file mode 100644
index 0000000..18f8b9d
--- /dev/null
+++ b/libc/kernel/uapi/linux/ipmi_bmc.h
@@ -0,0 +1,26 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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_IPMI_BMC_H
+#define _UAPI_LINUX_IPMI_BMC_H
+#include <linux/ioctl.h>
+#define __IPMI_BMC_IOCTL_MAGIC 0xB1
+#define IPMI_BMC_IOCTL_SET_SMS_ATN _IO(__IPMI_BMC_IOCTL_MAGIC, 0x00)
+#define IPMI_BMC_IOCTL_CLEAR_SMS_ATN _IO(__IPMI_BMC_IOCTL_MAGIC, 0x01)
+#define IPMI_BMC_IOCTL_FORCE_ABORT _IO(__IPMI_BMC_IOCTL_MAGIC, 0x02)
+#endif
diff --git a/libc/kernel/uapi/linux/irda.h b/libc/kernel/uapi/linux/irda.h
deleted file mode 100644
index c2dffea..0000000
--- a/libc/kernel/uapi/linux/irda.h
+++ /dev/null
@@ -1,192 +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 KERNEL_IRDA_H
-#define KERNEL_IRDA_H
-#include <linux/types.h>
-#include <linux/socket.h>
-#define HINT_PNP 0x01
-#define HINT_PDA 0x02
-#define HINT_COMPUTER 0x04
-#define HINT_PRINTER 0x08
-#define HINT_MODEM 0x10
-#define HINT_FAX 0x20
-#define HINT_LAN 0x40
-#define HINT_EXTENSION 0x80
-#define HINT_TELEPHONY 0x01
-#define HINT_FILE_SERVER 0x02
-#define HINT_COMM 0x04
-#define HINT_MESSAGE 0x08
-#define HINT_HTTP 0x10
-#define HINT_OBEX 0x20
-#define CS_ASCII 0x00
-#define CS_ISO_8859_1 0x01
-#define CS_ISO_8859_2 0x02
-#define CS_ISO_8859_3 0x03
-#define CS_ISO_8859_4 0x04
-#define CS_ISO_8859_5 0x05
-#define CS_ISO_8859_6 0x06
-#define CS_ISO_8859_7 0x07
-#define CS_ISO_8859_8 0x08
-#define CS_ISO_8859_9 0x09
-#define CS_UNICODE 0xff
-typedef enum {
-  IRDA_TEKRAM_DONGLE = 0,
-  IRDA_ESI_DONGLE = 1,
-  IRDA_ACTISYS_DONGLE = 2,
-  IRDA_ACTISYS_PLUS_DONGLE = 3,
-  IRDA_GIRBIL_DONGLE = 4,
-  IRDA_LITELINK_DONGLE = 5,
-  IRDA_AIRPORT_DONGLE = 6,
-  IRDA_OLD_BELKIN_DONGLE = 7,
-  IRDA_EP7211_IR = 8,
-  IRDA_MCP2120_DONGLE = 9,
-  IRDA_ACT200L_DONGLE = 10,
-  IRDA_MA600_DONGLE = 11,
-  IRDA_TOIM3232_DONGLE = 12,
-  IRDA_EP7211_DONGLE = 13,
-} IRDA_DONGLE;
-enum {
-  IRDAPROTO_UNITDATA = 0,
-  IRDAPROTO_ULTRA = 1,
-  IRDAPROTO_MAX
-};
-#define SOL_IRLMP 266
-#define SOL_IRTTP 266
-#define IRLMP_ENUMDEVICES 1
-#define IRLMP_IAS_SET 2
-#define IRLMP_IAS_QUERY 3
-#define IRLMP_HINTS_SET 4
-#define IRLMP_QOS_SET 5
-#define IRLMP_QOS_GET 6
-#define IRLMP_MAX_SDU_SIZE 7
-#define IRLMP_IAS_GET 8
-#define IRLMP_IAS_DEL 9
-#define IRLMP_HINT_MASK_SET 10
-#define IRLMP_WAITDEVICE 11
-#define IRTTP_MAX_SDU_SIZE IRLMP_MAX_SDU_SIZE
-#define IAS_MAX_STRING 256
-#define IAS_MAX_OCTET_STRING 1024
-#define IAS_MAX_CLASSNAME 60
-#define IAS_MAX_ATTRIBNAME 60
-#define IAS_MAX_ATTRIBNUMBER 256
-#define IAS_EXPORT_CLASSNAME 64
-#define IAS_EXPORT_ATTRIBNAME 256
-#define IAS_MISSING 0
-#define IAS_INTEGER 1
-#define IAS_OCT_SEQ 2
-#define IAS_STRING 3
-#define LSAP_ANY 0xff
-struct sockaddr_irda {
-  __kernel_sa_family_t sir_family;
-  __u8 sir_lsap_sel;
-  __u32 sir_addr;
-  char sir_name[25];
-};
-struct irda_device_info {
-  __u32 saddr;
-  __u32 daddr;
-  char info[22];
-  __u8 charset;
-  __u8 hints[2];
-};
-struct irda_device_list {
-  __u32 len;
-  struct irda_device_info dev[1];
-};
-struct irda_ias_set {
-  char irda_class_name[IAS_EXPORT_CLASSNAME];
-  char irda_attrib_name[IAS_EXPORT_ATTRIBNAME];
-  unsigned int irda_attrib_type;
-  union {
-    unsigned int irda_attrib_int;
-    struct {
-      unsigned short len;
-      __u8 octet_seq[IAS_MAX_OCTET_STRING];
-    } irda_attrib_octet_seq;
-    struct {
-      __u8 len;
-      __u8 charset;
-      __u8 string[IAS_MAX_STRING];
-    } irda_attrib_string;
-  } attribute;
-  __u32 daddr;
-};
-#define SIOCSDONGLE (SIOCDEVPRIVATE + 0)
-#define SIOCGDONGLE (SIOCDEVPRIVATE + 1)
-#define SIOCSBANDWIDTH (SIOCDEVPRIVATE + 2)
-#define SIOCSMEDIABUSY (SIOCDEVPRIVATE + 3)
-#define SIOCGMEDIABUSY (SIOCDEVPRIVATE + 4)
-#define SIOCGRECEIVING (SIOCDEVPRIVATE + 5)
-#define SIOCSMODE (SIOCDEVPRIVATE + 6)
-#define SIOCGMODE (SIOCDEVPRIVATE + 7)
-#define SIOCSDTRRTS (SIOCDEVPRIVATE + 8)
-#define SIOCGQOS (SIOCDEVPRIVATE + 9)
-#define IRNAMSIZ 16
-struct if_irda_qos {
-  unsigned long baudrate;
-  unsigned short data_size;
-  unsigned short window_size;
-  unsigned short min_turn_time;
-  unsigned short max_turn_time;
-  unsigned char add_bofs;
-  unsigned char link_disc;
-};
-struct if_irda_line {
-  __u8 dtr;
-  __u8 rts;
-};
-struct if_irda_req {
-  union {
-    char ifrn_name[IRNAMSIZ];
-  } ifr_ifrn;
-  union {
-    struct if_irda_line ifru_line;
-    struct if_irda_qos ifru_qos;
-    unsigned short ifru_flags;
-    unsigned int ifru_receiving;
-    unsigned int ifru_mode;
-    unsigned int ifru_dongle;
-  } ifr_ifru;
-};
-#define ifr_baudrate ifr_ifru.ifru_qos.baudrate
-#define ifr_receiving ifr_ifru.ifru_receiving
-#define ifr_dongle ifr_ifru.ifru_dongle
-#define ifr_mode ifr_ifru.ifru_mode
-#define ifr_dtr ifr_ifru.ifru_line.dtr
-#define ifr_rts ifr_ifru.ifru_line.rts
-#define IRDA_NL_NAME "irda"
-#define IRDA_NL_VERSION 1
-enum irda_nl_commands {
-  IRDA_NL_CMD_UNSPEC,
-  IRDA_NL_CMD_SET_MODE,
-  IRDA_NL_CMD_GET_MODE,
-  __IRDA_NL_CMD_AFTER_LAST
-};
-#define IRDA_NL_CMD_MAX (__IRDA_NL_CMD_AFTER_LAST - 1)
-enum nl80211_attrs {
-  IRDA_NL_ATTR_UNSPEC,
-  IRDA_NL_ATTR_IFNAME,
-  IRDA_NL_ATTR_MODE,
-  __IRDA_NL_ATTR_AFTER_LAST
-};
-#define IRDA_NL_ATTR_MAX (__IRDA_NL_ATTR_AFTER_LAST - 1)
-#define IRDA_MODE_PRIMARY 0x1
-#define IRDA_MODE_SECONDARY 0x2
-#define IRDA_MODE_MONITOR 0x4
-#endif
diff --git a/libc/kernel/uapi/linux/ixjuser.h b/libc/kernel/uapi/linux/ixjuser.h
deleted file mode 100644
index fe89d0c..0000000
--- a/libc/kernel/uapi/linux/ixjuser.h
+++ /dev/null
@@ -1,486 +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_IXJUSER_H
-#define __LINUX_IXJUSER_H
-#include <linux/telephony.h>
-#define IXJCTL_DSP_RESET _IO('q', 0xC0)
-#define IXJCTL_RING PHONE_RING
-#define IXJCTL_HOOKSTATE PHONE_HOOKSTATE
-#define IXJCTL_MAXRINGS PHONE_MAXRINGS
-#define IXJCTL_RING_CADENCE PHONE_RING_CADENCE
-#define IXJCTL_RING_START PHONE_RING_START
-#define IXJCTL_RING_STOP PHONE_RING_STOP
-#define IXJCTL_CARDTYPE _IOR('q', 0xC1, int)
-#define IXJCTL_SERIAL _IOR('q', 0xC2, int)
-#define IXJCTL_DSP_TYPE _IOR('q', 0xC3, int)
-#define IXJCTL_DSP_VERSION _IOR('q', 0xC4, int)
-#define IXJCTL_VERSION _IOR('q', 0xDA, char *)
-#define IXJCTL_DSP_IDLE _IO('q', 0xC5)
-#define IXJCTL_TESTRAM _IO('q', 0xC6)
-#define IXJCTL_REC_CODEC PHONE_REC_CODEC
-#define IXJCTL_REC_START PHONE_REC_START
-#define IXJCTL_REC_STOP PHONE_REC_STOP
-#define IXJCTL_REC_DEPTH PHONE_REC_DEPTH
-#define IXJCTL_FRAME PHONE_FRAME
-#define IXJCTL_REC_VOLUME PHONE_REC_VOLUME
-#define IXJCTL_REC_LEVEL PHONE_REC_LEVEL
-typedef enum {
-  f300_640 = 4,
-  f300_500,
-  f1100,
-  f350,
-  f400,
-  f480,
-  f440,
-  f620,
-  f20_50,
-  f133_200,
-  f300,
-  f300_420,
-  f330,
-  f300_425,
-  f330_440,
-  f340,
-  f350_400,
-  f350_440,
-  f350_450,
-  f360,
-  f380_420,
-  f392,
-  f400_425,
-  f400_440,
-  f400_450,
-  f420,
-  f425,
-  f425_450,
-  f425_475,
-  f435,
-  f440_450,
-  f440_480,
-  f445,
-  f450,
-  f452,
-  f475,
-  f480_620,
-  f494,
-  f500,
-  f520,
-  f523,
-  f525,
-  f540_660,
-  f587,
-  f590,
-  f600,
-  f660,
-  f700,
-  f740,
-  f750,
-  f750_1450,
-  f770,
-  f800,
-  f816,
-  f850,
-  f857_1645,
-  f900,
-  f900_1300,
-  f935_1215,
-  f941_1477,
-  f942,
-  f950,
-  f950_1400,
-  f975,
-  f1000,
-  f1020,
-  f1050,
-  f1100_1750,
-  f1140,
-  f1200,
-  f1209,
-  f1330,
-  f1336,
-  lf1366,
-  f1380,
-  f1400,
-  f1477,
-  f1600,
-  f1633_1638,
-  f1800,
-  f1860
-} IXJ_FILTER_FREQ;
-typedef struct {
-  unsigned int filter;
-  IXJ_FILTER_FREQ freq;
-  char enable;
-} IXJ_FILTER;
-typedef struct {
-  char enable;
-  char en_filter;
-  unsigned int filter;
-  unsigned int on1;
-  unsigned int off1;
-  unsigned int on2;
-  unsigned int off2;
-  unsigned int on3;
-  unsigned int off3;
-} IXJ_FILTER_CADENCE;
-#define IXJCTL_SET_FILTER _IOW('q', 0xC7, IXJ_FILTER *)
-#define IXJCTL_SET_FILTER_RAW _IOW('q', 0xDD, IXJ_FILTER_RAW *)
-#define IXJCTL_GET_FILTER_HIST _IOW('q', 0xC8, int)
-#define IXJCTL_FILTER_CADENCE _IOW('q', 0xD6, IXJ_FILTER_CADENCE *)
-#define IXJCTL_PLAY_CID _IO('q', 0xD7)
-typedef enum {
-  hz20 = 0x7ffa,
-  hz50 = 0x7fe5,
-  hz133 = 0x7f4c,
-  hz200 = 0x7e6b,
-  hz261 = 0x7d50,
-  hz277 = 0x7cfa,
-  hz293 = 0x7c9f,
-  hz300 = 0x7c75,
-  hz311 = 0x7c32,
-  hz329 = 0x7bbf,
-  hz330 = 0x7bb8,
-  hz340 = 0x7b75,
-  hz349 = 0x7b37,
-  hz350 = 0x7b30,
-  hz360 = 0x7ae9,
-  hz369 = 0x7aa8,
-  hz380 = 0x7a56,
-  hz392 = 0x79fa,
-  hz400 = 0x79bb,
-  hz415 = 0x7941,
-  hz420 = 0x7918,
-  hz425 = 0x78ee,
-  hz435 = 0x7899,
-  hz440 = 0x786d,
-  hz445 = 0x7842,
-  hz450 = 0x7815,
-  hz452 = 0x7803,
-  hz466 = 0x7784,
-  hz475 = 0x7731,
-  hz480 = 0x7701,
-  hz493 = 0x7685,
-  hz494 = 0x767b,
-  hz500 = 0x7640,
-  hz520 = 0x7578,
-  hz523 = 0x7559,
-  hz525 = 0x7544,
-  hz540 = 0x74a7,
-  hz554 = 0x7411,
-  hz587 = 0x72a1,
-  hz590 = 0x727f,
-  hz600 = 0x720b,
-  hz620 = 0x711e,
-  hz622 = 0x7106,
-  hz659 = 0x6f3b,
-  hz660 = 0x6f2e,
-  hz698 = 0x6d3d,
-  hz700 = 0x6d22,
-  hz739 = 0x6b09,
-  hz740 = 0x6afa,
-  hz750 = 0x6a6c,
-  hz770 = 0x694b,
-  hz783 = 0x688b,
-  hz800 = 0x678d,
-  hz816 = 0x6698,
-  hz830 = 0x65bf,
-  hz850 = 0x6484,
-  hz857 = 0x6414,
-  hz880 = 0x629f,
-  hz900 = 0x6154,
-  hz932 = 0x5f35,
-  hz935 = 0x5f01,
-  hz941 = 0x5e9a,
-  hz942 = 0x5e88,
-  hz950 = 0x5dfd,
-  hz975 = 0x5c44,
-  hz1000 = 0x5a81,
-  hz1020 = 0x5912,
-  hz1050 = 0x56e2,
-  hz1100 = 0x5320,
-  hz1140 = 0x5007,
-  hz1200 = 0x4b3b,
-  hz1209 = 0x4a80,
-  hz1215 = 0x4a02,
-  hz1250 = 0x471c,
-  hz1300 = 0x42e0,
-  hz1330 = 0x4049,
-  hz1336 = 0x3fc4,
-  hz1366 = 0x3d22,
-  hz1380 = 0x3be4,
-  hz1400 = 0x3a1b,
-  hz1450 = 0x3596,
-  hz1477 = 0x331c,
-  hz1500 = 0x30fb,
-  hz1600 = 0x278d,
-  hz1633 = 0x2462,
-  hz1638 = 0x23e7,
-  hz1645 = 0x233a,
-  hz1750 = 0x18f8,
-  hz1800 = 0x1405,
-  hz1860 = 0xe0b,
-  hz2100 = 0xf5f6,
-  hz2130 = 0xf2f5,
-  hz2450 = 0xd3b3,
-  hz2750 = 0xb8e4
-} IXJ_FREQ;
-typedef enum {
-  C1 = hz261,
-  CS1 = hz277,
-  D1 = hz293,
-  DS1 = hz311,
-  E1 = hz329,
-  F1 = hz349,
-  FS1 = hz369,
-  G1 = hz392,
-  GS1 = hz415,
-  A1 = hz440,
-  AS1 = hz466,
-  B1 = hz493,
-  C2 = hz523,
-  CS2 = hz554,
-  D2 = hz587,
-  DS2 = hz622,
-  E2 = hz659,
-  F2 = hz698,
-  FS2 = hz739,
-  G2 = hz783,
-  GS2 = hz830,
-  A2 = hz880,
-  AS2 = hz932,
-} IXJ_NOTE;
-typedef struct {
-  int tone_index;
-  int freq0;
-  int gain0;
-  int freq1;
-  int gain1;
-} IXJ_TONE;
-#define IXJCTL_INIT_TONE _IOW('q', 0xC9, IXJ_TONE *)
-typedef struct {
-  int index;
-  int tone_on_time;
-  int tone_off_time;
-  int freq0;
-  int gain0;
-  int freq1;
-  int gain1;
-} IXJ_CADENCE_ELEMENT;
-typedef enum {
-  PLAY_ONCE,
-  REPEAT_LAST_ELEMENT,
-  REPEAT_ALL
-} IXJ_CADENCE_TERM;
-typedef struct {
-  int elements_used;
-  IXJ_CADENCE_TERM termination;
-  IXJ_CADENCE_ELEMENT __user * ce;
-} IXJ_CADENCE;
-#define IXJCTL_TONE_CADENCE _IOW('q', 0xCA, IXJ_CADENCE *)
-#define IXJCTL_PLAY_CODEC PHONE_PLAY_CODEC
-#define IXJCTL_PLAY_START PHONE_PLAY_START
-#define IXJCTL_PLAY_STOP PHONE_PLAY_STOP
-#define IXJCTL_PLAY_DEPTH PHONE_PLAY_DEPTH
-#define IXJCTL_PLAY_VOLUME PHONE_PLAY_VOLUME
-#define IXJCTL_PLAY_LEVEL PHONE_PLAY_LEVEL
-#define IXJCTL_AEC_START _IOW('q', 0xCB, int)
-#define IXJCTL_AEC_STOP _IO('q', 0xCC)
-#define IXJCTL_AEC_GET_LEVEL _IO('q', 0xCD)
-#define AEC_OFF 0
-#define AEC_LOW 1
-#define AEC_MED 2
-#define AEC_HIGH 3
-#define AEC_AUTO 4
-#define AEC_AGC 5
-#define IXJCTL_DTMF_READY PHONE_DTMF_READY
-#define IXJCTL_GET_DTMF PHONE_GET_DTMF
-#define IXJCTL_GET_DTMF_ASCII PHONE_GET_DTMF_ASCII
-#define IXJCTL_DTMF_OOB PHONE_DTMF_OOB
-#define IXJCTL_EXCEPTION PHONE_EXCEPTION
-#define IXJCTL_PLAY_TONE PHONE_PLAY_TONE
-#define IXJCTL_SET_TONE_ON_TIME PHONE_SET_TONE_ON_TIME
-#define IXJCTL_SET_TONE_OFF_TIME PHONE_SET_TONE_OFF_TIME
-#define IXJCTL_GET_TONE_ON_TIME PHONE_GET_TONE_ON_TIME
-#define IXJCTL_GET_TONE_OFF_TIME PHONE_GET_TONE_OFF_TIME
-#define IXJCTL_GET_TONE_STATE PHONE_GET_TONE_STATE
-#define IXJCTL_BUSY PHONE_BUSY
-#define IXJCTL_RINGBACK PHONE_RINGBACK
-#define IXJCTL_DIALTONE PHONE_DIALTONE
-#define IXJCTL_CPT_STOP PHONE_CPT_STOP
-#define IXJCTL_SET_LED _IOW('q', 0xCE, int)
-#define IXJCTL_MIXER _IOW('q', 0xCF, int)
-#define MIXER_MASTER_L 0x0000
-#define MIXER_MASTER_R 0x0100
-#define ATT00DB 0x00
-#define ATT02DB 0x01
-#define ATT04DB 0x02
-#define ATT06DB 0x03
-#define ATT08DB 0x04
-#define ATT10DB 0x05
-#define ATT12DB 0x06
-#define ATT14DB 0x07
-#define ATT16DB 0x08
-#define ATT18DB 0x09
-#define ATT20DB 0x0A
-#define ATT22DB 0x0B
-#define ATT24DB 0x0C
-#define ATT26DB 0x0D
-#define ATT28DB 0x0E
-#define ATT30DB 0x0F
-#define ATT32DB 0x10
-#define ATT34DB 0x11
-#define ATT36DB 0x12
-#define ATT38DB 0x13
-#define ATT40DB 0x14
-#define ATT42DB 0x15
-#define ATT44DB 0x16
-#define ATT46DB 0x17
-#define ATT48DB 0x18
-#define ATT50DB 0x19
-#define ATT52DB 0x1A
-#define ATT54DB 0x1B
-#define ATT56DB 0x1C
-#define ATT58DB 0x1D
-#define ATT60DB 0x1E
-#define ATT62DB 0x1F
-#define MASTER_MUTE 0x80
-#define MIXER_PORT_CD_L 0x0600
-#define MIXER_PORT_CD_R 0x0700
-#define MIXER_PORT_LINE_IN_L 0x0800
-#define MIXER_PORT_LINE_IN_R 0x0900
-#define MIXER_PORT_POTS_REC 0x0C00
-#define MIXER_PORT_MIC 0x0E00
-#define GAIN12DB 0x00
-#define GAIN10DB 0x01
-#define GAIN08DB 0x02
-#define GAIN06DB 0x03
-#define GAIN04DB 0x04
-#define GAIN02DB 0x05
-#define GAIN00DB 0x06
-#define GAIN_02DB 0x07
-#define GAIN_04DB 0x08
-#define GAIN_06DB 0x09
-#define GAIN_08DB 0x0A
-#define GAIN_10DB 0x0B
-#define GAIN_12DB 0x0C
-#define GAIN_14DB 0x0D
-#define GAIN_16DB 0x0E
-#define GAIN_18DB 0x0F
-#define GAIN_20DB 0x10
-#define GAIN_22DB 0x11
-#define GAIN_24DB 0x12
-#define GAIN_26DB 0x13
-#define GAIN_28DB 0x14
-#define GAIN_30DB 0x15
-#define GAIN_32DB 0x16
-#define GAIN_34DB 0x17
-#define GAIN_36DB 0x18
-#define GAIN_38DB 0x19
-#define GAIN_40DB 0x1A
-#define GAIN_42DB 0x1B
-#define GAIN_44DB 0x1C
-#define GAIN_46DB 0x1D
-#define GAIN_48DB 0x1E
-#define GAIN_50DB 0x1F
-#define INPUT_MUTE 0x80
-#define MIXER_PORT_POTS_PLAY 0x0F00
-#define POTS_ATT_00DB 0x00
-#define POTS_ATT_04DB 0x01
-#define POTS_ATT_08DB 0x02
-#define POTS_ATT_12DB 0x03
-#define POTS_ATT_16DB 0x04
-#define POTS_ATT_20DB 0x05
-#define POTS_ATT_24DB 0x06
-#define POTS_ATT_28DB 0x07
-#define POTS_MUTE 0x80
-#define IXJCTL_DAA_COEFF_SET _IOW('q', 0xD0, int)
-#define DAA_US 1
-#define DAA_UK 2
-#define DAA_FRANCE 3
-#define DAA_GERMANY 4
-#define DAA_AUSTRALIA 5
-#define DAA_JAPAN 6
-#define IXJCTL_PORT _IOW('q', 0xD1, int)
-#define PORT_QUERY 0
-#define PORT_POTS 1
-#define PORT_PSTN 2
-#define PORT_SPEAKER 3
-#define PORT_HANDSET 4
-#define IXJCTL_PSTN_SET_STATE PHONE_PSTN_SET_STATE
-#define IXJCTL_PSTN_GET_STATE PHONE_PSTN_GET_STATE
-#define PSTN_ON_HOOK 0
-#define PSTN_RINGING 1
-#define PSTN_OFF_HOOK 2
-#define PSTN_PULSE_DIAL 3
-#define IXJCTL_DAA_AGAIN _IOW('q', 0xD2, int)
-#define AGRR00DB 0x00
-#define AGRR3_5DB 0x10
-#define AGRR06DB 0x30
-#define AGX00DB 0x00
-#define AGX_6DB 0x04
-#define AGX3_5DB 0x08
-#define AGX_2_5B 0x0C
-#define IXJCTL_PSTN_LINETEST _IO('q', 0xD3)
-#define IXJCTL_CID _IOR('q', 0xD4, PHONE_CID *)
-#define IXJCTL_VMWI _IOR('q', 0xD8, int)
-#define IXJCTL_CIDCW _IOW('q', 0xD9, PHONE_CID *)
-#define IXJCTL_WINK_DURATION PHONE_WINK_DURATION
-#define IXJCTL_POTS_PSTN _IOW('q', 0xD5, int)
-#define IXJCTL_HZ _IOW('q', 0xE0, int)
-#define IXJCTL_RATE _IOW('q', 0xE1, int)
-#define IXJCTL_FRAMES_READ _IOR('q', 0xE2, unsigned long)
-#define IXJCTL_FRAMES_WRITTEN _IOR('q', 0xE3, unsigned long)
-#define IXJCTL_READ_WAIT _IOR('q', 0xE4, unsigned long)
-#define IXJCTL_WRITE_WAIT _IOR('q', 0xE5, unsigned long)
-#define IXJCTL_DRYBUFFER_READ _IOR('q', 0xE6, unsigned long)
-#define IXJCTL_DRYBUFFER_CLEAR _IO('q', 0xE7)
-#define IXJCTL_DTMF_PRESCALE _IOW('q', 0xE8, int)
-typedef enum {
-  SIG_DTMF_READY,
-  SIG_HOOKSTATE,
-  SIG_FLASH,
-  SIG_PSTN_RING,
-  SIG_CALLER_ID,
-  SIG_PSTN_WINK,
-  SIG_F0,
-  SIG_F1,
-  SIG_F2,
-  SIG_F3,
-  SIG_FC0,
-  SIG_FC1,
-  SIG_FC2,
-  SIG_FC3,
-  SIG_READ_READY = 33,
-  SIG_WRITE_READY = 34
-} IXJ_SIGEVENT;
-typedef struct {
-  unsigned int event;
-  int signal;
-} IXJ_SIGDEF;
-#define IXJCTL_SIGCTL _IOW('q', 0xE9, IXJ_SIGDEF *)
-#define IXJCTL_SC_RXG _IOW('q', 0xEA, int)
-#define IXJCTL_SC_TXG _IOW('q', 0xEB, int)
-#define IXJCTL_INTERCOM_START _IOW('q', 0xFD, int)
-#define IXJCTL_INTERCOM_STOP _IOW('q', 0xFE, int)
-typedef struct {
-  unsigned int filter;
-  char enable;
-  unsigned int coeff[19];
-} IXJ_FILTER_RAW;
-#endif
diff --git a/libc/kernel/uapi/linux/kfd_ioctl.h b/libc/kernel/uapi/linux/kfd_ioctl.h
index d4582a1..05db3fb 100644
--- a/libc/kernel/uapi/linux/kfd_ioctl.h
+++ b/libc/kernel/uapi/linux/kfd_ioctl.h
@@ -45,7 +45,8 @@
   __u64 eop_buffer_address;
   __u64 eop_buffer_size;
   __u64 ctx_save_restore_address;
-  __u64 ctx_save_restore_size;
+  __u32 ctx_save_restore_size;
+  __u32 ctl_stack_size;
 };
 struct kfd_ioctl_destroy_queue_args {
   __u32 queue_id;
@@ -76,7 +77,6 @@
   __u32 gpu_id;
   __u32 pad;
 };
-#define NUM_OF_SUPPORTED_GPUS 7
 struct kfd_process_device_apertures {
   __u64 lds_base;
   __u64 lds_limit;
@@ -87,11 +87,17 @@
   __u32 gpu_id;
   __u32 pad;
 };
+#define NUM_OF_SUPPORTED_GPUS 7
 struct kfd_ioctl_get_process_apertures_args {
   struct kfd_process_device_apertures process_apertures[NUM_OF_SUPPORTED_GPUS];
   __u32 num_of_nodes;
   __u32 pad;
 };
+struct kfd_ioctl_get_process_apertures_new_args {
+  __u64 kfd_process_device_apertures_ptr;
+  __u32 num_of_nodes;
+  __u32 pad;
+};
 #define MAX_ALLOWED_NUM_POINTS 100
 #define MAX_ALLOWED_AW_BUFF_SIZE 4096
 #define MAX_ALLOWED_WAC_BUFF_SIZE 128
@@ -189,6 +195,49 @@
   __u32 num_banks;
   __u32 num_ranks;
 };
+struct kfd_ioctl_set_trap_handler_args {
+  __u64 tba_addr;
+  __u64 tma_addr;
+  __u32 gpu_id;
+  __u32 pad;
+};
+struct kfd_ioctl_acquire_vm_args {
+  __u32 drm_fd;
+  __u32 gpu_id;
+};
+#define KFD_IOC_ALLOC_MEM_FLAGS_VRAM (1 << 0)
+#define KFD_IOC_ALLOC_MEM_FLAGS_GTT (1 << 1)
+#define KFD_IOC_ALLOC_MEM_FLAGS_USERPTR (1 << 2)
+#define KFD_IOC_ALLOC_MEM_FLAGS_DOORBELL (1 << 3)
+#define KFD_IOC_ALLOC_MEM_FLAGS_WRITABLE (1 << 31)
+#define KFD_IOC_ALLOC_MEM_FLAGS_EXECUTABLE (1 << 30)
+#define KFD_IOC_ALLOC_MEM_FLAGS_PUBLIC (1 << 29)
+#define KFD_IOC_ALLOC_MEM_FLAGS_NO_SUBSTITUTE (1 << 28)
+#define KFD_IOC_ALLOC_MEM_FLAGS_AQL_QUEUE_MEM (1 << 27)
+#define KFD_IOC_ALLOC_MEM_FLAGS_COHERENT (1 << 26)
+struct kfd_ioctl_alloc_memory_of_gpu_args {
+  __u64 va_addr;
+  __u64 size;
+  __u64 handle;
+  __u64 mmap_offset;
+  __u32 gpu_id;
+  __u32 flags;
+};
+struct kfd_ioctl_free_memory_of_gpu_args {
+  __u64 handle;
+};
+struct kfd_ioctl_map_memory_to_gpu_args {
+  __u64 handle;
+  __u64 device_ids_array_ptr;
+  __u32 n_devices;
+  __u32 n_success;
+};
+struct kfd_ioctl_unmap_memory_from_gpu_args {
+  __u64 handle;
+  __u64 device_ids_array_ptr;
+  __u32 n_devices;
+  __u32 n_success;
+};
 #define AMDKFD_IOCTL_BASE 'K'
 #define AMDKFD_IO(nr) _IO(AMDKFD_IOCTL_BASE, nr)
 #define AMDKFD_IOR(nr,type) _IOR(AMDKFD_IOCTL_BASE, nr, type)
@@ -212,6 +261,13 @@
 #define AMDKFD_IOC_DBG_WAVE_CONTROL AMDKFD_IOW(0x10, struct kfd_ioctl_dbg_wave_control_args)
 #define AMDKFD_IOC_SET_SCRATCH_BACKING_VA AMDKFD_IOWR(0x11, struct kfd_ioctl_set_scratch_backing_va_args)
 #define AMDKFD_IOC_GET_TILE_CONFIG AMDKFD_IOWR(0x12, struct kfd_ioctl_get_tile_config_args)
+#define AMDKFD_IOC_SET_TRAP_HANDLER AMDKFD_IOW(0x13, struct kfd_ioctl_set_trap_handler_args)
+#define AMDKFD_IOC_GET_PROCESS_APERTURES_NEW AMDKFD_IOWR(0x14, struct kfd_ioctl_get_process_apertures_new_args)
+#define AMDKFD_IOC_ACQUIRE_VM AMDKFD_IOW(0x15, struct kfd_ioctl_acquire_vm_args)
+#define AMDKFD_IOC_ALLOC_MEMORY_OF_GPU AMDKFD_IOWR(0x16, struct kfd_ioctl_alloc_memory_of_gpu_args)
+#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_COMMAND_START 0x01
-#define AMDKFD_COMMAND_END 0x13
+#define AMDKFD_COMMAND_END 0x1A
 #endif
diff --git a/libc/kernel/uapi/linux/kvm.h b/libc/kernel/uapi/linux/kvm.h
index d04832a..6c8ae61 100644
--- a/libc/kernel/uapi/linux/kvm.h
+++ b/libc/kernel/uapi/linux/kvm.h
@@ -305,11 +305,12 @@
     struct kvm_hyperv_exit hyperv;
     char padding[256];
   };
+#define SYNC_REGS_SIZE_BYTES 2048
   __u64 kvm_valid_regs;
   __u64 kvm_dirty_regs;
   union {
     struct kvm_sync_regs regs;
-    char padding[2048];
+    char padding[SYNC_REGS_SIZE_BYTES];
   } s;
 };
 struct kvm_coalesced_mmio_zone {
@@ -510,6 +511,10 @@
   __u32 flags;
   __u8 pad[36];
 };
+#define KVM_X86_DISABLE_EXITS_MWAIT (1 << 0)
+#define KVM_X86_DISABLE_EXITS_HLT (1 << 1)
+#define KVM_X86_DISABLE_EXITS_PAUSE (1 << 2)
+#define KVM_X86_DISABLE_VALID_EXITS (KVM_X86_DISABLE_EXITS_MWAIT | KVM_X86_DISABLE_EXITS_HLT | KVM_X86_DISABLE_EXITS_PAUSE)
 struct kvm_enable_cap {
   __u32 cap;
   __u32 flags;
@@ -564,6 +569,7 @@
 #define KVM_TRACE_PAUSE __KVM_DEPRECATED_MAIN_0x07
 #define KVM_TRACE_DISABLE __KVM_DEPRECATED_MAIN_0x08
 #define KVM_GET_EMULATED_CPUID _IOWR(KVMIO, 0x09, struct kvm_cpuid2)
+#define KVM_GET_MSR_FEATURE_INDEX_LIST _IOWR(KVMIO, 0x0a, struct kvm_msr_list)
 #define KVM_CAP_IRQCHIP 0
 #define KVM_CAP_HLT 1
 #define KVM_CAP_MMU_SHADOW_CACHE_CONTROL 2
@@ -721,7 +727,7 @@
 #define KVM_CAP_S390_GS 140
 #define KVM_CAP_S390_AIS 141
 #define KVM_CAP_SPAPR_TCE_VFIO 142
-#define KVM_CAP_X86_GUEST_MWAIT 143
+#define KVM_CAP_X86_DISABLE_EXITS 143
 #define KVM_CAP_ARM_USER_IRQ 144
 #define KVM_CAP_S390_CMMA_MIGRATION 145
 #define KVM_CAP_PPC_FWNMI 146
@@ -731,6 +737,8 @@
 #define KVM_CAP_S390_AIS_MIGRATION 150
 #define KVM_CAP_PPC_GET_CPU_CHAR 151
 #define KVM_CAP_S390_BPB 152
+#define KVM_CAP_GET_MSR_FEATURES 153
+#define KVM_CAP_HYPERV_EVENTFD 154
 #ifdef KVM_CAP_IRQ_ROUTING
 struct kvm_irq_routing_irqchip {
   __u32 irqchip;
@@ -1032,6 +1040,77 @@
 #define KVM_SMI _IO(KVMIO, 0xb7)
 #define KVM_S390_GET_CMMA_BITS _IOWR(KVMIO, 0xb8, struct kvm_s390_cmma_log)
 #define KVM_S390_SET_CMMA_BITS _IOW(KVMIO, 0xb9, struct kvm_s390_cmma_log)
+#define KVM_MEMORY_ENCRYPT_OP _IOWR(KVMIO, 0xba, unsigned long)
+struct kvm_enc_region {
+  __u64 addr;
+  __u64 size;
+};
+#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)
+enum sev_cmd_id {
+  KVM_SEV_INIT = 0,
+  KVM_SEV_ES_INIT,
+  KVM_SEV_LAUNCH_START,
+  KVM_SEV_LAUNCH_UPDATE_DATA,
+  KVM_SEV_LAUNCH_UPDATE_VMSA,
+  KVM_SEV_LAUNCH_SECRET,
+  KVM_SEV_LAUNCH_MEASURE,
+  KVM_SEV_LAUNCH_FINISH,
+  KVM_SEV_SEND_START,
+  KVM_SEV_SEND_UPDATE_DATA,
+  KVM_SEV_SEND_UPDATE_VMSA,
+  KVM_SEV_SEND_FINISH,
+  KVM_SEV_RECEIVE_START,
+  KVM_SEV_RECEIVE_UPDATE_DATA,
+  KVM_SEV_RECEIVE_UPDATE_VMSA,
+  KVM_SEV_RECEIVE_FINISH,
+  KVM_SEV_GUEST_STATUS,
+  KVM_SEV_DBG_DECRYPT,
+  KVM_SEV_DBG_ENCRYPT,
+  KVM_SEV_CERT_EXPORT,
+  KVM_SEV_NR_MAX,
+};
+struct kvm_sev_cmd {
+  __u32 id;
+  __u64 data;
+  __u32 error;
+  __u32 sev_fd;
+};
+struct kvm_sev_launch_start {
+  __u32 handle;
+  __u32 policy;
+  __u64 dh_uaddr;
+  __u32 dh_len;
+  __u64 session_uaddr;
+  __u32 session_len;
+};
+struct kvm_sev_launch_update_data {
+  __u64 uaddr;
+  __u32 len;
+};
+struct kvm_sev_launch_secret {
+  __u64 hdr_uaddr;
+  __u32 hdr_len;
+  __u64 guest_uaddr;
+  __u32 guest_len;
+  __u64 trans_uaddr;
+  __u32 trans_len;
+};
+struct kvm_sev_launch_measure {
+  __u64 uaddr;
+  __u32 len;
+};
+struct kvm_sev_guest_status {
+  __u32 handle;
+  __u32 policy;
+  __u32 state;
+};
+struct kvm_sev_dbg {
+  __u64 src_uaddr;
+  __u64 dst_uaddr;
+  __u32 len;
+};
 #define KVM_DEV_ASSIGN_ENABLE_IOMMU (1 << 0)
 #define KVM_DEV_ASSIGN_PCI_2_3 (1 << 1)
 #define KVM_DEV_ASSIGN_MASK_INTX (1 << 2)
@@ -1079,4 +1158,12 @@
 #define KVM_ARM_DEV_EL1_VTIMER (1 << 0)
 #define KVM_ARM_DEV_EL1_PTIMER (1 << 1)
 #define KVM_ARM_DEV_PMU (1 << 2)
+struct kvm_hyperv_eventfd {
+  __u32 conn_id;
+  __s32 fd;
+  __u32 flags;
+  __u32 padding[3];
+};
+#define KVM_HYPERV_CONN_ID_MASK 0x00ffffff
+#define KVM_HYPERV_EVENTFD_DEASSIGN (1 << 0)
 #endif
diff --git a/libc/kernel/uapi/linux/libc-compat.h b/libc/kernel/uapi/linux/libc-compat.h
index c9a8b74..447a46a 100644
--- a/libc/kernel/uapi/linux/libc-compat.h
+++ b/libc/kernel/uapi/linux/libc-compat.h
@@ -169,7 +169,4 @@
 #define __UAPI_DEF_XATTR 1
 #endif
 #endif
-#ifndef __UAPI_DEF_ETHHDR
-#define __UAPI_DEF_ETHHDR 1
-#endif
 #endif
diff --git a/libc/kernel/uapi/linux/lightnvm.h b/libc/kernel/uapi/linux/lightnvm.h
index 996d873..b3ac317 100644
--- a/libc/kernel/uapi/linux/lightnvm.h
+++ b/libc/kernel/uapi/linux/lightnvm.h
@@ -58,13 +58,21 @@
   __u32 lun_begin;
   __u32 lun_end;
 };
+struct nvm_ioctl_create_extended {
+  __u16 lun_begin;
+  __u16 lun_end;
+  __u16 op;
+  __u16 rsv;
+};
 enum {
   NVM_CONFIG_TYPE_SIMPLE = 0,
+  NVM_CONFIG_TYPE_EXTENDED = 1,
 };
 struct nvm_ioctl_create_conf {
   __u32 type;
   union {
     struct nvm_ioctl_create_simple s;
+    struct nvm_ioctl_create_extended e;
   };
 };
 enum {
diff --git a/libc/kernel/uapi/linux/lirc.h b/libc/kernel/uapi/linux/lirc.h
index d7dfa76..3dfb6d0 100644
--- a/libc/kernel/uapi/linux/lirc.h
+++ b/libc/kernel/uapi/linux/lirc.h
@@ -46,6 +46,7 @@
 #define LIRC_MODE_RAW 0x00000001
 #define LIRC_MODE_PULSE 0x00000002
 #define LIRC_MODE_MODE2 0x00000004
+#define LIRC_MODE_SCANCODE 0x00000008
 #define LIRC_MODE_LIRCCODE 0x00000010
 #define LIRC_CAN_SEND_RAW LIRC_MODE2SEND(LIRC_MODE_RAW)
 #define LIRC_CAN_SEND_PULSE LIRC_MODE2SEND(LIRC_MODE_PULSE)
@@ -58,6 +59,7 @@
 #define LIRC_CAN_REC_RAW LIRC_MODE2REC(LIRC_MODE_RAW)
 #define LIRC_CAN_REC_PULSE LIRC_MODE2REC(LIRC_MODE_PULSE)
 #define LIRC_CAN_REC_MODE2 LIRC_MODE2REC(LIRC_MODE_MODE2)
+#define LIRC_CAN_REC_SCANCODE LIRC_MODE2REC(LIRC_MODE_SCANCODE)
 #define LIRC_CAN_REC_LIRCCODE LIRC_MODE2REC(LIRC_MODE_LIRCCODE)
 #define LIRC_CAN_REC_MASK LIRC_MODE2REC(LIRC_CAN_SEND_MASK)
 #define LIRC_CAN_SET_REC_CARRIER (LIRC_CAN_SET_SEND_CARRIER << 16)
@@ -90,4 +92,39 @@
 #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)
+struct lirc_scancode {
+  __u64 timestamp;
+  __u16 flags;
+  __u16 rc_proto;
+  __u32 keycode;
+  __u64 scancode;
+};
+#define LIRC_SCANCODE_FLAG_TOGGLE 1
+#define LIRC_SCANCODE_FLAG_REPEAT 2
+enum rc_proto {
+  RC_PROTO_UNKNOWN = 0,
+  RC_PROTO_OTHER = 1,
+  RC_PROTO_RC5 = 2,
+  RC_PROTO_RC5X_20 = 3,
+  RC_PROTO_RC5_SZ = 4,
+  RC_PROTO_JVC = 5,
+  RC_PROTO_SONY12 = 6,
+  RC_PROTO_SONY15 = 7,
+  RC_PROTO_SONY20 = 8,
+  RC_PROTO_NEC = 9,
+  RC_PROTO_NECX = 10,
+  RC_PROTO_NEC32 = 11,
+  RC_PROTO_SANYO = 12,
+  RC_PROTO_MCIR2_KBD = 13,
+  RC_PROTO_MCIR2_MSE = 14,
+  RC_PROTO_RC6_0 = 15,
+  RC_PROTO_RC6_6A_20 = 16,
+  RC_PROTO_RC6_6A_24 = 17,
+  RC_PROTO_RC6_6A_32 = 18,
+  RC_PROTO_RC6_MCE = 19,
+  RC_PROTO_SHARP = 20,
+  RC_PROTO_XMP = 21,
+  RC_PROTO_CEC = 22,
+  RC_PROTO_IMON = 23,
+};
 #endif
diff --git a/libc/kernel/uapi/linux/lp.h b/libc/kernel/uapi/linux/lp.h
index b3504f0..35d5d5a 100644
--- a/libc/kernel/uapi/linux/lp.h
+++ b/libc/kernel/uapi/linux/lp.h
@@ -18,6 +18,8 @@
  ****************************************************************************/
 #ifndef _UAPI_LINUX_LP_H
 #define _UAPI_LINUX_LP_H
+#include <linux/types.h>
+#include <linux/ioctl.h>
 #define LP_EXIST 0x0001
 #define LP_SELEC 0x0002
 #define LP_BUSY 0x0004
@@ -53,7 +55,13 @@
 #define LPGETSTATS 0x060d
 #endif
 #define LPGETFLAGS 0x060e
-#define LPSETTIMEOUT 0x060f
+#define LPSETTIMEOUT_OLD 0x060f
+#define LPSETTIMEOUT_NEW _IOW(0x6, 0xf, __s64[2])
+#if __BITS_PER_LONG == 64
+#define LPSETTIMEOUT LPSETTIMEOUT_OLD
+#else
+#define LPSETTIMEOUT (sizeof(time_t) > sizeof(__kernel_long_t) ? LPSETTIMEOUT_NEW : LPSETTIMEOUT_OLD)
+#endif
 #define LP_TIMEOUT_INTERRUPT (60 * HZ)
 #define LP_TIMEOUT_POLLED (10 * HZ)
 #endif
diff --git a/libc/kernel/uapi/linux/media.h b/libc/kernel/uapi/linux/media.h
index b24d616..e6236f9 100644
--- a/libc/kernel/uapi/linux/media.h
+++ b/libc/kernel/uapi/linux/media.h
@@ -32,18 +32,25 @@
   __u32 driver_version;
   __u32 reserved[31];
 };
-#define MEDIA_ENT_ID_FLAG_NEXT (1 << 31)
-#define MEDIA_ENT_F_UNKNOWN 0x00000000
 #define MEDIA_ENT_F_BASE 0x00000000
 #define MEDIA_ENT_F_OLD_BASE 0x00010000
 #define MEDIA_ENT_F_OLD_SUBDEV_BASE 0x00020000
+#define MEDIA_ENT_F_UNKNOWN MEDIA_ENT_F_BASE
+#define MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN MEDIA_ENT_F_OLD_SUBDEV_BASE
 #define MEDIA_ENT_F_DTV_DEMOD (MEDIA_ENT_F_BASE + 0x00001)
 #define MEDIA_ENT_F_TS_DEMUX (MEDIA_ENT_F_BASE + 0x00002)
 #define MEDIA_ENT_F_DTV_CA (MEDIA_ENT_F_BASE + 0x00003)
 #define MEDIA_ENT_F_DTV_NET_DECAP (MEDIA_ENT_F_BASE + 0x00004)
+#define MEDIA_ENT_F_IO_V4L (MEDIA_ENT_F_OLD_BASE + 1)
 #define MEDIA_ENT_F_IO_DTV (MEDIA_ENT_F_BASE + 0x01001)
 #define MEDIA_ENT_F_IO_VBI (MEDIA_ENT_F_BASE + 0x01002)
 #define MEDIA_ENT_F_IO_SWRADIO (MEDIA_ENT_F_BASE + 0x01003)
+#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)
 #define MEDIA_ENT_F_AUDIO_CAPTURE (MEDIA_ENT_F_BASE + 0x03001)
@@ -57,33 +64,9 @@
 #define MEDIA_ENT_F_PROC_VIDEO_STATISTICS (MEDIA_ENT_F_BASE + 0x4006)
 #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_IO_V4L (MEDIA_ENT_F_OLD_BASE + 1)
-#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_TUNER (MEDIA_ENT_F_OLD_SUBDEV_BASE + 5)
-#define MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN MEDIA_ENT_F_OLD_SUBDEV_BASE
-#define MEDIA_ENT_TYPE_SHIFT 16
-#define MEDIA_ENT_TYPE_MASK 0x00ff0000
-#define MEDIA_ENT_SUBTYPE_MASK 0x0000ffff
-#define MEDIA_ENT_T_DEVNODE_UNKNOWN (MEDIA_ENT_T_DEVNODE | MEDIA_ENT_SUBTYPE_MASK)
-#define MEDIA_ENT_T_DEVNODE MEDIA_ENT_F_OLD_BASE
-#define MEDIA_ENT_T_DEVNODE_V4L MEDIA_ENT_F_IO_V4L
-#define MEDIA_ENT_T_DEVNODE_FB (MEDIA_ENT_T_DEVNODE + 2)
-#define MEDIA_ENT_T_DEVNODE_ALSA (MEDIA_ENT_T_DEVNODE + 3)
-#define MEDIA_ENT_T_DEVNODE_DVB (MEDIA_ENT_T_DEVNODE + 4)
-#define MEDIA_ENT_T_UNKNOWN MEDIA_ENT_F_UNKNOWN
-#define MEDIA_ENT_T_V4L2_VIDEO MEDIA_ENT_F_IO_V4L
-#define MEDIA_ENT_T_V4L2_SUBDEV MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN
-#define MEDIA_ENT_T_V4L2_SUBDEV_SENSOR MEDIA_ENT_F_CAM_SENSOR
-#define MEDIA_ENT_T_V4L2_SUBDEV_FLASH MEDIA_ENT_F_FLASH
-#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_API_VERSION KERNEL_VERSION(0, 1, 0)
 #define MEDIA_ENT_FL_DEFAULT (1 << 0)
 #define MEDIA_ENT_FL_CONNECTOR (1 << 1)
+#define MEDIA_ENT_ID_FLAG_NEXT (1 << 31)
 struct media_entity_desc {
   __u32 id;
   char name[32];
@@ -145,7 +128,6 @@
 };
 #define MEDIA_INTF_T_DVB_BASE 0x00000100
 #define MEDIA_INTF_T_V4L_BASE 0x00000200
-#define MEDIA_INTF_T_ALSA_BASE 0x00000300
 #define MEDIA_INTF_T_DVB_FE (MEDIA_INTF_T_DVB_BASE)
 #define MEDIA_INTF_T_DVB_DEMUX (MEDIA_INTF_T_DVB_BASE + 1)
 #define MEDIA_INTF_T_DVB_DVR (MEDIA_INTF_T_DVB_BASE + 2)
@@ -157,14 +139,6 @@
 #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_INTF_T_ALSA_PCM_CAPTURE (MEDIA_INTF_T_ALSA_BASE)
-#define MEDIA_INTF_T_ALSA_PCM_PLAYBACK (MEDIA_INTF_T_ALSA_BASE + 1)
-#define MEDIA_INTF_T_ALSA_CONTROL (MEDIA_INTF_T_ALSA_BASE + 2)
-#define MEDIA_INTF_T_ALSA_COMPRESS (MEDIA_INTF_T_ALSA_BASE + 3)
-#define MEDIA_INTF_T_ALSA_RAWMIDI (MEDIA_INTF_T_ALSA_BASE + 4)
-#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)
 struct media_v2_entity {
   __u32 id;
   char name[64];
@@ -218,4 +192,31 @@
 #define MEDIA_IOC_ENUM_LINKS _IOWR('|', 0x02, struct media_links_enum)
 #define MEDIA_IOC_SETUP_LINK _IOWR('|', 0x03, struct media_link_desc)
 #define MEDIA_IOC_G_TOPOLOGY _IOWR('|', 0x04, struct media_v2_topology)
+#define MEDIA_ENT_TYPE_SHIFT 16
+#define MEDIA_ENT_TYPE_MASK 0x00ff0000
+#define MEDIA_ENT_SUBTYPE_MASK 0x0000ffff
+#define MEDIA_ENT_T_DEVNODE_UNKNOWN (MEDIA_ENT_F_OLD_BASE | MEDIA_ENT_SUBTYPE_MASK)
+#define MEDIA_ENT_T_DEVNODE MEDIA_ENT_F_OLD_BASE
+#define MEDIA_ENT_T_DEVNODE_V4L MEDIA_ENT_F_IO_V4L
+#define MEDIA_ENT_T_DEVNODE_FB (MEDIA_ENT_F_OLD_BASE + 2)
+#define MEDIA_ENT_T_DEVNODE_ALSA (MEDIA_ENT_F_OLD_BASE + 3)
+#define MEDIA_ENT_T_DEVNODE_DVB (MEDIA_ENT_F_OLD_BASE + 4)
+#define MEDIA_ENT_T_UNKNOWN MEDIA_ENT_F_UNKNOWN
+#define MEDIA_ENT_T_V4L2_VIDEO MEDIA_ENT_F_IO_V4L
+#define MEDIA_ENT_T_V4L2_SUBDEV MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN
+#define MEDIA_ENT_T_V4L2_SUBDEV_SENSOR MEDIA_ENT_F_CAM_SENSOR
+#define MEDIA_ENT_T_V4L2_SUBDEV_FLASH MEDIA_ENT_F_FLASH
+#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_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)
+#define MEDIA_INTF_T_ALSA_CONTROL (MEDIA_INTF_T_ALSA_BASE + 2)
+#define MEDIA_INTF_T_ALSA_COMPRESS (MEDIA_INTF_T_ALSA_BASE + 3)
+#define MEDIA_INTF_T_ALSA_RAWMIDI (MEDIA_INTF_T_ALSA_BASE + 4)
+#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)
 #endif
diff --git a/libc/kernel/uapi/linux/membarrier.h b/libc/kernel/uapi/linux/membarrier.h
index 2f5ea7d..19cfeb2 100644
--- a/libc/kernel/uapi/linux/membarrier.h
+++ b/libc/kernel/uapi/linux/membarrier.h
@@ -20,8 +20,13 @@
 #define _UAPI_LINUX_MEMBARRIER_H
 enum membarrier_cmd {
   MEMBARRIER_CMD_QUERY = 0,
-  MEMBARRIER_CMD_SHARED = (1 << 0),
+  MEMBARRIER_CMD_GLOBAL = (1 << 0),
+  MEMBARRIER_CMD_GLOBAL_EXPEDITED = (1 << 1),
+  MEMBARRIER_CMD_REGISTER_GLOBAL_EXPEDITED = (1 << 2),
   MEMBARRIER_CMD_PRIVATE_EXPEDITED = (1 << 3),
   MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED = (1 << 4),
+  MEMBARRIER_CMD_PRIVATE_EXPEDITED_SYNC_CORE = (1 << 5),
+  MEMBARRIER_CMD_REGISTER_PRIVATE_EXPEDITED_SYNC_CORE = (1 << 6),
+  MEMBARRIER_CMD_SHARED = MEMBARRIER_CMD_GLOBAL,
 };
 #endif
diff --git a/libc/kernel/uapi/linux/msdos_fs.h b/libc/kernel/uapi/linux/msdos_fs.h
index 9daf251..60ee22a 100644
--- a/libc/kernel/uapi/linux/msdos_fs.h
+++ b/libc/kernel/uapi/linux/msdos_fs.h
@@ -21,7 +21,9 @@
 #include <linux/types.h>
 #include <linux/magic.h>
 #include <asm/byteorder.h>
+#ifndef SECTOR_SIZE
 #define SECTOR_SIZE 512
+#endif
 #define SECTOR_BITS 9
 #define MSDOS_DPB (MSDOS_DPS)
 #define MSDOS_DPB_BITS 4
diff --git a/libc/kernel/uapi/linux/msg.h b/libc/kernel/uapi/linux/msg.h
index 89d8d38..20d8d4f 100644
--- a/libc/kernel/uapi/linux/msg.h
+++ b/libc/kernel/uapi/linux/msg.h
@@ -21,6 +21,7 @@
 #include <linux/ipc.h>
 #define MSG_STAT 11
 #define MSG_INFO 12
+#define MSG_STAT_ANY 13
 #define MSG_NOERROR 010000
 #define MSG_EXCEPT 020000
 #define MSG_COPY 040000
diff --git a/libc/kernel/uapi/linux/ncsi.h b/libc/kernel/uapi/linux/ncsi.h
new file mode 100644
index 0000000..6b128e4
--- /dev/null
+++ b/libc/kernel/uapi/linux/ncsi.h
@@ -0,0 +1,62 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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_NCSI_NETLINK_H__
+#define __UAPI_NCSI_NETLINK_H__
+enum ncsi_nl_commands {
+  NCSI_CMD_UNSPEC,
+  NCSI_CMD_PKG_INFO,
+  NCSI_CMD_SET_INTERFACE,
+  NCSI_CMD_CLEAR_INTERFACE,
+  __NCSI_CMD_AFTER_LAST,
+  NCSI_CMD_MAX = __NCSI_CMD_AFTER_LAST - 1
+};
+enum ncsi_nl_attrs {
+  NCSI_ATTR_UNSPEC,
+  NCSI_ATTR_IFINDEX,
+  NCSI_ATTR_PACKAGE_LIST,
+  NCSI_ATTR_PACKAGE_ID,
+  NCSI_ATTR_CHANNEL_ID,
+  __NCSI_ATTR_AFTER_LAST,
+  NCSI_ATTR_MAX = __NCSI_ATTR_AFTER_LAST - 1
+};
+enum ncsi_nl_pkg_attrs {
+  NCSI_PKG_ATTR_UNSPEC,
+  NCSI_PKG_ATTR,
+  NCSI_PKG_ATTR_ID,
+  NCSI_PKG_ATTR_FORCED,
+  NCSI_PKG_ATTR_CHANNEL_LIST,
+  __NCSI_PKG_ATTR_AFTER_LAST,
+  NCSI_PKG_ATTR_MAX = __NCSI_PKG_ATTR_AFTER_LAST - 1
+};
+enum ncsi_nl_channel_attrs {
+  NCSI_CHANNEL_ATTR_UNSPEC,
+  NCSI_CHANNEL_ATTR,
+  NCSI_CHANNEL_ATTR_ID,
+  NCSI_CHANNEL_ATTR_VERSION_MAJOR,
+  NCSI_CHANNEL_ATTR_VERSION_MINOR,
+  NCSI_CHANNEL_ATTR_VERSION_STR,
+  NCSI_CHANNEL_ATTR_LINK_STATE,
+  NCSI_CHANNEL_ATTR_ACTIVE,
+  NCSI_CHANNEL_ATTR_FORCED,
+  NCSI_CHANNEL_ATTR_VLAN_LIST,
+  NCSI_CHANNEL_ATTR_VLAN_ID,
+  __NCSI_CHANNEL_ATTR_AFTER_LAST,
+  NCSI_CHANNEL_ATTR_MAX = __NCSI_CHANNEL_ATTR_AFTER_LAST - 1
+};
+#endif
diff --git a/libc/kernel/uapi/linux/ndctl.h b/libc/kernel/uapi/linux/ndctl.h
index 44c9ee0..bee0b1c 100644
--- a/libc/kernel/uapi/linux/ndctl.h
+++ b/libc/kernel/uapi/linux/ndctl.h
@@ -19,49 +19,6 @@
 #ifndef __NDCTL_H__
 #define __NDCTL_H__
 #include <linux/types.h>
-struct nd_cmd_smart {
-  __u32 status;
-  __u8 data[128];
-} __packed;
-#define ND_SMART_HEALTH_VALID (1 << 0)
-#define ND_SMART_SPARES_VALID (1 << 1)
-#define ND_SMART_USED_VALID (1 << 2)
-#define ND_SMART_TEMP_VALID (1 << 3)
-#define ND_SMART_CTEMP_VALID (1 << 4)
-#define ND_SMART_ALARM_VALID (1 << 9)
-#define ND_SMART_SHUTDOWN_VALID (1 << 10)
-#define ND_SMART_VENDOR_VALID (1 << 11)
-#define ND_SMART_SPARE_TRIP (1 << 0)
-#define ND_SMART_TEMP_TRIP (1 << 1)
-#define ND_SMART_CTEMP_TRIP (1 << 2)
-#define ND_SMART_NON_CRITICAL_HEALTH (1 << 0)
-#define ND_SMART_CRITICAL_HEALTH (1 << 1)
-#define ND_SMART_FATAL_HEALTH (1 << 2)
-struct nd_smart_payload {
-  __u32 flags;
-  __u8 reserved0[4];
-  __u8 health;
-  __u8 spares;
-  __u8 life_used;
-  __u8 alarm_flags;
-  __u16 temperature;
-  __u16 ctrl_temperature;
-  __u8 reserved1[15];
-  __u8 shutdown_state;
-  __u32 vendor_size;
-  __u8 vendor_data[92];
-} __packed;
-struct nd_cmd_smart_threshold {
-  __u32 status;
-  __u8 data[8];
-} __packed;
-struct nd_smart_threshold_payload {
-  __u8 alarm_control;
-  __u8 reserved0;
-  __u16 temperature;
-  __u8 spares;
-  __u8 reserved[3];
-} __packed;
 struct nd_cmd_dimm_flags {
   __u32 status;
   __u32 flags;
@@ -158,8 +115,6 @@
   ND_CONFIG_LOCKED = 1,
 };
 #define ND_IOCTL 'N'
-#define ND_IOCTL_SMART _IOWR(ND_IOCTL, ND_CMD_SMART, struct nd_cmd_smart)
-#define ND_IOCTL_SMART_THRESHOLD _IOWR(ND_IOCTL, ND_CMD_SMART_THRESHOLD, struct nd_cmd_smart_threshold)
 #define ND_IOCTL_DIMM_FLAGS _IOWR(ND_IOCTL, ND_CMD_DIMM_FLAGS, struct nd_cmd_dimm_flags)
 #define ND_IOCTL_GET_CONFIG_SIZE _IOWR(ND_IOCTL, ND_CMD_GET_CONFIG_SIZE, struct nd_cmd_get_config_size)
 #define ND_IOCTL_GET_CONFIG_DATA _IOWR(ND_IOCTL, ND_CMD_GET_CONFIG_DATA, struct nd_cmd_get_config_data_hdr)
@@ -186,7 +141,7 @@
   ND_DRIVER_DAX_PMEM = 1 << ND_DEVICE_DAX_PMEM,
 };
 enum {
-  ND_MIN_NAMESPACE_SIZE = 0x00400000,
+  ND_MIN_NAMESPACE_SIZE = PAGE_SIZE,
 };
 enum ars_masks {
   ARS_STATUS_MASK = 0x0000FFFF,
diff --git a/libc/kernel/uapi/linux/netfilter/nf_conntrack_common.h b/libc/kernel/uapi/linux/netfilter/nf_conntrack_common.h
index 0d35c15..2259e09 100644
--- a/libc/kernel/uapi/linux/netfilter/nf_conntrack_common.h
+++ b/libc/kernel/uapi/linux/netfilter/nf_conntrack_common.h
@@ -62,7 +62,9 @@
   IPS_UNTRACKED = (1 << IPS_UNTRACKED_BIT),
   IPS_HELPER_BIT = 13,
   IPS_HELPER = (1 << IPS_HELPER_BIT),
-  IPS_UNCHANGEABLE_MASK = (IPS_NAT_DONE_MASK | IPS_NAT_MASK | IPS_EXPECTED | IPS_CONFIRMED | IPS_DYING | IPS_SEQ_ADJUST | IPS_TEMPLATE),
+  IPS_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,
 };
 enum ip_conntrack_events {
@@ -78,6 +80,7 @@
   IPCT_NATSEQADJ = IPCT_SEQADJ,
   IPCT_SECMARK,
   IPCT_LABEL,
+  IPCT_SYNPROXY,
 };
 enum ip_conntrack_expect_events {
   IPEXP_NEW,
diff --git a/libc/kernel/uapi/linux/netfilter/nf_conntrack_tcp.h b/libc/kernel/uapi/linux/netfilter/nf_conntrack_tcp.h
index e76aa9b..8894aa1 100644
--- a/libc/kernel/uapi/linux/netfilter/nf_conntrack_tcp.h
+++ b/libc/kernel/uapi/linux/netfilter/nf_conntrack_tcp.h
@@ -44,6 +44,7 @@
 #define IP_CT_TCP_FLAG_DATA_UNACKNOWLEDGED 0x10
 #define IP_CT_TCP_FLAG_MAXACK_SET 0x20
 #define IP_CT_EXP_CHALLENGE_ACK 0x40
+#define IP_CT_TCP_SIMULTANEOUS_OPEN 0x80
 struct nf_ct_tcp_flags {
   __u8 flags;
   __u8 mask;
diff --git a/libc/kernel/uapi/linux/netfilter/nf_tables.h b/libc/kernel/uapi/linux/netfilter/nf_tables.h
index 169fb33..610594c 100644
--- a/libc/kernel/uapi/linux/netfilter/nf_tables.h
+++ b/libc/kernel/uapi/linux/netfilter/nf_tables.h
@@ -81,6 +81,9 @@
   NFT_MSG_GETOBJ,
   NFT_MSG_DELOBJ,
   NFT_MSG_GETOBJ_RESET,
+  NFT_MSG_NEWFLOWTABLE,
+  NFT_MSG_GETFLOWTABLE,
+  NFT_MSG_DELFLOWTABLE,
   NFT_MSG_MAX,
 };
 enum nft_list_attributes {
@@ -105,6 +108,8 @@
   NFTA_TABLE_NAME,
   NFTA_TABLE_FLAGS,
   NFTA_TABLE_USE,
+  NFTA_TABLE_HANDLE,
+  NFTA_TABLE_PAD,
   __NFTA_TABLE_MAX
 };
 #define NFTA_TABLE_MAX (__NFTA_TABLE_MAX - 1)
@@ -183,6 +188,7 @@
   NFTA_SET_USERDATA,
   NFTA_SET_PAD,
   NFTA_SET_OBJ_TYPE,
+  NFTA_SET_HANDLE,
   __NFTA_SET_MAX
 };
 #define NFTA_SET_MAX (__NFTA_SET_MAX - 1)
@@ -405,6 +411,7 @@
   NFT_META_OIFGROUP,
   NFT_META_CGROUP,
   NFT_META_PRANDOM,
+  NFT_META_SECPATH,
 };
 enum nft_rt_keys {
   NFT_RT_CLASSID,
@@ -463,6 +470,10 @@
   NFT_CT_AVGPKT,
   NFT_CT_ZONE,
   NFT_CT_EVENTMASK,
+  NFT_CT_SRC_IP,
+  NFT_CT_DST_IP,
+  NFT_CT_SRC_IP6,
+  NFT_CT_DST_IP6,
 };
 enum nft_ct_attributes {
   NFTA_CT_UNSPEC,
@@ -473,6 +484,12 @@
   __NFTA_CT_MAX
 };
 #define NFTA_CT_MAX (__NFTA_CT_MAX - 1)
+enum nft_offload_attributes {
+  NFTA_FLOW_UNSPEC,
+  NFTA_FLOW_TABLE_NAME,
+  __NFTA_FLOW_MAX,
+};
+#define NFTA_FLOW_MAX (__NFTA_FLOW_MAX - 1)
 enum nft_limit_type {
   NFT_LIMIT_PKTS,
   NFT_LIMIT_PKT_BYTES
@@ -664,9 +681,36 @@
   NFTA_OBJ_TYPE,
   NFTA_OBJ_DATA,
   NFTA_OBJ_USE,
+  NFTA_OBJ_HANDLE,
+  NFTA_OBJ_PAD,
   __NFTA_OBJ_MAX
 };
 #define NFTA_OBJ_MAX (__NFTA_OBJ_MAX - 1)
+enum nft_flowtable_attributes {
+  NFTA_FLOWTABLE_UNSPEC,
+  NFTA_FLOWTABLE_TABLE,
+  NFTA_FLOWTABLE_NAME,
+  NFTA_FLOWTABLE_HOOK,
+  NFTA_FLOWTABLE_USE,
+  NFTA_FLOWTABLE_HANDLE,
+  NFTA_FLOWTABLE_PAD,
+  __NFTA_FLOWTABLE_MAX
+};
+#define NFTA_FLOWTABLE_MAX (__NFTA_FLOWTABLE_MAX - 1)
+enum nft_flowtable_hook_attributes {
+  NFTA_FLOWTABLE_HOOK_UNSPEC,
+  NFTA_FLOWTABLE_HOOK_NUM,
+  NFTA_FLOWTABLE_HOOK_PRIORITY,
+  NFTA_FLOWTABLE_HOOK_DEVS,
+  __NFTA_FLOWTABLE_HOOK_MAX
+};
+#define NFTA_FLOWTABLE_HOOK_MAX (__NFTA_FLOWTABLE_HOOK_MAX - 1)
+enum nft_devices_attributes {
+  NFTA_DEVICE_UNSPEC,
+  NFTA_DEVICE_NAME,
+  __NFTA_DEVICE_MAX
+};
+#define NFTA_DEVICE_MAX (__NFTA_DEVICE_MAX - 1)
 enum nft_trace_attributes {
   NFTA_TRACE_UNSPEC,
   NFTA_TRACE_TABLE,
diff --git a/libc/kernel/uapi/linux/netfilter/nfnetlink_conntrack.h b/libc/kernel/uapi/linux/netfilter/nfnetlink_conntrack.h
index a961723..1347820 100644
--- a/libc/kernel/uapi/linux/netfilter/nfnetlink_conntrack.h
+++ b/libc/kernel/uapi/linux/netfilter/nfnetlink_conntrack.h
@@ -65,6 +65,7 @@
   CTA_MARK_MASK,
   CTA_LABELS,
   CTA_LABELS_MASK,
+  CTA_SYNPROXY,
   __CTA_MAX
 };
 #define CTA_MAX (__CTA_MAX - 1)
@@ -187,6 +188,14 @@
   __CTA_NAT_SEQ_MAX
 };
 #define CTA_NAT_SEQ_MAX (__CTA_NAT_SEQ_MAX - 1)
+enum ctattr_synproxy {
+  CTA_SYNPROXY_UNSPEC,
+  CTA_SYNPROXY_ISN,
+  CTA_SYNPROXY_ITS,
+  CTA_SYNPROXY_TSOFF,
+  __CTA_SYNPROXY_MAX,
+};
+#define CTA_SYNPROXY_MAX (__CTA_SYNPROXY_MAX - 1)
 enum ctattr_expect {
   CTA_EXPECT_UNSPEC,
   CTA_EXPECT_MASTER,
diff --git a/libc/kernel/uapi/linux/netfilter/xt_connlimit.h b/libc/kernel/uapi/linux/netfilter/xt_connlimit.h
index 262bc2a..9ff2de9 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_connlimit.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_connlimit.h
@@ -35,6 +35,6 @@
   };
   unsigned int limit;
   __u32 flags;
-  struct xt_connlimit_data * data __attribute__((aligned(8)));
+  struct nf_conncount_data * data __attribute__((aligned(8)));
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter/xt_connmark.h b/libc/kernel/uapi/linux/netfilter/xt_connmark.h
index ef4c1d0..f14474f 100644
--- a/libc/kernel/uapi/linux/netfilter/xt_connmark.h
+++ b/libc/kernel/uapi/linux/netfilter/xt_connmark.h
@@ -24,10 +24,18 @@
   XT_CONNMARK_SAVE,
   XT_CONNMARK_RESTORE
 };
+enum {
+  D_SHIFT_LEFT = 0,
+  D_SHIFT_RIGHT,
+};
 struct xt_connmark_tginfo1 {
   __u32 ctmark, ctmask, nfmask;
   __u8 mode;
 };
+struct xt_connmark_tginfo2 {
+  __u32 ctmark, ctmask, nfmask;
+  __u8 shift_dir, shift_bits, mode;
+};
 struct xt_connmark_mtinfo1 {
   __u32 mark, mask;
   __u8 invert;
diff --git a/libc/kernel/uapi/linux/netfilter_bridge/ebt_ip.h b/libc/kernel/uapi/linux/netfilter_bridge/ebt_ip.h
index ef8edab..6ee8afb 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge/ebt_ip.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge/ebt_ip.h
@@ -25,7 +25,9 @@
 #define EBT_IP_PROTO 0x08
 #define EBT_IP_SPORT 0x10
 #define EBT_IP_DPORT 0x20
-#define EBT_IP_MASK (EBT_IP_SOURCE | EBT_IP_DEST | EBT_IP_TOS | EBT_IP_PROTO | EBT_IP_SPORT | EBT_IP_DPORT)
+#define EBT_IP_ICMP 0x40
+#define EBT_IP_IGMP 0x80
+#define EBT_IP_MASK (EBT_IP_SOURCE | EBT_IP_DEST | EBT_IP_TOS | EBT_IP_PROTO | EBT_IP_SPORT | EBT_IP_DPORT | EBT_IP_ICMP | EBT_IP_IGMP)
 #define EBT_IP_MATCH "ip"
 struct ebt_ip_info {
   __be32 saddr;
@@ -36,7 +38,14 @@
   __u8 protocol;
   __u8 bitmask;
   __u8 invflags;
-  __u16 sport[2];
-  __u16 dport[2];
+  union {
+    __u16 sport[2];
+    __u8 icmp_type[2];
+    __u8 igmp_type[2];
+  };
+  union {
+    __u16 dport[2];
+    __u8 icmp_code[2];
+  };
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_bridge/ebtables.h b/libc/kernel/uapi/linux/netfilter_bridge/ebtables.h
index ba6ce91..e102756 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge/ebtables.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge/ebtables.h
@@ -24,6 +24,7 @@
 #define EBT_TABLE_MAXNAMELEN 32
 #define EBT_CHAIN_MAXNAMELEN EBT_TABLE_MAXNAMELEN
 #define EBT_FUNCTION_MAXNAMELEN EBT_TABLE_MAXNAMELEN
+#define EBT_EXTENSION_MAXNAMELEN 31
 #define EBT_ACCEPT - 1
 #define EBT_DROP - 2
 #define EBT_CONTINUE - 3
@@ -80,7 +81,10 @@
 #define EBT_INV_MASK (EBT_IPROTO | EBT_IIN | EBT_IOUT | EBT_ILOGICALIN | EBT_ILOGICALOUT | EBT_ISOURCE | EBT_IDEST)
 struct ebt_entry_match {
   union {
-    char name[EBT_FUNCTION_MAXNAMELEN];
+    struct {
+      char name[EBT_EXTENSION_MAXNAMELEN];
+      uint8_t revision;
+    };
     struct xt_match * match;
   } u;
   unsigned int match_size;
@@ -88,7 +92,10 @@
 };
 struct ebt_entry_watcher {
   union {
-    char name[EBT_FUNCTION_MAXNAMELEN];
+    struct {
+      char name[EBT_EXTENSION_MAXNAMELEN];
+      uint8_t revision;
+    };
     struct xt_target * watcher;
   } u;
   unsigned int watcher_size;
@@ -96,7 +103,10 @@
 };
 struct ebt_entry_target {
   union {
-    char name[EBT_FUNCTION_MAXNAMELEN];
+    struct {
+      char name[EBT_EXTENSION_MAXNAMELEN];
+      uint8_t revision;
+    };
     struct xt_target * target;
   } u;
   unsigned int target_size;
diff --git a/libc/kernel/uapi/linux/netfilter_decnet.h b/libc/kernel/uapi/linux/netfilter_decnet.h
index cde4645..a9dcdd3 100644
--- a/libc/kernel/uapi/linux/netfilter_decnet.h
+++ b/libc/kernel/uapi/linux/netfilter_decnet.h
@@ -24,6 +24,7 @@
 #define NFC_DN_DST 0x0002
 #define NFC_DN_IF_IN 0x0004
 #define NFC_DN_IF_OUT 0x0008
+#define NF_DN_NUMHOOKS 7
 #define NF_DN_PRE_ROUTING 0
 #define NF_DN_LOCAL_IN 1
 #define NF_DN_FORWARD 2
@@ -31,7 +32,6 @@
 #define NF_DN_POST_ROUTING 4
 #define NF_DN_HELLO 5
 #define NF_DN_ROUTE 6
-#define NF_DN_NUMHOOKS 7
 enum nf_dn_hook_priorities {
   NF_DN_PRI_FIRST = INT_MIN,
   NF_DN_PRI_CONNTRACK = - 200,
diff --git a/libc/kernel/uapi/linux/netfilter_ipv4.h b/libc/kernel/uapi/linux/netfilter_ipv4.h
index 06a6247..7eed768 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv4.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv4.h
@@ -40,6 +40,7 @@
 #define NF_IP_NUMHOOKS 5
 enum nf_ip_hook_priorities {
   NF_IP_PRI_FIRST = INT_MIN,
+  NF_IP_PRI_RAW_BEFORE_DEFRAG = - 450,
   NF_IP_PRI_CONNTRACK_DEFRAG = - 400,
   NF_IP_PRI_RAW = - 300,
   NF_IP_PRI_SELINUX_FIRST = - 225,
diff --git a/libc/kernel/uapi/linux/netfilter_ipv6.h b/libc/kernel/uapi/linux/netfilter_ipv6.h
index d81134f..2054532 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv6.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv6.h
@@ -40,6 +40,7 @@
 #define NF_IP6_NUMHOOKS 5
 enum nf_ip6_hook_priorities {
   NF_IP6_PRI_FIRST = INT_MIN,
+  NF_IP6_PRI_RAW_BEFORE_DEFRAG = - 450,
   NF_IP6_PRI_CONNTRACK_DEFRAG = - 400,
   NF_IP6_PRI_RAW = - 300,
   NF_IP6_PRI_SELINUX_FIRST = - 225,
diff --git a/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_srh.h b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_srh.h
new file mode 100644
index 0000000..70fd3e4
--- /dev/null
+++ b/libc/kernel/uapi/linux/netfilter_ipv6/ip6t_srh.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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 _IP6T_SRH_H
+#define _IP6T_SRH_H
+#include <linux/types.h>
+#include <linux/netfilter.h>
+#define IP6T_SRH_NEXTHDR 0x0001
+#define IP6T_SRH_LEN_EQ 0x0002
+#define IP6T_SRH_LEN_GT 0x0004
+#define IP6T_SRH_LEN_LT 0x0008
+#define IP6T_SRH_SEGS_EQ 0x0010
+#define IP6T_SRH_SEGS_GT 0x0020
+#define IP6T_SRH_SEGS_LT 0x0040
+#define IP6T_SRH_LAST_EQ 0x0080
+#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_INV_NEXTHDR 0x0001
+#define IP6T_SRH_INV_LEN_EQ 0x0002
+#define IP6T_SRH_INV_LEN_GT 0x0004
+#define IP6T_SRH_INV_LEN_LT 0x0008
+#define IP6T_SRH_INV_SEGS_EQ 0x0010
+#define IP6T_SRH_INV_SEGS_GT 0x0020
+#define IP6T_SRH_INV_SEGS_LT 0x0040
+#define IP6T_SRH_INV_LAST_EQ 0x0080
+#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
+struct ip6t_srh {
+  __u8 next_hdr;
+  __u8 hdr_len;
+  __u8 segs_left;
+  __u8 last_entry;
+  __u16 tag;
+  __u16 mt_flags;
+  __u16 mt_invflags;
+};
+#endif
diff --git a/libc/kernel/uapi/linux/nfs.h b/libc/kernel/uapi/linux/nfs.h
index ac11084..e8c0499 100644
--- a/libc/kernel/uapi/linux/nfs.h
+++ b/libc/kernel/uapi/linux/nfs.h
@@ -21,6 +21,7 @@
 #include <linux/types.h>
 #define NFS_PROGRAM 100003
 #define NFS_PORT 2049
+#define NFS_RDMA_PORT 20049
 #define NFS_MAXDATA 8192
 #define NFS_MAXPATHLEN 1024
 #define NFS_MAXNAMLEN 255
diff --git a/libc/kernel/uapi/linux/nl80211.h b/libc/kernel/uapi/linux/nl80211.h
index ebf9448..349b471 100644
--- a/libc/kernel/uapi/linux/nl80211.h
+++ b/libc/kernel/uapi/linux/nl80211.h
@@ -160,6 +160,9 @@
   NL80211_CMD_DEL_PMK,
   NL80211_CMD_PORT_AUTHORIZED,
   NL80211_CMD_RELOAD_REGDB,
+  NL80211_CMD_EXTERNAL_AUTH,
+  NL80211_CMD_STA_OPMODE_CHANGED,
+  NL80211_CMD_CONTROL_PORT_FRAME,
   __NL80211_CMD_AFTER_LAST,
   NL80211_CMD_MAX = __NL80211_CMD_AFTER_LAST - 1
 };
@@ -436,6 +439,11 @@
   NL80211_ATTR_WANT_1X_4WAY_HS,
   NL80211_ATTR_PMKR0_NAME,
   NL80211_ATTR_PORT_AUTHORIZED,
+  NL80211_ATTR_EXTERNAL_AUTH_ACTION,
+  NL80211_ATTR_EXTERNAL_AUTH_SUPPORT,
+  NL80211_ATTR_NSS,
+  NL80211_ATTR_ACK_SIGNAL,
+  NL80211_ATTR_CONTROL_PORT_OVER_NL80211,
   __NL80211_ATTR_AFTER_LAST,
   NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST,
   NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
@@ -465,6 +473,7 @@
 #define NL80211_ATTR_KEY NL80211_ATTR_KEY
 #define NL80211_ATTR_KEYS NL80211_ATTR_KEYS
 #define NL80211_ATTR_FEATURE_FLAGS NL80211_ATTR_FEATURE_FLAGS
+#define NL80211_WIPHY_NAME_MAXLEN 64
 #define NL80211_MAX_SUPP_RATES 32
 #define NL80211_MAX_SUPP_HT_RATES 77
 #define NL80211_MAX_SUPP_REG_RULES 64
@@ -579,6 +588,7 @@
   NL80211_STA_INFO_TID_STATS,
   NL80211_STA_INFO_RX_DURATION,
   NL80211_STA_INFO_PAD,
+  NL80211_STA_INFO_ACK_SIGNAL,
   __NL80211_STA_INFO_AFTER_LAST,
   NL80211_STA_INFO_MAX = __NL80211_STA_INFO_AFTER_LAST - 1
 };
@@ -876,6 +886,7 @@
   NL80211_BSS_PAD,
   NL80211_BSS_PARENT_TSF,
   NL80211_BSS_PARENT_BSSID,
+  NL80211_BSS_CHAIN_SIGNAL,
   __NL80211_BSS_AFTER_LAST,
   NL80211_BSS_MAX = __NL80211_BSS_AFTER_LAST - 1
 };
@@ -1202,6 +1213,11 @@
   NL80211_EXT_FEATURE_OCE_PROBE_REQ_HIGH_TX_RATE,
   NL80211_EXT_FEATURE_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION,
   NL80211_EXT_FEATURE_MFP_OPTIONAL,
+  NL80211_EXT_FEATURE_LOW_SPAN_SCAN,
+  NL80211_EXT_FEATURE_LOW_POWER_SCAN,
+  NL80211_EXT_FEATURE_HIGH_ACCURACY_SCAN,
+  NL80211_EXT_FEATURE_DFS_OFFLOAD,
+  NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211,
   NUM_NL80211_EXT_FEATURES,
   MAX_NL80211_EXT_FEATURES = NUM_NL80211_EXT_FEATURES - 1
 };
@@ -1230,6 +1246,9 @@
   NL80211_SCAN_FLAG_ACCEPT_BCAST_PROBE_RESP = 1 << 5,
   NL80211_SCAN_FLAG_OCE_PROBE_REQ_HIGH_TX_RATE = 1 << 6,
   NL80211_SCAN_FLAG_OCE_PROBE_REQ_DEFERRAL_SUPPRESSION = 1 << 7,
+  NL80211_SCAN_FLAG_LOW_SPAN = 1 << 8,
+  NL80211_SCAN_FLAG_LOW_POWER = 1 << 9,
+  NL80211_SCAN_FLAG_HIGH_ACCURACY = 1 << 10,
 };
 enum nl80211_acl_policy {
   NL80211_ACL_POLICY_ACCEPT_UNLESS_LISTED,
@@ -1248,6 +1267,7 @@
   NL80211_RADAR_CAC_ABORTED,
   NL80211_RADAR_NOP_FINISHED,
   NL80211_RADAR_PRE_CAC_EXPIRED,
+  NL80211_RADAR_CAC_STARTED,
 };
 enum nl80211_dfs_state {
   NL80211_DFS_USABLE,
@@ -1353,4 +1373,8 @@
   NUM_NL80211_NAN_MATCH_ATTR,
   NL80211_NAN_MATCH_ATTR_MAX = NUM_NL80211_NAN_MATCH_ATTR - 1
 };
+enum nl80211_external_auth_action {
+  NL80211_EXTERNAL_AUTH_START,
+  NL80211_EXTERNAL_AUTH_ABORT,
+};
 #endif
diff --git a/libc/kernel/uapi/linux/nubus.h b/libc/kernel/uapi/linux/nubus.h
index 530005b..141c2f2 100644
--- a/libc/kernel/uapi/linux/nubus.h
+++ b/libc/kernel/uapi/linux/nubus.h
@@ -155,16 +155,4 @@
   NUBUS_RESID_FIFTHMODE = 0x0084,
   NUBUS_RESID_SIXTHMODE = 0x0085
 };
-struct nubus_dir {
-  unsigned char * base;
-  unsigned char * ptr;
-  int done;
-  int mask;
-};
-struct nubus_dirent {
-  unsigned char * base;
-  unsigned char type;
-  __u32 data;
-  int mask;
-};
 #endif
diff --git a/libc/kernel/uapi/linux/openvswitch.h b/libc/kernel/uapi/linux/openvswitch.h
index bea44d0..1dba16e 100644
--- a/libc/kernel/uapi/linux/openvswitch.h
+++ b/libc/kernel/uapi/linux/openvswitch.h
@@ -204,6 +204,7 @@
   OVS_TUNNEL_KEY_ATTR_IPV6_SRC,
   OVS_TUNNEL_KEY_ATTR_IPV6_DST,
   OVS_TUNNEL_KEY_ATTR_PAD,
+  OVS_TUNNEL_KEY_ATTR_ERSPAN_OPTS,
   __OVS_TUNNEL_KEY_ATTR_MAX
 };
 #define OVS_TUNNEL_KEY_ATTR_MAX (__OVS_TUNNEL_KEY_ATTR_MAX - 1)
diff --git a/libc/kernel/uapi/linux/pci_regs.h b/libc/kernel/uapi/linux/pci_regs.h
index 148f2b4..4ef3837 100644
--- a/libc/kernel/uapi/linux/pci_regs.h
+++ b/libc/kernel/uapi/linux/pci_regs.h
@@ -430,6 +430,7 @@
 #define PCI_EXP_LNKCAP_SLS_2_5GB 0x00000001
 #define PCI_EXP_LNKCAP_SLS_5_0GB 0x00000002
 #define PCI_EXP_LNKCAP_SLS_8_0GB 0x00000003
+#define PCI_EXP_LNKCAP_SLS_16_0GB 0x00000004
 #define PCI_EXP_LNKCAP_MLW 0x000003f0
 #define PCI_EXP_LNKCAP_ASPMS 0x00000c00
 #define PCI_EXP_LNKCAP_L0SEL 0x00007000
@@ -457,6 +458,7 @@
 #define PCI_EXP_LNKSTA_CLS_2_5GB 0x0001
 #define PCI_EXP_LNKSTA_CLS_5_0GB 0x0002
 #define PCI_EXP_LNKSTA_CLS_8_0GB 0x0003
+#define PCI_EXP_LNKSTA_CLS_16_0GB 0x0004
 #define PCI_EXP_LNKSTA_NLW 0x03f0
 #define PCI_EXP_LNKSTA_NLW_X1 0x0010
 #define PCI_EXP_LNKSTA_NLW_X2 0x0020
@@ -524,15 +526,19 @@
 #define PCI_EXP_RTSTA_PME 0x00010000
 #define PCI_EXP_RTSTA_PENDING 0x00020000
 #define PCI_EXP_DEVCAP2 36
+#define PCI_EXP_DEVCAP2_COMP_TMOUT_DIS 0x00000010
 #define PCI_EXP_DEVCAP2_ARI 0x00000020
 #define PCI_EXP_DEVCAP2_ATOMIC_ROUTE 0x00000040
+#define PCI_EXP_DEVCAP2_ATOMIC_COMP32 0x00000080
 #define PCI_EXP_DEVCAP2_ATOMIC_COMP64 0x00000100
+#define PCI_EXP_DEVCAP2_ATOMIC_COMP128 0x00000200
 #define PCI_EXP_DEVCAP2_LTR 0x00000800
 #define PCI_EXP_DEVCAP2_OBFF_MASK 0x000c0000
 #define PCI_EXP_DEVCAP2_OBFF_MSG 0x00040000
 #define PCI_EXP_DEVCAP2_OBFF_WAKE 0x00080000
 #define PCI_EXP_DEVCTL2 40
 #define PCI_EXP_DEVCTL2_COMP_TIMEOUT 0x000f
+#define PCI_EXP_DEVCTL2_COMP_TMOUT_DIS 0x0010
 #define PCI_EXP_DEVCTL2_ARI 0x0020
 #define PCI_EXP_DEVCTL2_ATOMIC_REQ 0x0040
 #define PCI_EXP_DEVCTL2_ATOMIC_EGRESS_BLOCK 0x0080
@@ -548,6 +554,7 @@
 #define PCI_EXP_LNKCAP2_SLS_2_5GB 0x00000002
 #define PCI_EXP_LNKCAP2_SLS_5_0GB 0x00000004
 #define PCI_EXP_LNKCAP2_SLS_8_0GB 0x00000008
+#define PCI_EXP_LNKCAP2_SLS_16_0GB 0x00000010
 #define PCI_EXP_LNKCAP2_CROSSLINK 0x00000100
 #define PCI_EXP_LNKCTL2 48
 #define PCI_EXP_LNKSTA2 50
@@ -819,19 +826,21 @@
 #define PCI_TPH_CAP_ST_SHIFT 16
 #define PCI_TPH_BASE_SIZEOF 12
 #define PCI_EXP_DPC_CAP 4
-#define PCI_EXP_DPC_IRQ 0x1f
-#define PCI_EXP_DPC_CAP_RP_EXT 0x20
-#define PCI_EXP_DPC_CAP_POISONED_TLP 0x40
-#define PCI_EXP_DPC_CAP_SW_TRIGGER 0x80
-#define PCI_EXP_DPC_RP_PIO_LOG_SIZE 0xF00
+#define PCI_EXP_DPC_IRQ 0x001F
+#define PCI_EXP_DPC_CAP_RP_EXT 0x0020
+#define PCI_EXP_DPC_CAP_POISONED_TLP 0x0040
+#define PCI_EXP_DPC_CAP_SW_TRIGGER 0x0080
+#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_NONFATAL 0x02
-#define PCI_EXP_DPC_CTL_INT_EN 0x08
+#define PCI_EXP_DPC_CTL_EN_NONFATAL 0x0002
+#define PCI_EXP_DPC_CTL_INT_EN 0x0008
 #define PCI_EXP_DPC_STATUS 8
-#define PCI_EXP_DPC_STATUS_TRIGGER 0x01
-#define PCI_EXP_DPC_STATUS_INTERRUPT 0x08
-#define PCI_EXP_DPC_RP_BUSY 0x10
+#define PCI_EXP_DPC_STATUS_TRIGGER 0x0001
+#define PCI_EXP_DPC_STATUS_TRIGGER_RSN 0x0006
+#define PCI_EXP_DPC_STATUS_INTERRUPT 0x0008
+#define PCI_EXP_DPC_RP_BUSY 0x0010
+#define PCI_EXP_DPC_STATUS_TRIGGER_RSN_EXT 0x0060
 #define PCI_EXP_DPC_SOURCE_ID 10
 #define PCI_EXP_DPC_RP_PIO_STATUS 0x0C
 #define PCI_EXP_DPC_RP_PIO_MASK 0x10
diff --git a/libc/kernel/uapi/linux/perf_event.h b/libc/kernel/uapi/linux/perf_event.h
index 97a2e99..dc1e32c 100644
--- a/libc/kernel/uapi/linux/perf_event.h
+++ b/libc/kernel/uapi/linux/perf_event.h
@@ -205,10 +205,14 @@
   __u32 bp_type;
   union {
     __u64 bp_addr;
+    __u64 kprobe_func;
+    __u64 uprobe_path;
     __u64 config1;
   };
   union {
     __u64 bp_len;
+    __u64 kprobe_addr;
+    __u64 probe_offset;
     __u64 config2;
   };
   __u64 branch_sample_type;
@@ -220,6 +224,11 @@
   __u16 sample_max_stack;
   __u16 __reserved_2;
 };
+struct perf_event_query_bpf {
+  __u32 ids_len;
+  __u32 prog_cnt;
+  __u32 ids[0];
+};
 #define perf_flags(attr) (* (& (attr)->read_format + 1))
 #define PERF_EVENT_IOC_ENABLE _IO('$', 0)
 #define PERF_EVENT_IOC_DISABLE _IO('$', 1)
@@ -231,6 +240,8 @@
 #define PERF_EVENT_IOC_ID _IOR('$', 7, __u64 *)
 #define PERF_EVENT_IOC_SET_BPF _IOW('$', 8, __u32)
 #define PERF_EVENT_IOC_PAUSE_OUTPUT _IOW('$', 9, __u32)
+#define PERF_EVENT_IOC_QUERY_BPF _IOWR('$', 10, struct perf_event_query_bpf *)
+#define PERF_EVENT_IOC_MODIFY_ATTRIBUTES _IOW('$', 11, struct perf_event_attr *)
 enum perf_event_ioc_flags {
   PERF_IOC_FLAG_GROUP = 1U << 0,
 };
@@ -276,6 +287,7 @@
 #define PERF_RECORD_MISC_COMM_EXEC (1 << 13)
 #define PERF_RECORD_MISC_SWITCH_OUT (1 << 13)
 #define PERF_RECORD_MISC_EXACT_IP (1 << 14)
+#define PERF_RECORD_MISC_SWITCH_OUT_PREEMPT (1 << 14)
 #define PERF_RECORD_MISC_EXT_RESERVED (1 << 15)
 struct perf_event_header {
   __u32 type;
diff --git a/libc/kernel/uapi/linux/pkt_cls.h b/libc/kernel/uapi/linux/pkt_cls.h
index 4bac8f9..113469c 100644
--- a/libc/kernel/uapi/linux/pkt_cls.h
+++ b/libc/kernel/uapi/linux/pkt_cls.h
@@ -380,6 +380,7 @@
 #define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1)
 enum {
   TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT = (1 << 0),
+  TCA_FLOWER_KEY_FLAGS_FRAG_IS_FIRST = (1 << 1),
 };
 enum {
   TCA_MATCHALL_UNSPEC,
@@ -429,7 +430,8 @@
 #define TCF_EM_VLAN 6
 #define TCF_EM_CANID 7
 #define TCF_EM_IPSET 8
-#define TCF_EM_MAX 8
+#define TCF_EM_IPT 9
+#define TCF_EM_MAX 9
 enum {
   TCF_EM_PROG_TC
 };
diff --git a/libc/kernel/uapi/linux/prctl.h b/libc/kernel/uapi/linux/prctl.h
index 55098f5..ba50b14 100644
--- a/libc/kernel/uapi/linux/prctl.h
+++ b/libc/kernel/uapi/linux/prctl.h
@@ -134,4 +134,12 @@
 #define PR_SVE_GET_VL 51
 #define PR_SVE_VL_LEN_MASK 0xffff
 #define PR_SVE_VL_INHERIT (1 << 17)
+#define PR_GET_SPECULATION_CTRL 52
+#define PR_SET_SPECULATION_CTRL 53
+#define PR_SPEC_STORE_BYPASS 0
+#define PR_SPEC_NOT_AFFECTED 0
+#define PR_SPEC_PRCTL (1UL << 0)
+#define PR_SPEC_ENABLE (1UL << 1)
+#define PR_SPEC_DISABLE (1UL << 2)
+#define PR_SPEC_FORCE_DISABLE (1UL << 3)
 #endif
diff --git a/libc/kernel/uapi/linux/psci.h b/libc/kernel/uapi/linux/psci.h
index 37d811e..658552a 100644
--- a/libc/kernel/uapi/linux/psci.h
+++ b/libc/kernel/uapi/linux/psci.h
@@ -62,6 +62,7 @@
 #define PSCI_VERSION_MAJOR_MASK ~PSCI_VERSION_MINOR_MASK
 #define PSCI_VERSION_MAJOR(ver) (((ver) & PSCI_VERSION_MAJOR_MASK) >> PSCI_VERSION_MAJOR_SHIFT)
 #define PSCI_VERSION_MINOR(ver) ((ver) & PSCI_VERSION_MINOR_MASK)
+#define PSCI_VERSION(maj,min) ((((maj) << PSCI_VERSION_MAJOR_SHIFT) & PSCI_VERSION_MAJOR_MASK) | ((min) & PSCI_VERSION_MINOR_MASK))
 #define PSCI_1_0_FEATURES_CPU_SUSPEND_PF_SHIFT 1
 #define PSCI_1_0_FEATURES_CPU_SUSPEND_PF_MASK (0x1 << PSCI_1_0_FEATURES_CPU_SUSPEND_PF_SHIFT)
 #define PSCI_RET_SUCCESS 0
diff --git a/libc/kernel/uapi/linux/psp-sev.h b/libc/kernel/uapi/linux/psp-sev.h
new file mode 100644
index 0000000..5f59330
--- /dev/null
+++ b/libc/kernel/uapi/linux/psp-sev.h
@@ -0,0 +1,88 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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 __PSP_SEV_USER_H__
+#define __PSP_SEV_USER_H__
+#include <linux/types.h>
+enum {
+  SEV_FACTORY_RESET = 0,
+  SEV_PLATFORM_STATUS,
+  SEV_PEK_GEN,
+  SEV_PEK_CSR,
+  SEV_PDH_GEN,
+  SEV_PDH_CERT_EXPORT,
+  SEV_PEK_CERT_IMPORT,
+  SEV_MAX,
+};
+typedef enum {
+  SEV_RET_SUCCESS = 0,
+  SEV_RET_INVALID_PLATFORM_STATE,
+  SEV_RET_INVALID_GUEST_STATE,
+  SEV_RET_INAVLID_CONFIG,
+  SEV_RET_INVALID_LEN,
+  SEV_RET_ALREADY_OWNED,
+  SEV_RET_INVALID_CERTIFICATE,
+  SEV_RET_POLICY_FAILURE,
+  SEV_RET_INACTIVE,
+  SEV_RET_INVALID_ADDRESS,
+  SEV_RET_BAD_SIGNATURE,
+  SEV_RET_BAD_MEASUREMENT,
+  SEV_RET_ASID_OWNED,
+  SEV_RET_INVALID_ASID,
+  SEV_RET_WBINVD_REQUIRED,
+  SEV_RET_DFFLUSH_REQUIRED,
+  SEV_RET_INVALID_GUEST,
+  SEV_RET_INVALID_COMMAND,
+  SEV_RET_ACTIVE,
+  SEV_RET_HWSEV_RET_PLATFORM,
+  SEV_RET_HWSEV_RET_UNSAFE,
+  SEV_RET_UNSUPPORTED,
+  SEV_RET_MAX,
+} sev_ret_code;
+struct sev_user_data_status {
+  __u8 api_major;
+  __u8 api_minor;
+  __u8 state;
+  __u32 flags;
+  __u8 build;
+  __u32 guest_count;
+} __packed;
+struct sev_user_data_pek_csr {
+  __u64 address;
+  __u32 length;
+} __packed;
+struct sev_user_data_pek_cert_import {
+  __u64 pek_cert_address;
+  __u32 pek_cert_len;
+  __u64 oca_cert_address;
+  __u32 oca_cert_len;
+} __packed;
+struct sev_user_data_pdh_cert_export {
+  __u64 pdh_cert_address;
+  __u32 pdh_cert_len;
+  __u64 cert_chain_address;
+  __u32 cert_chain_len;
+} __packed;
+struct sev_issue_cmd {
+  __u32 cmd;
+  __u64 data;
+  __u32 error;
+} __packed;
+#define SEV_IOC_TYPE 'S'
+#define SEV_ISSUE_CMD _IOWR(SEV_IOC_TYPE, 0x0, struct sev_issue_cmd)
+#endif
diff --git a/libc/kernel/uapi/linux/ptrace.h b/libc/kernel/uapi/linux/ptrace.h
index 7c39b5b..4a68738 100644
--- a/libc/kernel/uapi/linux/ptrace.h
+++ b/libc/kernel/uapi/linux/ptrace.h
@@ -50,6 +50,11 @@
 #define PTRACE_GETSIGMASK 0x420a
 #define PTRACE_SETSIGMASK 0x420b
 #define PTRACE_SECCOMP_GET_FILTER 0x420c
+#define PTRACE_SECCOMP_GET_METADATA 0x420d
+struct seccomp_metadata {
+  __u64 filter_off;
+  __u64 flags;
+};
 #define PTRACE_PEEKSIGINFO_SHARED (1 << 0)
 #define PTRACE_EVENT_FORK 1
 #define PTRACE_EVENT_VFORK 2
diff --git a/libc/kernel/uapi/linux/qemu_fw_cfg.h b/libc/kernel/uapi/linux/qemu_fw_cfg.h
new file mode 100644
index 0000000..173af1f
--- /dev/null
+++ b/libc/kernel/uapi/linux/qemu_fw_cfg.h
@@ -0,0 +1,86 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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_FW_CFG_H
+#define _LINUX_FW_CFG_H
+#include <linux/types.h>
+#define FW_CFG_ACPI_DEVICE_ID "QEMU0002"
+#define FW_CFG_SIGNATURE 0x00
+#define FW_CFG_ID 0x01
+#define FW_CFG_UUID 0x02
+#define FW_CFG_RAM_SIZE 0x03
+#define FW_CFG_NOGRAPHIC 0x04
+#define FW_CFG_NB_CPUS 0x05
+#define FW_CFG_MACHINE_ID 0x06
+#define FW_CFG_KERNEL_ADDR 0x07
+#define FW_CFG_KERNEL_SIZE 0x08
+#define FW_CFG_KERNEL_CMDLINE 0x09
+#define FW_CFG_INITRD_ADDR 0x0a
+#define FW_CFG_INITRD_SIZE 0x0b
+#define FW_CFG_BOOT_DEVICE 0x0c
+#define FW_CFG_NUMA 0x0d
+#define FW_CFG_BOOT_MENU 0x0e
+#define FW_CFG_MAX_CPUS 0x0f
+#define FW_CFG_KERNEL_ENTRY 0x10
+#define FW_CFG_KERNEL_DATA 0x11
+#define FW_CFG_INITRD_DATA 0x12
+#define FW_CFG_CMDLINE_ADDR 0x13
+#define FW_CFG_CMDLINE_SIZE 0x14
+#define FW_CFG_CMDLINE_DATA 0x15
+#define FW_CFG_SETUP_ADDR 0x16
+#define FW_CFG_SETUP_SIZE 0x17
+#define FW_CFG_SETUP_DATA 0x18
+#define FW_CFG_FILE_DIR 0x19
+#define FW_CFG_FILE_FIRST 0x20
+#define FW_CFG_FILE_SLOTS_MIN 0x10
+#define FW_CFG_WRITE_CHANNEL 0x4000
+#define FW_CFG_ARCH_LOCAL 0x8000
+#define FW_CFG_ENTRY_MASK (~(FW_CFG_WRITE_CHANNEL | FW_CFG_ARCH_LOCAL))
+#define FW_CFG_INVALID 0xffff
+#define FW_CFG_CTL_SIZE 0x02
+#define FW_CFG_MAX_FILE_PATH 56
+#define FW_CFG_SIG_SIZE 4
+#define FW_CFG_VERSION 0x01
+#define FW_CFG_VERSION_DMA 0x02
+struct fw_cfg_file {
+  __be32 size;
+  __be16 select;
+  __u16 reserved;
+  char name[FW_CFG_MAX_FILE_PATH];
+};
+#define FW_CFG_DMA_CTL_ERROR 0x01
+#define FW_CFG_DMA_CTL_READ 0x02
+#define FW_CFG_DMA_CTL_SKIP 0x04
+#define FW_CFG_DMA_CTL_SELECT 0x08
+#define FW_CFG_DMA_CTL_WRITE 0x10
+#define FW_CFG_DMA_SIGNATURE 0x51454d5520434647ULL
+struct fw_cfg_dma_access {
+  __be32 control;
+  __be32 length;
+  __be64 address;
+};
+#define FW_CFG_VMCOREINFO_FILENAME "etc/vmcoreinfo"
+#define FW_CFG_VMCOREINFO_FORMAT_NONE 0x0
+#define FW_CFG_VMCOREINFO_FORMAT_ELF 0x1
+struct fw_cfg_vmcoreinfo {
+  __le16 host_format;
+  __le16 guest_format;
+  __le32 size;
+  __le64 paddr;
+};
+#endif
diff --git a/libc/kernel/uapi/linux/random.h b/libc/kernel/uapi/linux/random.h
index 6ad4f75..3a5fbfd 100644
--- a/libc/kernel/uapi/linux/random.h
+++ b/libc/kernel/uapi/linux/random.h
@@ -27,6 +27,7 @@
 #define RNDADDENTROPY _IOW('R', 0x03, int[2])
 #define RNDZAPENTCNT _IO('R', 0x04)
 #define RNDCLEARPOOL _IO('R', 0x06)
+#define RNDRESEEDCRNG _IO('R', 0x07)
 struct rand_pool_info {
   int entropy_count;
   int buf_size;
diff --git a/libc/kernel/uapi/linux/rds.h b/libc/kernel/uapi/linux/rds.h
index cfb0a3b..c726f54 100644
--- a/libc/kernel/uapi/linux/rds.h
+++ b/libc/kernel/uapi/linux/rds.h
@@ -45,6 +45,8 @@
 #define RDS_CMSG_MASKED_ATOMIC_FADD 8
 #define RDS_CMSG_MASKED_ATOMIC_CSWP 9
 #define RDS_CMSG_RXPATH_LATENCY 11
+#define RDS_CMSG_ZCOPY_COOKIE 12
+#define RDS_CMSG_ZCOPY_COMPLETION 13
 #define RDS_INFO_FIRST 10000
 #define RDS_INFO_COUNTERS 10000
 #define RDS_INFO_CONNECTIONS 10001
@@ -197,6 +199,11 @@
 #define RDS_RDMA_CANCELED 2
 #define RDS_RDMA_DROPPED 3
 #define RDS_RDMA_OTHER_ERROR 4
+#define RDS_MAX_ZCOOKIES 8
+struct rds_zcopy_cookies {
+  __u32 num;
+  __u32 cookies[RDS_MAX_ZCOOKIES];
+};
 #define RDS_RDMA_READWRITE 0x0001
 #define RDS_RDMA_FENCE 0x0002
 #define RDS_RDMA_INVALIDATE 0x0004
diff --git a/libc/kernel/uapi/linux/rtnetlink.h b/libc/kernel/uapi/linux/rtnetlink.h
index 80ba16e..6fffcd3 100644
--- a/libc/kernel/uapi/linux/rtnetlink.h
+++ b/libc/kernel/uapi/linux/rtnetlink.h
@@ -389,8 +389,10 @@
   int tcm_ifindex;
   __u32 tcm_handle;
   __u32 tcm_parent;
+#define tcm_block_index tcm_parent
   __u32 tcm_info;
 };
+#define TCM_IFINDEX_MAGIC_BLOCK (0xFFFFFFFFU)
 enum {
   TCA_UNSPEC,
   TCA_KIND,
@@ -405,6 +407,8 @@
   TCA_DUMP_INVISIBLE,
   TCA_CHAIN,
   TCA_HW_OFFLOAD,
+  TCA_INGRESS_BLOCK,
+  TCA_EGRESS_BLOCK,
   __TCA_MAX
 };
 #define TCA_MAX (__TCA_MAX - 1)
diff --git a/libc/kernel/uapi/linux/sched.h b/libc/kernel/uapi/linux/sched.h
index 9958fba..20d4956 100644
--- a/libc/kernel/uapi/linux/sched.h
+++ b/libc/kernel/uapi/linux/sched.h
@@ -51,4 +51,6 @@
 #define SCHED_RESET_ON_FORK 0x40000000
 #define SCHED_FLAG_RESET_ON_FORK 0x01
 #define SCHED_FLAG_RECLAIM 0x02
+#define SCHED_FLAG_DL_OVERRUN 0x04
+#define SCHED_FLAG_ALL (SCHED_FLAG_RESET_ON_FORK | SCHED_FLAG_RECLAIM | SCHED_FLAG_DL_OVERRUN)
 #endif
diff --git a/libc/kernel/uapi/linux/sctp.h b/libc/kernel/uapi/linux/sctp.h
index cc714ff..1f7fed1 100644
--- a/libc/kernel/uapi/linux/sctp.h
+++ b/libc/kernel/uapi/linux/sctp.h
@@ -58,6 +58,7 @@
 #define SCTP_RECVRCVINFO 32
 #define SCTP_RECVNXTINFO 33
 #define SCTP_DEFAULT_SNDINFO 34
+#define SCTP_AUTH_DEACTIVATE_KEY 35
 #define SCTP_SOCKOPT_BINDX_ADD 100
 #define SCTP_SOCKOPT_BINDX_REM 101
 #define SCTP_SOCKOPT_PEELOFF 102
@@ -79,6 +80,8 @@
 #define SCTP_SOCKOPT_PEELOFF_FLAGS 122
 #define SCTP_STREAM_SCHEDULER 123
 #define SCTP_STREAM_SCHEDULER_VALUE 124
+#define SCTP_INTERLEAVING_SUPPORTED 125
+#define SCTP_SENDMSG_CONNECT 126
 #define SCTP_PR_SCTP_NONE 0x0000
 #define SCTP_PR_SCTP_TTL 0x0010
 #define SCTP_PR_SCTP_RTX 0x0020
@@ -143,11 +146,19 @@
   __u32 nxt_length;
   sctp_assoc_t nxt_assoc_id;
 };
+struct sctp_prinfo {
+  __u16 pr_policy;
+  __u32 pr_value;
+};
+struct sctp_authinfo {
+  __u16 auth_keynumber;
+};
 enum sctp_sinfo_flags {
   SCTP_UNORDERED = (1 << 0),
   SCTP_ADDR_OVER = (1 << 1),
   SCTP_ABORT = (1 << 2),
   SCTP_SACK_IMMEDIATELY = (1 << 3),
+  SCTP_SENDALL = (1 << 6),
   SCTP_NOTIFICATION = MSG_NOTIFICATION,
   SCTP_EOF = MSG_FIN,
 };
@@ -167,6 +178,14 @@
 #define SCTP_RCVINFO SCTP_RCVINFO
   SCTP_NXTINFO,
 #define SCTP_NXTINFO SCTP_NXTINFO
+  SCTP_PRINFO,
+#define SCTP_PRINFO SCTP_PRINFO
+  SCTP_AUTHINFO,
+#define SCTP_AUTHINFO SCTP_AUTHINFO
+  SCTP_DSTADDRV4,
+#define SCTP_DSTADDRV4 SCTP_DSTADDRV4
+  SCTP_DSTADDRV6,
+#define SCTP_DSTADDRV6 SCTP_DSTADDRV6
 } sctp_cmsg_t;
 struct sctp_assoc_change {
   __u16 sac_type;
@@ -243,6 +262,8 @@
   __u32 pdapi_length;
   __u32 pdapi_indication;
   sctp_assoc_t pdapi_assoc_id;
+  __u32 pdapi_stream;
+  __u32 pdapi_seq;
 };
 enum {
   SCTP_PARTIAL_DELIVERY_ABORTED = 0,
@@ -257,7 +278,10 @@
   sctp_assoc_t auth_assoc_id;
 };
 enum {
-  SCTP_AUTH_NEWKEY = 0,
+  SCTP_AUTH_NEW_KEY,
+#define SCTP_AUTH_NEWKEY SCTP_AUTH_NEW_KEY
+  SCTP_AUTH_FREE_KEY,
+  SCTP_AUTH_NO_AUTH,
 };
 struct sctp_sender_dry_event {
   __u16 sender_dry_type;
diff --git a/libc/kernel/uapi/linux/seccomp.h b/libc/kernel/uapi/linux/seccomp.h
index 1fd53fc..fe63789 100644
--- a/libc/kernel/uapi/linux/seccomp.h
+++ b/libc/kernel/uapi/linux/seccomp.h
@@ -26,8 +26,9 @@
 #define SECCOMP_SET_MODE_STRICT 0
 #define SECCOMP_SET_MODE_FILTER 1
 #define SECCOMP_GET_ACTION_AVAIL 2
-#define SECCOMP_FILTER_FLAG_TSYNC 1
-#define SECCOMP_FILTER_FLAG_LOG 2
+#define SECCOMP_FILTER_FLAG_TSYNC (1UL << 0)
+#define SECCOMP_FILTER_FLAG_LOG (1UL << 1)
+#define SECCOMP_FILTER_FLAG_SPEC_ALLOW (1UL << 2)
 #define SECCOMP_RET_KILL_PROCESS 0x80000000U
 #define SECCOMP_RET_KILL_THREAD 0x00000000U
 #define SECCOMP_RET_KILL SECCOMP_RET_KILL_THREAD
diff --git a/libc/kernel/uapi/linux/sem.h b/libc/kernel/uapi/linux/sem.h
index 91b1941..552be4a 100644
--- a/libc/kernel/uapi/linux/sem.h
+++ b/libc/kernel/uapi/linux/sem.h
@@ -29,6 +29,7 @@
 #define SETALL 17
 #define SEM_STAT 18
 #define SEM_INFO 19
+#define SEM_STAT_ANY 20
 struct __kernel_legacy_semid_ds {
   struct __kernel_legacy_ipc_perm sem_perm;
   __kernel_time_t sem_otime;
diff --git a/libc/kernel/uapi/linux/serial_core.h b/libc/kernel/uapi/linux/serial_core.h
index 68d2dcb..f0f464b 100644
--- a/libc/kernel/uapi/linux/serial_core.h
+++ b/libc/kernel/uapi/linux/serial_core.h
@@ -59,6 +59,7 @@
 #define PORT_21285 37
 #define PORT_SUNZILOG 38
 #define PORT_SUNSAB 39
+#define PORT_NPCM 40
 #define PORT_PCH_8LINE 44
 #define PORT_PCH_2LINE 45
 #define PORT_DZ 46
diff --git a/libc/kernel/uapi/linux/shm.h b/libc/kernel/uapi/linux/shm.h
index a3071e7..a30a089 100644
--- a/libc/kernel/uapi/linux/shm.h
+++ b/libc/kernel/uapi/linux/shm.h
@@ -65,6 +65,7 @@
 #define SHM_UNLOCK 12
 #define SHM_STAT 13
 #define SHM_INFO 14
+#define SHM_STAT_ANY 15
 struct shminfo {
   int shmmax;
   int shmmin;
diff --git a/libc/kernel/uapi/linux/stm.h b/libc/kernel/uapi/linux/stm.h
index 497d674..1c7f7f3 100644
--- a/libc/kernel/uapi/linux/stm.h
+++ b/libc/kernel/uapi/linux/stm.h
@@ -19,6 +19,8 @@
 #ifndef _UAPI_LINUX_STM_H
 #define _UAPI_LINUX_STM_H
 #include <linux/types.h>
+#define STP_MASTER_MAX 0xffff
+#define STP_CHANNEL_MAX 0xffff
 struct stp_policy_id {
   __u32 size;
   __u16 master;
diff --git a/libc/kernel/uapi/linux/switchtec_ioctl.h b/libc/kernel/uapi/linux/switchtec_ioctl.h
index 9337be6..09cf9cd 100644
--- a/libc/kernel/uapi/linux/switchtec_ioctl.h
+++ b/libc/kernel/uapi/linux/switchtec_ioctl.h
@@ -83,7 +83,8 @@
 #define SWITCHTEC_IOCTL_EVENT_FORCE_SPEED 26
 #define SWITCHTEC_IOCTL_EVENT_CREDIT_TIMEOUT 27
 #define SWITCHTEC_IOCTL_EVENT_LINK_STATE 28
-#define SWITCHTEC_IOCTL_MAX_EVENTS 29
+#define SWITCHTEC_IOCTL_EVENT_GFMS 29
+#define SWITCHTEC_IOCTL_MAX_EVENTS 30
 #define SWITCHTEC_IOCTL_EVENT_LOCAL_PART_IDX - 1
 #define SWITCHTEC_IOCTL_EVENT_IDX_ALL - 2
 #define SWITCHTEC_IOCTL_EVENT_FLAG_CLEAR (1 << 0)
diff --git a/libc/kernel/uapi/linux/sysctl.h b/libc/kernel/uapi/linux/sysctl.h
index 47c39fc..eb6e61f 100644
--- a/libc/kernel/uapi/linux/sysctl.h
+++ b/libc/kernel/uapi/linux/sysctl.h
@@ -656,22 +656,6 @@
   NET_BRIDGE_NF_FILTER_PPPOE_TAGGED = 5,
 };
 enum {
-  NET_IRDA_DISCOVERY = 1,
-  NET_IRDA_DEVNAME = 2,
-  NET_IRDA_DEBUG = 3,
-  NET_IRDA_FAST_POLL = 4,
-  NET_IRDA_DISCOVERY_SLOTS = 5,
-  NET_IRDA_DISCOVERY_TIMEOUT = 6,
-  NET_IRDA_SLOT_TIMEOUT = 7,
-  NET_IRDA_MAX_BAUD_RATE = 8,
-  NET_IRDA_MIN_TX_TURN_TIME = 9,
-  NET_IRDA_MAX_TX_DATA_SIZE = 10,
-  NET_IRDA_MAX_TX_WINDOW = 11,
-  NET_IRDA_MAX_NOREPLY_TIME = 12,
-  NET_IRDA_WARN_NOREPLY_TIME = 13,
-  NET_IRDA_LAP_KEEPALIVE_TIME = 14,
-};
-enum {
   FS_NRINODE = 1,
   FS_STATINODE = 2,
   FS_MAXINODE = 3,
diff --git a/libc/kernel/uapi/linux/tc_ematch/tc_em_ipt.h b/libc/kernel/uapi/linux/tc_ematch/tc_em_ipt.h
new file mode 100644
index 0000000..8cd06ee
--- /dev/null
+++ b/libc/kernel/uapi/linux/tc_ematch/tc_em_ipt.h
@@ -0,0 +1,33 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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_TC_EM_IPT_H
+#define __LINUX_TC_EM_IPT_H
+#include <linux/types.h>
+#include <linux/pkt_cls.h>
+enum {
+  TCA_EM_IPT_UNSPEC,
+  TCA_EM_IPT_HOOK,
+  TCA_EM_IPT_MATCH_NAME,
+  TCA_EM_IPT_MATCH_REVISION,
+  TCA_EM_IPT_NFPROTO,
+  TCA_EM_IPT_MATCH_DATA,
+  __TCA_EM_IPT_MAX
+};
+#define TCA_EM_IPT_MAX (__TCA_EM_IPT_MAX - 1)
+#endif
diff --git a/libc/kernel/uapi/linux/tcp.h b/libc/kernel/uapi/linux/tcp.h
index 0bf9559..8b73119 100644
--- a/libc/kernel/uapi/linux/tcp.h
+++ b/libc/kernel/uapi/linux/tcp.h
@@ -186,6 +186,9 @@
   TCP_NLA_MIN_RTT,
   TCP_NLA_RECUR_RETRANS,
   TCP_NLA_DELIVERY_RATE_APP_LMT,
+  TCP_NLA_SNDQ_SIZE,
+  TCP_NLA_CA_STATE,
+  TCP_NLA_SND_SSTHRESH,
 };
 #define TCP_MD5SIG_MAXKEYLEN 80
 #define TCP_MD5SIG_FLAG_PREFIX 1
diff --git a/libc/kernel/uapi/linux/tee.h b/libc/kernel/uapi/linux/tee.h
index 20d0d80..e13c231 100644
--- a/libc/kernel/uapi/linux/tee.h
+++ b/libc/kernel/uapi/linux/tee.h
@@ -27,6 +27,7 @@
 #define TEE_MAX_ARG_SIZE 1024
 #define TEE_GEN_CAP_GP (1 << 0)
 #define TEE_GEN_CAP_PRIVILEGED (1 << 1)
+#define TEE_GEN_CAP_REG_MEM (1 << 2)
 #define TEE_IMPL_ID_OPTEE 1
 #define TEE_OPTEE_CAP_TZ (1 << 0)
 struct tee_ioctl_version_data {
@@ -53,6 +54,8 @@
 #define TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_OUTPUT 6
 #define TEE_IOCTL_PARAM_ATTR_TYPE_MEMREF_INOUT 7
 #define TEE_IOCTL_PARAM_ATTR_TYPE_MASK 0xff
+#define TEE_IOCTL_PARAM_ATTR_META 0x100
+#define TEE_IOCTL_PARAM_ATTR_MASK (TEE_IOCTL_PARAM_ATTR_TYPE_MASK | TEE_IOCTL_PARAM_ATTR_META)
 #define TEE_IOCTL_LOGIN_PUBLIC 0
 #define TEE_IOCTL_LOGIN_USER 1
 #define TEE_IOCTL_LOGIN_GROUP 2
@@ -109,4 +112,11 @@
   struct tee_ioctl_param params[];
 };
 #define TEE_IOC_SUPPL_SEND _IOR(TEE_IOC_MAGIC, TEE_IOC_BASE + 7, struct tee_ioctl_buf_data)
+struct tee_ioctl_shm_register_data {
+  __u64 addr;
+  __u64 length;
+  __u32 flags;
+  __s32 id;
+};
+#define TEE_IOC_SHM_REGISTER _IOWR(TEE_IOC_MAGIC, TEE_IOC_BASE + 9, struct tee_ioctl_shm_register_data)
 #endif
diff --git a/libc/kernel/uapi/linux/telephony.h b/libc/kernel/uapi/linux/telephony.h
deleted file mode 100644
index c20eb11..0000000
--- a/libc/kernel/uapi/linux/telephony.h
+++ /dev/null
@@ -1,154 +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 TELEPHONY_H
-#define TELEPHONY_H
-#define TELEPHONY_VERSION 3013
-#define PHONE_VENDOR_IXJ 1
-#define PHONE_VENDOR_QUICKNET PHONE_VENDOR_IXJ
-#define PHONE_VENDOR_VOICETRONIX 2
-#define PHONE_VENDOR_ACULAB 3
-#define PHONE_VENDOR_DIGI 4
-#define PHONE_VENDOR_FRANKLIN 5
-#define QTI_PHONEJACK 100
-#define QTI_LINEJACK 300
-#define QTI_PHONEJACK_LITE 400
-#define QTI_PHONEJACK_PCI 500
-#define QTI_PHONECARD 600
-typedef enum {
-  vendor = 0,
-  device,
-  port,
-  codec,
-  dsp
-} phone_cap;
-struct phone_capability {
-  char desc[80];
-  phone_cap captype;
-  int cap;
-  int handle;
-};
-typedef enum {
-  pots = 0,
-  pstn,
-  handset,
-  speaker
-} phone_ports;
-#define PHONE_CAPABILITIES _IO('q', 0x80)
-#define PHONE_CAPABILITIES_LIST _IOR('q', 0x81, struct phone_capability *)
-#define PHONE_CAPABILITIES_CHECK _IOW('q', 0x82, struct phone_capability *)
-typedef struct {
-  char month[3];
-  char day[3];
-  char hour[3];
-  char min[3];
-  int numlen;
-  char number[11];
-  int namelen;
-  char name[80];
-} PHONE_CID;
-#define PHONE_RING _IO('q', 0x83)
-#define PHONE_HOOKSTATE _IO('q', 0x84)
-#define PHONE_MAXRINGS _IOW('q', 0x85, char)
-#define PHONE_RING_CADENCE _IOW('q', 0x86, short)
-#define OLD_PHONE_RING_START _IO('q', 0x87)
-#define PHONE_RING_START _IOW('q', 0x87, PHONE_CID *)
-#define PHONE_RING_STOP _IO('q', 0x88)
-#define USA_RING_CADENCE 0xC0C0
-#define PHONE_REC_CODEC _IOW('q', 0x89, int)
-#define PHONE_REC_START _IO('q', 0x8A)
-#define PHONE_REC_STOP _IO('q', 0x8B)
-#define PHONE_REC_DEPTH _IOW('q', 0x8C, int)
-#define PHONE_FRAME _IOW('q', 0x8D, int)
-#define PHONE_REC_VOLUME _IOW('q', 0x8E, int)
-#define PHONE_REC_VOLUME_LINEAR _IOW('q', 0xDB, int)
-#define PHONE_REC_LEVEL _IO('q', 0x8F)
-#define PHONE_PLAY_CODEC _IOW('q', 0x90, int)
-#define PHONE_PLAY_START _IO('q', 0x91)
-#define PHONE_PLAY_STOP _IO('q', 0x92)
-#define PHONE_PLAY_DEPTH _IOW('q', 0x93, int)
-#define PHONE_PLAY_VOLUME _IOW('q', 0x94, int)
-#define PHONE_PLAY_VOLUME_LINEAR _IOW('q', 0xDC, int)
-#define PHONE_PLAY_LEVEL _IO('q', 0x95)
-#define PHONE_DTMF_READY _IOR('q', 0x96, int)
-#define PHONE_GET_DTMF _IOR('q', 0x97, int)
-#define PHONE_GET_DTMF_ASCII _IOR('q', 0x98, int)
-#define PHONE_DTMF_OOB _IOW('q', 0x99, int)
-#define PHONE_EXCEPTION _IOR('q', 0x9A, int)
-#define PHONE_PLAY_TONE _IOW('q', 0x9B, char)
-#define PHONE_SET_TONE_ON_TIME _IOW('q', 0x9C, int)
-#define PHONE_SET_TONE_OFF_TIME _IOW('q', 0x9D, int)
-#define PHONE_GET_TONE_ON_TIME _IO('q', 0x9E)
-#define PHONE_GET_TONE_OFF_TIME _IO('q', 0x9F)
-#define PHONE_GET_TONE_STATE _IO('q', 0xA0)
-#define PHONE_BUSY _IO('q', 0xA1)
-#define PHONE_RINGBACK _IO('q', 0xA2)
-#define PHONE_DIALTONE _IO('q', 0xA3)
-#define PHONE_CPT_STOP _IO('q', 0xA4)
-#define PHONE_PSTN_SET_STATE _IOW('q', 0xA4, int)
-#define PHONE_PSTN_GET_STATE _IO('q', 0xA5)
-#define PSTN_ON_HOOK 0
-#define PSTN_RINGING 1
-#define PSTN_OFF_HOOK 2
-#define PSTN_PULSE_DIAL 3
-#define PHONE_WINK_DURATION _IOW('q', 0xA6, int)
-#define PHONE_WINK _IOW('q', 0xAA, int)
-typedef enum {
-  G723_63 = 1,
-  G723_53 = 2,
-  TS85 = 3,
-  TS48 = 4,
-  TS41 = 5,
-  G728 = 6,
-  G729 = 7,
-  ULAW = 8,
-  ALAW = 9,
-  LINEAR16 = 10,
-  LINEAR8 = 11,
-  WSS = 12,
-  G729B = 13
-} phone_codec;
-struct phone_codec_data {
-  phone_codec type;
-  unsigned short buf_min, buf_opt, buf_max;
-};
-#define PHONE_QUERY_CODEC _IOWR('q', 0xA7, struct phone_codec_data *)
-#define PHONE_PSTN_LINETEST _IO('q', 0xA8)
-#define PHONE_VAD _IOW('q', 0xA9, int)
-struct phone_except {
-  unsigned int dtmf_ready : 1;
-  unsigned int hookstate : 1;
-  unsigned int pstn_ring : 1;
-  unsigned int caller_id : 1;
-  unsigned int pstn_wink : 1;
-  unsigned int f0 : 1;
-  unsigned int f1 : 1;
-  unsigned int f2 : 1;
-  unsigned int f3 : 1;
-  unsigned int flash : 1;
-  unsigned int fc0 : 1;
-  unsigned int fc1 : 1;
-  unsigned int fc2 : 1;
-  unsigned int fc3 : 1;
-  unsigned int reserved : 18;
-};
-union telephony_exception {
-  struct phone_except bits;
-  unsigned int bytes;
-};
-#endif
diff --git a/libc/kernel/uapi/linux/time.h b/libc/kernel/uapi/linux/time.h
index 59e3160..b75d2dc 100644
--- a/libc/kernel/uapi/linux/time.h
+++ b/libc/kernel/uapi/linux/time.h
@@ -45,6 +45,10 @@
   struct timeval it_interval;
   struct timeval it_value;
 };
+struct __kernel_old_timeval {
+  __kernel_long_t tv_sec;
+  __kernel_long_t tv_usec;
+};
 #define CLOCK_REALTIME 0
 #define CLOCK_MONOTONIC 1
 #define CLOCK_PROCESS_CPUTIME_ID 2
diff --git a/libc/kernel/uapi/linux/tipc.h b/libc/kernel/uapi/linux/tipc.h
index b8b4965..603c58f 100644
--- a/libc/kernel/uapi/linux/tipc.h
+++ b/libc/kernel/uapi/linux/tipc.h
@@ -20,39 +20,27 @@
 #define _LINUX_TIPC_H_
 #include <linux/types.h>
 #include <linux/sockios.h>
-struct tipc_portid {
+struct tipc_socket_addr {
   __u32 ref;
   __u32 node;
 };
-struct tipc_name {
+struct tipc_service_addr {
   __u32 type;
   __u32 instance;
 };
-struct tipc_name_seq {
+struct tipc_service_range {
   __u32 type;
   __u32 lower;
   __u32 upper;
 };
-#define TIPC_NODE_BITS 12
-#define TIPC_CLUSTER_BITS 12
-#define TIPC_ZONE_BITS 8
-#define TIPC_NODE_OFFSET 0
-#define TIPC_CLUSTER_OFFSET TIPC_NODE_BITS
-#define TIPC_ZONE_OFFSET (TIPC_CLUSTER_OFFSET + TIPC_CLUSTER_BITS)
-#define TIPC_NODE_SIZE ((1UL << TIPC_NODE_BITS) - 1)
-#define TIPC_CLUSTER_SIZE ((1UL << TIPC_CLUSTER_BITS) - 1)
-#define TIPC_ZONE_SIZE ((1UL << TIPC_ZONE_BITS) - 1)
-#define TIPC_NODE_MASK (TIPC_NODE_SIZE << TIPC_NODE_OFFSET)
-#define TIPC_CLUSTER_MASK (TIPC_CLUSTER_SIZE << TIPC_CLUSTER_OFFSET)
-#define TIPC_ZONE_MASK (TIPC_ZONE_SIZE << TIPC_ZONE_OFFSET)
-#define TIPC_ZONE_CLUSTER_MASK (TIPC_ZONE_MASK | TIPC_CLUSTER_MASK)
-#define TIPC_CFG_SRV 0
+#define TIPC_NODE_STATE 0
 #define TIPC_TOP_SRV 1
 #define TIPC_LINK_STATE 2
 #define TIPC_RESERVED_TYPES 64
-#define TIPC_ZONE_SCOPE 1
-#define TIPC_CLUSTER_SCOPE 2
-#define TIPC_NODE_SCOPE 3
+enum tipc_scope {
+  TIPC_CLUSTER_SCOPE = 2,
+  TIPC_NODE_SCOPE = 3
+};
 #define TIPC_MAX_USER_MSG_SIZE 66000U
 #define TIPC_LOW_IMPORTANCE 0
 #define TIPC_MEDIUM_IMPORTANCE 1
@@ -69,7 +57,7 @@
 #define TIPC_SUB_CANCEL 0x04
 #define TIPC_WAIT_FOREVER (~0)
 struct tipc_subscr {
-  struct tipc_name_seq seq;
+  struct tipc_service_range seq;
   __u32 timeout;
   __u32 filter;
   char usr_handle[8];
@@ -81,7 +69,7 @@
   __u32 event;
   __u32 found_lower;
   __u32 found_upper;
-  struct tipc_portid port;
+  struct tipc_socket_addr port;
   struct tipc_subscr s;
 };
 #ifndef AF_TIPC
@@ -93,19 +81,19 @@
 #ifndef SOL_TIPC
 #define SOL_TIPC 271
 #endif
-#define TIPC_ADDR_NAMESEQ 1
 #define TIPC_ADDR_MCAST 1
-#define TIPC_ADDR_NAME 2
-#define TIPC_ADDR_ID 3
+#define TIPC_SERVICE_RANGE 1
+#define TIPC_SERVICE_ADDR 2
+#define TIPC_SOCKET_ADDR 3
 struct sockaddr_tipc {
   unsigned short family;
   unsigned char addrtype;
   signed char scope;
   union {
-    struct tipc_portid id;
-    struct tipc_name_seq nameseq;
+    struct tipc_socket_addr id;
+    struct tipc_service_range nameseq;
     struct {
-      struct tipc_name name;
+      struct tipc_service_addr name;
       __u32 domain;
     } name;
   } addr;
@@ -134,11 +122,32 @@
 #define TIPC_MAX_MEDIA_NAME 16
 #define TIPC_MAX_IF_NAME 16
 #define TIPC_MAX_BEARER_NAME 32
-#define TIPC_MAX_LINK_NAME 60
+#define TIPC_MAX_LINK_NAME 68
 #define SIOCGETLINKNAME SIOCPROTOPRIVATE
 struct tipc_sioc_ln_req {
   __u32 peer;
   __u32 bearer_id;
   char linkname[TIPC_MAX_LINK_NAME];
 };
+#define TIPC_CFG_SRV 0
+#define TIPC_ZONE_SCOPE 1
+#define TIPC_ADDR_NAMESEQ 1
+#define TIPC_ADDR_NAME 2
+#define TIPC_ADDR_ID 3
+#define TIPC_NODE_BITS 12
+#define TIPC_CLUSTER_BITS 12
+#define TIPC_ZONE_BITS 8
+#define TIPC_NODE_OFFSET 0
+#define TIPC_CLUSTER_OFFSET TIPC_NODE_BITS
+#define TIPC_ZONE_OFFSET (TIPC_CLUSTER_OFFSET + TIPC_CLUSTER_BITS)
+#define TIPC_NODE_SIZE ((1UL << TIPC_NODE_BITS) - 1)
+#define TIPC_CLUSTER_SIZE ((1UL << TIPC_CLUSTER_BITS) - 1)
+#define TIPC_ZONE_SIZE ((1UL << TIPC_ZONE_BITS) - 1)
+#define TIPC_NODE_MASK (TIPC_NODE_SIZE << TIPC_NODE_OFFSET)
+#define TIPC_CLUSTER_MASK (TIPC_CLUSTER_SIZE << TIPC_CLUSTER_OFFSET)
+#define TIPC_ZONE_MASK (TIPC_ZONE_SIZE << TIPC_ZONE_OFFSET)
+#define TIPC_ZONE_CLUSTER_MASK (TIPC_ZONE_MASK | TIPC_CLUSTER_MASK)
+#define tipc_portid tipc_socket_addr
+#define tipc_name tipc_service_addr
+#define tipc_name_seq tipc_service_range
 #endif
diff --git a/libc/kernel/uapi/linux/tipc_netlink.h b/libc/kernel/uapi/linux/tipc_netlink.h
index 5a49b24..ce77441 100644
--- a/libc/kernel/uapi/linux/tipc_netlink.h
+++ b/libc/kernel/uapi/linux/tipc_netlink.h
@@ -85,6 +85,13 @@
   TIPC_NLA_SOCK_REF,
   TIPC_NLA_SOCK_CON,
   TIPC_NLA_SOCK_HAS_PUBL,
+  TIPC_NLA_SOCK_STAT,
+  TIPC_NLA_SOCK_TYPE,
+  TIPC_NLA_SOCK_INO,
+  TIPC_NLA_SOCK_UID,
+  TIPC_NLA_SOCK_TIPC_STATE,
+  TIPC_NLA_SOCK_COOKIE,
+  TIPC_NLA_SOCK_PAD,
   __TIPC_NLA_SOCK_MAX,
   TIPC_NLA_SOCK_MAX = __TIPC_NLA_SOCK_MAX - 1
 };
@@ -121,6 +128,8 @@
   TIPC_NLA_NET_UNSPEC,
   TIPC_NLA_NET_ID,
   TIPC_NLA_NET_ADDR,
+  TIPC_NLA_NET_NODEID,
+  TIPC_NLA_NET_NODEID_W1,
   __TIPC_NLA_NET_MAX,
   TIPC_NLA_NET_MAX = __TIPC_NLA_NET_MAX - 1
 };
@@ -178,6 +187,15 @@
   TIPC_NLA_CON_MAX = __TIPC_NLA_CON_MAX - 1
 };
 enum {
+  TIPC_NLA_SOCK_STAT_RCVQ,
+  TIPC_NLA_SOCK_STAT_SENDQ,
+  TIPC_NLA_SOCK_STAT_LINK_CONG,
+  TIPC_NLA_SOCK_STAT_CONN_CONG,
+  TIPC_NLA_SOCK_STAT_DROP,
+  __TIPC_NLA_SOCK_STAT_MAX,
+  TIPC_NLA_SOCK_STAT_MAX = __TIPC_NLA_SOCK_STAT_MAX - 1
+};
+enum {
   TIPC_NLA_PROP_UNSPEC,
   TIPC_NLA_PROP_PRIO,
   TIPC_NLA_PROP_TOL,
diff --git a/libc/kernel/uapi/linux/tipc_sockets_diag.h b/libc/kernel/uapi/linux/tipc_sockets_diag.h
new file mode 100644
index 0000000..7d7d016
--- /dev/null
+++ b/libc/kernel/uapi/linux/tipc_sockets_diag.h
@@ -0,0 +1,29 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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__TIPC_SOCKETS_DIAG_H__
+#define _UAPI__TIPC_SOCKETS_DIAG_H__
+#include <linux/types.h>
+#include <linux/sock_diag.h>
+struct tipc_sock_diag_req {
+  __u8 sdiag_family;
+  __u8 sdiag_protocol;
+  __u16 pad;
+  __u32 tidiag_states;
+};
+#endif
diff --git a/libc/kernel/uapi/linux/tls.h b/libc/kernel/uapi/linux/tls.h
index 925cf80..b6910af 100644
--- a/libc/kernel/uapi/linux/tls.h
+++ b/libc/kernel/uapi/linux/tls.h
@@ -20,6 +20,7 @@
 #define _UAPI_LINUX_TLS_H
 #include <linux/types.h>
 #define TLS_TX 1
+#define TLS_RX 2
 #define TLS_VERSION_MINOR(ver) ((ver) & 0xFF)
 #define TLS_VERSION_MAJOR(ver) (((ver) >> 8) & 0xFF)
 #define TLS_VERSION_NUMBER(id) ((((id ##_VERSION_MAJOR) & 0xFF) << 8) | ((id ##_VERSION_MINOR) & 0xFF))
@@ -33,6 +34,7 @@
 #define TLS_CIPHER_AES_GCM_128_TAG_SIZE 16
 #define TLS_CIPHER_AES_GCM_128_REC_SEQ_SIZE 8
 #define TLS_SET_RECORD_TYPE 1
+#define TLS_GET_RECORD_TYPE 2
 struct tls_crypto_info {
   __u16 version;
   __u16 cipher_type;
diff --git a/libc/kernel/uapi/linux/types.h b/libc/kernel/uapi/linux/types.h
index 1238a74..e111573 100644
--- a/libc/kernel/uapi/linux/types.h
+++ b/libc/kernel/uapi/linux/types.h
@@ -34,5 +34,10 @@
 #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/usb/audio.h b/libc/kernel/uapi/linux/usb/audio.h
index 121c859..87b8bd5 100644
--- a/libc/kernel/uapi/linux/usb/audio.h
+++ b/libc/kernel/uapi/linux/usb/audio.h
@@ -21,6 +21,7 @@
 #include <linux/types.h>
 #define UAC_VERSION_1 0x00
 #define UAC_VERSION_2 0x20
+#define UAC_VERSION_3 0x30
 #define USB_SUBCLASS_AUDIOCONTROL 0x01
 #define USB_SUBCLASS_AUDIOSTREAMING 0x02
 #define USB_SUBCLASS_MIDISTREAMING 0x03
diff --git a/libc/kernel/uapi/linux/usb/ch9.h b/libc/kernel/uapi/linux/usb/ch9.h
index a7cf43a..89d772a 100644
--- a/libc/kernel/uapi/linux/usb/ch9.h
+++ b/libc/kernel/uapi/linux/usb/ch9.h
@@ -508,7 +508,7 @@
   __u8 bDevCapabilityType;
 } __attribute__((packed));
 #define USB_DT_USB_PTM_ID_SIZE 3
-#define USB_DT_USB_SSP_CAP_SIZE(ssac) (16 + ssac * 4)
+#define USB_DT_USB_SSP_CAP_SIZE(ssac) (12 + (ssac + 1) * 4)
 struct usb_wireless_ep_comp_descriptor {
   __u8 bLength;
   __u8 bDescriptorType;
diff --git a/libc/kernel/uapi/linux/uuid.h b/libc/kernel/uapi/linux/uuid.h
index 808578f..d0f82c1 100644
--- a/libc/kernel/uapi/linux/uuid.h
+++ b/libc/kernel/uapi/linux/uuid.h
@@ -19,7 +19,6 @@
 #ifndef _UAPI_LINUX_UUID_H_
 #define _UAPI_LINUX_UUID_H_
 #include <linux/types.h>
-#include <linux/string.h>
 typedef struct {
   __u8 b[16];
 } guid_t;
diff --git a/libc/kernel/uapi/linux/uvcvideo.h b/libc/kernel/uapi/linux/uvcvideo.h
index 5d832d4..7ae7aad 100644
--- a/libc/kernel/uapi/linux/uvcvideo.h
+++ b/libc/kernel/uapi/linux/uvcvideo.h
@@ -61,4 +61,11 @@
 };
 #define UVCIOC_CTRL_MAP _IOWR('u', 0x20, struct uvc_xu_control_mapping)
 #define UVCIOC_CTRL_QUERY _IOWR('u', 0x21, struct uvc_xu_control_query)
+struct uvc_meta_buf {
+  __u64 ns;
+  __u16 sof;
+  __u8 length;
+  __u8 flags;
+  __u8 buf[];
+} __packed;
 #endif
diff --git a/libc/kernel/uapi/linux/v4l2-controls.h b/libc/kernel/uapi/linux/v4l2-controls.h
index 302da8f..37e447e 100644
--- a/libc/kernel/uapi/linux/v4l2-controls.h
+++ b/libc/kernel/uapi/linux/v4l2-controls.h
@@ -490,6 +490,95 @@
 #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_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)
+#define V4L2_CID_MPEG_VIDEO_HEVC_P_FRAME_QP (V4L2_CID_MPEG_BASE + 603)
+#define V4L2_CID_MPEG_VIDEO_HEVC_B_FRAME_QP (V4L2_CID_MPEG_BASE + 604)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_QP (V4L2_CID_MPEG_BASE + 605)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_TYPE (V4L2_CID_MPEG_BASE + 606)
+enum v4l2_mpeg_video_hevc_hier_coding_type {
+  V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_B = 0,
+  V4L2_MPEG_VIDEO_HEVC_HIERARCHICAL_CODING_P = 1,
+};
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_LAYER (V4L2_CID_MPEG_BASE + 607)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_QP (V4L2_CID_MPEG_BASE + 608)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_QP (V4L2_CID_MPEG_BASE + 609)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_QP (V4L2_CID_MPEG_BASE + 610)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_QP (V4L2_CID_MPEG_BASE + 611)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_QP (V4L2_CID_MPEG_BASE + 612)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_QP (V4L2_CID_MPEG_BASE + 613)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_QP (V4L2_CID_MPEG_BASE + 614)
+#define V4L2_CID_MPEG_VIDEO_HEVC_PROFILE (V4L2_CID_MPEG_BASE + 615)
+enum v4l2_mpeg_video_hevc_profile {
+  V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN = 0,
+  V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_STILL_PICTURE = 1,
+  V4L2_MPEG_VIDEO_HEVC_PROFILE_MAIN_10 = 2,
+};
+#define V4L2_CID_MPEG_VIDEO_HEVC_LEVEL (V4L2_CID_MPEG_BASE + 616)
+enum v4l2_mpeg_video_hevc_level {
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_1 = 0,
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_2 = 1,
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_2_1 = 2,
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_3 = 3,
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_3_1 = 4,
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_4 = 5,
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_4_1 = 6,
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_5 = 7,
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_5_1 = 8,
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_5_2 = 9,
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_6 = 10,
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_6_1 = 11,
+  V4L2_MPEG_VIDEO_HEVC_LEVEL_6_2 = 12,
+};
+#define V4L2_CID_MPEG_VIDEO_HEVC_FRAME_RATE_RESOLUTION (V4L2_CID_MPEG_BASE + 617)
+#define V4L2_CID_MPEG_VIDEO_HEVC_TIER (V4L2_CID_MPEG_BASE + 618)
+enum v4l2_mpeg_video_hevc_tier {
+  V4L2_MPEG_VIDEO_HEVC_TIER_MAIN = 0,
+  V4L2_MPEG_VIDEO_HEVC_TIER_HIGH = 1,
+};
+#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_PARTITION_DEPTH (V4L2_CID_MPEG_BASE + 619)
+#define V4L2_CID_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE (V4L2_CID_MPEG_BASE + 620)
+enum v4l2_cid_mpeg_video_hevc_loop_filter_mode {
+  V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED = 0,
+  V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_ENABLED = 1,
+  V4L2_MPEG_VIDEO_HEVC_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY = 2,
+};
+#define V4L2_CID_MPEG_VIDEO_HEVC_LF_BETA_OFFSET_DIV2 (V4L2_CID_MPEG_BASE + 621)
+#define V4L2_CID_MPEG_VIDEO_HEVC_LF_TC_OFFSET_DIV2 (V4L2_CID_MPEG_BASE + 622)
+#define V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_TYPE (V4L2_CID_MPEG_BASE + 623)
+enum v4l2_cid_mpeg_video_hevc_refresh_type {
+  V4L2_MPEG_VIDEO_HEVC_REFRESH_NONE = 0,
+  V4L2_MPEG_VIDEO_HEVC_REFRESH_CRA = 1,
+  V4L2_MPEG_VIDEO_HEVC_REFRESH_IDR = 2,
+};
+#define V4L2_CID_MPEG_VIDEO_HEVC_REFRESH_PERIOD (V4L2_CID_MPEG_BASE + 624)
+#define V4L2_CID_MPEG_VIDEO_HEVC_LOSSLESS_CU (V4L2_CID_MPEG_BASE + 625)
+#define V4L2_CID_MPEG_VIDEO_HEVC_CONST_INTRA_PRED (V4L2_CID_MPEG_BASE + 626)
+#define V4L2_CID_MPEG_VIDEO_HEVC_WAVEFRONT (V4L2_CID_MPEG_BASE + 627)
+#define V4L2_CID_MPEG_VIDEO_HEVC_GENERAL_PB (V4L2_CID_MPEG_BASE + 628)
+#define V4L2_CID_MPEG_VIDEO_HEVC_TEMPORAL_ID (V4L2_CID_MPEG_BASE + 629)
+#define V4L2_CID_MPEG_VIDEO_HEVC_STRONG_SMOOTHING (V4L2_CID_MPEG_BASE + 630)
+#define V4L2_CID_MPEG_VIDEO_HEVC_MAX_NUM_MERGE_MV_MINUS1 (V4L2_CID_MPEG_BASE + 631)
+#define V4L2_CID_MPEG_VIDEO_HEVC_INTRA_PU_SPLIT (V4L2_CID_MPEG_BASE + 632)
+#define V4L2_CID_MPEG_VIDEO_HEVC_TMV_PREDICTION (V4L2_CID_MPEG_BASE + 633)
+#define V4L2_CID_MPEG_VIDEO_HEVC_WITHOUT_STARTCODE (V4L2_CID_MPEG_BASE + 634)
+#define V4L2_CID_MPEG_VIDEO_HEVC_SIZE_OF_LENGTH_FIELD (V4L2_CID_MPEG_BASE + 635)
+enum v4l2_cid_mpeg_video_hevc_size_of_length_field {
+  V4L2_MPEG_VIDEO_HEVC_SIZE_0 = 0,
+  V4L2_MPEG_VIDEO_HEVC_SIZE_1 = 1,
+  V4L2_MPEG_VIDEO_HEVC_SIZE_2 = 2,
+  V4L2_MPEG_VIDEO_HEVC_SIZE_4 = 3,
+};
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L0_BR (V4L2_CID_MPEG_BASE + 636)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L1_BR (V4L2_CID_MPEG_BASE + 637)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L2_BR (V4L2_CID_MPEG_BASE + 638)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L3_BR (V4L2_CID_MPEG_BASE + 639)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L4_BR (V4L2_CID_MPEG_BASE + 640)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L5_BR (V4L2_CID_MPEG_BASE + 641)
+#define V4L2_CID_MPEG_VIDEO_HEVC_HIER_CODING_L6_BR (V4L2_CID_MPEG_BASE + 642)
+#define V4L2_CID_MPEG_VIDEO_REF_NUMBER_FOR_PFRAMES (V4L2_CID_MPEG_BASE + 643)
+#define V4L2_CID_MPEG_VIDEO_PREPEND_SPSPPS_TO_IDR (V4L2_CID_MPEG_BASE + 644)
 #define V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000)
 #define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE + 0)
 enum v4l2_mpeg_cx2341x_video_spatial_filter_mode {
diff --git a/libc/kernel/uapi/linux/vbox_err.h b/libc/kernel/uapi/linux/vbox_err.h
new file mode 100644
index 0000000..dec3574
--- /dev/null
+++ b/libc/kernel/uapi/linux/vbox_err.h
@@ -0,0 +1,157 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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_VBOX_ERR_H__
+#define __UAPI_VBOX_ERR_H__
+#define VINF_SUCCESS 0
+#define VERR_GENERAL_FAILURE (- 1)
+#define VERR_INVALID_PARAMETER (- 2)
+#define VERR_INVALID_MAGIC (- 3)
+#define VERR_INVALID_HANDLE (- 4)
+#define VERR_LOCK_FAILED (- 5)
+#define VERR_INVALID_POINTER (- 6)
+#define VERR_IDT_FAILED (- 7)
+#define VERR_NO_MEMORY (- 8)
+#define VERR_ALREADY_LOADED (- 9)
+#define VERR_PERMISSION_DENIED (- 10)
+#define VERR_VERSION_MISMATCH (- 11)
+#define VERR_NOT_IMPLEMENTED (- 12)
+#define VERR_INVALID_FLAGS (- 13)
+#define VERR_NOT_EQUAL (- 18)
+#define VERR_NOT_SYMLINK (- 19)
+#define VERR_NO_TMP_MEMORY (- 20)
+#define VERR_INVALID_FMODE (- 21)
+#define VERR_WRONG_ORDER (- 22)
+#define VERR_NO_TLS_FOR_SELF (- 23)
+#define VERR_FAILED_TO_SET_SELF_TLS (- 24)
+#define VERR_NO_CONT_MEMORY (- 26)
+#define VERR_NO_PAGE_MEMORY (- 27)
+#define VERR_THREAD_IS_DEAD (- 29)
+#define VERR_THREAD_NOT_WAITABLE (- 30)
+#define VERR_PAGE_TABLE_NOT_PRESENT (- 31)
+#define VERR_INVALID_CONTEXT (- 32)
+#define VERR_TIMER_BUSY (- 33)
+#define VERR_ADDRESS_CONFLICT (- 34)
+#define VERR_UNRESOLVED_ERROR (- 35)
+#define VERR_INVALID_FUNCTION (- 36)
+#define VERR_NOT_SUPPORTED (- 37)
+#define VERR_ACCESS_DENIED (- 38)
+#define VERR_INTERRUPTED (- 39)
+#define VERR_TIMEOUT (- 40)
+#define VERR_BUFFER_OVERFLOW (- 41)
+#define VERR_TOO_MUCH_DATA (- 42)
+#define VERR_MAX_THRDS_REACHED (- 43)
+#define VERR_MAX_PROCS_REACHED (- 44)
+#define VERR_SIGNAL_REFUSED (- 45)
+#define VERR_SIGNAL_PENDING (- 46)
+#define VERR_SIGNAL_INVALID (- 47)
+#define VERR_STATE_CHANGED (- 48)
+#define VERR_INVALID_UUID_FORMAT (- 49)
+#define VERR_PROCESS_NOT_FOUND (- 50)
+#define VERR_PROCESS_RUNNING (- 51)
+#define VERR_TRY_AGAIN (- 52)
+#define VERR_PARSE_ERROR (- 53)
+#define VERR_OUT_OF_RANGE (- 54)
+#define VERR_NUMBER_TOO_BIG (- 55)
+#define VERR_NO_DIGITS (- 56)
+#define VERR_NEGATIVE_UNSIGNED (- 57)
+#define VERR_NO_TRANSLATION (- 58)
+#define VERR_NOT_FOUND (- 78)
+#define VERR_INVALID_STATE (- 79)
+#define VERR_OUT_OF_RESOURCES (- 80)
+#define VERR_FILE_NOT_FOUND (- 102)
+#define VERR_PATH_NOT_FOUND (- 103)
+#define VERR_INVALID_NAME (- 104)
+#define VERR_ALREADY_EXISTS (- 105)
+#define VERR_TOO_MANY_OPEN_FILES (- 106)
+#define VERR_SEEK (- 107)
+#define VERR_NEGATIVE_SEEK (- 108)
+#define VERR_SEEK_ON_DEVICE (- 109)
+#define VERR_EOF (- 110)
+#define VERR_READ_ERROR (- 111)
+#define VERR_WRITE_ERROR (- 112)
+#define VERR_WRITE_PROTECT (- 113)
+#define VERR_SHARING_VIOLATION (- 114)
+#define VERR_FILE_LOCK_FAILED (- 115)
+#define VERR_FILE_LOCK_VIOLATION (- 116)
+#define VERR_CANT_CREATE (- 117)
+#define VERR_CANT_DELETE_DIRECTORY (- 118)
+#define VERR_NOT_SAME_DEVICE (- 119)
+#define VERR_FILENAME_TOO_LONG (- 120)
+#define VERR_MEDIA_NOT_PRESENT (- 121)
+#define VERR_MEDIA_NOT_RECOGNIZED (- 122)
+#define VERR_FILE_NOT_LOCKED (- 123)
+#define VERR_FILE_LOCK_LOST (- 124)
+#define VERR_DIR_NOT_EMPTY (- 125)
+#define VERR_NOT_A_DIRECTORY (- 126)
+#define VERR_IS_A_DIRECTORY (- 127)
+#define VERR_FILE_TOO_BIG (- 128)
+#define VERR_NET_IO_ERROR (- 400)
+#define VERR_NET_OUT_OF_RESOURCES (- 401)
+#define VERR_NET_HOST_NOT_FOUND (- 402)
+#define VERR_NET_PATH_NOT_FOUND (- 403)
+#define VERR_NET_PRINT_ERROR (- 404)
+#define VERR_NET_NO_NETWORK (- 405)
+#define VERR_NET_NOT_UNIQUE_NAME (- 406)
+#define VERR_NET_IN_PROGRESS (- 436)
+#define VERR_NET_ALREADY_IN_PROGRESS (- 437)
+#define VERR_NET_NOT_SOCKET (- 438)
+#define VERR_NET_DEST_ADDRESS_REQUIRED (- 439)
+#define VERR_NET_MSG_SIZE (- 440)
+#define VERR_NET_PROTOCOL_TYPE (- 441)
+#define VERR_NET_PROTOCOL_NOT_AVAILABLE (- 442)
+#define VERR_NET_PROTOCOL_NOT_SUPPORTED (- 443)
+#define VERR_NET_SOCKET_TYPE_NOT_SUPPORTED (- 444)
+#define VERR_NET_OPERATION_NOT_SUPPORTED (- 445)
+#define VERR_NET_PROTOCOL_FAMILY_NOT_SUPPORTED (- 446)
+#define VERR_NET_ADDRESS_FAMILY_NOT_SUPPORTED (- 447)
+#define VERR_NET_ADDRESS_IN_USE (- 448)
+#define VERR_NET_ADDRESS_NOT_AVAILABLE (- 449)
+#define VERR_NET_DOWN (- 450)
+#define VERR_NET_UNREACHABLE (- 451)
+#define VERR_NET_CONNECTION_RESET (- 452)
+#define VERR_NET_CONNECTION_ABORTED (- 453)
+#define VERR_NET_CONNECTION_RESET_BY_PEER (- 454)
+#define VERR_NET_NO_BUFFER_SPACE (- 455)
+#define VERR_NET_ALREADY_CONNECTED (- 456)
+#define VERR_NET_NOT_CONNECTED (- 457)
+#define VERR_NET_SHUTDOWN (- 458)
+#define VERR_NET_TOO_MANY_REFERENCES (- 459)
+#define VERR_NET_CONNECTION_TIMED_OUT (- 460)
+#define VERR_NET_CONNECTION_REFUSED (- 461)
+#define VERR_NET_HOST_DOWN (- 464)
+#define VERR_NET_HOST_UNREACHABLE (- 465)
+#define VERR_NET_PROTOCOL_ERROR (- 466)
+#define VERR_NET_INCOMPLETE_TX_PACKET (- 467)
+#define VERR_RESOURCE_BUSY (- 138)
+#define VERR_DISK_FULL (- 152)
+#define VERR_TOO_MANY_SYMLINKS (- 156)
+#define VERR_NO_MORE_FILES (- 201)
+#define VERR_INTERNAL_ERROR (- 225)
+#define VERR_INTERNAL_ERROR_2 (- 226)
+#define VERR_INTERNAL_ERROR_3 (- 227)
+#define VERR_INTERNAL_ERROR_4 (- 228)
+#define VERR_DEV_IO_ERROR (- 250)
+#define VERR_IO_BAD_LENGTH (- 255)
+#define VERR_BROKEN_PIPE (- 301)
+#define VERR_NO_DATA (- 304)
+#define VERR_SEM_DESTROYED (- 363)
+#define VERR_DEADLOCK (- 365)
+#define VERR_BAD_EXE_FORMAT (- 608)
+#define VINF_HGCM_ASYNC_EXECUTE (2903)
+#endif
diff --git a/libc/kernel/uapi/linux/vbox_vmmdev_types.h b/libc/kernel/uapi/linux/vbox_vmmdev_types.h
new file mode 100644
index 0000000..46b3486
--- /dev/null
+++ b/libc/kernel/uapi/linux/vbox_vmmdev_types.h
@@ -0,0 +1,167 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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_VBOX_VMMDEV_TYPES_H__
+#define __UAPI_VBOX_VMMDEV_TYPES_H__
+#include <asm/bitsperlong.h>
+#include <linux/types.h>
+#define VMMDEV_ASSERT_SIZE(type,size) typedef char type ##_asrt_size[1 - 2 * ! ! (sizeof(struct type) != (size))]
+enum vmmdev_request_type {
+  VMMDEVREQ_INVALID_REQUEST = 0,
+  VMMDEVREQ_GET_MOUSE_STATUS = 1,
+  VMMDEVREQ_SET_MOUSE_STATUS = 2,
+  VMMDEVREQ_SET_POINTER_SHAPE = 3,
+  VMMDEVREQ_GET_HOST_VERSION = 4,
+  VMMDEVREQ_IDLE = 5,
+  VMMDEVREQ_GET_HOST_TIME = 10,
+  VMMDEVREQ_GET_HYPERVISOR_INFO = 20,
+  VMMDEVREQ_SET_HYPERVISOR_INFO = 21,
+  VMMDEVREQ_REGISTER_PATCH_MEMORY = 22,
+  VMMDEVREQ_DEREGISTER_PATCH_MEMORY = 23,
+  VMMDEVREQ_SET_POWER_STATUS = 30,
+  VMMDEVREQ_ACKNOWLEDGE_EVENTS = 41,
+  VMMDEVREQ_CTL_GUEST_FILTER_MASK = 42,
+  VMMDEVREQ_REPORT_GUEST_INFO = 50,
+  VMMDEVREQ_REPORT_GUEST_INFO2 = 58,
+  VMMDEVREQ_REPORT_GUEST_STATUS = 59,
+  VMMDEVREQ_REPORT_GUEST_USER_STATE = 74,
+  VMMDEVREQ_GET_DISPLAY_CHANGE_REQ = 51,
+  VMMDEVREQ_VIDEMODE_SUPPORTED = 52,
+  VMMDEVREQ_GET_HEIGHT_REDUCTION = 53,
+  VMMDEVREQ_GET_DISPLAY_CHANGE_REQ2 = 54,
+  VMMDEVREQ_REPORT_GUEST_CAPABILITIES = 55,
+  VMMDEVREQ_SET_GUEST_CAPABILITIES = 56,
+  VMMDEVREQ_VIDEMODE_SUPPORTED2 = 57,
+  VMMDEVREQ_GET_DISPLAY_CHANGE_REQEX = 80,
+  VMMDEVREQ_HGCM_CONNECT = 60,
+  VMMDEVREQ_HGCM_DISCONNECT = 61,
+  VMMDEVREQ_HGCM_CALL32 = 62,
+  VMMDEVREQ_HGCM_CALL64 = 63,
+  VMMDEVREQ_HGCM_CANCEL = 64,
+  VMMDEVREQ_HGCM_CANCEL2 = 65,
+  VMMDEVREQ_VIDEO_ACCEL_ENABLE = 70,
+  VMMDEVREQ_VIDEO_ACCEL_FLUSH = 71,
+  VMMDEVREQ_VIDEO_SET_VISIBLE_REGION = 72,
+  VMMDEVREQ_GET_SEAMLESS_CHANGE_REQ = 73,
+  VMMDEVREQ_QUERY_CREDENTIALS = 100,
+  VMMDEVREQ_REPORT_CREDENTIALS_JUDGEMENT = 101,
+  VMMDEVREQ_REPORT_GUEST_STATS = 110,
+  VMMDEVREQ_GET_MEMBALLOON_CHANGE_REQ = 111,
+  VMMDEVREQ_GET_STATISTICS_CHANGE_REQ = 112,
+  VMMDEVREQ_CHANGE_MEMBALLOON = 113,
+  VMMDEVREQ_GET_VRDPCHANGE_REQ = 150,
+  VMMDEVREQ_LOG_STRING = 200,
+  VMMDEVREQ_GET_CPU_HOTPLUG_REQ = 210,
+  VMMDEVREQ_SET_CPU_HOTPLUG_STATUS = 211,
+  VMMDEVREQ_REGISTER_SHARED_MODULE = 212,
+  VMMDEVREQ_UNREGISTER_SHARED_MODULE = 213,
+  VMMDEVREQ_CHECK_SHARED_MODULES = 214,
+  VMMDEVREQ_GET_PAGE_SHARING_STATUS = 215,
+  VMMDEVREQ_DEBUG_IS_PAGE_SHARED = 216,
+  VMMDEVREQ_GET_SESSION_ID = 217,
+  VMMDEVREQ_WRITE_COREDUMP = 218,
+  VMMDEVREQ_GUEST_HEARTBEAT = 219,
+  VMMDEVREQ_HEARTBEAT_CONFIGURE = 220,
+  VMMDEVREQ_SIZEHACK = 0x7fffffff
+};
+#if __BITS_PER_LONG == 64
+#define VMMDEVREQ_HGCM_CALL VMMDEVREQ_HGCM_CALL64
+#else
+#define VMMDEVREQ_HGCM_CALL VMMDEVREQ_HGCM_CALL32
+#endif
+enum vmmdev_hgcm_service_location_type {
+  VMMDEV_HGCM_LOC_INVALID = 0,
+  VMMDEV_HGCM_LOC_LOCALHOST = 1,
+  VMMDEV_HGCM_LOC_LOCALHOST_EXISTING = 2,
+  VMMDEV_HGCM_LOC_SIZEHACK = 0x7fffffff
+};
+struct vmmdev_hgcm_service_location_localhost {
+  char service_name[128];
+};
+struct vmmdev_hgcm_service_location {
+  enum vmmdev_hgcm_service_location_type type;
+  union {
+    struct vmmdev_hgcm_service_location_localhost localhost;
+  } u;
+};
+enum vmmdev_hgcm_function_parameter_type {
+  VMMDEV_HGCM_PARM_TYPE_INVALID = 0,
+  VMMDEV_HGCM_PARM_TYPE_32BIT = 1,
+  VMMDEV_HGCM_PARM_TYPE_64BIT = 2,
+  VMMDEV_HGCM_PARM_TYPE_PHYSADDR = 3,
+  VMMDEV_HGCM_PARM_TYPE_LINADDR = 4,
+  VMMDEV_HGCM_PARM_TYPE_LINADDR_IN = 5,
+  VMMDEV_HGCM_PARM_TYPE_LINADDR_OUT = 6,
+  VMMDEV_HGCM_PARM_TYPE_LINADDR_KERNEL = 7,
+  VMMDEV_HGCM_PARM_TYPE_LINADDR_KERNEL_IN = 8,
+  VMMDEV_HGCM_PARM_TYPE_LINADDR_KERNEL_OUT = 9,
+  VMMDEV_HGCM_PARM_TYPE_PAGELIST = 10,
+  VMMDEV_HGCM_PARM_TYPE_SIZEHACK = 0x7fffffff
+};
+struct vmmdev_hgcm_function_parameter32 {
+  enum vmmdev_hgcm_function_parameter_type type;
+  union {
+    __u32 value32;
+    __u64 value64;
+    struct {
+      __u32 size;
+      union {
+        __u32 phys_addr;
+        __u32 linear_addr;
+      } u;
+    } pointer;
+    struct {
+      __u32 size;
+      __u32 offset;
+    } page_list;
+  } u;
+} __packed;
+struct vmmdev_hgcm_function_parameter64 {
+  enum vmmdev_hgcm_function_parameter_type type;
+  union {
+    __u32 value32;
+    __u64 value64;
+    struct {
+      __u32 size;
+      union {
+        __u64 phys_addr;
+        __u64 linear_addr;
+      } u;
+    } __packed pointer;
+    struct {
+      __u32 size;
+      __u32 offset;
+    } page_list;
+  } __packed u;
+} __packed;
+#if __BITS_PER_LONG == 64
+#define vmmdev_hgcm_function_parameter vmmdev_hgcm_function_parameter64
+#else
+#define vmmdev_hgcm_function_parameter vmmdev_hgcm_function_parameter32
+#endif
+#define VMMDEV_HGCM_F_PARM_DIRECTION_NONE 0x00000000U
+#define VMMDEV_HGCM_F_PARM_DIRECTION_TO_HOST 0x00000001U
+#define VMMDEV_HGCM_F_PARM_DIRECTION_FROM_HOST 0x00000002U
+#define VMMDEV_HGCM_F_PARM_DIRECTION_BOTH 0x00000003U
+struct vmmdev_hgcm_pagelist {
+  __u32 flags;
+  __u16 offset_first_page;
+  __u16 page_count;
+  __u64 pages[1];
+};
+#endif
diff --git a/libc/kernel/uapi/linux/vboxguest.h b/libc/kernel/uapi/linux/vboxguest.h
new file mode 100644
index 0000000..2eb80ef
--- /dev/null
+++ b/libc/kernel/uapi/linux/vboxguest.h
@@ -0,0 +1,161 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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_VBOXGUEST_H__
+#define __UAPI_VBOXGUEST_H__
+#include <asm/bitsperlong.h>
+#include <linux/ioctl.h>
+#include <linux/vbox_err.h>
+#include <linux/vbox_vmmdev_types.h>
+#define VBG_IOCTL_HDR_VERSION 0x10001
+#define VBG_IOCTL_HDR_TYPE_DEFAULT 0
+struct vbg_ioctl_hdr {
+  __u32 size_in;
+  __u32 version;
+  __u32 type;
+  __s32 rc;
+  __u32 size_out;
+  __u32 reserved;
+};
+#define VBG_IOC_VERSION 0x00010000u
+struct vbg_ioctl_driver_version_info {
+  struct vbg_ioctl_hdr hdr;
+  union {
+    struct {
+      __u32 req_version;
+      __u32 min_version;
+      __u32 reserved1;
+      __u32 reserved2;
+    } in;
+    struct {
+      __u32 session_version;
+      __u32 driver_version;
+      __u32 driver_revision;
+      __u32 reserved1;
+      __u32 reserved2;
+    } out;
+  } u;
+};
+#define VBG_IOCTL_DRIVER_VERSION_INFO _IOWR('V', 0, struct vbg_ioctl_driver_version_info)
+#define VBG_IOCTL_VMMDEV_REQUEST(s) _IOC(_IOC_READ | _IOC_WRITE, 'V', 2, s)
+#define VBG_IOCTL_VMMDEV_REQUEST_BIG _IOC(_IOC_READ | _IOC_WRITE, 'V', 3, 0)
+struct vbg_ioctl_hgcm_connect {
+  struct vbg_ioctl_hdr hdr;
+  union {
+    struct {
+      struct vmmdev_hgcm_service_location loc;
+    } in;
+    struct {
+      __u32 client_id;
+    } out;
+  } u;
+};
+#define VBG_IOCTL_HGCM_CONNECT _IOWR('V', 4, struct vbg_ioctl_hgcm_connect)
+struct vbg_ioctl_hgcm_disconnect {
+  struct vbg_ioctl_hdr hdr;
+  union {
+    struct {
+      __u32 client_id;
+    } in;
+  } u;
+};
+#define VBG_IOCTL_HGCM_DISCONNECT _IOWR('V', 5, struct vbg_ioctl_hgcm_disconnect)
+struct vbg_ioctl_hgcm_call {
+  struct vbg_ioctl_hdr hdr;
+  __u32 client_id;
+  __u32 function;
+  __u32 timeout_ms;
+  __u8 interruptible;
+  __u8 reserved;
+  __u16 parm_count;
+};
+#define VBG_IOCTL_HGCM_CALL_32(s) _IOC(_IOC_READ | _IOC_WRITE, 'V', 6, s)
+#define VBG_IOCTL_HGCM_CALL_64(s) _IOC(_IOC_READ | _IOC_WRITE, 'V', 7, s)
+#if __BITS_PER_LONG == 64
+#define VBG_IOCTL_HGCM_CALL(s) VBG_IOCTL_HGCM_CALL_64(s)
+#else
+#define VBG_IOCTL_HGCM_CALL(s) VBG_IOCTL_HGCM_CALL_32(s)
+#endif
+struct vbg_ioctl_log {
+  struct vbg_ioctl_hdr hdr;
+  union {
+    struct {
+      char msg[1];
+    } in;
+  } u;
+};
+#define VBG_IOCTL_LOG(s) _IOC(_IOC_READ | _IOC_WRITE, 'V', 9, s)
+struct vbg_ioctl_wait_for_events {
+  struct vbg_ioctl_hdr hdr;
+  union {
+    struct {
+      __u32 timeout_ms;
+      __u32 events;
+    } in;
+    struct {
+      __u32 events;
+    } out;
+  } u;
+};
+#define VBG_IOCTL_WAIT_FOR_EVENTS _IOWR('V', 10, struct vbg_ioctl_wait_for_events)
+#define VBG_IOCTL_INTERRUPT_ALL_WAIT_FOR_EVENTS _IOWR('V', 11, struct vbg_ioctl_hdr)
+struct vbg_ioctl_change_filter {
+  struct vbg_ioctl_hdr hdr;
+  union {
+    struct {
+      __u32 or_mask;
+      __u32 not_mask;
+    } in;
+  } u;
+};
+#define VBG_IOCTL_CHANGE_FILTER_MASK _IOWR('V', 12, struct vbg_ioctl_change_filter)
+struct vbg_ioctl_set_guest_caps {
+  struct vbg_ioctl_hdr hdr;
+  union {
+    struct {
+      __u32 or_mask;
+      __u32 not_mask;
+    } in;
+    struct {
+      __u32 session_caps;
+      __u32 global_caps;
+    } out;
+  } u;
+};
+#define VBG_IOCTL_CHANGE_GUEST_CAPABILITIES _IOWR('V', 14, struct vbg_ioctl_set_guest_caps)
+struct vbg_ioctl_check_balloon {
+  struct vbg_ioctl_hdr hdr;
+  union {
+    struct {
+      __u32 balloon_chunks;
+      __u8 handle_in_r3;
+      __u8 padding[3];
+    } out;
+  } u;
+};
+#define VBG_IOCTL_CHECK_BALLOON _IOWR('V', 17, struct vbg_ioctl_check_balloon)
+struct vbg_ioctl_write_coredump {
+  struct vbg_ioctl_hdr hdr;
+  union {
+    struct {
+      __u32 flags;
+    } in;
+  } u;
+};
+#define VBG_IOCTL_WRITE_CORE_DUMP _IOWR('V', 19, struct vbg_ioctl_write_coredump)
+#endif
diff --git a/libc/kernel/uapi/linux/version.h b/libc/kernel/uapi/linux/version.h
index 70b6963..61f0c3d 100644
--- a/libc/kernel/uapi/linux/version.h
+++ b/libc/kernel/uapi/linux/version.h
@@ -16,5 +16,5 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#define LINUX_VERSION_CODE 265984
+#define LINUX_VERSION_CODE 266499
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c))
diff --git a/libc/kernel/uapi/linux/vfio.h b/libc/kernel/uapi/linux/vfio.h
index 4e3fdb7..8b397f4 100644
--- a/libc/kernel/uapi/linux/vfio.h
+++ b/libc/kernel/uapi/linux/vfio.h
@@ -100,6 +100,7 @@
 #define VFIO_REGION_SUBTYPE_INTEL_IGD_OPREGION (1)
 #define VFIO_REGION_SUBTYPE_INTEL_IGD_HOST_CFG (2)
 #define VFIO_REGION_SUBTYPE_INTEL_IGD_LPC_CFG (3)
+#define VFIO_REGION_INFO_CAP_MSIX_MAPPABLE 3
 struct vfio_irq_info {
   __u32 argsz;
   __u32 flags;
@@ -177,6 +178,43 @@
   __s32 group_fds[];
 };
 #define VFIO_DEVICE_PCI_HOT_RESET _IO(VFIO_TYPE, VFIO_BASE + 13)
+struct vfio_device_gfx_plane_info {
+  __u32 argsz;
+  __u32 flags;
+#define VFIO_GFX_PLANE_TYPE_PROBE (1 << 0)
+#define VFIO_GFX_PLANE_TYPE_DMABUF (1 << 1)
+#define VFIO_GFX_PLANE_TYPE_REGION (1 << 2)
+  __u32 drm_plane_type;
+  __u32 drm_format;
+  __u64 drm_format_mod;
+  __u32 width;
+  __u32 height;
+  __u32 stride;
+  __u32 size;
+  __u32 x_pos;
+  __u32 y_pos;
+  __u32 x_hot;
+  __u32 y_hot;
+  union {
+    __u32 region_index;
+    __u32 dmabuf_id;
+  };
+};
+#define VFIO_DEVICE_QUERY_GFX_PLANE _IO(VFIO_TYPE, VFIO_BASE + 14)
+#define VFIO_DEVICE_GET_GFX_DMABUF _IO(VFIO_TYPE, VFIO_BASE + 15)
+struct vfio_device_ioeventfd {
+  __u32 argsz;
+  __u32 flags;
+#define VFIO_DEVICE_IOEVENTFD_8 (1 << 0)
+#define VFIO_DEVICE_IOEVENTFD_16 (1 << 1)
+#define VFIO_DEVICE_IOEVENTFD_32 (1 << 2)
+#define VFIO_DEVICE_IOEVENTFD_64 (1 << 3)
+#define VFIO_DEVICE_IOEVENTFD_SIZE_MASK (0xf)
+  __u64 offset;
+  __u64 data;
+  __s32 fd;
+};
+#define VFIO_DEVICE_IOEVENTFD _IO(VFIO_TYPE, VFIO_BASE + 16)
 struct vfio_iommu_type1_info {
   __u32 argsz;
   __u32 flags;
diff --git a/libc/kernel/uapi/linux/videodev2.h b/libc/kernel/uapi/linux/videodev2.h
index c350108..0569ba7 100644
--- a/libc/kernel/uapi/linux/videodev2.h
+++ b/libc/kernel/uapi/linux/videodev2.h
@@ -314,6 +314,7 @@
 #define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L')
 #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_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')
@@ -345,6 +346,10 @@
 #define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ')
 #define V4L2_PIX_FMT_MT21C v4l2_fourcc('M', 'T', '2', '1')
 #define V4L2_PIX_FMT_INZI v4l2_fourcc('I', 'N', 'Z', 'I')
+#define V4L2_PIX_FMT_IPU3_SBGGR10 v4l2_fourcc('i', 'p', '3', 'b')
+#define V4L2_PIX_FMT_IPU3_SGBRG10 v4l2_fourcc('i', 'p', '3', 'g')
+#define V4L2_PIX_FMT_IPU3_SGRBG10 v4l2_fourcc('i', 'p', '3', 'G')
+#define V4L2_PIX_FMT_IPU3_SRGGB10 v4l2_fourcc('i', 'p', '3', 'r')
 #define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8')
 #define V4L2_SDR_FMT_CU16LE v4l2_fourcc('C', 'U', '1', '6')
 #define V4L2_SDR_FMT_CS8 v4l2_fourcc('C', 'S', '0', '8')
@@ -359,6 +364,7 @@
 #define V4L2_TCH_FMT_TU08 v4l2_fourcc('T', 'U', '0', '8')
 #define V4L2_META_FMT_VSP1_HGO v4l2_fourcc('V', 'S', 'P', 'H')
 #define V4L2_META_FMT_VSP1_HGT v4l2_fourcc('V', 'S', 'P', 'T')
+#define V4L2_META_FMT_UVC v4l2_fourcc('U', 'V', 'C', 'H')
 #define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe
 #define V4L2_PIX_FMT_FLAG_PREMUL_ALPHA 0x00000001
 struct v4l2_fmtdesc {
diff --git a/libc/kernel/uapi/linux/virtio_balloon.h b/libc/kernel/uapi/linux/virtio_balloon.h
index 9f383bc..5969fa0 100644
--- a/libc/kernel/uapi/linux/virtio_balloon.h
+++ b/libc/kernel/uapi/linux/virtio_balloon.h
@@ -37,7 +37,13 @@
 #define VIRTIO_BALLOON_S_MEMFREE 4
 #define VIRTIO_BALLOON_S_MEMTOT 5
 #define VIRTIO_BALLOON_S_AVAIL 6
-#define VIRTIO_BALLOON_S_NR 7
+#define VIRTIO_BALLOON_S_CACHES 7
+#define VIRTIO_BALLOON_S_HTLB_PGALLOC 8
+#define VIRTIO_BALLOON_S_HTLB_PGFAIL 9
+#define VIRTIO_BALLOON_S_NR 10
+#define VIRTIO_BALLOON_S_NAMES_WITH_PREFIX(VIRTIO_BALLOON_S_NAMES_prefix) { VIRTIO_BALLOON_S_NAMES_prefix "swap-in", VIRTIO_BALLOON_S_NAMES_prefix "swap-out", VIRTIO_BALLOON_S_NAMES_prefix "major-faults", VIRTIO_BALLOON_S_NAMES_prefix "minor-faults", VIRTIO_BALLOON_S_NAMES_prefix "free-memory", VIRTIO_BALLOON_S_NAMES_prefix "total-memory", VIRTIO_BALLOON_S_NAMES_prefix "available-memory", VIRTIO_BALLOON_S_NAMES_prefix "disk-caches", VIRTIO_BALLOON_S_NAMES_prefix "hugetlb-allocations", VIRTIO_BALLOON_S_NAMES_prefix "hugetlb-failures" \
+}
+#define VIRTIO_BALLOON_S_NAMES VIRTIO_BALLOON_S_NAMES_WITH_PREFIX("")
 struct virtio_balloon_stat {
   __virtio16 tag;
   __virtio64 val;
diff --git a/libc/kernel/uapi/linux/virtio_net.h b/libc/kernel/uapi/linux/virtio_net.h
index ed9df3f..329d736 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_SPEED_DUPLEX 63
 #ifndef VIRTIO_NET_NO_LEGACY
 #define VIRTIO_NET_F_GSO 6
 #endif
@@ -55,6 +56,8 @@
   __u16 status;
   __u16 max_virtqueue_pairs;
   __u16 mtu;
+  __u32 speed;
+  __u8 duplex;
 } __attribute__((packed));
 struct virtio_net_hdr_v1 {
 #define VIRTIO_NET_HDR_F_NEEDS_CSUM 1