Update to v6.0 kernel headers.

Kernel headers coming from:

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

Test: Boots on coral.
Test: Bionic unit tests pass.
Change-Id: I282de83f23b432bef58214108a93700bdadddf0f
diff --git a/libc/kernel/uapi/linux/android/binder.h b/libc/kernel/uapi/linux/android/binder.h
index 2745972..e3b3289 100644
--- a/libc/kernel/uapi/linux/android/binder.h
+++ b/libc/kernel/uapi/linux/android/binder.h
@@ -152,6 +152,7 @@
   TF_STATUS_CODE = 0x08,
   TF_ACCEPT_FDS = 0x10,
   TF_CLEAR_BUF = 0x20,
+  TF_UPDATE_TXN = 0x40,
 };
 struct binder_transaction_data {
   union {
diff --git a/libc/kernel/uapi/linux/atm_zatm.h b/libc/kernel/uapi/linux/atm_zatm.h
new file mode 100644
index 0000000..1649b85
--- /dev/null
+++ b/libc/kernel/uapi/linux/atm_zatm.h
@@ -0,0 +1,42 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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_ATM_ZATM_H
+#define LINUX_ATM_ZATM_H
+#include <linux/atmapi.h>
+#include <linux/atmioc.h>
+#define ZATM_GETPOOL _IOW('a', ATMIOC_SARPRV + 1, struct atmif_sioc)
+#define ZATM_GETPOOLZ _IOW('a', ATMIOC_SARPRV + 2, struct atmif_sioc)
+#define ZATM_SETPOOL _IOW('a', ATMIOC_SARPRV + 3, struct atmif_sioc)
+struct zatm_pool_info {
+  int ref_count;
+  int low_water, high_water;
+  int rqa_count, rqu_count;
+  int offset, next_off;
+  int next_cnt, next_thres;
+};
+struct zatm_pool_req {
+  int pool_num;
+  struct zatm_pool_info info;
+};
+#define ZATM_OAM_POOL 0
+#define ZATM_AAL0_POOL 1
+#define ZATM_AAL5_POOL_BASE 2
+#define ZATM_LAST_POOL ZATM_AAL5_POOL_BASE + 10
+#define ZATM_TIMER_HISTORY_SIZE 16
+#endif
diff --git a/libc/kernel/uapi/linux/blkzoned.h b/libc/kernel/uapi/linux/blkzoned.h
index b551e8b..e41ac9f 100644
--- a/libc/kernel/uapi/linux/blkzoned.h
+++ b/libc/kernel/uapi/linux/blkzoned.h
@@ -54,7 +54,7 @@
   __u64 sector;
   __u32 nr_zones;
   __u32 flags;
-  struct blk_zone zones[0];
+  struct blk_zone zones[];
 };
 struct blk_zone_range {
   __u64 sector;
diff --git a/libc/kernel/uapi/linux/bpf.h b/libc/kernel/uapi/linux/bpf.h
index dd10b34..641ac55 100644
--- a/libc/kernel/uapi/linux/bpf.h
+++ b/libc/kernel/uapi/linux/bpf.h
@@ -229,6 +229,7 @@
   BPF_SK_REUSEPORT_SELECT_OR_MIGRATE,
   BPF_PERF_EVENT,
   BPF_TRACE_KPROBE_MULTI,
+  BPF_LSM_CGROUP,
   __MAX_BPF_ATTACH_TYPE
 };
 #define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
@@ -423,6 +424,7 @@
     __u32 attach_flags;
     __aligned_u64 prog_ids;
     __u32 prog_cnt;
+    __aligned_u64 prog_attach_flags;
   } query;
   struct {
     __u64 name;
@@ -498,7 +500,7 @@
     __u32 flags;
   } prog_bind_map;
 } __attribute__((aligned(8)));
-#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel), FN(spin_lock), FN(spin_unlock), FN(sk_fullsock), FN(tcp_sock), FN(skb_ecn_set_ce), FN(get_listener_sock), FN(skc_lookup_tcp), FN(tcp_check_syncookie), FN(sysctl_get_name), FN(sysctl_get_current_value), FN(sysctl_get_new_value), FN(sysctl_set_new_value), FN(strtol), FN(strtoul), FN(sk_storage_get), FN(sk_storage_delete), FN(send_signal), FN(tcp_gen_syncookie), FN(skb_output), FN(probe_read_user), FN(probe_read_kernel), FN(probe_read_user_str), FN(probe_read_kernel_str), FN(tcp_send_ack), FN(send_signal_thread), FN(jiffies64), FN(read_branch_records), FN(get_ns_current_pid_tgid), FN(xdp_output), FN(get_netns_cookie), FN(get_current_ancestor_cgroup_id), FN(sk_assign), FN(ktime_get_boot_ns), FN(seq_printf), FN(seq_write), FN(sk_cgroup_id), FN(sk_ancestor_cgroup_id), FN(ringbuf_output), FN(ringbuf_reserve), FN(ringbuf_submit), FN(ringbuf_discard), FN(ringbuf_query), FN(csum_level), FN(skc_to_tcp6_sock), FN(skc_to_tcp_sock), FN(skc_to_tcp_timewait_sock), FN(skc_to_tcp_request_sock), FN(skc_to_udp6_sock), FN(get_task_stack), FN(load_hdr_opt), FN(store_hdr_opt), FN(reserve_hdr_opt), FN(inode_storage_get), FN(inode_storage_delete), FN(d_path), FN(copy_from_user), FN(snprintf_btf), FN(seq_printf_btf), FN(skb_cgroup_classid), FN(redirect_neigh), FN(per_cpu_ptr), FN(this_cpu_ptr), FN(redirect_peer), FN(task_storage_get), FN(task_storage_delete), FN(get_current_task_btf), FN(bprm_opts_set), FN(ktime_get_coarse_ns), FN(ima_inode_hash), FN(sock_from_file), FN(check_mtu), FN(for_each_map_elem), FN(snprintf), FN(sys_bpf), FN(btf_find_by_name_kind), FN(sys_close), FN(timer_init), FN(timer_set_callback), FN(timer_start), FN(timer_cancel), FN(get_func_ip), FN(get_attach_cookie), FN(task_pt_regs), FN(get_branch_snapshot), FN(trace_vprintk), FN(skc_to_unix_sock), FN(kallsyms_lookup_name), FN(find_vma), FN(loop), FN(strncmp), FN(get_func_arg), FN(get_func_ret), FN(get_func_arg_cnt), FN(get_retval), FN(set_retval), FN(xdp_get_buff_len), FN(xdp_load_bytes), FN(xdp_store_bytes), FN(copy_from_user_task), FN(skb_set_tstamp), FN(ima_file_hash), FN(kptr_xchg), FN(map_lookup_percpu_elem), FN(skc_to_mptcp_sock), FN(dynptr_from_mem), FN(ringbuf_reserve_dynptr), FN(ringbuf_submit_dynptr), FN(ringbuf_discard_dynptr), FN(dynptr_read), FN(dynptr_write), FN(dynptr_data),
+#define __BPF_FUNC_MAPPER(FN) FN(unspec), FN(map_lookup_elem), FN(map_update_elem), FN(map_delete_elem), FN(probe_read), FN(ktime_get_ns), FN(trace_printk), FN(get_prandom_u32), FN(get_smp_processor_id), FN(skb_store_bytes), FN(l3_csum_replace), FN(l4_csum_replace), FN(tail_call), FN(clone_redirect), FN(get_current_pid_tgid), FN(get_current_uid_gid), FN(get_current_comm), FN(get_cgroup_classid), FN(skb_vlan_push), FN(skb_vlan_pop), FN(skb_get_tunnel_key), FN(skb_set_tunnel_key), FN(perf_event_read), FN(redirect), FN(get_route_realm), FN(perf_event_output), FN(skb_load_bytes), FN(get_stackid), FN(csum_diff), FN(skb_get_tunnel_opt), FN(skb_set_tunnel_opt), FN(skb_change_proto), FN(skb_change_type), FN(skb_under_cgroup), FN(get_hash_recalc), FN(get_current_task), FN(probe_write_user), FN(current_task_under_cgroup), FN(skb_change_tail), FN(skb_pull_data), FN(csum_update), FN(set_hash_invalid), FN(get_numa_node_id), FN(skb_change_head), FN(xdp_adjust_head), FN(probe_read_str), FN(get_socket_cookie), FN(get_socket_uid), FN(set_hash), FN(setsockopt), FN(skb_adjust_room), FN(redirect_map), FN(sk_redirect_map), FN(sock_map_update), FN(xdp_adjust_meta), FN(perf_event_read_value), FN(perf_prog_read_value), FN(getsockopt), FN(override_return), FN(sock_ops_cb_flags_set), FN(msg_redirect_map), FN(msg_apply_bytes), FN(msg_cork_bytes), FN(msg_pull_data), FN(bind), FN(xdp_adjust_tail), FN(skb_get_xfrm_state), FN(get_stack), FN(skb_load_bytes_relative), FN(fib_lookup), FN(sock_hash_update), FN(msg_redirect_hash), FN(sk_redirect_hash), FN(lwt_push_encap), FN(lwt_seg6_store_bytes), FN(lwt_seg6_adjust_srh), FN(lwt_seg6_action), FN(rc_repeat), FN(rc_keydown), FN(skb_cgroup_id), FN(get_current_cgroup_id), FN(get_local_storage), FN(sk_select_reuseport), FN(skb_ancestor_cgroup_id), FN(sk_lookup_tcp), FN(sk_lookup_udp), FN(sk_release), FN(map_push_elem), FN(map_pop_elem), FN(map_peek_elem), FN(msg_push_data), FN(msg_pop_data), FN(rc_pointer_rel), FN(spin_lock), FN(spin_unlock), FN(sk_fullsock), FN(tcp_sock), FN(skb_ecn_set_ce), FN(get_listener_sock), FN(skc_lookup_tcp), FN(tcp_check_syncookie), FN(sysctl_get_name), FN(sysctl_get_current_value), FN(sysctl_get_new_value), FN(sysctl_set_new_value), FN(strtol), FN(strtoul), FN(sk_storage_get), FN(sk_storage_delete), FN(send_signal), FN(tcp_gen_syncookie), FN(skb_output), FN(probe_read_user), FN(probe_read_kernel), FN(probe_read_user_str), FN(probe_read_kernel_str), FN(tcp_send_ack), FN(send_signal_thread), FN(jiffies64), FN(read_branch_records), FN(get_ns_current_pid_tgid), FN(xdp_output), FN(get_netns_cookie), FN(get_current_ancestor_cgroup_id), FN(sk_assign), FN(ktime_get_boot_ns), FN(seq_printf), FN(seq_write), FN(sk_cgroup_id), FN(sk_ancestor_cgroup_id), FN(ringbuf_output), FN(ringbuf_reserve), FN(ringbuf_submit), FN(ringbuf_discard), FN(ringbuf_query), FN(csum_level), FN(skc_to_tcp6_sock), FN(skc_to_tcp_sock), FN(skc_to_tcp_timewait_sock), FN(skc_to_tcp_request_sock), FN(skc_to_udp6_sock), FN(get_task_stack), FN(load_hdr_opt), FN(store_hdr_opt), FN(reserve_hdr_opt), FN(inode_storage_get), FN(inode_storage_delete), FN(d_path), FN(copy_from_user), FN(snprintf_btf), FN(seq_printf_btf), FN(skb_cgroup_classid), FN(redirect_neigh), FN(per_cpu_ptr), FN(this_cpu_ptr), FN(redirect_peer), FN(task_storage_get), FN(task_storage_delete), FN(get_current_task_btf), FN(bprm_opts_set), FN(ktime_get_coarse_ns), FN(ima_inode_hash), FN(sock_from_file), FN(check_mtu), FN(for_each_map_elem), FN(snprintf), FN(sys_bpf), FN(btf_find_by_name_kind), FN(sys_close), FN(timer_init), FN(timer_set_callback), FN(timer_start), FN(timer_cancel), FN(get_func_ip), FN(get_attach_cookie), FN(task_pt_regs), FN(get_branch_snapshot), FN(trace_vprintk), FN(skc_to_unix_sock), FN(kallsyms_lookup_name), FN(find_vma), FN(loop), FN(strncmp), FN(get_func_arg), FN(get_func_ret), FN(get_func_arg_cnt), FN(get_retval), FN(set_retval), FN(xdp_get_buff_len), FN(xdp_load_bytes), FN(xdp_store_bytes), FN(copy_from_user_task), FN(skb_set_tstamp), FN(ima_file_hash), FN(kptr_xchg), FN(map_lookup_percpu_elem), FN(skc_to_mptcp_sock), FN(dynptr_from_mem), FN(ringbuf_reserve_dynptr), FN(ringbuf_submit_dynptr), FN(ringbuf_discard_dynptr), FN(dynptr_read), FN(dynptr_write), FN(dynptr_data), FN(tcp_raw_gen_syncookie_ipv4), FN(tcp_raw_gen_syncookie_ipv6), FN(tcp_raw_check_syncookie_ipv4), FN(tcp_raw_check_syncookie_ipv6),
 #define __BPF_ENUM_FN(x) BPF_FUNC_ ##x
 enum bpf_func_id {
   __BPF_FUNC_MAPPER(__BPF_ENUM_FN) __BPF_FUNC_MAX_ID,
@@ -846,6 +848,8 @@
   __u64 run_cnt;
   __u64 recursion_misses;
   __u32 verified_insns;
+  __u32 attach_btf_obj_id;
+  __u32 attach_btf_id;
 } __attribute__((aligned(8)));
 struct bpf_map_info {
   __u32 type;
@@ -1223,6 +1227,7 @@
   BPF_CORE_TYPE_SIZE = 9,
   BPF_CORE_ENUMVAL_EXISTS = 10,
   BPF_CORE_ENUMVAL_VALUE = 11,
+  BPF_CORE_TYPE_MATCHES = 12,
 };
 struct bpf_core_relo {
   __u32 insn_off;
diff --git a/libc/kernel/uapi/linux/btf.h b/libc/kernel/uapi/linux/btf.h
index fc57d3c..a1f68bf 100644
--- a/libc/kernel/uapi/linux/btf.h
+++ b/libc/kernel/uapi/linux/btf.h
@@ -65,6 +65,7 @@
   BTF_KIND_FLOAT = 16,
   BTF_KIND_DECL_TAG = 17,
   BTF_KIND_TYPE_TAG = 18,
+  BTF_KIND_ENUM64 = 19,
   NR_BTF_KINDS,
   BTF_KIND_MAX = NR_BTF_KINDS - 1,
 };
@@ -115,4 +116,9 @@
 struct btf_decl_tag {
   __s32 component_idx;
 };
+struct btf_enum64 {
+  __u32 name_off;
+  __u32 val_lo32;
+  __u32 val_hi32;
+};
 #endif
diff --git a/libc/kernel/uapi/linux/btrfs.h b/libc/kernel/uapi/linux/btrfs.h
index 9f76d52..d73527e 100644
--- a/libc/kernel/uapi/linux/btrfs.h
+++ b/libc/kernel/uapi/linux/btrfs.h
@@ -59,7 +59,7 @@
   __u64 num_ref_copies;
   __u64 num_excl_copies;
   struct btrfs_qgroup_limit lim;
-  __u64 qgroups[0];
+  __u64 qgroups[];
 };
 struct btrfs_ioctl_qgroup_limit_args {
   __u64 qgroupid;
@@ -304,7 +304,7 @@
 struct btrfs_ioctl_search_args_v2 {
   struct btrfs_ioctl_search_key key;
   __u64 buf_size;
-  __u64 buf[0];
+  __u64 buf[];
 };
 struct btrfs_ioctl_clone_range_args {
   __s64 src_fd;
@@ -335,7 +335,7 @@
   __u16 dest_count;
   __u16 reserved1;
   __u32 reserved2;
-  struct btrfs_ioctl_same_extent_info info[0];
+  struct btrfs_ioctl_same_extent_info info[];
 };
 struct btrfs_ioctl_space_info {
   __u64 flags;
@@ -345,14 +345,14 @@
 struct btrfs_ioctl_space_args {
   __u64 space_slots;
   __u64 total_spaces;
-  struct btrfs_ioctl_space_info spaces[0];
+  struct btrfs_ioctl_space_info spaces[];
 };
 struct btrfs_data_container {
   __u32 bytes_left;
   __u32 bytes_missing;
   __u32 elem_cnt;
   __u32 elem_missed;
-  __u64 val[0];
+  __u64 val[];
 };
 struct btrfs_ioctl_ino_path_args {
   __u64 inum;
@@ -422,7 +422,8 @@
 #define BTRFS_SEND_FLAG_OMIT_STREAM_HEADER 0x2
 #define BTRFS_SEND_FLAG_OMIT_END_CMD 0x4
 #define BTRFS_SEND_FLAG_VERSION 0x8
-#define BTRFS_SEND_FLAG_MASK (BTRFS_SEND_FLAG_NO_FILE_DATA | BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | BTRFS_SEND_FLAG_OMIT_END_CMD | BTRFS_SEND_FLAG_VERSION)
+#define BTRFS_SEND_FLAG_COMPRESSED 0x10
+#define BTRFS_SEND_FLAG_MASK (BTRFS_SEND_FLAG_NO_FILE_DATA | BTRFS_SEND_FLAG_OMIT_STREAM_HEADER | BTRFS_SEND_FLAG_OMIT_END_CMD | BTRFS_SEND_FLAG_VERSION | BTRFS_SEND_FLAG_COMPRESSED)
 struct btrfs_ioctl_send_args {
   __s64 send_fd;
   __u64 clone_sources_count;
diff --git a/libc/kernel/uapi/linux/btrfs_tree.h b/libc/kernel/uapi/linux/btrfs_tree.h
index 02a9ae4..3becce8 100644
--- a/libc/kernel/uapi/linux/btrfs_tree.h
+++ b/libc/kernel/uapi/linux/btrfs_tree.h
@@ -221,7 +221,7 @@
   __le64 parent_objectid;
   __le64 index;
   __le16 name_len;
-  __u8 name[0];
+  __u8 name[];
 } __attribute__((__packed__));
 struct btrfs_timespec {
   __le64 sec;
diff --git a/libc/kernel/uapi/linux/can/bcm.h b/libc/kernel/uapi/linux/can/bcm.h
index 42e0782..f5ab2c2 100644
--- a/libc/kernel/uapi/linux/can/bcm.h
+++ b/libc/kernel/uapi/linux/can/bcm.h
@@ -31,7 +31,7 @@
   struct bcm_timeval ival1, ival2;
   canid_t can_id;
   __u32 nframes;
-  struct can_frame frames[0];
+  struct can_frame frames[];
 };
 enum {
   TX_SETUP = 1,
diff --git a/libc/kernel/uapi/linux/can/error.h b/libc/kernel/uapi/linux/can/error.h
index 645373b..f585d2c 100644
--- a/libc/kernel/uapi/linux/can/error.h
+++ b/libc/kernel/uapi/linux/can/error.h
@@ -28,6 +28,7 @@
 #define CAN_ERR_BUSOFF 0x00000040U
 #define CAN_ERR_BUSERROR 0x00000080U
 #define CAN_ERR_RESTARTED 0x00000100U
+#define CAN_ERR_CNT 0x00000200U
 #define CAN_ERR_LOSTARB_UNSPEC 0x00
 #define CAN_ERR_CRTL_UNSPEC 0x00
 #define CAN_ERR_CRTL_RX_OVERFLOW 0x01
@@ -76,4 +77,7 @@
 #define CAN_ERR_TRX_CANL_SHORT_TO_VCC 0x60
 #define CAN_ERR_TRX_CANL_SHORT_TO_GND 0x70
 #define CAN_ERR_TRX_CANL_SHORT_TO_CANH 0x80
+#define CAN_ERROR_WARNING_THRESHOLD 96
+#define CAN_ERROR_PASSIVE_THRESHOLD 128
+#define CAN_BUS_OFF_THRESHOLD 256
 #endif
diff --git a/libc/kernel/uapi/linux/connector.h b/libc/kernel/uapi/linux/connector.h
index adf3a7f..e3891e3 100644
--- a/libc/kernel/uapi/linux/connector.h
+++ b/libc/kernel/uapi/linux/connector.h
@@ -50,6 +50,6 @@
   __u32 ack;
   __u16 len;
   __u16 flags;
-  __u8 data[0];
+  __u8 data[];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/cycx_cfm.h b/libc/kernel/uapi/linux/cycx_cfm.h
index 052de53..230b58d 100644
--- a/libc/kernel/uapi/linux/cycx_cfm.h
+++ b/libc/kernel/uapi/linux/cycx_cfm.h
@@ -53,7 +53,7 @@
   unsigned short reserved[6];
   char descr[CFM_DESCR_LEN];
   struct cycx_fw_info info;
-  unsigned char image[0];
+  unsigned char image[];
 };
 struct cycx_fw_header {
   unsigned long reset_size;
diff --git a/libc/kernel/uapi/linux/devlink.h b/libc/kernel/uapi/linux/devlink.h
index b45865e..b2cdafa 100644
--- a/libc/kernel/uapi/linux/devlink.h
+++ b/libc/kernel/uapi/linux/devlink.h
@@ -107,6 +107,8 @@
   DEVLINK_CMD_LINECARD_SET,
   DEVLINK_CMD_LINECARD_NEW,
   DEVLINK_CMD_LINECARD_DEL,
+  DEVLINK_CMD_SELFTESTS_GET,
+  DEVLINK_CMD_SELFTESTS_RUN,
   __DEVLINK_CMD_MAX,
   DEVLINK_CMD_MAX = __DEVLINK_CMD_MAX - 1
 };
@@ -188,6 +190,25 @@
 #define DEVLINK_FLASH_OVERWRITE_SETTINGS _BITUL(DEVLINK_FLASH_OVERWRITE_SETTINGS_BIT)
 #define DEVLINK_FLASH_OVERWRITE_IDENTIFIERS _BITUL(DEVLINK_FLASH_OVERWRITE_IDENTIFIERS_BIT)
 #define DEVLINK_SUPPORTED_FLASH_OVERWRITE_SECTIONS (_BITUL(__DEVLINK_FLASH_OVERWRITE_MAX_BIT) - 1)
+enum devlink_attr_selftest_id {
+  DEVLINK_ATTR_SELFTEST_ID_UNSPEC,
+  DEVLINK_ATTR_SELFTEST_ID_FLASH,
+  __DEVLINK_ATTR_SELFTEST_ID_MAX,
+  DEVLINK_ATTR_SELFTEST_ID_MAX = __DEVLINK_ATTR_SELFTEST_ID_MAX - 1
+};
+enum devlink_selftest_status {
+  DEVLINK_SELFTEST_STATUS_SKIP,
+  DEVLINK_SELFTEST_STATUS_PASS,
+  DEVLINK_SELFTEST_STATUS_FAIL
+};
+enum devlink_attr_selftest_result {
+  DEVLINK_ATTR_SELFTEST_RESULT_UNSPEC,
+  DEVLINK_ATTR_SELFTEST_RESULT,
+  DEVLINK_ATTR_SELFTEST_RESULT_ID,
+  DEVLINK_ATTR_SELFTEST_RESULT_STATUS,
+  __DEVLINK_ATTR_SELFTEST_RESULT_MAX,
+  DEVLINK_ATTR_SELFTEST_RESULT_MAX = __DEVLINK_ATTR_SELFTEST_RESULT_MAX - 1
+};
 enum devlink_trap_action {
   DEVLINK_TRAP_ACTION_DROP,
   DEVLINK_TRAP_ACTION_TRAP,
@@ -403,6 +424,8 @@
   DEVLINK_ATTR_LINECARD_STATE,
   DEVLINK_ATTR_LINECARD_TYPE,
   DEVLINK_ATTR_LINECARD_SUPPORTED_TYPES,
+  DEVLINK_ATTR_NESTED_DEVLINK,
+  DEVLINK_ATTR_SELFTESTS,
   __DEVLINK_ATTR_MAX,
   DEVLINK_ATTR_MAX = __DEVLINK_ATTR_MAX - 1
 };
diff --git a/libc/kernel/uapi/linux/dm-ioctl.h b/libc/kernel/uapi/linux/dm-ioctl.h
index 98cbc1f..f0ff78c 100644
--- a/libc/kernel/uapi/linux/dm-ioctl.h
+++ b/libc/kernel/uapi/linux/dm-ioctl.h
@@ -48,23 +48,23 @@
 struct dm_target_deps {
   __u32 count;
   __u32 padding;
-  __u64 dev[0];
+  __u64 dev[];
 };
 struct dm_name_list {
   __u64 dev;
   __u32 next;
-  char name[0];
+  char name[];
 };
 #define DM_NAME_LIST_FLAG_HAS_UUID 1
 #define DM_NAME_LIST_FLAG_DOESNT_HAVE_UUID 2
 struct dm_target_versions {
   __u32 next;
   __u32 version[3];
-  char name[0];
+  char name[];
 };
 struct dm_target_msg {
   __u64 sector;
-  char message[0];
+  char message[];
 };
 enum {
   DM_VERSION_CMD = 0,
@@ -106,9 +106,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 46
+#define DM_VERSION_MINOR 47
 #define DM_VERSION_PATCHLEVEL 0
-#define DM_VERSION_EXTRA "-ioctl(2022-02-22)"
+#define DM_VERSION_EXTRA "-ioctl(2022-07-28)"
 #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/dm-log-userspace.h b/libc/kernel/uapi/linux/dm-log-userspace.h
index 4f0671b..37feee6 100644
--- a/libc/kernel/uapi/linux/dm-log-userspace.h
+++ b/libc/kernel/uapi/linux/dm-log-userspace.h
@@ -49,6 +49,6 @@
   __u32 seq;
   __u32 request_type;
   __u32 data_size;
-  char data[0];
+  char data[];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/dma-buf.h b/libc/kernel/uapi/linux/dma-buf.h
index 4e31379..7462c15 100644
--- a/libc/kernel/uapi/linux/dma-buf.h
+++ b/libc/kernel/uapi/linux/dma-buf.h
@@ -29,9 +29,19 @@
 #define DMA_BUF_SYNC_END (1 << 2)
 #define DMA_BUF_SYNC_VALID_FLAGS_MASK (DMA_BUF_SYNC_RW | DMA_BUF_SYNC_END)
 #define DMA_BUF_NAME_LEN 32
+struct dma_buf_export_sync_file {
+  __u32 flags;
+  __s32 fd;
+};
+struct dma_buf_import_sync_file {
+  __u32 flags;
+  __s32 fd;
+};
 #define DMA_BUF_BASE 'b'
 #define DMA_BUF_IOCTL_SYNC _IOW(DMA_BUF_BASE, 0, struct dma_buf_sync)
 #define DMA_BUF_SET_NAME _IOW(DMA_BUF_BASE, 1, const char *)
 #define DMA_BUF_SET_NAME_A _IOW(DMA_BUF_BASE, 1, __u32)
 #define DMA_BUF_SET_NAME_B _IOW(DMA_BUF_BASE, 1, __u64)
+#define DMA_BUF_IOCTL_EXPORT_SYNC_FILE _IOWR(DMA_BUF_BASE, 2, struct dma_buf_export_sync_file)
+#define DMA_BUF_IOCTL_IMPORT_SYNC_FILE _IOW(DMA_BUF_BASE, 3, struct dma_buf_import_sync_file)
 #endif
diff --git a/libc/kernel/uapi/linux/elf.h b/libc/kernel/uapi/linux/elf.h
index 35486fb..28c8426 100644
--- a/libc/kernel/uapi/linux/elf.h
+++ b/libc/kernel/uapi/linux/elf.h
@@ -352,6 +352,7 @@
 #define NT_S390_GS_CB 0x30b
 #define NT_S390_GS_BC 0x30c
 #define NT_S390_RI_CB 0x30d
+#define NT_S390_PV_CPU_DATA 0x30e
 #define NT_ARM_VFP 0x400
 #define NT_ARM_TLS 0x401
 #define NT_ARM_HW_BREAK 0x402
diff --git a/libc/kernel/uapi/linux/ethtool.h b/libc/kernel/uapi/linux/ethtool.h
index c096f7f..22dc9f2 100644
--- a/libc/kernel/uapi/linux/ethtool.h
+++ b/libc/kernel/uapi/linux/ethtool.h
@@ -98,7 +98,7 @@
   __u32 id;
   __u32 type_id;
   __u32 len;
-  void * data[0];
+  void * data[];
 };
 #define DOWNSHIFT_DEV_DEFAULT_COUNT 0xff
 #define DOWNSHIFT_DEV_DISABLE 0
@@ -118,14 +118,14 @@
   __u32 cmd;
   __u32 version;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct ethtool_eeprom {
   __u32 cmd;
   __u32 magic;
   __u32 offset;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct ethtool_eee {
   __u32 cmd;
@@ -281,13 +281,13 @@
   __u32 cmd;
   __u32 string_set;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 struct ethtool_sset_info {
   __u32 cmd;
   __u32 reserved;
   __u64 sset_mask;
-  __u32 data[0];
+  __u32 data[];
 };
 enum ethtool_test_flags {
   ETH_TEST_FL_OFFLINE = (1 << 0),
@@ -300,17 +300,17 @@
   __u32 flags;
   __u32 reserved;
   __u32 len;
-  __u64 data[0];
+  __u64 data[];
 };
 struct ethtool_stats {
   __u32 cmd;
   __u32 n_stats;
-  __u64 data[0];
+  __u64 data[];
 };
 struct ethtool_perm_addr {
   __u32 cmd;
   __u32 size;
-  __u8 data[0];
+  __u8 data[];
 };
 enum ethtool_flags {
   ETH_FLAG_TXVLAN = (1 << 7),
@@ -410,7 +410,7 @@
 struct ethtool_rxfh_indir {
   __u32 cmd;
   __u32 size;
-  __u32 ring_index[0];
+  __u32 ring_index[];
 };
 struct ethtool_rxfh {
   __u32 cmd;
@@ -420,7 +420,7 @@
   __u8 hfunc;
   __u8 rsvd8[3];
   __u32 rsvd32;
-  __u32 rss_config[0];
+  __u32 rss_config[];
 };
 #define ETH_RXFH_CONTEXT_ALLOC 0xffffffff
 #define ETH_RXFH_INDIR_NO_CHANGE 0xffffffff
@@ -462,7 +462,7 @@
   __u32 version;
   __u32 flag;
   __u32 len;
-  __u8 data[0];
+  __u8 data[];
 };
 #define ETH_FW_DUMP_DISABLE 0
 struct ethtool_get_features_block {
@@ -474,7 +474,7 @@
 struct ethtool_gfeatures {
   __u32 cmd;
   __u32 size;
-  struct ethtool_get_features_block features[0];
+  struct ethtool_get_features_block features[];
 };
 struct ethtool_set_features_block {
   __u32 valid;
@@ -483,7 +483,7 @@
 struct ethtool_sfeatures {
   __u32 cmd;
   __u32 size;
-  struct ethtool_set_features_block features[0];
+  struct ethtool_set_features_block features[];
 };
 struct ethtool_ts_info {
   __u32 cmd;
@@ -903,6 +903,6 @@
   __u8 master_slave_state;
   __u8 reserved1[1];
   __u32 reserved[7];
-  __u32 link_mode_masks[0];
+  __u32 link_mode_masks[];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/f2fs.h b/libc/kernel/uapi/linux/f2fs.h
index 76da8f6..3fcd444 100644
--- a/libc/kernel/uapi/linux/f2fs.h
+++ b/libc/kernel/uapi/linux/f2fs.h
@@ -25,7 +25,7 @@
 #define F2FS_IOC_COMMIT_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 2)
 #define F2FS_IOC_START_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 3)
 #define F2FS_IOC_RELEASE_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 4)
-#define F2FS_IOC_ABORT_VOLATILE_WRITE _IO(F2FS_IOCTL_MAGIC, 5)
+#define F2FS_IOC_ABORT_ATOMIC_WRITE _IO(F2FS_IOCTL_MAGIC, 5)
 #define F2FS_IOC_GARBAGE_COLLECT _IOW(F2FS_IOCTL_MAGIC, 6, __u32)
 #define F2FS_IOC_WRITE_CHECKPOINT _IO(F2FS_IOCTL_MAGIC, 7)
 #define F2FS_IOC_DEFRAGMENT _IOWR(F2FS_IOCTL_MAGIC, 8, struct f2fs_defragment)
diff --git a/libc/kernel/uapi/linux/fanotify.h b/libc/kernel/uapi/linux/fanotify.h
index f4e2a2e..9815a64 100644
--- a/libc/kernel/uapi/linux/fanotify.h
+++ b/libc/kernel/uapi/linux/fanotify.h
@@ -68,9 +68,11 @@
 #define FAN_MARK_IGNORED_SURV_MODIFY 0x00000040
 #define FAN_MARK_FLUSH 0x00000080
 #define FAN_MARK_EVICTABLE 0x00000200
+#define FAN_MARK_IGNORE 0x00000400
 #define FAN_MARK_INODE 0x00000000
 #define FAN_MARK_MOUNT 0x00000010
 #define FAN_MARK_FILESYSTEM 0x00000100
+#define FAN_MARK_IGNORE_SURV (FAN_MARK_IGNORE | FAN_MARK_IGNORED_SURV_MODIFY)
 #define FAN_ALL_MARK_FLAGS (FAN_MARK_ADD | FAN_MARK_REMOVE | FAN_MARK_DONT_FOLLOW | FAN_MARK_ONLYDIR | FAN_MARK_MOUNT | FAN_MARK_IGNORED_MASK | FAN_MARK_IGNORED_SURV_MODIFY | FAN_MARK_FLUSH)
 #define FAN_ALL_EVENTS (FAN_ACCESS | FAN_MODIFY | FAN_CLOSE | FAN_OPEN)
 #define FAN_ALL_PERM_EVENTS (FAN_OPEN_PERM | FAN_ACCESS_PERM)
@@ -100,7 +102,7 @@
 struct fanotify_event_info_fid {
   struct fanotify_event_info_header hdr;
   __kernel_fsid_t fsid;
-  unsigned char handle[0];
+  unsigned char handle[];
 };
 struct fanotify_event_info_pidfd {
   struct fanotify_event_info_header hdr;
diff --git a/libc/kernel/uapi/linux/fiemap.h b/libc/kernel/uapi/linux/fiemap.h
index 4310786..a67a5fe 100644
--- a/libc/kernel/uapi/linux/fiemap.h
+++ b/libc/kernel/uapi/linux/fiemap.h
@@ -34,7 +34,7 @@
   __u32 fm_mapped_extents;
   __u32 fm_extent_count;
   __u32 fm_reserved;
-  struct fiemap_extent fm_extents[0];
+  struct fiemap_extent fm_extents[];
 };
 #define FIEMAP_MAX_OFFSET (~0ULL)
 #define FIEMAP_FLAG_SYNC 0x00000001
diff --git a/libc/kernel/uapi/linux/firewire-cdev.h b/libc/kernel/uapi/linux/firewire-cdev.h
index 92957bc..a54191c 100644
--- a/libc/kernel/uapi/linux/firewire-cdev.h
+++ b/libc/kernel/uapi/linux/firewire-cdev.h
@@ -50,7 +50,7 @@
   __u32 type;
   __u32 rcode;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 struct fw_cdev_event_request {
   __u64 closure;
@@ -59,7 +59,7 @@
   __u64 offset;
   __u32 handle;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 struct fw_cdev_event_request2 {
   __u64 closure;
@@ -72,14 +72,14 @@
   __u32 generation;
   __u32 handle;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 struct fw_cdev_event_iso_interrupt {
   __u64 closure;
   __u32 type;
   __u32 cycle;
   __u32 header_length;
-  __u32 header[0];
+  __u32 header[];
 };
 struct fw_cdev_event_iso_interrupt_mc {
   __u64 closure;
@@ -98,7 +98,7 @@
   __u32 type;
   __u32 rcode;
   __u32 length;
-  __u32 data[0];
+  __u32 data[];
 };
 union fw_cdev_event {
   struct fw_cdev_event_common common;
@@ -207,7 +207,7 @@
 #define FW_CDEV_ISO_HEADER_LENGTH(v) ((v) << 24)
 struct fw_cdev_iso_packet {
   __u32 control;
-  __u32 header[0];
+  __u32 header[];
 };
 struct fw_cdev_queue_iso {
   __u64 packets;
diff --git a/libc/kernel/uapi/linux/fs.h b/libc/kernel/uapi/linux/fs.h
index 3bb4183..96f9181 100644
--- a/libc/kernel/uapi/linux/fs.h
+++ b/libc/kernel/uapi/linux/fs.h
@@ -63,7 +63,7 @@
   __u16 dest_count;
   __u16 reserved1;
   __u32 reserved2;
-  struct file_dedupe_range_info info[0];
+  struct file_dedupe_range_info info[];
 };
 struct files_stat_struct {
   unsigned long nr_files;
diff --git a/libc/kernel/uapi/linux/fscrypt.h b/libc/kernel/uapi/linux/fscrypt.h
index ca42eb3..e6b5358 100644
--- a/libc/kernel/uapi/linux/fscrypt.h
+++ b/libc/kernel/uapi/linux/fscrypt.h
@@ -33,6 +33,7 @@
 #define FSCRYPT_MODE_AES_128_CBC 5
 #define FSCRYPT_MODE_AES_128_CTS 6
 #define FSCRYPT_MODE_ADIANTUM 9
+#define FSCRYPT_MODE_AES_256_HCTR2 10
 #define FSCRYPT_POLICY_V1 0
 #define FSCRYPT_KEY_DESCRIPTOR_SIZE 8
 struct fscrypt_policy_v1 {
diff --git a/libc/kernel/uapi/linux/genetlink.h b/libc/kernel/uapi/linux/genetlink.h
index 2e2137d..0f86331 100644
--- a/libc/kernel/uapi/linux/genetlink.h
+++ b/libc/kernel/uapi/linux/genetlink.h
@@ -81,6 +81,7 @@
   CTRL_ATTR_MCAST_GRP_ID,
   __CTRL_ATTR_MCAST_GRP_MAX,
 };
+#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
 enum {
   CTRL_ATTR_POLICY_UNSPEC,
   CTRL_ATTR_POLICY_DO,
@@ -88,5 +89,5 @@
   __CTRL_ATTR_POLICY_DUMP_MAX,
   CTRL_ATTR_POLICY_DUMP_MAX = __CTRL_ATTR_POLICY_DUMP_MAX - 1
 };
-#define CTRL_ATTR_MCAST_GRP_MAX (__CTRL_ATTR_MCAST_GRP_MAX - 1)
+#define CTRL_ATTR_POLICY_MAX (__CTRL_ATTR_POLICY_DUMP_MAX - 1)
 #endif
diff --git a/libc/kernel/uapi/linux/idxd.h b/libc/kernel/uapi/linux/idxd.h
index 26f41ab..c6d6985 100644
--- a/libc/kernel/uapi/linux/idxd.h
+++ b/libc/kernel/uapi/linux/idxd.h
@@ -90,14 +90,14 @@
   IAX_OPCODE_CRC64,
   IAX_OPCODE_ZERO_DECOMP_32 = 0x48,
   IAX_OPCODE_ZERO_DECOMP_16,
-  IAX_OPCODE_DECOMP_32 = 0x4c,
-  IAX_OPCODE_DECOMP_16,
+  IAX_OPCODE_ZERO_COMP_32 = 0x4c,
+  IAX_OPCODE_ZERO_COMP_16,
   IAX_OPCODE_SCAN = 0x50,
   IAX_OPCODE_SET_MEMBER,
   IAX_OPCODE_EXTRACT,
   IAX_OPCODE_SELECT,
   IAX_OPCODE_RLE_BURST,
-  IAX_OPCDE_FIND_UNIQUE,
+  IAX_OPCODE_FIND_UNIQUE,
   IAX_OPCODE_EXPAND,
 };
 enum dsa_completion_status {
diff --git a/libc/kernel/uapi/linux/if_alg.h b/libc/kernel/uapi/linux/if_alg.h
index 6530a16..237fe6e 100644
--- a/libc/kernel/uapi/linux/if_alg.h
+++ b/libc/kernel/uapi/linux/if_alg.h
@@ -35,7 +35,7 @@
 };
 struct af_alg_iv {
   __u32 ivlen;
-  __u8 iv[0];
+  __u8 iv[];
 };
 #define ALG_SET_KEY 1
 #define ALG_SET_IV 2
diff --git a/libc/kernel/uapi/linux/if_arcnet.h b/libc/kernel/uapi/linux/if_arcnet.h
index 6aece37..65b07e1 100644
--- a/libc/kernel/uapi/linux/if_arcnet.h
+++ b/libc/kernel/uapi/linux/if_arcnet.h
@@ -40,18 +40,18 @@
   __u8 proto;
   __u8 split_flag;
   __be16 sequence;
-  __u8 payload[0];
+  __u8 payload[];
 };
 #define RFC1201_HDR_SIZE 4
 struct arc_rfc1051 {
   __u8 proto;
-  __u8 payload[0];
+  __u8 payload[];
 };
 #define RFC1051_HDR_SIZE 1
 struct arc_eth_encap {
   __u8 proto;
   struct ethhdr eth;
-  __u8 payload[0];
+  __u8 payload[];
 };
 #define ETH_ENCAP_HDR_SIZE 14
 struct arc_cap {
diff --git a/libc/kernel/uapi/linux/if_ether.h b/libc/kernel/uapi/linux/if_ether.h
index bd8e045..d35509e 100644
--- a/libc/kernel/uapi/linux/if_ether.h
+++ b/libc/kernel/uapi/linux/if_ether.h
@@ -97,6 +97,7 @@
 #define ETH_P_QINQ3 0x9300
 #define ETH_P_EDSA 0xDADA
 #define ETH_P_DSA_8021Q 0xDADB
+#define ETH_P_DSA_A5PSW 0xE001
 #define ETH_P_IFE 0xED3E
 #define ETH_P_AF_IUCV 0xFBFB
 #define ETH_P_802_3_MIN 0x0600
diff --git a/libc/kernel/uapi/linux/if_link.h b/libc/kernel/uapi/linux/if_link.h
index fbe384e..52f8ca3 100644
--- a/libc/kernel/uapi/linux/if_link.h
+++ b/libc/kernel/uapi/linux/if_link.h
@@ -639,6 +639,7 @@
   IFLA_BOND_SLAVE_AD_AGGREGATOR_ID,
   IFLA_BOND_SLAVE_AD_ACTOR_OPER_PORT_STATE,
   IFLA_BOND_SLAVE_AD_PARTNER_OPER_PORT_STATE,
+  IFLA_BOND_SLAVE_PRIO,
   __IFLA_BOND_SLAVE_MAX,
 };
 #define IFLA_BOND_SLAVE_MAX (__IFLA_BOND_SLAVE_MAX - 1)
diff --git a/libc/kernel/uapi/linux/if_pppox.h b/libc/kernel/uapi/linux/if_pppox.h
index 40d25e8..b6c076b 100644
--- a/libc/kernel/uapi/linux/if_pppox.h
+++ b/libc/kernel/uapi/linux/if_pppox.h
@@ -82,7 +82,7 @@
 struct pppoe_tag {
   __be16 tag_type;
   __be16 tag_len;
-  char tag_data[0];
+  char tag_data[];
 } __attribute__((packed));
 #define PTT_EOL __cpu_to_be16(0x0000)
 #define PTT_SRV_NAME __cpu_to_be16(0x0101)
@@ -107,7 +107,7 @@
   __u8 code;
   __be16 sid;
   __be16 length;
-  struct pppoe_tag tag[0];
+  struct pppoe_tag tag[];
 } __packed;
 #define PPPOE_SES_HLEN 8
 #endif
diff --git a/libc/kernel/uapi/linux/if_tun.h b/libc/kernel/uapi/linux/if_tun.h
index d1a8f9e..dda0830 100644
--- a/libc/kernel/uapi/linux/if_tun.h
+++ b/libc/kernel/uapi/linux/if_tun.h
@@ -57,6 +57,7 @@
 #define IFF_TAP 0x0002
 #define IFF_NAPI 0x0010
 #define IFF_NAPI_FRAGS 0x0020
+#define IFF_NO_CARRIER 0x0040
 #define IFF_NO_PI 0x1000
 #define IFF_ONE_QUEUE 0x2000
 #define IFF_VNET_HDR 0x4000
@@ -81,6 +82,6 @@
 struct tun_filter {
   __u16 flags;
   __u16 count;
-  __u8 addr[0][ETH_ALEN];
+  __u8 addr[][ETH_ALEN];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/igmp.h b/libc/kernel/uapi/linux/igmp.h
index 885b0f8..71c2c8d 100644
--- a/libc/kernel/uapi/linux/igmp.h
+++ b/libc/kernel/uapi/linux/igmp.h
@@ -37,7 +37,7 @@
   __u8 grec_auxwords;
   __be16 grec_nsrcs;
   __be32 grec_mca;
-  __be32 grec_src[0];
+  __be32 grec_src[];
 };
 struct igmpv3_report {
   __u8 type;
@@ -45,7 +45,7 @@
   __sum16 csum;
   __be16 resv2;
   __be16 ngrec;
-  struct igmpv3_grec grec[0];
+  struct igmpv3_grec grec[];
 };
 struct igmpv3_query {
   __u8 type;
@@ -61,7 +61,7 @@
 #endif
   __u8 qqic;
   __be16 nsrcs;
-  __be32 srcs[0];
+  __be32 srcs[];
 };
 #define IGMP_HOST_MEMBERSHIP_QUERY 0x11
 #define IGMP_HOST_MEMBERSHIP_REPORT 0x12
diff --git a/libc/kernel/uapi/linux/inet_diag.h b/libc/kernel/uapi/linux/inet_diag.h
index 8656dd4..27f390b 100644
--- a/libc/kernel/uapi/linux/inet_diag.h
+++ b/libc/kernel/uapi/linux/inet_diag.h
@@ -89,7 +89,7 @@
   __u8 family;
   __u8 prefix_len;
   int port;
-  __be32 addr[0];
+  __be32 addr[];
 };
 struct inet_diag_markcond {
   __u32 mark;
diff --git a/libc/kernel/uapi/linux/inotify.h b/libc/kernel/uapi/linux/inotify.h
index eb9ac3c..3b4b577 100644
--- a/libc/kernel/uapi/linux/inotify.h
+++ b/libc/kernel/uapi/linux/inotify.h
@@ -25,7 +25,7 @@
   __u32 mask;
   __u32 cookie;
   __u32 len;
-  char name[0];
+  char name[];
 };
 #define IN_ACCESS 0x00000001
 #define IN_MODIFY 0x00000002
diff --git a/libc/kernel/uapi/linux/io_uring.h b/libc/kernel/uapi/linux/io_uring.h
index 5dda702..4d52cf0 100644
--- a/libc/kernel/uapi/linux/io_uring.h
+++ b/libc/kernel/uapi/linux/io_uring.h
@@ -20,6 +20,10 @@
 #define LINUX_IO_URING_H
 #include <linux/fs.h>
 #include <linux/types.h>
+#include <linux/time_types.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
 struct io_uring_sqe {
   __u8 opcode;
   __u8 flags;
@@ -56,6 +60,7 @@
     __u32 unlink_flags;
     __u32 hardlink_flags;
     __u32 xattr_flags;
+    __u32 msg_ring_flags;
   };
   __u64 user_data;
   union {
@@ -66,6 +71,10 @@
   union {
     __s32 splice_fd_in;
     __u32 file_index;
+    struct {
+      __u16 addr_len;
+      __u16 __pad3[1];
+    };
   };
   union {
     struct {
@@ -104,6 +113,7 @@
 #define IORING_SETUP_TASKRUN_FLAG (1U << 9)
 #define IORING_SETUP_SQE128 (1U << 10)
 #define IORING_SETUP_CQE32 (1U << 11)
+#define IORING_SETUP_SINGLE_ISSUER (1U << 12)
 enum io_uring_op {
   IORING_OP_NOP,
   IORING_OP_READV,
@@ -152,6 +162,7 @@
   IORING_OP_GETXATTR,
   IORING_OP_SOCKET,
   IORING_OP_URING_CMD,
+  IORING_OP_SEND_ZC,
   IORING_OP_LAST,
 };
 #define IORING_FSYNC_DATASYNC (1U << 0)
@@ -167,11 +178,20 @@
 #define IORING_POLL_ADD_MULTI (1U << 0)
 #define IORING_POLL_UPDATE_EVENTS (1U << 1)
 #define IORING_POLL_UPDATE_USER_DATA (1U << 2)
+#define IORING_POLL_ADD_LEVEL (1U << 3)
 #define IORING_ASYNC_CANCEL_ALL (1U << 0)
 #define IORING_ASYNC_CANCEL_FD (1U << 1)
 #define IORING_ASYNC_CANCEL_ANY (1U << 2)
+#define IORING_ASYNC_CANCEL_FD_FIXED (1U << 3)
 #define IORING_RECVSEND_POLL_FIRST (1U << 0)
+#define IORING_RECV_MULTISHOT (1U << 1)
+#define IORING_RECVSEND_FIXED_BUF (1U << 2)
 #define IORING_ACCEPT_MULTISHOT (1U << 0)
+enum {
+  IORING_MSG_DATA,
+  IORING_MSG_SEND_FD,
+};
+#define IORING_MSG_RING_CQE_SKIP (1U << 0)
 struct io_uring_cqe {
   __u64 user_data;
   __s32 res;
@@ -181,6 +201,7 @@
 #define IORING_CQE_F_BUFFER (1U << 0)
 #define IORING_CQE_F_MORE (1U << 1)
 #define IORING_CQE_F_SOCK_NONEMPTY (1U << 2)
+#define IORING_CQE_F_NOTIF (1U << 3)
 enum {
   IORING_CQE_BUFFER_SHIFT = 16,
 };
@@ -268,6 +289,8 @@
   IORING_UNREGISTER_RING_FDS = 21,
   IORING_REGISTER_PBUF_RING = 22,
   IORING_UNREGISTER_PBUF_RING = 23,
+  IORING_REGISTER_SYNC_CANCEL = 24,
+  IORING_REGISTER_FILE_ALLOC_RANGE = 25,
   IORING_REGISTER_LAST
 };
 enum {
@@ -300,6 +323,17 @@
   __u32 nr;
   __u32 resv2;
 };
+struct io_uring_notification_slot {
+  __u64 tag;
+  __u64 resv[3];
+};
+struct io_uring_notification_register {
+  __u32 nr_slots;
+  __u32 resv;
+  __u64 resv2;
+  __u64 data;
+  __u64 resv3;
+};
 #define IORING_REGISTER_FILES_SKIP (- 2)
 #define IO_URING_OP_SUPPORTED (1U << 0)
 struct io_uring_probe_op {
@@ -313,7 +347,7 @@
   __u8 ops_len;
   __u16 resv;
   __u32 resv2[3];
-  struct io_uring_probe_op ops[0];
+  struct io_uring_probe_op ops[];
 };
 struct io_uring_restriction {
   __u16 opcode;
@@ -362,4 +396,25 @@
   __u32 pad;
   __u64 ts;
 };
+struct io_uring_sync_cancel_reg {
+  __u64 addr;
+  __s32 fd;
+  __u32 flags;
+  struct __kernel_timespec timeout;
+  __u64 pad[4];
+};
+struct io_uring_file_index_range {
+  __u32 off;
+  __u32 len;
+  __u64 resv;
+};
+struct io_uring_recvmsg_out {
+  __u32 namelen;
+  __u32 controllen;
+  __u32 payloadlen;
+  __u32 flags;
+};
+#ifdef __cplusplus
+}
+#endif
 #endif
diff --git a/libc/kernel/uapi/linux/ip.h b/libc/kernel/uapi/linux/ip.h
index 9571cac..b6aef50 100644
--- a/libc/kernel/uapi/linux/ip.h
+++ b/libc/kernel/uapi/linux/ip.h
@@ -95,12 +95,12 @@
   __be16 reserved;
   __be32 spi;
   __be32 seq_no;
-  __u8 auth_data[0];
+  __u8 auth_data[];
 };
 struct ip_esp_hdr {
   __be32 spi;
   __be32 seq_no;
-  __u8 enc_data[0];
+  __u8 enc_data[];
 };
 struct ip_comp_hdr {
   __u8 nexthdr;
diff --git a/libc/kernel/uapi/linux/ip_vs.h b/libc/kernel/uapi/linux/ip_vs.h
index 6e3defe..916fcf0 100644
--- a/libc/kernel/uapi/linux/ip_vs.h
+++ b/libc/kernel/uapi/linux/ip_vs.h
@@ -159,11 +159,11 @@
   __be16 port;
   __u32 fwmark;
   unsigned int num_dests;
-  struct ip_vs_dest_entry entrytable[0];
+  struct ip_vs_dest_entry entrytable[];
 };
 struct ip_vs_get_services {
   unsigned int num_services;
-  struct ip_vs_service_entry entrytable[0];
+  struct ip_vs_service_entry entrytable[];
 };
 struct ip_vs_timeout_user {
   int tcp_timeout;
diff --git a/libc/kernel/uapi/linux/iso_fs.h b/libc/kernel/uapi/linux/iso_fs.h
index 8227031..f9c4f48 100644
--- a/libc/kernel/uapi/linux/iso_fs.h
+++ b/libc/kernel/uapi/linux/iso_fs.h
@@ -132,7 +132,7 @@
   __u8 name_len[2];
   __u8 extent[4];
   __u8 parent[2];
-  char name[0];
+  char name[];
 } __attribute__((packed));
 struct iso_directory_record {
   __u8 length[ISODCL(1, 1)];
@@ -145,7 +145,7 @@
   __u8 interleave[ISODCL(28, 28)];
   __u8 volume_sequence_number[ISODCL(29, 32)];
   __u8 name_len[ISODCL(33, 33)];
-  char name[0];
+  char name[];
 } __attribute__((packed));
 #define ISOFS_BLOCK_BITS 11
 #define ISOFS_BLOCK_SIZE 2048
diff --git a/libc/kernel/uapi/linux/jffs2.h b/libc/kernel/uapi/linux/jffs2.h
index 698f953..643aa2e 100644
--- a/libc/kernel/uapi/linux/jffs2.h
+++ b/libc/kernel/uapi/linux/jffs2.h
@@ -86,7 +86,7 @@
   __u8 unused[2];
   jint32_t node_crc;
   jint32_t name_crc;
-  __u8 name[0];
+  __u8 name[];
 };
 struct jffs2_raw_inode {
   jint16_t magic;
@@ -110,7 +110,7 @@
   jint16_t flags;
   jint32_t data_crc;
   jint32_t node_crc;
-  __u8 data[0];
+  __u8 data[];
 };
 struct jffs2_raw_xattr {
   jint16_t magic;
@@ -124,7 +124,7 @@
   jint16_t value_len;
   jint32_t data_crc;
   jint32_t node_crc;
-  __u8 data[0];
+  __u8 data[];
 } __attribute__((packed));
 struct jffs2_raw_xref {
   jint16_t magic;
@@ -146,7 +146,7 @@
   jint32_t padded;
   jint32_t sum_crc;
   jint32_t node_crc;
-  jint32_t sum[0];
+  jint32_t sum[];
 };
 union jffs2_node_union {
   struct jffs2_raw_inode i;
diff --git a/libc/kernel/uapi/linux/kcov.h b/libc/kernel/uapi/linux/kcov.h
index cf2660b..5b6f6b1 100644
--- a/libc/kernel/uapi/linux/kcov.h
+++ b/libc/kernel/uapi/linux/kcov.h
@@ -24,7 +24,7 @@
   __u32 area_size;
   __u32 num_handles;
   __aligned_u64 common_handle;
-  __aligned_u64 handles[0];
+  __aligned_u64 handles[];
 };
 #define KCOV_REMOTE_MAX_HANDLES 0x100
 #define KCOV_INIT_TRACE _IOR('c', 1, unsigned long)
diff --git a/libc/kernel/uapi/linux/kfd_ioctl.h b/libc/kernel/uapi/linux/kfd_ioctl.h
index 8ec47f4..d21e0fc 100644
--- a/libc/kernel/uapi/linux/kfd_ioctl.h
+++ b/libc/kernel/uapi/linux/kfd_ioctl.h
@@ -21,7 +21,7 @@
 #include <drm/drm.h>
 #include <linux/ioctl.h>
 #define KFD_IOCTL_MAJOR_VERSION 1
-#define KFD_IOCTL_MINOR_VERSION 8
+#define KFD_IOCTL_MINOR_VERSION 11
 struct kfd_ioctl_get_version_args {
   __u32 major_version;
   __u32 minor_version;
@@ -72,6 +72,11 @@
   __u32 queue_id;
   __u32 pad;
 };
+struct kfd_ioctl_get_available_memory_args {
+  __u64 available;
+  __u32 gpu_id;
+  __u32 pad;
+};
 #define KFD_IOC_CACHE_POLICY_COHERENT 0
 #define KFD_IOC_CACHE_POLICY_NONCOHERENT 1
 struct kfd_ioctl_set_memory_policy_args {
@@ -295,6 +300,33 @@
   KFD_SMI_EVENT_THERMAL_THROTTLE = 2,
   KFD_SMI_EVENT_GPU_PRE_RESET = 3,
   KFD_SMI_EVENT_GPU_POST_RESET = 4,
+  KFD_SMI_EVENT_MIGRATE_START = 5,
+  KFD_SMI_EVENT_MIGRATE_END = 6,
+  KFD_SMI_EVENT_PAGE_FAULT_START = 7,
+  KFD_SMI_EVENT_PAGE_FAULT_END = 8,
+  KFD_SMI_EVENT_QUEUE_EVICTION = 9,
+  KFD_SMI_EVENT_QUEUE_RESTORE = 10,
+  KFD_SMI_EVENT_UNMAP_FROM_GPU = 11,
+  KFD_SMI_EVENT_ALL_PROCESS = 64
+};
+enum KFD_MIGRATE_TRIGGERS {
+  KFD_MIGRATE_TRIGGER_PREFETCH,
+  KFD_MIGRATE_TRIGGER_PAGEFAULT_GPU,
+  KFD_MIGRATE_TRIGGER_PAGEFAULT_CPU,
+  KFD_MIGRATE_TRIGGER_TTM_EVICTION
+};
+enum KFD_QUEUE_EVICTION_TRIGGERS {
+  KFD_QUEUE_EVICTION_TRIGGER_SVM,
+  KFD_QUEUE_EVICTION_TRIGGER_USERPTR,
+  KFD_QUEUE_EVICTION_TRIGGER_TTM,
+  KFD_QUEUE_EVICTION_TRIGGER_SUSPEND,
+  KFD_QUEUE_EVICTION_CRIU_CHECKPOINT,
+  KFD_QUEUE_EVICTION_CRIU_RESTORE
+};
+enum KFD_SVM_UNMAP_TRIGGERS {
+  KFD_SVM_UNMAP_TRIGGER_MMU_NOTIFY,
+  KFD_SVM_UNMAP_TRIGGER_MMU_NOTIFY_MIGRATE,
+  KFD_SVM_UNMAP_TRIGGER_UNMAP_FROM_CPU
 };
 #define KFD_SMI_EVENT_MASK_FROM_INDEX(i) (1ULL << ((i) - 1))
 #define KFD_SMI_EVENT_MSG_SIZE 96
@@ -346,6 +378,7 @@
 #define KFD_IOCTL_SVM_FLAG_GPU_RO 0x00000008
 #define KFD_IOCTL_SVM_FLAG_GPU_EXEC 0x00000010
 #define KFD_IOCTL_SVM_FLAG_GPU_READ_MOSTLY 0x00000020
+#define KFD_IOCTL_SVM_FLAG_GPU_ALWAYS_MAPPED 0x00000040
 enum kfd_ioctl_svm_op {
   KFD_IOCTL_SVM_OP_SET_ATTR,
   KFD_IOCTL_SVM_OP_GET_ATTR
@@ -417,6 +450,7 @@
 #define AMDKFD_IOC_SVM AMDKFD_IOWR(0x20, struct kfd_ioctl_svm_args)
 #define AMDKFD_IOC_SET_XNACK_MODE AMDKFD_IOWR(0x21, struct kfd_ioctl_set_xnack_mode_args)
 #define AMDKFD_IOC_CRIU_OP AMDKFD_IOWR(0x22, struct kfd_ioctl_criu_args)
+#define AMDKFD_IOC_AVAILABLE_MEMORY AMDKFD_IOWR(0x23, struct kfd_ioctl_get_available_memory_args)
 #define AMDKFD_COMMAND_START 0x01
-#define AMDKFD_COMMAND_END 0x23
+#define AMDKFD_COMMAND_END 0x24
 #endif
diff --git a/libc/kernel/uapi/linux/kvm.h b/libc/kernel/uapi/linux/kvm.h
index cc5495d..affb6a5 100644
--- a/libc/kernel/uapi/linux/kvm.h
+++ b/libc/kernel/uapi/linux/kvm.h
@@ -216,6 +216,8 @@
 #define KVM_EXIT_X86_BUS_LOCK 33
 #define KVM_EXIT_XEN 34
 #define KVM_EXIT_RISCV_SBI 35
+#define KVM_EXIT_RISCV_CSR 36
+#define KVM_EXIT_NOTIFY 37
 #define KVM_INTERNAL_ERROR_EMULATION 1
 #define KVM_INTERNAL_ERROR_SIMUL_EX 2
 #define KVM_INTERNAL_ERROR_DELIVERY_EV 3
@@ -379,6 +381,16 @@
       unsigned long args[6];
       unsigned long ret[2];
     } riscv_sbi;
+    struct {
+      unsigned long csr_num;
+      unsigned long new_value;
+      unsigned long write_mask;
+      unsigned long ret_value;
+    } riscv_csr;
+    struct {
+#define KVM_NOTIFY_CONTEXT_INVALID (1 << 0)
+      __u32 flags;
+    } notify;
     char padding[256];
   };
 #define SYNC_REGS_SIZE_BYTES 2048
@@ -408,7 +420,7 @@
 };
 struct kvm_coalesced_mmio_ring {
   __u32 first, last;
-  struct kvm_coalesced_mmio coalesced_mmio[0];
+  struct kvm_coalesced_mmio coalesced_mmio[];
 };
 #define KVM_COALESCED_MMIO_MAX ((PAGE_SIZE - sizeof(struct kvm_coalesced_mmio_ring)) / sizeof(struct kvm_coalesced_mmio))
 struct kvm_translation {
@@ -465,7 +477,7 @@
 };
 struct kvm_signal_mask {
   __u32 len;
-  __u8 sigset[0];
+  __u8 sigset[];
 };
 struct kvm_tpr_access_ctl {
   __u32 enabled;
@@ -910,6 +922,12 @@
 #define KVM_CAP_VM_TSC_CONTROL 214
 #define KVM_CAP_SYSTEM_EVENT_DATA 215
 #define KVM_CAP_ARM_SYSTEM_SUSPEND 216
+#define KVM_CAP_S390_PROTECTED_DUMP 217
+#define KVM_CAP_X86_TRIPLE_FAULT_EVENT 218
+#define KVM_CAP_X86_NOTIFY_VMEXIT 219
+#define KVM_CAP_VM_DISABLE_NX_HUGE_PAGES 220
+#define KVM_CAP_S390_ZPCI_OP 221
+#define KVM_CAP_S390_CPU_TOPOLOGY 222
 #ifdef KVM_CAP_IRQ_ROUTING
 struct kvm_irq_routing_irqchip {
   __u32 irqchip;
@@ -963,7 +981,7 @@
 struct kvm_irq_routing {
   __u32 nr;
   __u32 flags;
-  struct kvm_irq_routing_entry entries[0];
+  struct kvm_irq_routing_entry entries[];
 };
 #endif
 #ifdef KVM_CAP_MCE
@@ -1049,7 +1067,7 @@
 #define KVM_REG_SIZE_U2048 0x0080000000000000ULL
 struct kvm_reg_list {
   __u64 n;
-  __u64 reg[0];
+  __u64 reg[];
 };
 struct kvm_one_reg {
   __u64 id;
@@ -1263,6 +1281,48 @@
   __u64 size;
   __u64 tweak;
 };
+enum pv_cmd_dmp_id {
+  KVM_PV_DUMP_INIT,
+  KVM_PV_DUMP_CONFIG_STOR_STATE,
+  KVM_PV_DUMP_COMPLETE,
+  KVM_PV_DUMP_CPU,
+};
+struct kvm_s390_pv_dmp {
+  __u64 subcmd;
+  __u64 buff_addr;
+  __u64 buff_len;
+  __u64 gaddr;
+  __u64 reserved[4];
+};
+enum pv_cmd_info_id {
+  KVM_PV_INFO_VM,
+  KVM_PV_INFO_DUMP,
+};
+struct kvm_s390_pv_info_dump {
+  __u64 dump_cpu_buffer_len;
+  __u64 dump_config_mem_buffer_per_1m;
+  __u64 dump_config_finalize_len;
+};
+struct kvm_s390_pv_info_vm {
+  __u64 inst_calls_list[4];
+  __u64 max_cpus;
+  __u64 max_guests;
+  __u64 max_guest_addr;
+  __u64 feature_indication;
+};
+struct kvm_s390_pv_info_header {
+  __u32 id;
+  __u32 len_max;
+  __u32 len_written;
+  __u32 reserved;
+};
+struct kvm_s390_pv_info {
+  struct kvm_s390_pv_info_header header;
+  union {
+    struct kvm_s390_pv_info_dump dump;
+    struct kvm_s390_pv_info_vm vm;
+  };
+};
 enum pv_cmd_id {
   KVM_PV_ENABLE,
   KVM_PV_DISABLE,
@@ -1271,6 +1331,8 @@
   KVM_PV_VERIFY,
   KVM_PV_PREP_RESET,
   KVM_PV_UNSHARE_ALL,
+  KVM_PV_INFO,
+  KVM_PV_DUMP,
 };
 struct kvm_pv_cmd {
   __u32 cmd;
@@ -1575,4 +1637,28 @@
 };
 #define KVM_GET_STATS_FD _IO(KVMIO, 0xce)
 #define KVM_GET_XSAVE2 _IOR(KVMIO, 0xcf, struct kvm_xsave)
+#define KVM_S390_PV_CPU_COMMAND _IOWR(KVMIO, 0xd0, struct kvm_pv_cmd)
+#define KVM_X86_NOTIFY_VMEXIT_ENABLED (1ULL << 0)
+#define KVM_X86_NOTIFY_VMEXIT_USER (1ULL << 1)
+#define KVM_S390_ZPCI_OP _IOW(KVMIO, 0xd1, struct kvm_s390_zpci_op)
+struct kvm_s390_zpci_op {
+  __u32 fh;
+  __u8 op;
+  __u8 pad[3];
+  union {
+    struct {
+      __u64 ibv;
+      __u64 sb;
+      __u32 flags;
+      __u32 noi;
+      __u8 isc;
+      __u8 sbo;
+      __u16 pad;
+    } reg_aen;
+    __u64 reserved[8];
+  } u;
+};
+#define KVM_S390_ZPCIOP_REG_AEN 0
+#define KVM_S390_ZPCIOP_DEREG_AEN 1
+#define KVM_S390_ZPCIOP_REGAEN_HOST (1 << 0)
 #endif
diff --git a/libc/kernel/uapi/linux/loadpin.h b/libc/kernel/uapi/linux/loadpin.h
new file mode 100644
index 0000000..2641939
--- /dev/null
+++ b/libc/kernel/uapi/linux/loadpin.h
@@ -0,0 +1,23 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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_LOOP_LOADPIN_H
+#define _UAPI_LINUX_LOOP_LOADPIN_H
+#define LOADPIN_IOC_MAGIC 'L'
+#define LOADPIN_IOC_SET_TRUSTED_VERITY_DIGESTS _IOW(LOADPIN_IOC_MAGIC, 0x00, unsigned int)
+#endif
diff --git a/libc/kernel/uapi/linux/magic.h b/libc/kernel/uapi/linux/magic.h
index 6563411..ac2a0f3 100644
--- a/libc/kernel/uapi/linux/magic.h
+++ b/libc/kernel/uapi/linux/magic.h
@@ -99,11 +99,7 @@
 #define AAFS_MAGIC 0x5a3c69f0
 #define ZONEFS_MAGIC 0x5a4f4653
 #define UDF_SUPER_MAGIC 0x15013346
-#define BALLOON_KVM_MAGIC 0x13661366
-#define ZSMALLOC_MAGIC 0x58295829
 #define DMA_BUF_MAGIC 0x444d4142
 #define DEVMEM_MAGIC 0x454d444d
-#define Z3FOLD_MAGIC 0x33
-#define PPC_CMM_MAGIC 0xc7571590
 #define SECRETMEM_MAGIC 0x5345434d
 #endif
diff --git a/libc/kernel/uapi/linux/media-bus-format.h b/libc/kernel/uapi/linux/media-bus-format.h
index 2542a32..4555de1 100644
--- a/libc/kernel/uapi/linux/media-bus-format.h
+++ b/libc/kernel/uapi/linux/media-bus-format.h
@@ -43,9 +43,13 @@
 #define MEDIA_BUS_FMT_RGB888_3X8_DELTA 0x101d
 #define MEDIA_BUS_FMT_RGB888_1X7X4_SPWG 0x1011
 #define MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA 0x1012
+#define MEDIA_BUS_FMT_RGB666_1X30_CPADLO 0x101e
+#define MEDIA_BUS_FMT_RGB888_1X30_CPADLO 0x101f
 #define MEDIA_BUS_FMT_ARGB8888_1X32 0x100d
 #define MEDIA_BUS_FMT_RGB888_1X32_PADHI 0x100f
 #define MEDIA_BUS_FMT_RGB101010_1X30 0x1018
+#define MEDIA_BUS_FMT_RGB666_1X36_CPADLO 0x1020
+#define MEDIA_BUS_FMT_RGB888_1X36_CPADLO 0x1021
 #define MEDIA_BUS_FMT_RGB121212_1X36 0x1019
 #define MEDIA_BUS_FMT_RGB161616_1X48 0x101a
 #define MEDIA_BUS_FMT_Y8_1X8 0x2001
diff --git a/libc/kernel/uapi/linux/minix_fs.h b/libc/kernel/uapi/linux/minix_fs.h
index b6f1c69..0878efe 100644
--- a/libc/kernel/uapi/linux/minix_fs.h
+++ b/libc/kernel/uapi/linux/minix_fs.h
@@ -77,10 +77,10 @@
 };
 struct minix_dir_entry {
   __u16 inode;
-  char name[0];
+  char name[];
 };
 struct minix3_dir_entry {
   __u32 inode;
-  char name[0];
+  char name[];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/mmc/ioctl.h b/libc/kernel/uapi/linux/mmc/ioctl.h
index afea6a5..451134b 100644
--- a/libc/kernel/uapi/linux/mmc/ioctl.h
+++ b/libc/kernel/uapi/linux/mmc/ioctl.h
@@ -39,7 +39,7 @@
 #define mmc_ioc_cmd_set_data(ic,ptr) ic.data_ptr = (__u64) (unsigned long) ptr
 struct mmc_ioc_multi_cmd {
   __u64 num_of_cmds;
-  struct mmc_ioc_cmd cmds[0];
+  struct mmc_ioc_cmd cmds[];
 };
 #define MMC_IOC_CMD _IOWR(MMC_BLOCK_MAJOR, 0, struct mmc_ioc_cmd)
 #define MMC_IOC_MULTI_CMD _IOWR(MMC_BLOCK_MAJOR, 1, struct mmc_ioc_multi_cmd)
diff --git a/libc/kernel/uapi/linux/ndctl.h b/libc/kernel/uapi/linux/ndctl.h
index 0fd3ac4..f6b9f7f 100644
--- a/libc/kernel/uapi/linux/ndctl.h
+++ b/libc/kernel/uapi/linux/ndctl.h
@@ -32,22 +32,22 @@
   __u32 in_offset;
   __u32 in_length;
   __u32 status;
-  __u8 out_buf[0];
+  __u8 out_buf[];
 } __packed;
 struct nd_cmd_set_config_hdr {
   __u32 in_offset;
   __u32 in_length;
-  __u8 in_buf[0];
+  __u8 in_buf[];
 } __packed;
 struct nd_cmd_vendor_hdr {
   __u32 opcode;
   __u32 in_length;
-  __u8 in_buf[0];
+  __u8 in_buf[];
 } __packed;
 struct nd_cmd_vendor_tail {
   __u32 status;
   __u32 out_length;
-  __u8 out_buf[0];
+  __u8 out_buf[];
 } __packed;
 struct nd_cmd_ars_cap {
   __u64 address;
@@ -82,7 +82,7 @@
     __u32 reserved;
     __u64 err_address;
     __u64 length;
-  } __packed records[0];
+  } __packed records[];
 } __packed;
 struct nd_cmd_clear_error {
   __u64 address;
diff --git a/libc/kernel/uapi/linux/neighbour.h b/libc/kernel/uapi/linux/neighbour.h
index b5dcf2e..b86d2ae 100644
--- a/libc/kernel/uapi/linux/neighbour.h
+++ b/libc/kernel/uapi/linux/neighbour.h
@@ -108,6 +108,7 @@
   NDTPA_QUEUE_LENBYTES,
   NDTPA_MCAST_REPROBES,
   NDTPA_PAD,
+  NDTPA_INTERVAL_PROBE_TIME_MS,
   __NDTPA_MAX
 };
 #define NDTPA_MAX (__NDTPA_MAX - 1)
diff --git a/libc/kernel/uapi/linux/net_dropmon.h b/libc/kernel/uapi/linux/net_dropmon.h
index 35f70a5..4d2c336 100644
--- a/libc/kernel/uapi/linux/net_dropmon.h
+++ b/libc/kernel/uapi/linux/net_dropmon.h
@@ -36,11 +36,11 @@
 };
 struct net_dm_config_msg {
   __u32 entries;
-  struct net_dm_config_entry options[0];
+  struct net_dm_config_entry options[];
 };
 struct net_dm_alert_msg {
   __u32 entries;
-  struct net_dm_drop_point points[0];
+  struct net_dm_drop_point points[];
 };
 struct net_dm_user_msg {
   union {
diff --git a/libc/kernel/uapi/linux/netfilter/x_tables.h b/libc/kernel/uapi/linux/netfilter/x_tables.h
index 46bde57..0993265 100644
--- a/libc/kernel/uapi/linux/netfilter/x_tables.h
+++ b/libc/kernel/uapi/linux/netfilter/x_tables.h
@@ -36,7 +36,7 @@
     } kernel;
     __u16 match_size;
   } u;
-  unsigned char data[0];
+  unsigned char data[];
 };
 struct xt_entry_target {
   union {
@@ -87,7 +87,7 @@
 struct xt_counters_info {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int num_counters;
-  struct xt_counters counters[0];
+  struct xt_counters counters[];
 };
 #define XT_INV_PROTO 0x40
 #define XT_MATCH_ITERATE(type,e,fn,args...) \
diff --git a/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h b/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
index 340625f..862f514 100644
--- a/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
+++ b/libc/kernel/uapi/linux/netfilter_arp/arp_tables.h
@@ -72,7 +72,7 @@
   __u16 next_offset;
   unsigned int comefrom;
   struct xt_counters counters;
-  unsigned char elems[0];
+  unsigned char elems[];
 };
 #define ARPT_BASE_CTL 96
 #define ARPT_SO_SET_REPLACE (ARPT_BASE_CTL)
@@ -99,11 +99,11 @@
   unsigned int underflow[NF_ARP_NUMHOOKS];
   unsigned int num_counters;
   struct xt_counters __user * counters;
-  struct arpt_entry entries[0];
+  struct arpt_entry entries[];
 };
 struct arpt_get_entries {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int size;
-  struct arpt_entry entrytable[0];
+  struct arpt_entry entrytable[];
 };
 #endif
diff --git a/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h b/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
index 74cd550..aa39c5b 100644
--- a/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
+++ b/libc/kernel/uapi/linux/netfilter_bridge/ebt_among.h
@@ -28,7 +28,7 @@
 struct ebt_mac_wormhash {
   int table[257];
   int poolsize;
-  struct ebt_mac_wormhash_tuple pool[0];
+  struct ebt_mac_wormhash_tuple pool[];
 };
 #define ebt_mac_wormhash_size(x) ((x) ? sizeof(struct ebt_mac_wormhash) + (x)->poolsize * sizeof(struct ebt_mac_wormhash_tuple) : 0)
 struct ebt_among_info {
diff --git a/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h b/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
index 033c519..14a65ad 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv4/ip_tables.h
@@ -79,7 +79,7 @@
   __u16 next_offset;
   unsigned int comefrom;
   struct xt_counters counters;
-  unsigned char elems[0];
+  unsigned char elems[];
 };
 #define IPT_BASE_CTL 64
 #define IPT_SO_SET_REPLACE (IPT_BASE_CTL)
@@ -113,12 +113,12 @@
   unsigned int underflow[NF_INET_NUMHOOKS];
   unsigned int num_counters;
   struct xt_counters __user * counters;
-  struct ipt_entry entries[0];
+  struct ipt_entry entries[];
 };
 struct ipt_get_entries {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int size;
-  struct ipt_entry entrytable[0];
+  struct ipt_entry entrytable[];
 };
 static __inline__ struct xt_entry_target * ipt_get_target(struct ipt_entry * e) {
   return(struct xt_entry_target *) ((char *) e + e->target_offset);
diff --git a/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h b/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
index b3f426d..22071db 100644
--- a/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
+++ b/libc/kernel/uapi/linux/netfilter_ipv6/ip6_tables.h
@@ -133,12 +133,12 @@
   unsigned int underflow[NF_INET_NUMHOOKS];
   unsigned int num_counters;
   struct xt_counters __user * counters;
-  struct ip6t_entry entries[0];
+  struct ip6t_entry entries[];
 };
 struct ip6t_get_entries {
   char name[XT_TABLE_MAXNAMELEN];
   unsigned int size;
-  struct ip6t_entry entrytable[0];
+  struct ip6t_entry entrytable[];
 };
 static __inline__ struct xt_entry_target * ip6t_get_target(struct ip6t_entry * e) {
   return(struct xt_entry_target *) ((char *) e + e->target_offset);
diff --git a/libc/kernel/uapi/linux/nl80211.h b/libc/kernel/uapi/linux/nl80211.h
index 8655d5f..c3aefa3 100644
--- a/libc/kernel/uapi/linux/nl80211.h
+++ b/libc/kernel/uapi/linux/nl80211.h
@@ -185,6 +185,11 @@
   NL80211_CMD_COLOR_CHANGE_COMPLETED,
   NL80211_CMD_SET_FILS_AAD,
   NL80211_CMD_ASSOC_COMEBACK,
+  NL80211_CMD_ADD_LINK,
+  NL80211_CMD_REMOVE_LINK,
+  NL80211_CMD_ADD_LINK_STA,
+  NL80211_CMD_MODIFY_LINK_STA,
+  NL80211_CMD_REMOVE_LINK_STA,
   __NL80211_CMD_AFTER_LAST,
   NL80211_CMD_MAX = __NL80211_CMD_AFTER_LAST - 1
 };
@@ -513,6 +518,15 @@
   NL80211_ATTR_AP_SETTINGS_FLAGS,
   NL80211_ATTR_EHT_CAPABILITY,
   NL80211_ATTR_DISABLE_EHT,
+  NL80211_ATTR_MLO_LINKS,
+  NL80211_ATTR_MLO_LINK_ID,
+  NL80211_ATTR_MLD_ADDR,
+  NL80211_ATTR_MLO_SUPPORT,
+  NL80211_ATTR_MAX_NUM_AKM_SUITES,
+  NL80211_ATTR_EML_CAPABILITY,
+  NL80211_ATTR_MLD_CAPA_AND_OPS,
+  NL80211_ATTR_TX_HW_TIMESTAMP,
+  NL80211_ATTR_RX_HW_TIMESTAMP,
   __NL80211_ATTR_AFTER_LAST,
   NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST,
   NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
@@ -1103,6 +1117,7 @@
   NL80211_BSS_PARENT_BSSID,
   NL80211_BSS_CHAIN_SIGNAL,
   NL80211_BSS_FREQUENCY_OFFSET,
+  NL80211_BSS_MLO_LINK_ID,
   __NL80211_BSS_AFTER_LAST,
   NL80211_BSS_MAX = __NL80211_BSS_AFTER_LAST - 1
 };
diff --git a/libc/kernel/uapi/linux/pci_regs.h b/libc/kernel/uapi/linux/pci_regs.h
index e1a38a8..87549aa 100644
--- a/libc/kernel/uapi/linux/pci_regs.h
+++ b/libc/kernel/uapi/linux/pci_regs.h
@@ -635,7 +635,8 @@
 #define PCI_EXT_CAP_ID_DVSEC 0x23
 #define PCI_EXT_CAP_ID_DLF 0x25
 #define PCI_EXT_CAP_ID_PL_16GT 0x26
-#define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_PL_16GT
+#define PCI_EXT_CAP_ID_DOE 0x2E
+#define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_DOE
 #define PCI_EXT_CAP_DSN_SIZEOF 12
 #define PCI_EXT_CAP_MCAST_ENDPOINT_SIZEOF 40
 #define PCI_ERR_UNCOR_STATUS 0x04
@@ -938,4 +939,25 @@
 #define PCI_PL_16GT_LE_CTRL_DSP_TX_PRESET_MASK 0x0000000F
 #define PCI_PL_16GT_LE_CTRL_USP_TX_PRESET_MASK 0x000000F0
 #define PCI_PL_16GT_LE_CTRL_USP_TX_PRESET_SHIFT 4
+#define PCI_DOE_CAP 0x04
+#define PCI_DOE_CAP_INT_SUP 0x00000001
+#define PCI_DOE_CAP_INT_MSG_NUM 0x00000ffe
+#define PCI_DOE_CTRL 0x08
+#define PCI_DOE_CTRL_ABORT 0x00000001
+#define PCI_DOE_CTRL_INT_EN 0x00000002
+#define PCI_DOE_CTRL_GO 0x80000000
+#define PCI_DOE_STATUS 0x0c
+#define PCI_DOE_STATUS_BUSY 0x00000001
+#define PCI_DOE_STATUS_INT_STATUS 0x00000002
+#define PCI_DOE_STATUS_ERROR 0x00000004
+#define PCI_DOE_STATUS_DATA_OBJECT_READY 0x80000000
+#define PCI_DOE_WRITE 0x10
+#define PCI_DOE_READ 0x14
+#define PCI_DOE_DATA_OBJECT_HEADER_1_VID 0x0000ffff
+#define PCI_DOE_DATA_OBJECT_HEADER_1_TYPE 0x00ff0000
+#define PCI_DOE_DATA_OBJECT_HEADER_2_LENGTH 0x0003ffff
+#define PCI_DOE_DATA_OBJECT_DISC_REQ_3_INDEX 0x000000ff
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_VID 0x0000ffff
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_PROTOCOL 0x00ff0000
+#define PCI_DOE_DATA_OBJECT_DISC_RSP_3_NEXT_INDEX 0xff000000
 #endif
diff --git a/libc/kernel/uapi/linux/perf_event.h b/libc/kernel/uapi/linux/perf_event.h
index bcc4e97..165ff45 100644
--- a/libc/kernel/uapi/linux/perf_event.h
+++ b/libc/kernel/uapi/linux/perf_event.h
@@ -193,7 +193,8 @@
   PERF_FORMAT_TOTAL_TIME_RUNNING = 1U << 1,
   PERF_FORMAT_ID = 1U << 2,
   PERF_FORMAT_GROUP = 1U << 3,
-  PERF_FORMAT_MAX = 1U << 4,
+  PERF_FORMAT_LOST = 1U << 4,
+  PERF_FORMAT_MAX = 1U << 5,
 };
 #define PERF_ATTR_SIZE_VER0 64
 #define PERF_ATTR_SIZE_VER1 72
@@ -246,7 +247,7 @@
 struct perf_event_query_bpf {
   __u32 ids_len;
   __u32 prog_cnt;
-  __u32 ids[0];
+  __u32 ids[];
 };
 #define PERF_EVENT_IOC_ENABLE _IO('$', 0)
 #define PERF_EVENT_IOC_DISABLE _IO('$', 1)
diff --git a/libc/kernel/uapi/linux/pkt_cls.h b/libc/kernel/uapi/linux/pkt_cls.h
index 1db5d32..580e83e 100644
--- a/libc/kernel/uapi/linux/pkt_cls.h
+++ b/libc/kernel/uapi/linux/pkt_cls.h
@@ -199,7 +199,7 @@
   short offoff;
   short hoff;
   __be32 hmask;
-  struct tc_u32_key keys[0];
+  struct tc_u32_key keys[];
 };
 struct tc_u32_mark {
   __u32 val;
@@ -209,7 +209,7 @@
 struct tc_u32_pcnt {
   __u64 rcnt;
   __u64 rhit;
-  __u64 kcnts[0];
+  __u64 kcnts[];
 };
 #define TC_U32_TERMINAL 1
 #define TC_U32_OFFSET 2
@@ -460,6 +460,8 @@
   TCA_FLOWER_KEY_HASH,
   TCA_FLOWER_KEY_HASH_MASK,
   TCA_FLOWER_KEY_NUM_OF_VLANS,
+  TCA_FLOWER_KEY_PPPOE_SID,
+  TCA_FLOWER_KEY_PPP_PROTO,
   __TCA_FLOWER_MAX,
 };
 #define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1)
diff --git a/libc/kernel/uapi/linux/raid/md_p.h b/libc/kernel/uapi/linux/raid/md_p.h
index 4ad444a..dc3084a 100644
--- a/libc/kernel/uapi/linux/raid/md_p.h
+++ b/libc/kernel/uapi/linux/raid/md_p.h
@@ -168,7 +168,7 @@
   __le32 sb_csum;
   __le32 max_dev;
   __u8 pad3[64 - 32];
-  __le16 dev_roles[0];
+  __le16 dev_roles[];
 };
 #define MD_FEATURE_BITMAP_OFFSET 1
 #define MD_FEATURE_RECOVERY_OFFSET 2
diff --git a/libc/kernel/uapi/linux/random.h b/libc/kernel/uapi/linux/random.h
index 2d3cfef..8df411b 100644
--- a/libc/kernel/uapi/linux/random.h
+++ b/libc/kernel/uapi/linux/random.h
@@ -31,7 +31,7 @@
 struct rand_pool_info {
   int entropy_count;
   int buf_size;
-  __u32 buf[0];
+  __u32 buf[];
 };
 #define GRND_NONBLOCK 0x0001
 #define GRND_RANDOM 0x0002
diff --git a/libc/kernel/uapi/linux/romfs_fs.h b/libc/kernel/uapi/linux/romfs_fs.h
index 8e98714..bffbaf9 100644
--- a/libc/kernel/uapi/linux/romfs_fs.h
+++ b/libc/kernel/uapi/linux/romfs_fs.h
@@ -35,14 +35,14 @@
   __be32 word1;
   __be32 size;
   __be32 checksum;
-  char name[0];
+  char name[];
 };
 struct romfs_inode {
   __be32 next;
   __be32 spec;
   __be32 size;
   __be32 checksum;
-  char name[0];
+  char name[];
 };
 #define ROMFH_TYPE 7
 #define ROMFH_HRD 0
diff --git a/libc/kernel/uapi/linux/rtnetlink.h b/libc/kernel/uapi/linux/rtnetlink.h
index 321e487..7201827 100644
--- a/libc/kernel/uapi/linux/rtnetlink.h
+++ b/libc/kernel/uapi/linux/rtnetlink.h
@@ -323,7 +323,7 @@
 #define RTNH_DATA(rtnh) ((struct rtattr *) (((char *) (rtnh)) + RTNH_LENGTH(0)))
 struct rtvia {
   __kernel_sa_family_t rtvia_family;
-  __u8 rtvia_addr[0];
+  __u8 rtvia_addr[];
 };
 struct rta_cacheinfo {
   __u32 rta_clntref;
diff --git a/libc/kernel/uapi/linux/sctp.h b/libc/kernel/uapi/linux/sctp.h
index 765d6c9..4bf2412 100644
--- a/libc/kernel/uapi/linux/sctp.h
+++ b/libc/kernel/uapi/linux/sctp.h
@@ -210,7 +210,7 @@
   __u16 sac_outbound_streams;
   __u16 sac_inbound_streams;
   sctp_assoc_t sac_assoc_id;
-  __u8 sac_info[0];
+  __u8 sac_info[];
 };
 enum sctp_sac_state {
   SCTP_COMM_UP,
@@ -244,7 +244,7 @@
   __u32 sre_length;
   __be16 sre_error;
   sctp_assoc_t sre_assoc_id;
-  __u8 sre_data[0];
+  __u8 sre_data[];
 };
 struct sctp_send_failed {
   __u16 ssf_type;
@@ -253,7 +253,7 @@
   __u32 ssf_error;
   struct sctp_sndrcvinfo ssf_info;
   sctp_assoc_t ssf_assoc_id;
-  __u8 ssf_data[0];
+  __u8 ssf_data[];
 };
 struct sctp_send_failed_event {
   __u16 ssf_type;
@@ -262,7 +262,7 @@
   __u32 ssf_error;
   struct sctp_sndinfo ssfe_info;
   sctp_assoc_t ssf_assoc_id;
-  __u8 ssf_data[0];
+  __u8 ssf_data[];
 };
 enum sctp_ssf_flags {
   SCTP_DATA_UNSENT,
@@ -570,7 +570,7 @@
 struct sctp_getaddrs {
   sctp_assoc_t assoc_id;
   __u32 addr_num;
-  __u8 addrs[0];
+  __u8 addrs[];
 };
 struct sctp_assoc_stats {
   sctp_assoc_t sas_assoc_id;
diff --git a/libc/kernel/uapi/linux/seg6.h b/libc/kernel/uapi/linux/seg6.h
index f180485..b8206cc 100644
--- a/libc/kernel/uapi/linux/seg6.h
+++ b/libc/kernel/uapi/linux/seg6.h
@@ -28,7 +28,7 @@
   __u8 first_segment;
   __u8 flags;
   __u16 tag;
-  struct in6_addr segments[0];
+  struct in6_addr segments[];
 };
 #define SR6_FLAG1_PROTECTED (1 << 6)
 #define SR6_FLAG1_OAM (1 << 5)
diff --git a/libc/kernel/uapi/linux/seg6_iptunnel.h b/libc/kernel/uapi/linux/seg6_iptunnel.h
index 1c1ad83..19d8ba4 100644
--- a/libc/kernel/uapi/linux/seg6_iptunnel.h
+++ b/libc/kernel/uapi/linux/seg6_iptunnel.h
@@ -27,12 +27,14 @@
 #define SEG6_IPTUNNEL_MAX (__SEG6_IPTUNNEL_MAX - 1)
 struct seg6_iptunnel_encap {
   int mode;
-  struct ipv6_sr_hdr srh[0];
+  struct ipv6_sr_hdr srh[];
 };
 #define SEG6_IPTUN_ENCAP_SIZE(x) ((sizeof(* x)) + (((x)->srh->hdrlen + 1) << 3))
 enum {
   SEG6_IPTUN_MODE_INLINE,
   SEG6_IPTUN_MODE_ENCAP,
   SEG6_IPTUN_MODE_L2ENCAP,
+  SEG6_IPTUN_MODE_ENCAP_RED,
+  SEG6_IPTUN_MODE_L2ENCAP_RED,
 };
 #endif
diff --git a/libc/kernel/uapi/linux/serial.h b/libc/kernel/uapi/linux/serial.h
index e4e903d..5a83c62 100644
--- a/libc/kernel/uapi/linux/serial.h
+++ b/libc/kernel/uapi/linux/serial.h
@@ -96,9 +96,20 @@
 #define SER_RS485_RTS_AFTER_SEND (1 << 2)
 #define SER_RS485_RX_DURING_TX (1 << 4)
 #define SER_RS485_TERMINATE_BUS (1 << 5)
+#define SER_RS485_ADDRB (1 << 6)
+#define SER_RS485_ADDR_RECV (1 << 7)
+#define SER_RS485_ADDR_DEST (1 << 8)
   __u32 delay_rts_before_send;
   __u32 delay_rts_after_send;
-  __u32 padding[5];
+  union {
+    __u32 padding[5];
+    struct {
+      __u8 addr_recv;
+      __u8 addr_dest;
+      __u8 padding0[2];
+      __u32 padding1[4];
+    };
+  };
 };
 struct serial_iso7816 {
   __u32 flags;
diff --git a/libc/kernel/uapi/linux/serial_core.h b/libc/kernel/uapi/linux/serial_core.h
index b99c7d4..1e04429 100644
--- a/libc/kernel/uapi/linux/serial_core.h
+++ b/libc/kernel/uapi/linux/serial_core.h
@@ -69,8 +69,6 @@
 #define PORT_IMX 62
 #define PORT_MPSC 63
 #define PORT_TXX9 64
-#define PORT_VR41XX_SIU 65
-#define PORT_VR41XX_DSIU 66
 #define PORT_S3C2400 67
 #define PORT_M32R_SIO 68
 #define PORT_JSM 69
diff --git a/libc/kernel/uapi/linux/serial_reg.h b/libc/kernel/uapi/linux/serial_reg.h
index b6648f8..e41e649 100644
--- a/libc/kernel/uapi/linux/serial_reg.h
+++ b/libc/kernel/uapi/linux/serial_reg.h
@@ -99,7 +99,7 @@
 #define UART_LSR_PE 0x04
 #define UART_LSR_OE 0x02
 #define UART_LSR_DR 0x01
-#define UART_LSR_BRK_ERROR_BITS 0x1E
+#define UART_LSR_BRK_ERROR_BITS (UART_LSR_BI | UART_LSR_FE | UART_LSR_PE | UART_LSR_OE)
 #define UART_MSR 6
 #define UART_MSR_DCD 0x80
 #define UART_MSR_RI 0x40
@@ -109,7 +109,7 @@
 #define UART_MSR_TERI 0x04
 #define UART_MSR_DDSR 0x02
 #define UART_MSR_DCTS 0x01
-#define UART_MSR_ANY_DELTA 0x0F
+#define UART_MSR_ANY_DELTA (UART_MSR_DDCD | UART_MSR_TERI | UART_MSR_DDSR | UART_MSR_DCTS)
 #define UART_SCR 7
 #define UART_DLL 0
 #define UART_DLM 1
diff --git a/libc/kernel/uapi/linux/smc.h b/libc/kernel/uapi/linux/smc.h
index be6b71f..200c9b6 100644
--- a/libc/kernel/uapi/linux/smc.h
+++ b/libc/kernel/uapi/linux/smc.h
@@ -112,6 +112,7 @@
   SMC_NLA_LGR_R_V2,
   SMC_NLA_LGR_R_NET_COOKIE,
   SMC_NLA_LGR_R_PAD,
+  SMC_NLA_LGR_R_BUF_TYPE,
   __SMC_NLA_LGR_R_MAX,
   SMC_NLA_LGR_R_MAX = __SMC_NLA_LGR_R_MAX - 1
 };
diff --git a/libc/kernel/uapi/linux/snmp.h b/libc/kernel/uapi/linux/snmp.h
index a503a7e..d98f39e 100644
--- a/libc/kernel/uapi/linux/snmp.h
+++ b/libc/kernel/uapi/linux/snmp.h
@@ -305,6 +305,8 @@
   LINUX_MIB_TLSRXDEVICE,
   LINUX_MIB_TLSDECRYPTERROR,
   LINUX_MIB_TLSRXDEVICERESYNC,
+  LINUX_MIB_TLSDECRYPTRETRY,
+  LINUX_MIB_TLSRXNOPADVIOL,
   __LINUX_MIB_TLSMAX
 };
 #endif
diff --git a/libc/kernel/uapi/linux/stm.h b/libc/kernel/uapi/linux/stm.h
index 1c7f7f3..b1453f7 100644
--- a/libc/kernel/uapi/linux/stm.h
+++ b/libc/kernel/uapi/linux/stm.h
@@ -28,7 +28,7 @@
   __u16 width;
   __u16 __reserved_0;
   __u32 __reserved_1;
-  char id[0];
+  char id[];
 };
 #define STP_POLICY_ID_SET _IOWR('%', 0, struct stp_policy_id)
 #define STP_POLICY_ID_GET _IOR('%', 1, struct stp_policy_id)
diff --git a/libc/kernel/uapi/linux/sysctl.h b/libc/kernel/uapi/linux/sysctl.h
index ae9c2ba..ff17f7c 100644
--- a/libc/kernel/uapi/linux/sysctl.h
+++ b/libc/kernel/uapi/linux/sysctl.h
@@ -516,6 +516,7 @@
   NET_NEIGH_GC_THRESH3 = 16,
   NET_NEIGH_RETRANS_TIME_MS = 17,
   NET_NEIGH_REACHABLE_TIME_MS = 18,
+  NET_NEIGH_INTERVAL_PROBE_TIME_MS = 19,
 };
 enum {
   NET_DCCP_DEFAULT = 1,
diff --git a/libc/kernel/uapi/linux/target_core_user.h b/libc/kernel/uapi/linux/target_core_user.h
index dcba00e..daecb7d 100644
--- a/libc/kernel/uapi/linux/target_core_user.h
+++ b/libc/kernel/uapi/linux/target_core_user.h
@@ -89,7 +89,7 @@
   __u32 cmd_cnt;
   __u64 __pad3;
   __u64 __pad4;
-  __u16 cmd_ids[0];
+  __u16 cmd_ids[];
 } __packed;
 #define TCMU_OP_ALIGN_SIZE sizeof(__u64)
 enum tcmu_genl_cmd {
diff --git a/libc/kernel/uapi/linux/tls.h b/libc/kernel/uapi/linux/tls.h
index 4501cda..d327d66 100644
--- a/libc/kernel/uapi/linux/tls.h
+++ b/libc/kernel/uapi/linux/tls.h
@@ -22,6 +22,7 @@
 #define TLS_TX 1
 #define TLS_RX 2
 #define TLS_TX_ZEROCOPY_RO 3
+#define TLS_RX_EXPECT_NO_PAD 4
 #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))
@@ -122,6 +123,7 @@
   TLS_INFO_TXCONF,
   TLS_INFO_RXCONF,
   TLS_INFO_ZC_RO_TX,
+  TLS_INFO_RX_NO_PAD,
   __TLS_INFO_MAX,
 };
 #define TLS_INFO_MAX (__TLS_INFO_MAX - 1)
diff --git a/libc/kernel/uapi/linux/ublk_cmd.h b/libc/kernel/uapi/linux/ublk_cmd.h
new file mode 100644
index 0000000..caf7f93
--- /dev/null
+++ b/libc/kernel/uapi/linux/ublk_cmd.h
@@ -0,0 +1,122 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   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 USER_BLK_DRV_CMD_INC_H
+#define USER_BLK_DRV_CMD_INC_H
+#include <linux/types.h>
+#define UBLK_CMD_GET_QUEUE_AFFINITY 0x01
+#define UBLK_CMD_GET_DEV_INFO 0x02
+#define UBLK_CMD_ADD_DEV 0x04
+#define UBLK_CMD_DEL_DEV 0x05
+#define UBLK_CMD_START_DEV 0x06
+#define UBLK_CMD_STOP_DEV 0x07
+#define UBLK_CMD_SET_PARAMS 0x08
+#define UBLK_CMD_GET_PARAMS 0x09
+#define UBLK_IO_FETCH_REQ 0x20
+#define UBLK_IO_COMMIT_AND_FETCH_REQ 0x21
+#define UBLK_IO_NEED_GET_DATA 0x22
+#define UBLK_IO_RES_OK 0
+#define UBLK_IO_RES_NEED_GET_DATA 1
+#define UBLK_IO_RES_ABORT (- ENODEV)
+#define UBLKSRV_CMD_BUF_OFFSET 0
+#define UBLKSRV_IO_BUF_OFFSET 0x80000000
+#define UBLK_MAX_QUEUE_DEPTH 4096
+#define UBLK_F_SUPPORT_ZERO_COPY (1ULL << 0)
+#define UBLK_F_URING_CMD_COMP_IN_TASK (1ULL << 1)
+#define UBLK_F_NEED_GET_DATA (1UL << 2)
+#define UBLK_S_DEV_DEAD 0
+#define UBLK_S_DEV_LIVE 1
+struct ublksrv_ctrl_cmd {
+  __u32 dev_id;
+  __u16 queue_id;
+  __u16 len;
+  __u64 addr;
+  __u64 data[2];
+};
+struct ublksrv_ctrl_dev_info {
+  __u16 nr_hw_queues;
+  __u16 queue_depth;
+  __u16 state;
+  __u16 pad0;
+  __u32 max_io_buf_bytes;
+  __u32 dev_id;
+  __s32 ublksrv_pid;
+  __u32 pad1;
+  __u64 flags;
+  __u64 ublksrv_flags;
+  __u64 reserved0;
+  __u64 reserved1;
+  __u64 reserved2;
+};
+#define UBLK_IO_OP_READ 0
+#define UBLK_IO_OP_WRITE 1
+#define UBLK_IO_OP_FLUSH 2
+#define UBLK_IO_OP_DISCARD 3
+#define UBLK_IO_OP_WRITE_SAME 4
+#define UBLK_IO_OP_WRITE_ZEROES 5
+#define UBLK_IO_F_FAILFAST_DEV (1U << 8)
+#define UBLK_IO_F_FAILFAST_TRANSPORT (1U << 9)
+#define UBLK_IO_F_FAILFAST_DRIVER (1U << 10)
+#define UBLK_IO_F_META (1U << 11)
+#define UBLK_IO_F_FUA (1U << 13)
+#define UBLK_IO_F_NOUNMAP (1U << 15)
+#define UBLK_IO_F_SWAP (1U << 16)
+struct ublksrv_io_desc {
+  __u32 op_flags;
+  __u32 nr_sectors;
+  __u64 start_sector;
+  __u64 addr;
+};
+struct ublksrv_io_cmd {
+  __u16 q_id;
+  __u16 tag;
+  __s32 result;
+  __u64 addr;
+};
+struct ublk_param_basic {
+#define UBLK_ATTR_READ_ONLY (1 << 0)
+#define UBLK_ATTR_ROTATIONAL (1 << 1)
+#define UBLK_ATTR_VOLATILE_CACHE (1 << 2)
+#define UBLK_ATTR_FUA (1 << 3)
+  __u32 attrs;
+  __u8 logical_bs_shift;
+  __u8 physical_bs_shift;
+  __u8 io_opt_shift;
+  __u8 io_min_shift;
+  __u32 max_sectors;
+  __u32 chunk_sectors;
+  __u64 dev_sectors;
+  __u64 virt_boundary_mask;
+};
+struct ublk_param_discard {
+  __u32 discard_alignment;
+  __u32 discard_granularity;
+  __u32 max_discard_sectors;
+  __u32 max_write_zeroes_sectors;
+  __u16 max_discard_segments;
+  __u16 reserved0;
+};
+struct ublk_params {
+  __u32 len;
+#define UBLK_PARAM_TYPE_BASIC (1 << 0)
+#define UBLK_PARAM_TYPE_DISCARD (1 << 1)
+  __u32 types;
+  struct ublk_param_basic basic;
+  struct ublk_param_discard discard;
+};
+#endif
diff --git a/libc/kernel/uapi/linux/usb/audio.h b/libc/kernel/uapi/linux/usb/audio.h
index 7d36157..bfda540 100644
--- a/libc/kernel/uapi/linux/usb/audio.h
+++ b/libc/kernel/uapi/linux/usb/audio.h
@@ -186,7 +186,7 @@
   __u8 bUnitID;
   __u8 bSourceID;
   __u8 bControlSize;
-  __u8 bmaControls[0];
+  __u8 bmaControls[];
 } __attribute__((packed));
 struct uac_processing_unit_descriptor {
   __u8 bLength;
diff --git a/libc/kernel/uapi/linux/usb/cdc.h b/libc/kernel/uapi/linux/usb/cdc.h
index 59c9488..bbfc4db 100644
--- a/libc/kernel/uapi/linux/usb/cdc.h
+++ b/libc/kernel/uapi/linux/usb/cdc.h
@@ -131,7 +131,7 @@
   __u8 bDescriptorType;
   __u8 bDescriptorSubType;
   __u8 bGuidDescriptorType;
-  __u8 bDetailData[0];
+  __u8 bDetailData[];
 } __attribute__((packed));
 struct usb_cdc_obex_desc {
   __u8 bLength;
@@ -201,6 +201,8 @@
 #define USB_CDC_SPACE_PARITY 4
   __u8 bDataBits;
 } __attribute__((packed));
+#define USB_CDC_CTRL_DTR (1 << 0)
+#define USB_CDC_CTRL_RTS (1 << 1)
 #define USB_CDC_PACKET_TYPE_PROMISCUOUS (1 << 0)
 #define USB_CDC_PACKET_TYPE_ALL_MULTICAST (1 << 1)
 #define USB_CDC_PACKET_TYPE_DIRECTED (1 << 2)
@@ -217,6 +219,13 @@
   __le16 wIndex;
   __le16 wLength;
 } __attribute__((packed));
+#define USB_CDC_SERIAL_STATE_DCD (1 << 0)
+#define USB_CDC_SERIAL_STATE_DSR (1 << 1)
+#define USB_CDC_SERIAL_STATE_BREAK (1 << 2)
+#define USB_CDC_SERIAL_STATE_RING_SIGNAL (1 << 3)
+#define USB_CDC_SERIAL_STATE_FRAMING (1 << 4)
+#define USB_CDC_SERIAL_STATE_PARITY (1 << 5)
+#define USB_CDC_SERIAL_STATE_OVERRUN (1 << 6)
 struct usb_cdc_speed_change {
   __le32 DLBitRRate;
   __le32 ULBitRate;
@@ -267,7 +276,7 @@
   __le32 dwSignature;
   __le16 wLength;
   __le16 wNextNdpIndex;
-  struct usb_cdc_ncm_dpe16 dpe16[0];
+  struct usb_cdc_ncm_dpe16 dpe16[];
 } __attribute__((packed));
 struct usb_cdc_ncm_dpe32 {
   __le32 dwDatagramIndex;
@@ -279,7 +288,7 @@
   __le16 wReserved6;
   __le32 dwNextNdpIndex;
   __le32 dwReserved12;
-  struct usb_cdc_ncm_dpe32 dpe32[0];
+  struct usb_cdc_ncm_dpe32 dpe32[];
 } __attribute__((packed));
 #define USB_CDC_NCM_NDP16_INDEX_MIN 0x000C
 #define USB_CDC_NCM_NDP32_INDEX_MIN 0x0010
diff --git a/libc/kernel/uapi/linux/usb/ch9.h b/libc/kernel/uapi/linux/usb/ch9.h
index f1dade9..49eb5fa 100644
--- a/libc/kernel/uapi/linux/usb/ch9.h
+++ b/libc/kernel/uapi/linux/usb/ch9.h
@@ -324,7 +324,7 @@
   __u8 bDescriptorType;
   __u8 tTKID[3];
   __u8 bReserved;
-  __u8 bKeyData[0];
+  __u8 bKeyData[];
 } __attribute__((packed));
 struct usb_encryption_descriptor {
   __u8 bLength;
diff --git a/libc/kernel/uapi/linux/usb/raw_gadget.h b/libc/kernel/uapi/linux/usb/raw_gadget.h
index 70d5a26..8b60c8d 100644
--- a/libc/kernel/uapi/linux/usb/raw_gadget.h
+++ b/libc/kernel/uapi/linux/usb/raw_gadget.h
@@ -35,7 +35,7 @@
 struct usb_raw_event {
   __u32 type;
   __u32 length;
-  __u8 data[0];
+  __u8 data[];
 };
 #define USB_RAW_IO_FLAGS_ZERO 0x0001
 #define USB_RAW_IO_FLAGS_MASK 0x0001
@@ -43,7 +43,7 @@
   __u16 ep;
   __u16 flags;
   __u32 length;
-  __u8 data[0];
+  __u8 data[];
 };
 #define USB_RAW_EPS_NUM_MAX 30
 #define USB_RAW_EP_NAME_MAX 16
diff --git a/libc/kernel/uapi/linux/usbdevice_fs.h b/libc/kernel/uapi/linux/usbdevice_fs.h
index 7936ad9..5fef522 100644
--- a/libc/kernel/uapi/linux/usbdevice_fs.h
+++ b/libc/kernel/uapi/linux/usbdevice_fs.h
@@ -91,7 +91,7 @@
   int error_count;
   unsigned int signr;
   void __user * usercontext;
-  struct usbdevfs_iso_packet_desc iso_frame_desc[0];
+  struct usbdevfs_iso_packet_desc iso_frame_desc[];
 };
 struct usbdevfs_ioctl {
   int ifno;
@@ -121,7 +121,7 @@
 struct usbdevfs_streams {
   unsigned int num_streams;
   unsigned int num_eps;
-  unsigned char eps[0];
+  unsigned char eps[];
 };
 #define USBDEVFS_CONTROL _IOWR('U', 0, struct usbdevfs_ctrltransfer)
 #define USBDEVFS_CONTROL32 _IOWR('U', 0, struct usbdevfs_ctrltransfer32)
diff --git a/libc/kernel/uapi/linux/v4l2-controls.h b/libc/kernel/uapi/linux/v4l2-controls.h
index 30a0553..9de38d1 100644
--- a/libc/kernel/uapi/linux/v4l2-controls.h
+++ b/libc/kernel/uapi/linux/v4l2-controls.h
@@ -1331,6 +1331,204 @@
   __u8 chroma_intra_quantiser_matrix[64];
   __u8 chroma_non_intra_quantiser_matrix[64];
 };
+#define V4L2_CID_STATELESS_HEVC_SPS (V4L2_CID_CODEC_STATELESS_BASE + 400)
+#define V4L2_CID_STATELESS_HEVC_PPS (V4L2_CID_CODEC_STATELESS_BASE + 401)
+#define V4L2_CID_STATELESS_HEVC_SLICE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 402)
+#define V4L2_CID_STATELESS_HEVC_SCALING_MATRIX (V4L2_CID_CODEC_STATELESS_BASE + 403)
+#define V4L2_CID_STATELESS_HEVC_DECODE_PARAMS (V4L2_CID_CODEC_STATELESS_BASE + 404)
+#define V4L2_CID_STATELESS_HEVC_DECODE_MODE (V4L2_CID_CODEC_STATELESS_BASE + 405)
+#define V4L2_CID_STATELESS_HEVC_START_CODE (V4L2_CID_CODEC_STATELESS_BASE + 406)
+#define V4L2_CID_STATELESS_HEVC_ENTRY_POINT_OFFSETS (V4L2_CID_CODEC_STATELESS_BASE + 407)
+enum v4l2_stateless_hevc_decode_mode {
+  V4L2_STATELESS_HEVC_DECODE_MODE_SLICE_BASED,
+  V4L2_STATELESS_HEVC_DECODE_MODE_FRAME_BASED,
+};
+enum v4l2_stateless_hevc_start_code {
+  V4L2_STATELESS_HEVC_START_CODE_NONE,
+  V4L2_STATELESS_HEVC_START_CODE_ANNEX_B,
+};
+#define V4L2_HEVC_SLICE_TYPE_B 0
+#define V4L2_HEVC_SLICE_TYPE_P 1
+#define V4L2_HEVC_SLICE_TYPE_I 2
+#define V4L2_HEVC_SPS_FLAG_SEPARATE_COLOUR_PLANE (1ULL << 0)
+#define V4L2_HEVC_SPS_FLAG_SCALING_LIST_ENABLED (1ULL << 1)
+#define V4L2_HEVC_SPS_FLAG_AMP_ENABLED (1ULL << 2)
+#define V4L2_HEVC_SPS_FLAG_SAMPLE_ADAPTIVE_OFFSET (1ULL << 3)
+#define V4L2_HEVC_SPS_FLAG_PCM_ENABLED (1ULL << 4)
+#define V4L2_HEVC_SPS_FLAG_PCM_LOOP_FILTER_DISABLED (1ULL << 5)
+#define V4L2_HEVC_SPS_FLAG_LONG_TERM_REF_PICS_PRESENT (1ULL << 6)
+#define V4L2_HEVC_SPS_FLAG_SPS_TEMPORAL_MVP_ENABLED (1ULL << 7)
+#define V4L2_HEVC_SPS_FLAG_STRONG_INTRA_SMOOTHING_ENABLED (1ULL << 8)
+struct v4l2_ctrl_hevc_sps {
+  __u8 video_parameter_set_id;
+  __u8 seq_parameter_set_id;
+  __u16 pic_width_in_luma_samples;
+  __u16 pic_height_in_luma_samples;
+  __u8 bit_depth_luma_minus8;
+  __u8 bit_depth_chroma_minus8;
+  __u8 log2_max_pic_order_cnt_lsb_minus4;
+  __u8 sps_max_dec_pic_buffering_minus1;
+  __u8 sps_max_num_reorder_pics;
+  __u8 sps_max_latency_increase_plus1;
+  __u8 log2_min_luma_coding_block_size_minus3;
+  __u8 log2_diff_max_min_luma_coding_block_size;
+  __u8 log2_min_luma_transform_block_size_minus2;
+  __u8 log2_diff_max_min_luma_transform_block_size;
+  __u8 max_transform_hierarchy_depth_inter;
+  __u8 max_transform_hierarchy_depth_intra;
+  __u8 pcm_sample_bit_depth_luma_minus1;
+  __u8 pcm_sample_bit_depth_chroma_minus1;
+  __u8 log2_min_pcm_luma_coding_block_size_minus3;
+  __u8 log2_diff_max_min_pcm_luma_coding_block_size;
+  __u8 num_short_term_ref_pic_sets;
+  __u8 num_long_term_ref_pics_sps;
+  __u8 chroma_format_idc;
+  __u8 sps_max_sub_layers_minus1;
+  __u8 reserved[6];
+  __u64 flags;
+};
+#define V4L2_HEVC_PPS_FLAG_DEPENDENT_SLICE_SEGMENT_ENABLED (1ULL << 0)
+#define V4L2_HEVC_PPS_FLAG_OUTPUT_FLAG_PRESENT (1ULL << 1)
+#define V4L2_HEVC_PPS_FLAG_SIGN_DATA_HIDING_ENABLED (1ULL << 2)
+#define V4L2_HEVC_PPS_FLAG_CABAC_INIT_PRESENT (1ULL << 3)
+#define V4L2_HEVC_PPS_FLAG_CONSTRAINED_INTRA_PRED (1ULL << 4)
+#define V4L2_HEVC_PPS_FLAG_TRANSFORM_SKIP_ENABLED (1ULL << 5)
+#define V4L2_HEVC_PPS_FLAG_CU_QP_DELTA_ENABLED (1ULL << 6)
+#define V4L2_HEVC_PPS_FLAG_PPS_SLICE_CHROMA_QP_OFFSETS_PRESENT (1ULL << 7)
+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_PRED (1ULL << 8)
+#define V4L2_HEVC_PPS_FLAG_WEIGHTED_BIPRED (1ULL << 9)
+#define V4L2_HEVC_PPS_FLAG_TRANSQUANT_BYPASS_ENABLED (1ULL << 10)
+#define V4L2_HEVC_PPS_FLAG_TILES_ENABLED (1ULL << 11)
+#define V4L2_HEVC_PPS_FLAG_ENTROPY_CODING_SYNC_ENABLED (1ULL << 12)
+#define V4L2_HEVC_PPS_FLAG_LOOP_FILTER_ACROSS_TILES_ENABLED (1ULL << 13)
+#define V4L2_HEVC_PPS_FLAG_PPS_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 14)
+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_OVERRIDE_ENABLED (1ULL << 15)
+#define V4L2_HEVC_PPS_FLAG_PPS_DISABLE_DEBLOCKING_FILTER (1ULL << 16)
+#define V4L2_HEVC_PPS_FLAG_LISTS_MODIFICATION_PRESENT (1ULL << 17)
+#define V4L2_HEVC_PPS_FLAG_SLICE_SEGMENT_HEADER_EXTENSION_PRESENT (1ULL << 18)
+#define V4L2_HEVC_PPS_FLAG_DEBLOCKING_FILTER_CONTROL_PRESENT (1ULL << 19)
+#define V4L2_HEVC_PPS_FLAG_UNIFORM_SPACING (1ULL << 20)
+struct v4l2_ctrl_hevc_pps {
+  __u8 pic_parameter_set_id;
+  __u8 num_extra_slice_header_bits;
+  __u8 num_ref_idx_l0_default_active_minus1;
+  __u8 num_ref_idx_l1_default_active_minus1;
+  __s8 init_qp_minus26;
+  __u8 diff_cu_qp_delta_depth;
+  __s8 pps_cb_qp_offset;
+  __s8 pps_cr_qp_offset;
+  __u8 num_tile_columns_minus1;
+  __u8 num_tile_rows_minus1;
+  __u8 column_width_minus1[20];
+  __u8 row_height_minus1[22];
+  __s8 pps_beta_offset_div2;
+  __s8 pps_tc_offset_div2;
+  __u8 log2_parallel_merge_level_minus2;
+  __u8 reserved;
+  __u64 flags;
+};
+#define V4L2_HEVC_DPB_ENTRY_LONG_TERM_REFERENCE 0x01
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME 0
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_FIELD 1
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_FIELD 2
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM 3
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP 4
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_BOTTOM_TOP 5
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM 6
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME_DOUBLING 7
+#define V4L2_HEVC_SEI_PIC_STRUCT_FRAME_TRIPLING 8
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_PREVIOUS_BOTTOM 9
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_PREVIOUS_TOP 10
+#define V4L2_HEVC_SEI_PIC_STRUCT_TOP_PAIRED_NEXT_BOTTOM 11
+#define V4L2_HEVC_SEI_PIC_STRUCT_BOTTOM_PAIRED_NEXT_TOP 12
+#define V4L2_HEVC_DPB_ENTRIES_NUM_MAX 16
+struct v4l2_hevc_dpb_entry {
+  __u64 timestamp;
+  __u8 flags;
+  __u8 field_pic;
+  __u16 reserved;
+  __s32 pic_order_cnt_val;
+};
+struct v4l2_hevc_pred_weight_table {
+  __s8 delta_luma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 luma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 delta_chroma_weight_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __s8 chroma_offset_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __s8 delta_luma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 luma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __s8 delta_chroma_weight_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __s8 chroma_offset_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX][2];
+  __u8 luma_log2_weight_denom;
+  __s8 delta_chroma_log2_weight_denom;
+};
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_LUMA (1ULL << 0)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_SAO_CHROMA (1ULL << 1)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_TEMPORAL_MVP_ENABLED (1ULL << 2)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_MVD_L1_ZERO (1ULL << 3)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_CABAC_INIT (1ULL << 4)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_COLLOCATED_FROM_L0 (1ULL << 5)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_USE_INTEGER_MV (1ULL << 6)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_DEBLOCKING_FILTER_DISABLED (1ULL << 7)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_SLICE_LOOP_FILTER_ACROSS_SLICES_ENABLED (1ULL << 8)
+#define V4L2_HEVC_SLICE_PARAMS_FLAG_DEPENDENT_SLICE_SEGMENT (1ULL << 9)
+struct v4l2_ctrl_hevc_slice_params {
+  __u32 bit_size;
+  __u32 data_byte_offset;
+  __u32 num_entry_point_offsets;
+  __u8 nal_unit_type;
+  __u8 nuh_temporal_id_plus1;
+  __u8 slice_type;
+  __u8 colour_plane_id;
+  __s32 slice_pic_order_cnt;
+  __u8 num_ref_idx_l0_active_minus1;
+  __u8 num_ref_idx_l1_active_minus1;
+  __u8 collocated_ref_idx;
+  __u8 five_minus_max_num_merge_cand;
+  __s8 slice_qp_delta;
+  __s8 slice_cb_qp_offset;
+  __s8 slice_cr_qp_offset;
+  __s8 slice_act_y_qp_offset;
+  __s8 slice_act_cb_qp_offset;
+  __s8 slice_act_cr_qp_offset;
+  __s8 slice_beta_offset_div2;
+  __s8 slice_tc_offset_div2;
+  __u8 pic_struct;
+  __u8 reserved0[3];
+  __u32 slice_segment_addr;
+  __u8 ref_idx_l0[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 ref_idx_l1[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u16 short_term_ref_pic_set_size;
+  __u16 long_term_ref_pic_set_size;
+  struct v4l2_hevc_pred_weight_table pred_weight_table;
+  __u8 reserved1[2];
+  __u64 flags;
+};
+#define V4L2_HEVC_DECODE_PARAM_FLAG_IRAP_PIC 0x1
+#define V4L2_HEVC_DECODE_PARAM_FLAG_IDR_PIC 0x2
+#define V4L2_HEVC_DECODE_PARAM_FLAG_NO_OUTPUT_OF_PRIOR 0x4
+struct v4l2_ctrl_hevc_decode_params {
+  __s32 pic_order_cnt_val;
+  __u16 short_term_ref_pic_set_size;
+  __u16 long_term_ref_pic_set_size;
+  __u8 num_active_dpb_entries;
+  __u8 num_poc_st_curr_before;
+  __u8 num_poc_st_curr_after;
+  __u8 num_poc_lt_curr;
+  __u8 poc_st_curr_before[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 poc_st_curr_after[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 poc_lt_curr[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u8 reserved[4];
+  struct v4l2_hevc_dpb_entry dpb[V4L2_HEVC_DPB_ENTRIES_NUM_MAX];
+  __u64 flags;
+};
+struct v4l2_ctrl_hevc_scaling_matrix {
+  __u8 scaling_list_4x4[6][16];
+  __u8 scaling_list_8x8[6][64];
+  __u8 scaling_list_16x16[6][64];
+  __u8 scaling_list_32x32[2][64];
+  __u8 scaling_list_dc_coef_16x16[6];
+  __u8 scaling_list_dc_coef_32x32[2];
+};
 #define V4L2_CID_COLORIMETRY_CLASS_BASE (V4L2_CTRL_CLASS_COLORIMETRY | 0x900)
 #define V4L2_CID_COLORIMETRY_CLASS (V4L2_CTRL_CLASS_COLORIMETRY | 1)
 #define V4L2_CID_COLORIMETRY_HDR10_CLL_INFO (V4L2_CID_COLORIMETRY_CLASS_BASE + 0)
diff --git a/libc/kernel/uapi/linux/vduse.h b/libc/kernel/uapi/linux/vduse.h
index 2dc8c82..f0b6d6b 100644
--- a/libc/kernel/uapi/linux/vduse.h
+++ b/libc/kernel/uapi/linux/vduse.h
@@ -90,6 +90,22 @@
 };
 #define VDUSE_VQ_SETUP_KICKFD _IOW(VDUSE_BASE, 0x16, struct vduse_vq_eventfd)
 #define VDUSE_VQ_INJECT_IRQ _IOW(VDUSE_BASE, 0x17, __u32)
+struct vduse_iova_umem {
+  __u64 uaddr;
+  __u64 iova;
+  __u64 size;
+  __u64 reserved[3];
+};
+#define VDUSE_IOTLB_REG_UMEM _IOW(VDUSE_BASE, 0x18, struct vduse_iova_umem)
+#define VDUSE_IOTLB_DEREG_UMEM _IOW(VDUSE_BASE, 0x19, struct vduse_iova_umem)
+struct vduse_iova_info {
+  __u64 start;
+  __u64 last;
+#define VDUSE_IOVA_CAP_UMEM (1 << 0)
+  __u64 capability;
+  __u64 reserved[3];
+};
+#define VDUSE_IOTLB_GET_INFO _IOWR(VDUSE_BASE, 0x1a, struct vduse_iova_info)
 enum vduse_req_type {
   VDUSE_GET_VQ_STATE,
   VDUSE_SET_STATUS,
diff --git a/libc/kernel/uapi/linux/version.h b/libc/kernel/uapi/linux/version.h
index 62874da..c194345 100644
--- a/libc/kernel/uapi/linux/version.h
+++ b/libc/kernel/uapi/linux/version.h
@@ -16,8 +16,8 @@
  ***
  ****************************************************************************
  ****************************************************************************/
-#define LINUX_VERSION_CODE 332544
+#define LINUX_VERSION_CODE 393216
 #define KERNEL_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + ((c) > 255 ? 255 : (c)))
-#define LINUX_VERSION_MAJOR 5
-#define LINUX_VERSION_PATCHLEVEL 19
+#define LINUX_VERSION_MAJOR 6
+#define LINUX_VERSION_PATCHLEVEL 0
 #define LINUX_VERSION_SUBLEVEL 0
diff --git a/libc/kernel/uapi/linux/vfio_zdev.h b/libc/kernel/uapi/linux/vfio_zdev.h
index c678e9a..1c3a943 100644
--- a/libc/kernel/uapi/linux/vfio_zdev.h
+++ b/libc/kernel/uapi/linux/vfio_zdev.h
@@ -29,6 +29,7 @@
   __u16 fmb_length;
   __u8 pft;
   __u8 gid;
+  __u32 fh;
 };
 struct vfio_device_info_cap_zpci_group {
   struct vfio_info_cap_header header;
@@ -40,6 +41,8 @@
   __u16 noi;
   __u16 maxstbl;
   __u8 version;
+  __u8 reserved;
+  __u16 imaxstbl;
 };
 struct vfio_device_info_cap_zpci_util {
   struct vfio_info_cap_header header;
diff --git a/libc/kernel/uapi/linux/vhost.h b/libc/kernel/uapi/linux/vhost.h
index 3bf1372..e5b1327 100644
--- a/libc/kernel/uapi/linux/vhost.h
+++ b/libc/kernel/uapi/linux/vhost.h
@@ -68,4 +68,5 @@
 #define VHOST_VDPA_GET_AS_NUM _IOR(VHOST_VIRTIO, 0x7A, unsigned int)
 #define VHOST_VDPA_GET_VRING_GROUP _IOWR(VHOST_VIRTIO, 0x7B, struct vhost_vring_state)
 #define VHOST_VDPA_SET_GROUP_ASID _IOW(VHOST_VIRTIO, 0x7C, struct vhost_vring_state)
+#define VHOST_VDPA_SUSPEND _IO(VHOST_VIRTIO, 0x7D)
 #endif
diff --git a/libc/kernel/uapi/linux/vhost_types.h b/libc/kernel/uapi/linux/vhost_types.h
index 772a1cc..32efa85 100644
--- a/libc/kernel/uapi/linux/vhost_types.h
+++ b/libc/kernel/uapi/linux/vhost_types.h
@@ -82,7 +82,7 @@
 struct vhost_memory {
   __u32 nregions;
   __u32 padding;
-  struct vhost_memory_region regions[0];
+  struct vhost_memory_region regions[];
 };
 #define VHOST_SCSI_ABI_VERSION 1
 struct vhost_scsi_target {
@@ -94,7 +94,7 @@
 struct vhost_vdpa_config {
   __u32 off;
   __u32 len;
-  __u8 buf[0];
+  __u8 buf[];
 };
 struct vhost_vdpa_iova_range {
   __u64 first;
@@ -105,4 +105,5 @@
 #define VHOST_BACKEND_F_IOTLB_MSG_V2 0x1
 #define VHOST_BACKEND_F_IOTLB_BATCH 0x2
 #define VHOST_BACKEND_F_IOTLB_ASID 0x3
+#define VHOST_BACKEND_F_SUSPEND 0x4
 #endif
diff --git a/libc/kernel/uapi/linux/videodev2.h b/libc/kernel/uapi/linux/videodev2.h
index d4107bc..9fc33a4 100644
--- a/libc/kernel/uapi/linux/videodev2.h
+++ b/libc/kernel/uapi/linux/videodev2.h
@@ -273,6 +273,8 @@
 #define V4L2_PIX_FMT_XYUV32 v4l2_fourcc('X', 'Y', 'U', 'V')
 #define V4L2_PIX_FMT_VUYA32 v4l2_fourcc('V', 'U', 'Y', 'A')
 #define V4L2_PIX_FMT_VUYX32 v4l2_fourcc('V', 'U', 'Y', 'X')
+#define V4L2_PIX_FMT_YUVA32 v4l2_fourcc('Y', 'U', 'V', 'A')
+#define V4L2_PIX_FMT_YUVX32 v4l2_fourcc('Y', 'U', 'V', 'X')
 #define V4L2_PIX_FMT_M420 v4l2_fourcc('M', '4', '2', '0')
 #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2')
 #define V4L2_PIX_FMT_NV21 v4l2_fourcc('N', 'V', '2', '1')
@@ -280,6 +282,7 @@
 #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1')
 #define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4')
 #define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2')
+#define V4L2_PIX_FMT_P010 v4l2_fourcc('P', '0', '1', '0')
 #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1')
 #define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6')
@@ -299,6 +302,7 @@
 #define V4L2_PIX_FMT_NV12_4L4 v4l2_fourcc('V', 'T', '1', '2')
 #define V4L2_PIX_FMT_NV12_16L16 v4l2_fourcc('H', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV12_32L32 v4l2_fourcc('S', 'T', '1', '2')
+#define V4L2_PIX_FMT_P010_4L4 v4l2_fourcc('T', '0', '1', '0')
 #define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2')
 #define V4L2_PIX_FMT_NV12M_8L128 v4l2_fourcc('N', 'A', '1', '2')
@@ -368,6 +372,7 @@
 #define V4L2_PIX_FMT_FWHT v4l2_fourcc('F', 'W', 'H', 'T')
 #define V4L2_PIX_FMT_FWHT_STATELESS v4l2_fourcc('S', 'F', 'W', 'H')
 #define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4')
+#define V4L2_PIX_FMT_HEVC_SLICE v4l2_fourcc('S', '2', '6', '5')
 #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')
@@ -906,6 +911,11 @@
     struct v4l2_ctrl_mpeg2_quantisation __user * p_mpeg2_quantisation;
     struct v4l2_ctrl_vp9_compressed_hdr __user * p_vp9_compressed_hdr_probs;
     struct v4l2_ctrl_vp9_frame __user * p_vp9_frame;
+    struct v4l2_ctrl_hevc_sps __user * p_hevc_sps;
+    struct v4l2_ctrl_hevc_pps __user * p_hevc_pps;
+    struct v4l2_ctrl_hevc_slice_params __user * p_hevc_slice_params;
+    struct v4l2_ctrl_hevc_scaling_matrix __user * p_hevc_scaling_matrix;
+    struct v4l2_ctrl_hevc_decode_params __user * p_hevc_decode_params;
     void __user * ptr;
   };
 } __attribute__((packed));
@@ -958,6 +968,11 @@
   V4L2_CTRL_TYPE_MPEG2_PICTURE = 0x0252,
   V4L2_CTRL_TYPE_VP9_COMPRESSED_HDR = 0x0260,
   V4L2_CTRL_TYPE_VP9_FRAME = 0x0261,
+  V4L2_CTRL_TYPE_HEVC_SPS = 0x0270,
+  V4L2_CTRL_TYPE_HEVC_PPS = 0x0271,
+  V4L2_CTRL_TYPE_HEVC_SLICE_PARAMS = 0x0272,
+  V4L2_CTRL_TYPE_HEVC_SCALING_MATRIX = 0x0273,
+  V4L2_CTRL_TYPE_HEVC_DECODE_PARAMS = 0x0274,
 };
 struct v4l2_queryctrl {
   __u32 id;
@@ -1005,6 +1020,7 @@
 #define V4L2_CTRL_FLAG_HAS_PAYLOAD 0x0100
 #define V4L2_CTRL_FLAG_EXECUTE_ON_WRITE 0x0200
 #define V4L2_CTRL_FLAG_MODIFY_LAYOUT 0x0400
+#define V4L2_CTRL_FLAG_DYNAMIC_ARRAY 0x0800
 #define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
 #define V4L2_CTRL_FLAG_NEXT_COMPOUND 0x40000000
 #define V4L2_CID_MAX_CTRLS 1024
diff --git a/libc/kernel/uapi/linux/virtio_9p.h b/libc/kernel/uapi/linux/virtio_9p.h
index 1d9dfb1..2e05786 100644
--- a/libc/kernel/uapi/linux/virtio_9p.h
+++ b/libc/kernel/uapi/linux/virtio_9p.h
@@ -24,6 +24,6 @@
 #define VIRTIO_9P_MOUNT_TAG 0
 struct virtio_9p_config {
   __virtio16 tag_len;
-  __u8 tag[0];
+  __u8 tag[];
 } __attribute__((packed));
 #endif
diff --git a/libc/kernel/uapi/linux/virtio_config.h b/libc/kernel/uapi/linux/virtio_config.h
index 30e552b..bdd2e73 100644
--- a/libc/kernel/uapi/linux/virtio_config.h
+++ b/libc/kernel/uapi/linux/virtio_config.h
@@ -26,7 +26,7 @@
 #define VIRTIO_CONFIG_S_NEEDS_RESET 0x40
 #define VIRTIO_CONFIG_S_FAILED 0x80
 #define VIRTIO_TRANSPORT_F_START 28
-#define VIRTIO_TRANSPORT_F_END 38
+#define VIRTIO_TRANSPORT_F_END 41
 #ifndef VIRTIO_CONFIG_NO_LEGACY
 #define VIRTIO_F_NOTIFY_ON_EMPTY 24
 #define VIRTIO_F_ANY_LAYOUT 27
@@ -38,4 +38,5 @@
 #define VIRTIO_F_IN_ORDER 35
 #define VIRTIO_F_ORDER_PLATFORM 36
 #define VIRTIO_F_SR_IOV 37
+#define VIRTIO_F_RING_RESET 40
 #endif
diff --git a/libc/kernel/uapi/linux/virtio_net.h b/libc/kernel/uapi/linux/virtio_net.h
index 2d92904..6fe90aa 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_NOTF_COAL 53
 #define VIRTIO_NET_F_HASH_REPORT 57
 #define VIRTIO_NET_F_RSS 60
 #define VIRTIO_NET_F_RSC_EXT 61
@@ -186,4 +187,15 @@
 #define VIRTIO_NET_CTRL_MQ_HASH_CONFIG 2
 #define VIRTIO_NET_CTRL_GUEST_OFFLOADS 5
 #define VIRTIO_NET_CTRL_GUEST_OFFLOADS_SET 0
+#define VIRTIO_NET_CTRL_NOTF_COAL 6
+struct virtio_net_ctrl_coal_tx {
+  __le32 tx_max_packets;
+  __le32 tx_usecs;
+};
+#define VIRTIO_NET_CTRL_NOTF_COAL_TX_SET 0
+struct virtio_net_ctrl_coal_rx {
+  __le32 rx_max_packets;
+  __le32 rx_usecs;
+};
+#define VIRTIO_NET_CTRL_NOTF_COAL_RX_SET 1
 #endif
diff --git a/libc/kernel/uapi/linux/virtio_pci.h b/libc/kernel/uapi/linux/virtio_pci.h
index e6d2731..94ca0a2 100644
--- a/libc/kernel/uapi/linux/virtio_pci.h
+++ b/libc/kernel/uapi/linux/virtio_pci.h
@@ -117,5 +117,7 @@
 #define VIRTIO_PCI_COMMON_Q_AVAILHI 44
 #define VIRTIO_PCI_COMMON_Q_USEDLO 48
 #define VIRTIO_PCI_COMMON_Q_USEDHI 52
+#define VIRTIO_PCI_COMMON_Q_NDATA 56
+#define VIRTIO_PCI_COMMON_Q_RESET 58
 #endif
 #endif
diff --git a/libc/kernel/uapi/linux/xfrm.h b/libc/kernel/uapi/linux/xfrm.h
index f4df95f..77ded42 100644
--- a/libc/kernel/uapi/linux/xfrm.h
+++ b/libc/kernel/uapi/linux/xfrm.h
@@ -35,7 +35,7 @@
   __u8 ctx_alg;
   __u16 ctx_len;
   __u32 ctx_sid;
-  char ctx_str[0];
+  char ctx_str[];
 };
 #define XFRM_SC_DOI_RESERVED 0
 #define XFRM_SC_DOI_LSM 1
@@ -85,24 +85,24 @@
   __u32 oseq_hi;
   __u32 seq_hi;
   __u32 replay_window;
-  __u32 bmp[0];
+  __u32 bmp[];
 };
 struct xfrm_algo {
   char alg_name[64];
   unsigned int alg_key_len;
-  char alg_key[0];
+  char alg_key[];
 };
 struct xfrm_algo_auth {
   char alg_name[64];
   unsigned int alg_key_len;
   unsigned int alg_trunc_len;
-  char alg_key[0];
+  char alg_key[];
 };
 struct xfrm_algo_aead {
   char alg_name[64];
   unsigned int alg_key_len;
   unsigned int alg_icv_len;
-  char alg_key[0];
+  char alg_key[];
 };
 struct xfrm_stats {
   __u32 replay_window;